summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTarja Sundqvist <tarja.sundqvist@qt.io>2023-03-23 21:06:47 +0200
committerTarja Sundqvist <tarja.sundqvist@qt.io>2023-03-23 21:06:47 +0200
commit42e4ae042a4c86e58bcb8b6d2d59ba4a988285b4 (patch)
treea7f25b1d335a834a7c3ae104cee913ef3a4dd4fb
parent4ee4fc18b4067b90efa46ca9baba74f53b54d9ec (diff)
parent168ff3419f256fdb35b586275d293fc0cd773fe1 (diff)
Merge remote-tracking branch 'origin/tqtc/lts-5.15.9' into tqtc/lts-5.15-opensourcev5.15.9-lts-lgpl
-rw-r--r--.qmake.conf2
-rw-r--r--LICENSE.QT-LICENSE-AGREEMENT2602
-rwxr-xr-xconfigure8
-rw-r--r--doc/global/config.qdocconf2
-rw-r--r--doc/global/externalsites/qtcreator.qdoc446
-rw-r--r--doc/global/html-footer-online.qdocconf2
-rw-r--r--doc/global/html-footer.qdocconf2
-rw-r--r--doc/global/includes/standardpath/functiondocs.qdocinc3
-rw-r--r--doc/global/qt-module-defaults-online.qdocconf2
-rw-r--r--mkspecs/common/ghs-base.conf4
-rw-r--r--mkspecs/features/qt_targets.prf2
-rwxr-xr-xmkspecs/features/uikit/devices.py2
-rw-r--r--mkspecs/features/winrt/package_manifest.prf3
-rw-r--r--qmake/library/qmakeparser.cpp3
-rw-r--r--src/3rdparty/angle/patches/0001-ANGLE-Load-the-DirectX-libraries-from-the-system.patch77
-rw-r--r--src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp8
-rw-r--r--src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp18
-rw-r--r--src/3rdparty/libjpeg/LICENSE2
-rwxr-xr-xsrc/3rdparty/libjpeg/import_from_libjpeg_tarball.sh13
-rw-r--r--src/3rdparty/libjpeg/qt_attribution.json6
-rw-r--r--src/3rdparty/libjpeg/src/ChangeLog.md70
-rw-r--r--src/3rdparty/libjpeg/src/jcapimin.c6
-rw-r--r--src/3rdparty/libjpeg/src/jcarith.c12
-rw-r--r--src/3rdparty/libjpeg/src/jchuff.c22
-rw-r--r--src/3rdparty/libjpeg/src/jconfig.h12
-rw-r--r--src/3rdparty/libjpeg/src/jconfig.h.in31
-rw-r--r--src/3rdparty/libjpeg/src/jcphuff.c10
-rw-r--r--src/3rdparty/libjpeg/src/jcprepct.c8
-rw-r--r--src/3rdparty/libjpeg/src/jctrans.c6
-rw-r--r--src/3rdparty/libjpeg/src/jdapimin.c6
-rw-r--r--src/3rdparty/libjpeg/src/jdapistd.c8
-rw-r--r--src/3rdparty/libjpeg/src/jdarith.c22
-rw-r--r--src/3rdparty/libjpeg/src/jdatadst.c13
-rw-r--r--src/3rdparty/libjpeg/src/jdatasrc.c4
-rw-r--r--src/3rdparty/libjpeg/src/jddctmgr.c4
-rw-r--r--src/3rdparty/libjpeg/src/jdinput.c4
-rw-r--r--src/3rdparty/libjpeg/src/jdmarker.c8
-rw-r--r--src/3rdparty/libjpeg/src/jdmaster.c12
-rw-r--r--src/3rdparty/libjpeg/src/jdphuff.c10
-rw-r--r--src/3rdparty/libjpeg/src/jerror.c16
-rw-r--r--src/3rdparty/libjpeg/src/jerror.h6
-rw-r--r--src/3rdparty/libjpeg/src/jinclude.h133
-rw-r--r--src/3rdparty/libjpeg/src/jmemmgr.c16
-rw-r--r--src/3rdparty/libjpeg/src/jmemnobs.c5
-rw-r--r--src/3rdparty/libjpeg/src/jmorecfg.h4
-rw-r--r--src/3rdparty/libjpeg/src/jpegint.h9
-rw-r--r--src/3rdparty/libjpeg/src/jstdhuff.c9
-rw-r--r--src/3rdparty/libjpeg/src/jutils.c10
-rw-r--r--src/3rdparty/libjpeg/src/jversion.h6
-rw-r--r--src/3rdparty/sqlite/qt_attribution.json4
-rw-r--r--src/3rdparty/sqlite/sqlite3.c14780
-rw-r--r--src/3rdparty/sqlite/sqlite3.h167
-rw-r--r--src/3rdparty/zlib/qt_attribution.json4
-rw-r--r--src/3rdparty/zlib/qtpatches.diff60
-rw-r--r--src/3rdparty/zlib/src/ChangeLog163
-rw-r--r--src/3rdparty/zlib/src/README11
-rw-r--r--src/3rdparty/zlib/src/crc32.c1258
-rw-r--r--src/3rdparty/zlib/src/crc32.h9877
-rw-r--r--src/3rdparty/zlib/src/deflate.c108
-rw-r--r--src/3rdparty/zlib/src/deflate.h27
-rw-r--r--src/3rdparty/zlib/src/gzguts.h24
-rw-r--r--src/3rdparty/zlib/src/gzlib.c8
-rw-r--r--src/3rdparty/zlib/src/gzread.c12
-rw-r--r--src/3rdparty/zlib/src/gzwrite.c38
-rw-r--r--src/3rdparty/zlib/src/infback.c3
-rw-r--r--src/3rdparty/zlib/src/inffast.c28
-rw-r--r--src/3rdparty/zlib/src/inflate.c47
-rw-r--r--src/3rdparty/zlib/src/inflate.h5
-rw-r--r--src/3rdparty/zlib/src/inftrees.c6
-rw-r--r--src/3rdparty/zlib/src/trees.c75
-rw-r--r--src/3rdparty/zlib/src/zlib.h223
-rw-r--r--src/3rdparty/zlib/src/zutil.c4
-rw-r--r--src/3rdparty/zlib/src/zutil.h22
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java43
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtLayout.java78
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java48
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java10
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java66
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/accessibility/QtNativeAccessibility.java1
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java10
-rw-r--r--src/concurrent/qtconcurrentrunbase.h8
-rw-r--r--src/corelib/animation/qabstractanimation.h1
-rw-r--r--src/corelib/animation/qvariantanimation.cpp4
-rw-r--r--src/corelib/doc/snippets/code/doc_src_containers.cpp10
-rw-r--r--src/corelib/doc/snippets/code/doc_src_qiterator.cpp32
-rw-r--r--src/corelib/doc/snippets/code/doc_src_qset.cpp6
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_io_qdir.cpp4
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_io_qdiriterator.cpp4
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_io_qfileinfo.cpp6
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_thread_qfuture.cpp4
-rw-r--r--src/corelib/global/qcompilerdetection.h6
-rw-r--r--src/corelib/global/qlogging.cpp6
-rw-r--r--src/corelib/io/qdir.cpp2
-rw-r--r--src/corelib/io/qfileinfo.cpp12
-rw-r--r--src/corelib/io/qfilesystemengine_unix.cpp14
-rw-r--r--src/corelib/io/qlockfile_win.cpp4
-rw-r--r--src/corelib/io/qprocess_unix.cpp26
-rw-r--r--src/corelib/io/qresource.cpp2
-rw-r--r--src/corelib/io/qstandardpaths.cpp2
-rw-r--r--src/corelib/io/qt_attribution.json2
-rw-r--r--src/corelib/io/qurltlds_p.h28726
-rw-r--r--src/corelib/io/qwindowspipereader.cpp2
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.cpp4
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp2
-rw-r--r--src/corelib/kernel/qcoreevent.cpp4
-rw-r--r--src/corelib/kernel/qelapsedtimer.cpp27
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp2
-rw-r--r--src/corelib/mimetypes/qmimeglobpattern.cpp8
-rw-r--r--src/corelib/mimetypes/qmimetype.cpp2
-rw-r--r--src/corelib/plugin/qlibrary.cpp10
-rw-r--r--src/corelib/serialization/qjsonparser.cpp54
-rw-r--r--src/corelib/serialization/qjsonvalue.h5
-rw-r--r--src/corelib/text/qbytearraymatcher.h1
-rw-r--r--src/corelib/text/qstring.cpp2
-rw-r--r--src/corelib/text/qstringview.h2
-rw-r--r--src/corelib/thread/qfuturewatcher.cpp12
-rw-r--r--src/corelib/thread/qorderedmutexlocker_p.h6
-rw-r--r--src/corelib/thread/qthread_p.h9
-rw-r--r--src/corelib/thread/qthread_unix.cpp74
-rw-r--r--src/corelib/thread/qthread_win.cpp12
-rw-r--r--src/corelib/time/qcalendar.cpp4
-rw-r--r--src/corelib/time/qdatetime.cpp15
-rw-r--r--src/corelib/time/qtimezoneprivate_p.h10
-rw-r--r--src/corelib/time/qtimezoneprivate_tz.cpp28
-rw-r--r--src/corelib/tools/qfreelist_p.h2
-rw-r--r--src/corelib/tools/qmargins.cpp2
-rw-r--r--src/corelib/tools/qversionnumber.h12
-rw-r--r--src/gui/accessible/qaccessible.cpp1
-rw-r--r--src/gui/doc/snippets/code/src_gui_util_qdesktopservices.cpp2
-rw-r--r--src/gui/kernel/qcursor.cpp3
-rw-r--r--src/gui/kernel/qguiapplication.cpp4
-rw-r--r--src/gui/kernel/qwindow.cpp4
-rw-r--r--src/gui/opengl/qopengl.h3
-rw-r--r--src/gui/painting/qbackingstore.cpp26
-rw-r--r--src/gui/painting/qblendfunctions_p.h53
-rw-r--r--src/gui/painting/qcompositionfunctions.cpp8
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp40
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h3
-rw-r--r--src/gui/painting/qpathclipper_p.h6
-rw-r--r--src/gui/painting/qstroker.cpp3
-rw-r--r--src/gui/rhi/qrhid3d11.cpp14
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp2
-rw-r--r--src/gui/text/qtextengine.cpp6
-rw-r--r--src/gui/text/qtexthtmlparser.cpp6
-rw-r--r--src/gui/text/qtexthtmlparser_p.h4
-rw-r--r--src/gui/text/qtextmarkdownimporter.cpp1
-rw-r--r--src/gui/text/qtextmarkdownwriter.cpp2
-rw-r--r--src/gui/text/qzip.cpp20
-rw-r--r--src/gui/util/qdesktopservices.cpp24
-rw-r--r--src/gui/util/qpkmhandler.cpp2
-rw-r--r--src/gui/vulkan/qvulkaninstance.cpp7
-rw-r--r--src/gui/vulkan/qvulkanwindow.cpp25
-rw-r--r--src/network/access/qhttp2configuration.cpp2
-rw-r--r--src/network/access/qhttp2protocolhandler.cpp20
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp50
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h6
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp2
-rw-r--r--src/network/access/qnetworkreplywasmimpl.cpp10
-rw-r--r--src/network/access/qnetworkrequest.cpp13
-rw-r--r--src/network/kernel/qauthenticator.cpp3
-rw-r--r--src/network/kernel/qauthenticator_p.h1
-rw-r--r--src/network/kernel/qhostinfo_unix.cpp1
-rw-r--r--src/network/kernel/qnetworkinterface.cpp2
-rw-r--r--src/network/kernel/qnetworkinterface_unix.cpp2
-rw-r--r--src/network/kernel/qnetworkproxy.cpp2
-rw-r--r--src/network/socket/qabstractsocket.cpp49
-rw-r--r--src/network/socket/qabstractsocket_p.h8
-rw-r--r--src/network/socket/qlocalserver.cpp2
-rw-r--r--src/network/socket/qlocalsocket.cpp2
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp5
-rw-r--r--src/network/ssl/qdtls.cpp2
-rw-r--r--src/network/ssl/qocspresponse.cpp2
-rw-r--r--src/network/ssl/qsslsocket.cpp2
-rw-r--r--src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp4
-rw-r--r--src/plugins/platforms/android/androidjniaccessibility.cpp311
-rw-r--r--src/plugins/platforms/android/androidjniaccessibility.h4
-rw-r--r--src/plugins/platforms/android/androidjniinput.cpp38
-rw-r--r--src/plugins/platforms/android/androidjnimain.cpp75
-rw-r--r--src/plugins/platforms/android/androidjnimain.h3
-rw-r--r--src/plugins/platforms/android/qandroidplatformaccessibility.cpp8
-rw-r--r--src/plugins/platforms/android/qandroidplatformaccessibility.h1
-rw-r--r--src/plugins/platforms/android/qandroidplatformintegration.cpp32
-rw-r--r--src/plugins/platforms/android/qandroidplatformintegration.h7
-rw-r--r--src/plugins/platforms/android/qandroidplatformscreen.cpp68
-rw-r--r--src/plugins/platforms/android/qandroidplatformscreen.h14
-rw-r--r--src/plugins/platforms/cocoa/qcocoacursor.mm37
-rw-r--r--src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm7
-rw-r--r--src/plugins/platforms/cocoa/qcocoascreen.mm6
-rw-r--r--src/plugins/platforms/cocoa/qnsview_mouse.mm16
-rw-r--r--src/plugins/platforms/cocoa/qnsview_tablet.mm7
-rw-r--r--src/plugins/platforms/ios/qiosdocumentpickercontroller.h4
-rw-r--r--src/plugins/platforms/ios/qiosdocumentpickercontroller.mm15
-rw-r--r--src/plugins/platforms/windows/qwindowsglcontext.cpp17
-rw-r--r--src/plugins/platforms/windows/qwindowsopengltester.cpp3
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp24
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp9
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_xi2.cpp2
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.cpp2
-rw-r--r--src/plugins/printsupport/cups/qcupsprintengine.cpp11
-rw-r--r--src/plugins/printsupport/cups/qcupsprintengine_p.h1
-rw-r--r--src/plugins/styles/mac/qmacstyle_mac.mm38
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog_unix.cpp1
-rw-r--r--src/printsupport/dialogs/qprintdialog_unix.cpp7
-rw-r--r--src/sql/kernel/qsqlquery.cpp6
-rw-r--r--src/testlib/qplaintestlogger.cpp27
-rw-r--r--src/testlib/qplaintestlogger_p.h7
-rw-r--r--src/testlib/qtestdata.h8
-rw-r--r--src/testlib/qtestutil_macos.mm7
-rw-r--r--src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp2
-rw-r--r--src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp2
-rw-r--r--src/widgets/dialogs/qmessagebox.cpp2
-rw-r--r--src/widgets/dialogs/qwizard.cpp6
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp69
-rw-r--r--src/widgets/kernel/qwidgetwindow.cpp3
-rw-r--r--src/widgets/styles/qfusionstyle.cpp44
-rw-r--r--src/widgets/util/qcompleter.cpp2
-rw-r--r--src/widgets/widgets/qmainwindowlayout.cpp14
-rw-r--r--tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp37
-rw-r--r--tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp6
-rw-r--r--tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp27
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp9
-rw-r--r--tests/auto/corelib/global/qflags/tst_qflags.cpp69
-rw-r--r--tests/auto/corelib/global/qlogging/tst_qlogging.cpp20
-rw-r--r--tests/auto/corelib/io/qdataurl/tst_qdataurl.cpp62
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/BLACKLIST3
-rw-r--r--tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp9
-rw-r--r--tests/auto/corelib/io/qprocess/tst_qprocess.cpp93
-rw-r--r--tests/auto/corelib/io/qurl/tst_qurl.cpp2
-rw-r--r--tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp6
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp10
-rw-r--r--tests/auto/corelib/kernel/qsharedmemory/tst_qsharedmemory.cpp22
-rw-r--r--tests/auto/corelib/kernel/qsystemsemaphore/tst_qsystemsemaphore.cpp9
-rw-r--r--tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp6
-rw-r--r--tests/auto/corelib/serialization/json/json.pro1
-rw-r--r--tests/auto/corelib/serialization/json/tst_qtjson.cpp72
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest.zipbin0 -> 107060 bytes
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html44
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries7
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries7
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries22
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml0
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml7
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml8
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml8
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries189
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent0
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html60
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent0
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.entbin4 -> 0 bytes
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.entbin54 -> 0 bytes
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent0
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml9
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml10
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.entbin12 -> 0 bytes
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries29
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries15
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent0
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent0
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml7
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent3
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries65
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries32
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml10
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xmlbin124 -> 0 bytes
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xmlbin132 -> 0 bytes
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xmlbin140 -> 0 bytes
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml10
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml10
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml7
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml7
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml7
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml7
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml7
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml10
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml7
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml8
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml7
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml6
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml5
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml4
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries121
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries120
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root1
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml1433
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/069.xml (renamed from tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml)0
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/076.xml (renamed from tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml)0
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/090.xml (renamed from tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml)0
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/091.xml (renamed from tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml)0
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/qxmlstream.pro2
-rw-r--r--tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp30
-rw-r--r--tests/auto/corelib/text/qstring/tst_qstring.cpp6
-rw-r--r--tests/auto/corelib/text/qstringlist/tst_qstringlist.cpp5
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp13
-rw-r--r--tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp12
-rw-r--r--tests/auto/dbus/qdbusconnection/BLACKLIST4
-rw-r--r--tests/auto/gui/kernel/qbackingstore/tst_qbackingstore.cpp39
-rw-r--r--tests/auto/gui/qvulkan/tst_qvulkan.cpp11
-rw-r--r--tests/auto/gui/text/qfont/BLACKLIST6
-rw-r--r--tests/auto/gui/text/qglyphrun/BLACKLIST1
-rw-r--r--tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp41
-rw-r--r--tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp9
-rw-r--r--tests/auto/gui/text/qtextmarkdownwriter/tst_qtextmarkdownwriter.cpp29
-rw-r--r--tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp19
-rw-r--r--tests/auto/network/access/http2/http2srv.cpp11
-rw-r--r--tests/auto/network/access/http2/http2srv.h6
-rw-r--r--tests/auto/network/access/http2/tst_http2.cpp69
-rw-r--r--tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp36
-rw-r--r--tests/auto/other/gestures/BLACKLIST5
-rw-r--r--tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp33
-rw-r--r--tests/auto/testlib/selftests/expected_float.junitxml307
-rw-r--r--tests/auto/testlib/selftests/expected_float.lightxml665
-rw-r--r--tests/auto/testlib/selftests/expected_float.tap1181
-rw-r--r--tests/auto/testlib/selftests/expected_float.teamcity336
-rw-r--r--tests/auto/testlib/selftests/expected_float.txt2
-rw-r--r--tests/auto/testlib/selftests/expected_float.xml668
-rw-r--r--tests/auto/testlib/selftests/float/tst_float.cpp6
-rwxr-xr-xtests/auto/testlib/selftests/generate_expected_output.py7
-rw-r--r--tests/auto/testlib/selftests/tst_selftests.cpp2
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp8
-rw-r--r--tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp20
-rw-r--r--tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp22
-rw-r--r--tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp38
-rw-r--r--tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp10
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp2
-rw-r--r--tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp6
-rw-r--r--tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp2
924 files changed, 38426 insertions, 31140 deletions
diff --git a/.qmake.conf b/.qmake.conf
index 4048b20d7b..6f737ce71a 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -6,4 +6,4 @@ DEFINES += QT_NO_JAVA_STYLE_ITERATORS
QT_SOURCE_TREE = $$PWD
QT_BUILD_TREE = $$shadowed($$PWD)
-MODULE_VERSION = 5.15.8
+MODULE_VERSION = 5.15.9
diff --git a/LICENSE.QT-LICENSE-AGREEMENT b/LICENSE.QT-LICENSE-AGREEMENT
index 8b80e563b5..7487df854f 100644
--- a/LICENSE.QT-LICENSE-AGREEMENT
+++ b/LICENSE.QT-LICENSE-AGREEMENT
@@ -1,48 +1,65 @@
QT LICENSE AGREEMENT
-Agreement version 4.3
+Agreement version 4.4
This Qt License Agreement ("Agreement") is a legal agreement for the licensing
of Licensed Software (as defined below) between The Qt Company (as defined
-below) and the Licensee who has accepted the terms of this Agreement by
-downloading or using the Licensed Software and/or as defined herein:
+below) and the Licensee who has accepted the terms of this Agreement by signing
+this Agreement or by downloading or using the Licensed Software or in any other
+appropriate means.
Capitalized terms used herein are defined in Section 1.
WHEREAS:
- (A) Licensee wishes to use the Licensed Software for the purpose of
- developing and distributing Applications and/or Devices (each as
- defined below); and
- (B) The Qt Company is willing to grant the Licensee a right to use
- Licensed Software for such a purpose pursuant to term and conditions
- of this Agreement.
+ (A) Licensee wishes to use the Licensed Software for the purpose of
+ developing and distributing Applications and/or Devices (each as defined
+ below);
+ (B) The Qt Company is willing to grant the Licensee a right to use Licensed
+ Software for such a purpose pursuant to term and conditions of this
+ Agreement; and
+ (C) Parties wish to enable that their respective Affiliates also can sell
+ and purchase licenses to serve Licensee Affiliates' needs to use Licensed
+ Software pursuant to terms of the Agreement. Any such license purchases by
+ Licensee Affiliates from The Qt Company or its Affiliates will create
+ contractual relationship directly between the relevant The Qt Company and
+ the respective ordering Licensee Affiliate "Acceding Agreement").
+ Accordingly, Licensee shall not be a party to any such Acceding Agreement,
+ and no rights or obligations are created to the Licensee thereunder but all
+ rights and obligations under such Acceding Agreement are vested and borne
+ solely by the ordering Licensee Affiliate and the relevant The Qt Company
+ as a contracting parties under such Acceding Agreement.
NOW, THEREFORE, THE PARTIES HEREBY AGREE AS FOLLOWS:
1. DEFINITIONS
-"Affiliate" of a Party shall mean an entity (i) which is directly
-or indirectly controlling such Party; (ii) which is under the same direct or
-indirect ownership or control as such Party; or (iii) which is directly or
-indirectly owned or controlled by such Party. For these purposes, an entity
-shall be treated as being controlled by another if that other entity has fifty
-percent (50 %) or more of the votes in such entity, is able to direct its
-affairs and/or to control the composition of its board of directors or
-equivalent body.
+"Affiliate" of a Party shall mean an entity
+ (i) which is directly or indirectly controlling such Party;
+ (ii) which is under the same direct or indirect ownership or control as
+ such Party; or
+ (iii) which is directly or indirectly owned or controlled by such Party.
+For these purposes, an entity shall be treated as being controlled by another
+if that other entity has fifty percent (50 %) or more of the votes in such
+entity, is able to direct its affairs and/or to control the composition of its
+board of directors or equivalent body.
"Add-on Products" shall mean The Qt Company's specific add-on software products
-(for example Qt Safe Renderer, Qt for Automation, Qt Application Manager), which
-are not licensed as part of The Qt Company's standard offering, but shall be
-included into the scope of Licensed Software only if so specifically agreed
-between the Parties.
+which are not licensed as part of The Qt Company's standard product offering,
+but shall be included into the scope of Licensed Software only if so
+specifically agreed between the Parties.
-"Applications" shall mean Licensee's software products created using the
-Licensed Software, which may include the Redistributables, or part thereof.
+"Agreement Term" shall mean the validity period of this Agreement, as set forth
+in Section 12.
-"Contractor(s)" shall mean third party consultants, distributors and contractors
-performing services to the Licensee under applicable contractual arrangement.
+"Applications" shall mean software products created using the Licensed
+Software, which include the Redistributables, or part thereof.
-"Customer(s)" shall mean Licensee's end users to whom Licensee, directly or
-indirectly, distributes copies of the Redistributables.
+"Contractor(s)" shall mean third party consultants, distributors and
+contractors performing services to the Licensee under applicable contractual
+arrangement.
+
+"Customer(s)" shall mean Licensee's customers to whom Licensee, directly or
+indirectly, distributes copies of the Redistributables as integrated or
+incorporated into Applications or Devices.
"Data Protection Legislation" shall mean the General Data Protection Regulation
(EU 2016/679) (GDPR) and any national implementing laws, regulations and
@@ -50,44 +67,61 @@ secondary legislation, as may be amended or updated from time to time, as well
as any other data protection laws or regulations applicable in relevant
territory.
-"Deployment Platforms" shall mean operating systems and/or hardware specified
-in the License Certificate, on which the Redistributables can be distributed
-pursuant to the terms and conditions of this Agreement.
+"Deployment Platforms" shall mean target operating systems and/or hardware
+specified in the License Certificate, on which the Redistributables can be
+distributed pursuant to the terms and conditions of this Agreement.
"Designated User(s)" shall mean the employee(s) of Licensee or Licensee's
-Affiliates acting within the scope of their employment or Licensee's Contractors
-acting within the scope of their services for Licensee and on behalf of
-Licensee. Designated Users shall be named in the License Certificate.
+Affiliates acting within the scope of their employment or Licensee's
+Contractors acting within the scope of their services on behalf of Licensee.
"Development License" shall mean the license needed by the Licensee for each
Designated User to use the Licensed Software under the license grant described
in Section 3.1 of this Agreement. Development Licenses are available per
respective Licensed Software products, each product having its designated scope
-and purpose of use. Distribution Licenses are always connected to Qt for Device
-Creation product and Qt for MCUs product only.
-
-"Development Platforms" shall mean those operating systems specified in the
-License Certificate, in which the Licensed Software can be used under the
-Development License, but not distributed in any form or used for any other purpose.
-
-"Devices" shall mean hardware devices or products that 1) are manufactured
-and/or distributed by the Licensee or its Affiliates or Contractors, and (2)(i)
-incorporate or integrate the Redistributables or parts thereof; or (ii) where
-the main user interface or substantial functionality of such unit , when used by
-a Customer, is provided by Application(s) or otherwise depends on the Licensed
-Software, regardless of whether the Redistributables are distributed together
-with the hardware or not. Devices covered with this Agreement shall be specified
-in Appendix 2 or in a quote.
-
-"Distribution License(s)" shall mean the license required for any kind of sale,
-trade, exchange, loan, lease, rental or other distribution by or on behalf of
-Licensee to a third party of Redistributables in connection with Devices
-pursuant to license grant described in Section 3.3 of this Agreement.
-
-"Distribution License Packs" shall mean set of prepaid Distribution Licenses for
-distribution of Redistributables, as defined in The Qt Company's standard price
-list, quote, Purchase Order confirmation or in an appendix hereto, as the case
-may be.
+and purpose of use.
+
+"Development License Term" shall mean the agreed validity period of the
+Development License or QA Tools license during which time the relevant Licensed
+Software product can be used pursuant to this Agreement. Agreed Development
+License Term, as ordered and paid for by the Licensee, shall be memorialized in
+the applicable License Certificate.
+
+"Development Platforms" shall mean those host operating systems specified in
+the License Certificate, in which the Licensed Software can be used under the
+Development License.
+
+"Devices" shall mean
+ (1) hardware devices or products that
+ i. are manufactured and/or distributed by the Licensee, its Affiliates,
+ Contractors or Customers, and
+ ii. incorporate, integrate or link to Applications such that
+ substantial functionality of such unit, when used by an End User,
+ is provided by Application(s) or otherwise depends on the Licensed
+ Software, regardless of whether the Application is developed by
+ Licensee or its Contractors; or
+ (2) Applications designed for the hardware devices specified in item (1).
+
+ Devices covered by this Agreement shall be specified in Appendix 2 or in a
+ quote.
+
+"Distribution License(s)" shall mean a royalty-bearing license required for any
+kind of sale, trade, exchange, loan, lease, rental or other distribution by or
+on behalf of Licensee to a third party of Redistributables in connection with
+Devices pursuant to license grant described in Section 3.3 of this Agreement.
+Distribution Licensed are sold separately for each type of Device respectively
+and cannot be used for any type of Devices at Licensee's discretion.
+
+"Distribution License Packs" shall mean set of prepaid Distribution Licenses
+for distribution of Redistributables, as defined in The Qt Company's standard
+price list, quote, Purchase Order confirmation or in an Appendix 2 hereto, as
+the case may be.
+
+"End User" shall mean the final end user of the Application or a Device.
+
+"Evaluation License Term" shall mean a time period specified in the License
+Certificate for the Licensee to use the relevant Licensed Software for
+evaluation purposes according to Section 3.6 herein.
"Intellectual Property Rights" shall mean patents (including utility models),
design patents, and designs (whether or not capable of registration), chip
@@ -99,136 +133,117 @@ well as any trade secrets.
"License Certificate" shall mean a certificate generated by The Qt Company for
each Designated User respectively upon them downloading the Licensed Software,
which will be available under respective Designated User's Qt Account at
-account.qt.io. License Certificates will specify the Designated User, the
-Development Platforms, Deployment Platforms and the License Term. Such terms are
-considered part of the licenses granted hereunder and shall be updated from time
-to time to reflect any agreed changes to the foregoing terms relating to
-Designated User's rights to the Licensed Software.
+account.qt.io. License Certificates will specify relevant information
+pertaining the Licensed Software purchased by Licensee and Designated User's
+license to the Licensed Software.
"License Fee" shall mean the fee charged to the Licensee for rights granted
under the terms of this Agreement.
-"License Term" shall mean the agreed validity period of the Development License
-of the respective Designated User, during which time the Designated User is
-entitled to use the Licensed Software, as set forth in the respective License
-Certificate.
-
-"Licensed Software" shall mean either
- (i) Qt for Application Development or
- (ii) Qt for Device Creation, and/or
- (iii) Qt 3D Studio, and/or
- (iv) Qt Design Studio, and/or
- (v) Qt for MCUs, and/or
- (vi) selected Add-on Products, if any,
-
-depending on which product(s) the Licensee has purchased under this Agreement,
-as well as corresponding online or electronic documentation, associated media
-and printed materials, including the source code (where applicable), example
-programs and the documentation, licensed to the Licensee under this Agreement.
-Licensed Software does not include Third Party Software (as defined in
-Section 4) or Open Source Qt. The Qt Company may, in the course of its
-development activities, at its free and absolute discretion and without any
-obligation to send or publish any notifications to the Licensee or in general,
-make changes, additions or deletions in the components and functionalities of
-the Licensed Software, provided that no such changes, additions or deletions
-will affect the already released version of the Licensed Software, but only
-upcoming version(s).
+"Licensed Software" shall mean specified product of commercially licensed
+version of Qt Software and/or QA Tools defined in Appendix 1 and/or Appendix 3,
+which Licensee has purchased and which is provided to Licensee under the terms
+of this Agreement. Licensed Software shall include corresponding online or
+electronic documentation, associated media and printed materials, including the
+source code (where applicable), example programs and the documentation.
+Licensed Software does not include Third Party Software (as defined in Section
+4) or Open Source Qt. The Qt Company may, in the course of its development
+activities, at its free and absolute discretion and without any obligation to
+send or publish any notifications to the Licensee or in general, make changes,
+additions or deletions in the components and functionalities of the Licensed
+Software, provided that no such changes, additions or deletions will affect
+the already released version of the Licensed Software, but only upcoming
+version(s).
"Licensee" shall mean the individual or legal entity that is party to this
-Agreement, as identified on the signature page hereof.
+Agreement.
-"Licensee's Records" shall mean books and records that are likely to contain
-information bearing on Licensee's compliance with this Agreement, Licensee's use
-of Open Source Qt and/or the payments due to The Qt Company under this
-Agreement, including, but not limited to user information, assembly logs, sales
-records and distribution records.
+"Licensee's Records" shall mean books and records that contain information
+bearing on Licensee's compliance with this Agreement, Licensee's use of Open
+Source Qt and/or the payments due to The Qt Company under this Agreement,
+including, but not limited to user information, assembly logs, sales records
+and distribution records.
"Modified Software" shall have the meaning as set forth in Section 2.3.
-"Online Services" shall mean any services or access to systems made available by
-The Qt Company to the Licensee over the Internet relating to the Licensed
+"Online Services" shall mean any services or access to systems made available
+by The Qt Company to the Licensee over the Internet relating to the Licensed
Software or for the purpose of use by the Licensee of the Licensed Software or
Support. Use of any such Online Services is discretionary for the Licensee and
some of them may be subject to additional fees.
-"Open Source Qt" shall mean the non-commercial Qt computer software products,
-licensed under the terms of the GNU Lesser General Public License, version 2.1
-or later ("LGPL") or the GNU General Public License, version 2.0 or later
-("GPL"). For clarity, Open Source Qt shall not be provided nor governed under
-this Agreement.
+"Open Source Qt" shall mean Qt Software available under the terms of the GNU
+Lesser General Public License, version 2.1 or later ("LGPL") or the GNU General
+Public License, version 2.0 or later ("GPL"). For clarity, Open Source Qt shall
+not be provided, governed or used under this Agreement.
"Party" or "Parties" shall mean Licensee and/or The Qt Company.
-"Permitted Combination" shall have the meaning as set forth in Section
-3.4(viii).
+"Permitted Software" shall mean (i) third party open source software products
+that are generally available for public in source code form and free of any
+charge under any of the licenses approved by Open Source Initiative as listed
+on https://opensource.org/licenses, which may include parts of Open Source Qt
+or be developed using Open Source Qt; and (ii) software The Qt Company has made
+available via its Qt Marketplace online distribution channel.
"Pre-Release Code" shall have the meaning as set forth in Section 4.
-"Prohibited Combination" shall mean any means to (i) use, combine, incorporate,
+"Prohibited Combination" shall mean any effort to use, combine, incorporate,
link or integrate Licensed Software with any software created with or
-incorporating Open Source Qt, (ii) use Licensed Software for creation of any
-software created with or incorporating Open Source Qt, or (iii) incorporate or
-integrate Applications into a hardware device or product other than a Device.
-
-"Qt 3D Studio" shall mean The Qt Company's productized offering, which consist
-of all versions of modules and tools as set forth in Appendix 1.
-
-"Qt Design Studio" shall mean The Qt Company's productized offering, which
-consist of all versions of modules and tools as set forth in Appendix 1.
+incorporating Open Source Qt, or use Licensed Software for creation of any such
+software.
-"Qt for Application Development" shall mean The Qt Company's productized
-offering, which consist of all versions of modules and tools as set forth in
-Appendix 1.
+"Purchase Order" shall have the meaning as set forth in Section 10.2.
-"Qt for Device Creation" shall mean The Qt Company's productized offering,
-which consist of all versions of modules and tools as set forth in Appendix 1.
+"QA Tools" shall mean software libraries and tools as defined in Appendix 1
+depending on which product(s) the Licensee has purchased under the Agreement.
-"Qt for MCUs" shall mean The Qt Company's productized offering, which consist
-of all versions of modules and tools as set forth in Appendix 1.
+"Qt Software" shall mean the software libraries and tools of The Qt Company,
+which The Qt Company makes available under commercial and/or open source
+licenses.
"Redistributables" shall mean the portions of the Licensed Software set forth
in Appendix 1 that may be distributed pursuant to the terms of this Agreement
-in object code form only, including any relevant documentation. Where
-relevant, any reference to Licensed Software in this Agreement shall include
-and refer also to Redistributables.
+in object code form only, including any relevant documentation. Where relevant,
+any reference to Licensed Software in this Agreement shall include and refer
+also to Redistributables.
-"Renewal Term" shall mean an extension of previous License Term as agreed
-between the Parties.
+"Renewal Term" shall mean an extension of previous Development License Term as
+agreed between the Parties.
"Submitted Modified Software" shall have the meaning as set forth in Section
2.3.
"Support" shall mean standard developer support that is provided by The Qt
Company to assist Designated Users in using the Licensed Software in accordance
-with The Qt Company's standard support terms available at
-https://www.qt.io/terms-conditions/ and as further defined in Section 8
-hereunder.
+with this Agreement and the Support Terms.
-"Taxes" shall have the meaning set forth in Section 10.5.
+"Support Terms" shall mean The Qt Company's standard support terms specified in
+Appendix 9 hereto.
-"Term" shall have the meaning set forth in Section 12.
+"Taxes" shall have the meaning set forth in Section 10.5.
"The Qt Company" shall mean:
- (i) in the event Licensee is an individual residing in the United States
- or a legal entity incorporated in the United States or having its
- headquarters in the United States, The Qt Company Inc., a
- Delaware corporation with its office at 2350 Mission College Blvd.,
- Suite 1020, Santa Clara, CA 95054, USA.; or
- (ii) in the event the Licensee is an individual residing outside of the
- United States or a legal entity incorporated outside of the United
- States or having its registered office outside of the United States,
- The Qt Company Ltd., a Finnish company with its registered office
- at Bertel Jungin aukio D3A, 02600 Espoo, Finland.
+ (i) in the event Licensee is an individual residing in the United States or
+ a legal entity incorporated in the United States or having its
+ headquarters in the United States, The Qt Company Inc., a Delaware
+ corporation with its office at 3031 Tisch Way, 110 Plaza West,
+ San Jose, CA 95128, USA.; or
+ (ii) in the event the Licensee is an individual residing outside of the
+ United States or a legal entity incorporated outside of the United
+ States or having its registered office outside of the United States,
+ The Qt Company Ltd., a Finnish company with its registered office at
+ Bertel Jungin aukio D3A, 02600 Espoo, Finland.
"Third-Party Software" shall have the meaning set forth in Section 4.
"Updates" shall mean a release or version of the Licensed Software containing
-bug fixes, error corrections and other changes that are generally made available
-to users of the Licensed Software that have contracted for Support. Updates are
-generally depicted as a change to the digits following the decimal in the
-Licensed Software version number. The Qt Company shall make Updates available to
-the Licensee under the Support. Updates shall be considered as part of the
-Licensed Software hereunder.
+bug fixes, error corrections and other changes that are generally made
+available to users of the Licensed Software that have contracted for Support.
+Updates are generally depicted as a change to the digits following the decimal
+in the Licensed Software version number. The Qt Company shall make Updates
+available to the Licensee under the Support. Updates shall be considered as
+part of the Licensed Software hereunder.
"Upgrades" shall mean a release or version of the Licensed Software containing
enhancements and new features and are generally depicted as a change to the
@@ -239,38 +254,45 @@ of the Licensed Software hereunder.
2. OWNERSHIP
2.1. Ownership of The Qt Company
-The Licensed Software is protected by copyright laws and international copyright
-treaties, as well as other intellectual property laws and treaties. The Licensed
-Software is licensed, not sold.
+
+The Licensed Software is protected by copyright laws and international
+copyright treaties, as well as other intellectual property laws and treaties.
+The Licensed Software is licensed, not sold.
All of The Qt Company's Intellectual Property Rights are and shall remain the
-exclusive property of The Qt Company or its licensors respectively.
+exclusive property of The Qt Company or its licensors respectively. No rights
+to The Qt Company's Intellectual Property Rights are assigned or granted to
+Licensee under this Agreement, except when and to the extent expressly
+specified herein.
2.2. Ownership of Licensee
+
All the Licensee's Intellectual Property Rights are and shall remain the
exclusive property of the Licensee or its licensors respectively.
-All Intellectual Property Rights to the Modified Software, Applications and Devices
-shall remain with the Licensee and no rights thereto shall be granted by the
-Licensee to The Qt Company under this Agreement (except as set forth in Section
-2.3 below).
+All Intellectual Property Rights to the Modified Software, Applications and
+Devices shall remain with the Licensee and no rights thereto shall be granted
+by the Licensee to The Qt Company under this Agreement (except as set forth in
+Section 2.3 below).
2.3. Modified Software
+
Licensee may create bug-fixes, error corrections, patches or modifications to
the Licensed Software ("Modified Software"). Such Modified Software may break
-the source or binary compatibility with the Licensed Software (including without
-limitation through changing the application programming interfaces ("API") or by
-adding, changing or deleting any variable, method, or class signature in the
-Licensed Software and/or any inter-process protocols, services or standards in
-the Licensed Software libraries). To the extent that Licensee's Modified
-Software so breaks source or binary compatibility with the Licensed Software,
-Licensee acknowledges that The Qt Company's ability to provide Support may be
-prevented or limited and Licensee's ability to make use of Updates may be restricted.
+the source or binary compatibility with the Licensed Software (including
+without limitation through changing the application programming interfaces
+("API") or by adding, changing or deleting any variable, method, or class
+signature in the Licensed Software and/or any inter-process protocols,
+services or standards in the Licensed Software libraries). To the extent that
+Licensee's Modified Software so breaks source or binary compatibility with the
+Licensed Software, Licensee acknowledges that The Qt Company's ability to
+provide Support may be prevented or limited and Licensee's ability to make use
+of Updates may be restricted.
Licensee may, at its sole and absolute discretion, choose to submit Modified
Software to The Qt Company ("Submitted Modified Software") in connection with
-Licensee's Support request, service request or otherwise. In the event Licensee
-does so, then, Licensee hereby grants The Qt Company a sublicensable,
+Licensee's Support request, service request or otherwise. In the event
+Licensee does so, then, Licensee hereby grants The Qt Company a sublicensable,
assignable, irrevocable, perpetual, worldwide, non-exclusive, royalty-free and
fully paid-up license, under all of Licensee's Intellectual Property Rights, to
reproduce, adapt, translate, modify, and prepare derivative works of, publicly
@@ -281,181 +303,222 @@ discretion.
3. LICENSES GRANTED
3.1. Development with Licensed Software
+
Subject to the terms of this Agreement, The Qt Company grants to Licensee a
-worldwide, non-exclusive, non-transferable license, valid for the License Term,
-to use, modify and copy the Licensed Software by Designated Users on the
-Development Platforms for the sole purposes of designing, developing,
-demonstrating and testing Application(s) and/or Devices, and to provide thereto
-related support and other related services to end-user Customers. Each
-Application and/or Device can only include, incorporate or integrate code
-generated under this Agreement by such Designated Users who are duly licensed
-for the applicable Development Platform(s) and Deployment Platform(s) (i.e have
-a valid license for the appropriate Licensed Software product).
+worldwide, non-exclusive, non-transferable license, valid for each Development
+License Term, to use, modify and copy the Licensed Software by Designated
+Users on the Development Platforms for the sole purposes of designing,
+developing, demonstrating and testing Application(s) and/or Devices, and to
+provide thereto related support and other related services to Customers. Each
+Application and/or Device can only include, incorporate or integrate
+contributions by such Designated Users who are duly licensed for the applicable
+Development Platform(s) and Deployment Platform(s) (i.e have a valid license
+for the appropriate Licensed Software product).
Licensee may install copies of the Licensed Software on five (5) computers per
Designated User, provided that only the Designated Users who have a valid
Development License may use the Licensed Software.
Licensee may at any time designate another Designated User to replace a
-then-current Designated User by notifying The Qt Company in writing, provided
-that any Designated User may be replaced only once during any six-month period.
-
-Upon expiry of the initially agreed License Term, the respective License Terms
-shall be automatically extended to one or more Renewal Term(s), unless and
-until either Party notifies the other Party in writing, or any other method
-acceptable to The Qt Company, that it does not wish to continue the License
-Term, such notification to be provided to the other Party no less than thirty
-(30) days before expiry of the respective License Term.
-
-Unless otherwise agreed between the Parties, Renewal Term shall be of equal
-length with the initial License Term.
+then-current Designated User by notifying The Qt Company in writing, where such
+replacement is due to termination of employment, change of job duties, long
+time absence or other such permanent reason affecting Designated User's need
+for Licensed Software.
+
+Upon expiry of the initially agreed Development License Term, the respective
+Development License Term shall be automatically extended to one or more Renewal
+Term(s), unless and until either Party notifies the other Party in writing, or
+any other method acceptable to The Qt Company (it being specifically
+acknowledged and understood that verbal notification is explicitly deemed
+inadequate in all circumstances), that it does not wish to continue the
+Development License Term, such notification to be provided to the other Party
+no less than thirty (30) days before expiry of the respective Development
+License Term. The Qt Company shall, in good time before the due date for the
+above notification, remind the Licensee on the coming Renewal Term. Unless
+otherwise agreed between the Parties, Renewal Term shall be 12 months.
Any such Renewal Term shall be subject to License Fees agreed between the
-Parties or, if no advance agreement exists, subject to The Qt Company's standard
-pricing applicable at the commencement date of any such Renewal Term.
-
-Any price or other term specified for a Renewal Term shall be valid only for the
-specified time.
+Parties or, if no advance agreement exists, subject to The Qt Company's
+standard list pricing applicable at the commencement date of any such
+Renewal Term.
The Qt Company may either request the Licensee to place a purchase order
-corresponding to a quote by The Qt Company, or uses Licensees stored Credit
-Card information in the QtAccount to automatically charge the Licensee for the
+corresponding to a quote by The Qt Company, or use Licensee's stored Credit
+Card information in the Qt Account to automatically charge the Licensee for the
relevant Renewal Term.
-In the event Licensee does not prevent auto-renewal pursuant the above, but a
-Renewal Term is nevertheless not duly ordered within 30 days from the date of
-the respective notification from The Qt Company and/or the respective License
-Fee paid by due date specified in The Qt Company's respective invoice, The Qt
-Company shall apply a reinstatement fee equal to ten percent (10 %) of the
-total value of the License Fees of the Development Licenses for the expired
-term to be added to the License Fee of the respective Renewal Term.
-
-In the event Licensee chooses not to renew a Development License for a Renewal
-Term by notifying The Qt Company thereof no less than thirty (30) days before
-expiry of the respective License Term, Licensee may still reinstate such
-expired Development Licenses for a Renewal Term subject to applicable renewal
-Term License Fees until thirty (30) days from the expiry of the initially
-agreed License Term or preceding Renewal Term. After such thirty (30) day
-period a Development License shall be subject to applicable License Fees for
-a new Development License and not any Renewal Term License Fees.
-
3.2. Distribution of Applications
-Subject to the terms of this Agreement, The Qt Company grants to Licensee
-a worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to
-this Agreement) right and license, valid for the Term, to
- (i) distribute, by itself or through its Contractors, Redistributables as
- installed, incorporated or integrated into Applications for execution
- on the Deployment Platforms, and
- (ii) grant sublicenses to Redistributables, as distributed hereunder, for
- Customers solely for Customer's internal use and to the extent
- necessary in order for the Customers to use the Applications for their
- respective intended purposes.
+
+Subject to the terms of this Agreement, The Qt Company grants to Licensee a
+worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to
+this Agreement), right and license, valid for the Agreement Term, to
+ (i) distribute, by itself or through its Contractors, Redistributables as
+ installed, incorporated or integrated into Applications for execution
+ on the Deployment Platforms, and
+ (ii) grant perpetual and irrevocable sublicenses to Redistributables, as
+ distributed hereunder, for Customers solely to the extent necessary in
+ order for the Customers to use the Applications for their respective
+ intended purposes.
Right to distribute the Redistributables as part of an Application as provided
-herein is not royalty-bearing but is conditional upon the Licensee not having
-any unpaid License Fees for Development Licenses owed to The Qt Company at the
-time of distribution of any Redistributables to Customers.
+herein is not royalty-bearing but is conditional upon the Application having
+been created, updated and maintained under a valid and duly paid Development
+Licenses.
3.3. Distribution of Devices
+
Subject to the terms of this Agreement, The Qt Company grants to Licensee a
worldwide, non-exclusive, non-transferable, revocable (for cause pursuant to
-this Agreement) right and license, valid for the Term, to
- (i) distribute, by itself or through one or more tiers of Contractors,
- Redistributables as installed, incorporated or integrated, or intended
- to be installed, incorporated or integrated into Devices for execution
- on the Deployment Platforms, and
- (ii) grant sublicenses to Redistributables, as distributed hereunder, for
- Customers solely for Customer's internal use and to the extent
- necessary in order for the Customers to use the Devices for their
- respective intended purposes.
-
-Right to distribute the Redistributables with Devices as provided herein is
-conditional upon the Licensee (i) not having any unpaid License Fees for
-Development Licenses owed to The Qt Company, and (ii) having purchased and paid
-corresponding Distribution Licenses at the time of distribution of any
-Redistributables to Customers.
+this Agreement), right and license, valid for the Agreement Term, to
+ (i) distribute, by itself or through one or more tiers of Contractors,
+ Redistributables as installed, incorporated or integrated, or intended
+ to be installed, incorporated or integrated into Devices for execution
+ on the Deployment Platforms, and
+ (ii) grant perpetual and irrevocable sublicenses to Redistributables, as
+ distributed hereunder, for Customers solely to the extent necessary in
+ order for the Customers to use the Devices for their respective
+ intended purposes.
+
+Right to distribute the Devices as provided herein is conditional upon
+ (i) the Devices having been created, updated and maintained under a valid
+ and duly paid Development Licenses, and
+ (ii) the Licensee having acquired corresponding Distribution Licenses at
+ the time of distribution of any Devices to Customers.
3.4. Further Requirements
+
The licenses granted above in this Section 3 by The Qt Company to Licensee are
conditional and subject to Licensee's compliance with the following terms:
- (i) Licensee shall not remove or alter any copyright, trademark or other
- proprietary rights notice(s) contained in any portion of the Licensed
- Software;
- (ii) Applications must add primary and substantial functionality to the
- Licensed Software so as not to compete with the Licensed Software;
- (iii) Applications may not pass on functionality which in any way makes it
- possible for others to create software with the Licensed Software;
- provided however that Licensee may use the Licensed Software's
- scripting and QML ("Qt Quick") functionality solely in order to
- enable scripting, themes and styles that augment the functionality
- and appearance of the Application(s) without adding primary and
- substantial functionality to the Application(s);
- (iv) Licensee shall not use Licensed Software in any manner or for any
- purpose that infringes, misappropriates or otherwise violates any
- Intellectual property or right of any third party, or that violates
- any applicable law;
- (v) Licensee shall not use The Qt Company's or any of its suppliers'
- names, logos, or trademarks to market Applications, except that
- Licensee may use "Built with Qt" logo to indicate that
- Application(s) was developed using the Licensed Software;
- (vi) Licensee shall not distribute, sublicense or disclose source code
- of Licensed Software to any third party (provided however that
- Licensee may appoint employee(s) of Contractors as Designated
- Users to use Licensed Software pursuant to this Agreement). Such
- right may be available for the Licensee subject to a separate
- software development kit ("SDK") license agreement to be concluded
- with The Qt Company;
- (vii) Licensee shall not grant the Customers a right to (i) make copies of
- the Redistributables except when and to the extent required to use the
- Applications and/or Devices for their intended purpose, (ii) modify
- the Redistributables or create derivative works thereof, (iii)
- decompile, disassemble or otherwise reverse engineer Redistributables,
- or (iv) redistribute any copy or portion of the Redistributables to
- any third party, except as part of the onward sale of the Device on
- which the Redistributables are installed;
- (viii) Licensee shall not and shall cause that its Affiliates or
- Contractors shall not use Licensed Software in any Prohibited
- Combination, unless Licensee has received an advance written
- permission from The Qt Company to do so. Absent such written
- permission, any and all distribution by the Licensee during the Term
- of a hardware device or product a) which incorporate or integrate any
- part of Licensed Software or Open Source Qt; or b) where the main
- user interface or substantial functionality is provided by software
- built with Licensed Software or Open Source Qt or otherwise depends
- on the Licensed Software or Open Source Qt, shall be considered to be
- Device distribution under this Agreement and shall be dependent on
- Licensee's compliance thereof (including but not limited to
- obligation to pay applicable License Fees for such distribution).
- Notwithstanding what is provided above in this sub-section (viii),
- Licensee is entitled to use and combine Licensed Software with any
- Permitted Software;
- (ix) Licensee shall cause all of its Affiliates and Contractors entitled
- to make use of the licenses granted under this Agreement, to be
- contractually bound to comply with the relevant terms of this
- Agreement and not to use the Licensed Software beyond the terms
- hereof and for any purposes other than operating within the scope
- of their services for Licensee. Licensee shall be responsible for
- any and all actions and omissions of its Affiliates and Contractors
- relating to the Licensed Software and use thereof (including but not
- limited to payment of all applicable License Fees);
- (x) Except when and to the extent explicitly provided in this Section 3,
- Licensee shall not transfer, publish, disclose, display or otherwise
- make available the Licensed Software; and
- (xi) Licensee shall not attempt or enlist a third party to conduct or
- attempt to conduct any of the above.
+ (i) Licensee acknowledges that The Qt Company has separate products of
+ Licensed Software for the purpose of Applications and Devices
+ respectively, where development and distribution of Devices is only
+ allowed using the correct designated product. Licensee shall make sure
+ and bear the burden of proof that Licensee is using a correct product
+ of Licensed Software entitling Licensee to development and distribution
+ of Devices;
+ (ii) Licensee shall not remove or alter any copyright, trademark or other
+ proprietary rights notice(s) contained in any portion of the Licensed
+ Software;
+ (iii) Applications must add primary and substantial functionality to the
+ Licensed Software so as not to compete with the Licensed Software;
+ (iv) Applications may not pass on functionality which in any way makes it
+ possible for others to create software with the Licensed Software;
+ provided however that Licensee may use the Licensed Software's
+ scripting and QML ("Qt Quick") functionality solely in order to enable
+ scripting, themes and styles that augment the functionality and
+ appearance of the Application(s) without adding primary and substantial
+ functionality to the Application(s);
+ (v) Licensee shall not use Licensed Software in any manner or for any
+ purpose that infringes, misappropriates or otherwise violates any
+ Intellectual property or right of any third party, or that violates any
+ applicable law;
+ (vi) Licensee shall not use The Qt Company's or any of its suppliers'
+ names, logos, or trademarks to market Applications, except that
+ Licensee may use "Built with Qt" logo to indicate that Application(s)
+ or Device(s) was developed using the Licensed Software;
+ (vii) Licensee shall not distribute, sublicense or disclose source code of
+ Licensed Software to any third party (provided however that Licensee
+ may appoint employee(s) of Contractors and Affiliates as Designated
+ Users to use Licensed Software pursuant to this Agreement). Such right
+ may be available for the Licensee subject to a separate software
+ development kit ("SDK") license agreement to be concluded with The Qt
+ Company;
+ (viii) Licensee shall not grant the Customers a right to (a) make copies of
+ the Redistributables except when and to the extent required to use the
+ Applications and/or Devices for their intended purpose, (b) modify the
+ Redistributables or create derivative works thereof, (c) decompile,
+ disassemble or otherwise reverse engineer Redistributables, or (d)
+ redistribute any copy or portion of the Redistributables to any third
+ party, except as part of the onward sale of the Application or Device
+ on which the Redistributables are installed;
+ (ix) Licensee shall not and shall cause that its Affiliates or Contractors
+ shall not use Licensed Software in any Prohibited Combination, unless
+ Licensee has received an advance written permission from The Qt Company
+ to do so. Absent such written permission, any and all distribution by
+ the Licensee during the Agreement Term of a hardware device or product
+ a) which incorporate or integrate any part of Licensed Software or Open
+ Source Qt; or b) where substantial functionality is provided by
+ software built with Licensed Software or Open Source Qt or otherwise
+ depends on the Licensed Software or Open Source Qt, shall be considered
+ to be Device distribution under this Agreement and shall be dependent
+ on Licensee's compliance thereof (including but not limited to
+ obligation to pay applicable License Fees for such distribution).
+ Notwithstanding what is provided above in this sub-section (ix),
+ Licensee is entitled to use and combine Licensed Software with any
+ Permitted Software;
+ (x) Licensee shall cause all of its Affiliates, Contractors and Customers
+ entitled to make use of the licenses granted under this Agreement, to
+ be contractually bound to comply with the relevant terms of this
+ Agreement and not to use the Licensed Software beyond the terms hereof
+ and for any purposes other than operating within the scope of their
+ services for Licensee. Licensee shall be responsible for any and all
+ actions and omissions of its Affiliates and Contractors relating to the
+ Licensed Software and use thereof (including but not limited to payment
+ of all applicable License Fees);
+ (xi) Except when and to the extent explicitly provided in this Section 3,
+ Licensee shall not transfer, publish, disclose, display or otherwise
+ make available the Licensed Software; and
+ (xii) Licensee shall not attempt or enlist a third party to conduct or
+ attempt to conduct any of the above.
Above terms shall not be applicable if and to the extent they conflict with any
mandatory provisions of any applicable laws.
+
Any use of Licensed Software beyond the provisions of this Agreement is
strictly prohibited and requires an additional license from The Qt Company.
+3.5 QA Tools License
+
+Subject to the terms of this Agreement, The Qt Company grants to Licensee a
+worldwide, non-exclusive, non-transferable license, valid for the Development
+License Term, to use the QA Tools for Licensee's internal business purposes in
+the manner provided below and in Appendix 1 hereto.
+
+Licensee may modify the QA Tools except for altering or removing any details of
+ownership, copyright, trademark or other property right connected with the QA
+Tools.
+
+Licensee shall not distribute the QA Tools or any part thereof, modified or
+unmodified, separately or as part of any software package, Application or
+Device.
+
+Upon expiry of the initially agreed Development License Term, the respective
+Development License Term shall be automatically extended to one or more Renewal
+Term(s), unless and until either Party notifies the other Party in writing, or
+any other method acceptable to The Qt Company (it being specifically
+acknowledged and understood that verbal notification is explicitly deemed
+inadequate in all circumstances), that it does not wish to continue the
+Development License Term, such notification to be provided to the other Party
+no less than thirty (30) days before expiry of the respective Development
+License Term. The Qt Company shall, in good time before the due date for the
+above notification, remind the Licensee on the coming Renewal Term. Unless
+otherwise agreed between the Parties, Renewal Term shall be 12 months.
+
+Any such Renewal Term shall be subject to License Fees agreed between the
+Parties or, if no advance agreement exists, subject to The Qt Company's
+standard list pricing applicable at the commencement date of any such
+Renewal Term.
+
+3.6 Evaluation License
+
+Subject to the terms of this Agreement, The Qt Company grants to Licensee a
+worldwide, non-exclusive, non-transferable license, valid for the Evaluation
+License Term to use the Licensed Software solely for the Licensee's internal
+use to evaluate and determine whether the Licensed Software meets Licensee's
+business requirements, specifically excluding any commercial use of the
+Licensed Software or any derived work thereof.
+
+Upon the expiry of the Evaluation License Term, Licensee must either
+discontinue use of the relevant Licensed Software or acquire a commercial
+Development License or QA Tools License specified herein.
+
4. THIRD-PARTY SOFTWARE
-The Licensed Software may provide links to third party libraries or code
-(collectively "Third-Party Software") to implement various functions.
-Third-Party Software does not comprise part of the Licensed Software. In some
-cases, access to Third-Party Software may be included with the Licensed
-Software. Such Third-Party Software will be listed in the ".../src/3rdparty"
+The Licensed Software may provide links or access to third party libraries or
+code (collectively "Third-Party Software") to implement various functions.
+Third-Party Software does not, however, comprise part of the Licensed Software,
+but is provided to Licensee complimentary and use thereof is discretionary for
+the Licensee. Third-Party Software will be listed in the ".../src/3rdparty"
source tree delivered with the Licensed Software or documented in the Licensed
Software, as such may be amended from time to time. Licensee acknowledges that
use or distribution of Third-Party Software is in all respects subject to
@@ -464,68 +527,66 @@ applicable license terms of applicable third-party right holders.
5. PRE-RELEASE CODE
The Licensed Software may contain pre-release code and functionality, or sample
-code marked or otherwise stated with appropriate designation such as "Technology
-Preview", "Alpha", "Beta", "Sample" etc. ("Pre-Release Code").
-
-Such Pre-Release Code may be present complimentary for the Licensee, in order to
-provide experimental support or information for new platforms or preliminary
-versions of one or more new functionalities or for other similar reasons. The
-Pre-Release Code may not be at the level of performance and compatibility of a
-final, generally available, product offering. The Pre-Release Code may not
-operate correctly, may contain errors and may be substantially modified by The
-Qt Company prior to the first commercial product release, if any. The Qt
-Company is under no obligation to make Pre-Release Code commercially available,
-or provide any Support or Updates relating thereto. The Qt Company assumes no
-liability whatsoever regarding any Pre-Release Code, but any use thereof is
-exclusively at Licensee's own risk and expense.
-
-For clarity, unless Licensed Software specifies different license terms for
-the respective Pre-Release Code, the Licensee is entitled to use such
-pre-release code pursuant to Section 3, just like other Licensed Software,
-provided however that in the event Add-on Products are included and available
-as such Pre-Release Code, Licensee's right to use such Add-on Products is
-nevertheless subject to and conditional upon conclusion of separate agreement
-with The Qt Company.
+code marked or otherwise stated with appropriate designation such as
+"Technology Preview", "Alpha", "Beta", "Sample", "Example" etc.
+("Pre-Release Code").
+
+Such Pre-Release Code may be present complimentary for the Licensee, in order
+to provide experimental support or information for new platforms or
+preliminary versions of one or more new functionalities or for other similar
+reasons. The Pre-Release Code may not be at the level of performance and
+compatibility of a final, generally available, product offering. The
+Pre-Release Code may not operate correctly, may contain errors and may be
+substantially modified by The Qt Company prior to the first commercial
+product release, if any. The Qt Company is under no obligation to make
+Pre-Release Code commercially available, or provide any Support or Updates
+relating thereto. The Qt Company assumes no liability whatsoever regarding
+any Pre-Release Code, but any use thereof is exclusively at Licensee's own risk
+and expense.
+
+For clarity, unless Licensed Software specifies different license terms for the
+respective Pre-Release Code, the Licensee is entitled to use such pre-release
+code pursuant to Section 3, just like other Licensed Software.
6. LIMITED WARRANTY AND WARRANTY DISCLAIMER
-The Qt Company hereby represents and warrants that it has the power and
+The Qt Company hereby represents and warrants that (i) it has the power and
authority to grant the rights and licenses granted to Licensee under this
-Agreement.
-
-Except as set forth above, the Licensed Software is licensed to Licensee
-"as is" and Licensee's exclusive remedy and The Qt Company's entire liability
-for errors in the Licensed Software shall be limited, at The Qt Company's
-option, to correction of the error, replacement of the Licensed Software or
-return of the applicable fees paid for the defective Licensed Software for
-the time period during which the License is not able to utilize the Licensed
-Software under the terms of this Agreement.
+Agreement, and (ii) Licensed Software will operate materially in accordance
+with its specifications.
+
+Except as set forth above, the Licensed Software is licensed to Licensee "as
+is" and Licensee's exclusive remedy and The Qt Company's entire liability for
+errors in the Licensed Software shall be limited, at The Qt Company's option,
+to correction of the error, replacement of the Licensed Software or return of
+the applicable fees paid for the defective Licensed Software for the time
+period during which the License is not able to utilize the Licensed Software
+under the terms of this Agreement.
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE QT COMPANY ON BEHALF OF
ITSELF AND ITS LICENSORS, SUPPLIERS AND AFFILIATES, DISCLAIMS ALL OTHER
WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
-NON-INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES
-NOT WARRANT THAT THE LICENSED SOFTWARE WILL SATISFY LICENSEE'S REQUIREMENTS OR
-THAT IT WILL OPERATE WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF
-WILL BE UNINTERRUPTED.
+NON-INFRINGEMENT WITH REGARD TO THE LICENSED SOFTWARE. THE QT COMPANY DOES NOT
+WARRANT THAT THE LICENSED SOFTWARE WILL SATISFY LICENSEE'S REQUIREMENTS OR THAT
+IT WILL OPERATE WITHOUT DEFECT OR ERROR OR THAT THE OPERATION THEREOF WILL BE
+UNINTERRUPTED.
-7. INDEMNIFICATION AND LIMITATION OF LIABILITY
+7. LIMITATION OF LIABILITY
-7.1. Limitation of Liability
-EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II)
+EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II)
BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO
EVENT SHALL EITHER PARTY BE LIABLE TO THE OTHER PARTY FOR ANY LOSS OF PROFIT,
LOSS OF DATA, LOSS OF BUSINESS OR GOODWILL OR ANY OTHER INDIRECT, SPECIAL,
CONSEQUENTIAL, INCIDENTAL OR PUNITIVE COST, DAMAGES OR EXPENSE OF ANY KIND,
HOWSOEVER ARISING UNDER OR IN CONNECTION WITH THIS AGREEMENT.
-EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II)
+EXCEPT FOR (I) CASES OF GROSS NEGLIGENCE OR INTENTIONAL MISCONDUCT, AND (II)
BREACH OF CONFIDENTIALITY, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, IN NO
-EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT EXCEED
-THE AGGREGATE LICENSE FEES PAID OR PAYABLE TO THE QT COMPANY FROM LICENSEE
-DURING THE PERIOD OF TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE EVENT
-RESULTING IN SUCH LIABILITY.
+EVENT SHALL EITHER PARTY'S TOTAL AGGREGATE LIABILITY UNDER THIS AGREEMENT
+EXCEED THE AGGREGATE LICENSE FEES PAID OR PAYABLE TO THE QT COMPANY BY LICENSEE
+DURING THE DEVELOPMENT LICENSE TERM DURING WHICH THE EVENT RESULTING IN SUCH
+LIABILITY OCCURRED.
THE PROVISIONS OF THIS SECTION 7 ALLOCATE THE RISKS UNDER THIS AGREEMENT
BETWEEN THE QT COMPANY AND LICENSEE AND THE PARTIES HAVE RELIED UPON THE
@@ -533,55 +594,54 @@ LIMITATIONS SET FORTH HEREIN IN DETERMINING WHETHER TO ENTER INTO THIS
AGREEMENT.
NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS AGREEMENT, LICENSEE SHALL
-ALWAYS BE LIABLE TO PAY THE APPLICABLE LICENSE FEES CORRESPONDING TO ITS ACTUAL
-USE OF LICENSED SOFTWARE.
+ALWAYS BE LIABLE TO PAY THE APPLICABLE LICENSE FEES CORRESPONDING TO ITS
+ACTUAL USE OF LICENSED SOFTWARE.
8. SUPPORT, UPDATES AND ONLINE SERVICES
Upon due payment of the agreed License Fees the Licensee will be eligible to
-receive Support and Updates and to use the Online Services during the License
-Term, provided, however, that in the event the License Term is longer than 36
-months, the initial payment includes Support for only the first 12 months,
-unless the Parties specifically otherwise agree.
+receive Support and Updates and to use the Online Services during the agreed
+Development License Term or other agreed fixed time period. Support is
+provided according to agreed support level and subject to applicable
+requirements and restrictions, as specified in the Support Terms.
-Unless otherwise decided by The Company at its free and absolute discretion,
+Unless otherwise decided by The Qt Company at its free and absolute discretion,
Upgrades will not be included in the Support but may be available subject to
additional fees.
-From time to time The Qt Company may change the Support terms, provided that
-during the respective ongoing License Term the level of Support provided by The
-Qt Company may not be reduced without the consent of the Licensee.
+From time to time The Qt Company may change the Support Terms, provided that
+during the respective ongoing Support period the level of Support may not be
+reduced without the consent of the Licensee.
Unless otherwise agreed, The Qt Company shall not be responsible for providing
any service or support to Customers.
9. CONFIDENTIALITY
-Each Party acknowledges that during the Term of this Agreement each Party may
-receive information about the other Party's business, business methods,
-business plans, customers, business relations, technology, and other
-information, including the terms of this Agreement, that is confidential and
-of great value to the other Party, and the value of which would be
-significantly reduced if disclosed to third parties ("Confidential
-Information"). Accordingly, when a Party (the "Receiving Party") receives
-Confidential Information from the other Party (the "Disclosing Party"), the
-Receiving Party shall only disclose such information to employees and
-Contractors on a need to know basis, and shall cause its employees and
-employees of its Affiliates to: (i) maintain any and all Confidential
-Information in confidence; (ii) not disclose the Confidential Information to
-a third party without the Disclosing Party's prior written approval; and (iii)
-not, directly or indirectly, use the Confidential Information for any purpose
-other than for exercising its rights and fulfilling its responsibilities
-pursuant to this Agreement. Each Party shall take reasonable measures to
-protect the Confidential Information of the other Party, which measures shall
-not be less than the measures taken by such Party to protect its own
-confidential and proprietary information.
+Each Party acknowledges that during the Agreement Term each Party may receive
+information about the other Party's business, business methods, business plans,
+customers, business relations, technology, and other information, including the
+terms of this Agreement, that is confidential and of great value to the other
+Party, and the value of which would be significantly reduced if disclosed to
+third parties ("Confidential Information"). Accordingly, when a Party (the
+"Receiving Party") receives Confidential Information from the other Party (the
+"Disclosing Party"), the Receiving Party shall only disclose such information
+to employees and Contractors on a need to know basis, and shall cause its
+employees and employees of its Affiliates to: (i) maintain any and all
+Confidential Information in confidence; (ii) not disclose the Confidential
+Information to a third party without the Disclosing Party's prior written
+approval; and (iii) not, directly or indirectly, use the Confidential
+Information for any purpose other than for exercising its rights and
+fulfilling its responsibilities pursuant to this Agreement. Each Party shall
+take reasonable measures to protect the Confidential Information of the other
+Party, which measures shall not be less than the measures taken by such Party
+to protect its own confidential and proprietary information.
Obligation of confidentiality shall not apply to information that (i) is or
becomes generally known to the public through no act or omission of the
-Receiving Party; (ii) was in the Receiving Party's lawful possession prior
-to the disclosure hereunder and was not subject to limitations on disclosure
-or use; (iii) is developed independently by employees or Contractors of the
+Receiving Party; (ii) was in the Receiving Party's lawful possession prior to
+the disclosure hereunder and was not subject to limitations on disclosure or
+use; (iii) is developed independently by employees or Contractors of the
Receiving Party or other persons working for the Receiving Party who have not
had access to the Confidential Information of the Disclosing Party, as proven
by the written records of the Receiving Party; (iv) is lawfully disclosed to
@@ -595,721 +655,1323 @@ Information to the minimum extent necessary.
The obligations under this Section 9 shall continue to remain in force for a
period of five (5) years after the last disclosure, and, with respect to trade
-secrets, for so long as such trade secrets are protected under applicable
-trade secret laws.
+secrets, for so long as such trade secrets are protected under applicable trade
+secret laws.
10. FEES, DELIVERY AND PAYMENT
10.1. License Fees
+
License Fees are described in The Qt Company's standard price list, quote or
-Purchase Order confirmation or in an appendix hereto, as the case may be.
+Purchase Order confirmation or in an Appendix 2 hereto, as the case may be.
-The License Fees shall not be refunded or claimed as a credit in any event or
-for any reason whatsoever.
+Unless otherwise expressly provided in this Agreement, the License Fees shall
+not be refunded or claimed as a credit in any event or for any reason
+whatsoever.
10.2. Ordering Licenses
-Licensee may purchase Development Licenses and Distribution Licenses pursuant
-to agreed pricing terms or, if no specific pricing terms have been agreed
-upon, at The Qt Company's standard pricing terms applicable at the time of
-purchase. Unless specifically otherwise provided, any pricing terms
-referenced in this Agreement shall be valid for twelve (12) months from the
-date of this Agreement.
+
+Licensee may purchase Development Licenses, Distribution Licenses and QA Tools
+Licenses pursuant to agreed pricing terms or, if no specific pricing terms have
+been agreed upon, at The Qt Company's standard pricing terms applicable at the
+time of purchase.
+
+Unless expressly otherwise agreed, any price or other term quoted to the
+Licensee or specified herein shall only be valid for the thirty (30) days from
+the effective date of this Agreement, Appendix 2 or the date of the quote, as
+applicable.
Licensee shall submit all purchase orders for Development Licenses and
-Distribution Licenses to The Qt Company by email or any other method
-acceptable to The Qt Company (each such order is referred to herein as a
-"Purchase Order") for confirmation, whereupon the Purchase Order shall
-become binding between the Parties.
+Distribution Licenses to The Qt Company by email or any other method acceptable
+to The Qt Company (each such order is referred to herein as a "Purchase Order")
+for confirmation, whereupon the Purchase Order shall become binding between the
+Parties.
+
+Licensee acknowledges and agrees that all Purchase Orders for Licensed Software
+the Licensee makes during the Agreement Term shall be governed exclusively
+under the terms of this Agreement.
10.3. Distribution License Packs
+
Unless otherwise agreed, Distribution Licenses shall be purchased by way of
Distribution License Packs.
-Upon due payment of the ordered Distribution License Pack(s), the Licensee
-will have an account of Distribution Licenses available for distributing
-the Redistributables in accordance with this Agreement.
+Upon due payment of the ordered Distribution License Pack(s), the Licensee will
+have an account of Distribution Licenses available for distributing the
+Redistributables in accordance with this Agreement.
Each time Licensee distributes a copy of Redistributables, then one
-Distribution License is used, and Licensee's account of available
-Distribution Licenses is decreased accordingly.
+Distribution License is used, and Licensee's account of available Distribution
+Licenses is decreased accordingly.
-Licensee may distribute copies of the Redistributables so long as Licensee
-has Distribution Licenses remaining on its account.
+Licensee may distribute copies of the Redistributables so long as Licensee has
+Distribution Licenses remaining on its account.
10.4. Payment Terms
+
License Fees and any other charges under this Agreement shall be paid by
-Licensee no later than thirty (30) days from the date of the applicable
-invoice from The Qt Company.
+Licensee no later than thirty (30) days from the date of the applicable invoice
+from The Qt Company.
The Qt Company will submit an invoice to Licensee after the date of this
Agreement and/or after The Qt Company receives a Purchase Order from Licensee.
A late payment charge of the lower of (a) one percent per month; or (b) the
interest rate stipulated by applicable law, shall be charged on any unpaid
-balances that remain past due.
+balances that remain past due and which have not been disputed by the Licensee
+in good faith.
10.5. Taxes
+
All License Fees and other charges payable hereunder are gross amounts but
-exclusive of any value added tax, use tax, sales tax, withholding tax and
-other taxes, duties or tariffs ("Taxes") levied directly for the sale,
-delivery or use of Licensed Software hereunder pursuant to any applicable
-law. Such applicable Taxes shall be paid by Licensee to The Qt Company, or,
-where applicable, in lieu of payment of such Taxes to The Qt Company,
-Licensee shall provide an exemption certificate to The Qt Company and any
-applicable authority.
+exclusive of any value added tax, use tax, sales tax, withholding tax and other
+taxes, duties or tariffs ("Taxes") levied directly for the sale, delivery or
+use of Licensed Software hereunder pursuant to any applicable law. Such
+applicable Taxes shall be paid by Licensee to The Qt Company, or, where
+applicable, in lieu of payment of such Taxes to The Qt Company, Licensee shall
+provide an exemption certificate to The Qt Company and any applicable
+authority.
11. RECORD-KEEPING AND REPORTING OBLIGATIONS; AUDIT RIGHTS
11.1. Licensee's Record-keeping
-Licensee shall at all times during the Term of this Agreement and for a
-period of seven (7) years thereafter maintain Licensee's Records in an
-accurate and up-to-date form. Licensee's Records shall be adequate to
-reasonably enable The Qt Company to determine Licensee's compliance with
-the provisions of this Agreement. The records shall conform to general
-good accounting practices.
-
-Licensee shall, within thirty (30) days from receiving The Qt Company's
-request to that effect, deliver to The Qt Company a report based on
-Licensee's Records, such report to contain information, in sufficient
-detail, on (i) number and identity of users working with Licensed Software
-or Open Source Qt, (ii) copies of Redistributables distributed by Licensee
-during the most recent calendar quarter and/or any other term specified by
-The Qt Company, (iii) number of undistributed copies of Redistributables
-and corresponding number of unused Distribution Licenses remaining on
-Licensee's account, and (iv) any other information as The Qt Company may
-reasonably require from time to time.
+
+Licensee shall at all times during the Agreement Term and for a period of two
+(2) years thereafter maintain Licensee's Records in an accurate and up-to-date
+form. Licensee's Records shall be adequate to reasonably enable The Qt Company
+to determine Licensee's compliance with the provisions of this Agreement. The
+records shall conform to general good accounting practices.
+
+Licensee shall, within thirty (30) days from receiving The Qt Company's request
+to that effect, deliver to The Qt Company a report based on Licensee's Records,
+such report to contain information, in sufficient detail, on (i) number and
+identity of users working with Licensed Software or Open Source Qt, (ii) copies
+of Redistributables distributed by Licensee during the most recent calendar
+quarter and/or any other term specified by The Qt Company, , and (iii) any
+other information pertaining to Licensee's compliance with the terms of this
+Agreement (like e.g. information on products and/or projects relating to use of
+Distribution Licenses), as The Qt Company may reasonably require from time to
+time.
11.2. The Qt Company's Audit Rights
-The Qt Company or an independent auditor acting on behalf of The Qt
-Company's, may, upon at least five (5) business days' prior written
-notice and at its expense, audit Licensee with respect to the Licensee's
-use of the Licensed Software, but not more frequently than once during
-each 6-month period. Such audit may be conducted by mail, electronic means
-or through an in-person visit to Licensee's place of business. Any such
-in-person audit shall be conducted during regular business hours at
-Licensee's facilities and shall not unreasonably interfere with Licensee's
-business activities. The Qt Company or the independent auditor acting on
-behalf of The Qt Company shall be entitled to inspect Licensee's Records
-and conduct necessary interviews of Licensee's relevant employees and
-Contractors. All such Licensee's Records and use thereof shall be subject
-to an obligation of confidentiality under this Agreement.
-
-If an audit reveals that Licensee is using the Licensed Software beyond
-scope of the licenses Licensee has paid for, Licensee agrees to pay The Qt
-Company any amounts owed for such unauthorized use within 30 days from
-receipt of the corresponding invoice from The Qt Company.
-
-In addition, in the event the audit reveals a material violation of the
-terms of this Agreement (without limitation, either (i) underpayment of
-more than 10 % of License Fees or 10,000 euros (whichever is more) or
-(ii) distribution of products, which include or result from Prohibited
-Combination, shall be deemed a material violation for purposes of this
-section), then the Licensee shall pay The Qt Company's reasonable cost of
-conducting such audit.
+
+The Qt Company or an independent auditor acting on behalf of The Qt Company's,
+may, upon at least thirty (30) days' prior written notice and at its expense,
+audit Licensee with respect to the Licensee's use of the Licensed Software, but
+not more frequently than once during each 6-month period. Such audit may be
+conducted by mail, electronic means or through an in-person visit to Licensee's
+place of business. Any possible in-person audit shall be conducted during
+regular business hours at Licensee's facilities and shall not unreasonably
+interfere with Licensee's business activities and shall be limited in scope to
+verify Licensee's compliance with the terms of this Agreement. The Qt Company
+or the independent auditor acting on behalf of The Qt Company shall be entitled
+to inspect Licensee's Records and conduct necessary interviews of Licensee's
+relevant employees and Contractors. All such Licensee's Records and use thereof
+shall be subject to an obligation of confidentiality under this Agreement.
+
+If an audit reveals that Licensee is using the Licensed Software beyond scope
+of the licenses Licensee has paid for, Licensee shall pay to The Qt Company any
+amounts owed for such unauthorized use within 30 days from receipt of the
+corresponding invoice from The Qt Company.
+
+In addition, in the event the audit reveals a material violation of the terms
+of this Agreement (without limitation, either (i) underpayment of more than 10
+% of License Fees or 10,000 euros (whichever is more) or (ii) distribution of
+products, which include or result from Prohibited Combination, shall be deemed
+a material violation for purposes of this section), then the Licensee shall
+pay The Qt Company's reasonable cost of conducting such audit.
12. TERM AND TERMINATION
+
12.1. Agreement Term
-This Agreement shall enter into force upon due acceptance by both
-Parties and remain in force for as long as there is any Development
-License(s) purchased under this Agreement in force ("Term"), unless and
-until terminated pursuant to the terms of this Section 12.
-12.2. Termination and suspension of rights
-Either Party shall have the right to terminate this Agreement upon thirty
-(30) days prior written notice if the other Party commits a material
-breach of any obligation of this Agreement and fails to remedy such breach
-within such notice period.
+This Agreement shall enter into force upon due acceptance by both Parties and
+remain in force until terminated pursuant to the terms of this Section 12
+("Agreement Term").
+
+12.2. Termination for breach and suspension of rights
+Either Party shall have the right to terminate this Agreement upon thirty (30)
+days prior written notice if the other Party commits a material breach of any
+obligation of this Agreement and fails to remedy such breach within such notice
+period.
Instead of termination, The Qt Company shall have the right to suspend or
-withhold grants of all rights to the Licensed Software hereunder,
-including but not limited to the Development Licenses, Distribution
-License, and Support, should Licensee fail to make payment in timely
-fashion or otherwise violates or is reasonably suspected to violate its
-obligations or terms of this Agreement, and where such violation or breach
-is not cured within five (5) business days following The Qt Company's
-written notice thereof.
-
-12.3. Mutual Right to Terminate
-Either Party shall have the right to terminate this Agreement immediately
-upon written notice in the event that the other Party becomes insolvent,
-files for any form of bankruptcy, makes any assignment for the benefit of
-creditors, has a receiver, administrative receiver or officer appointed
-over the whole or a substantial part of its assets, ceases to conduct
-business, or an act equivalent to any of the above occurs under the laws
-of the jurisdiction of the other Party.
+withhold grants of all rights to the Licensed Software hereunder, including but
+not limited to the Development Licenses, Distribution License, and Support,
+should Licensee fail to make payment in timely fashion or otherwise violates or
+is reasonably suspected to violate its obligations or terms of this Agreement,
+and where such violation or breach is not cured within ten (10) business days
+following The Qt Company's written notice thereof.
+
+12.3. Termination for insolvency
+
+Either Party shall have the right to terminate this Agreement immediately upon
+written notice in the event that the other Party becomes insolvent, files for
+any form of bankruptcy, makes any assignment for the benefit of creditors, has
+a receiver, administrative receiver or officer appointed over the whole or a
+substantial part of its assets, ceases to conduct business, or an act
+equivalent to any of the above occurs under the laws of the jurisdiction of the
+other Party.
12.4. Parties' Rights and Duties upon Termination
-Upon expiry or termination of the Agreement, Licensee shall cease and
-shall cause all Designated Users (including those of its Affiliates' and
-Contractors') to cease using the Licensed Software and distribution of the
-Redistributables under this Agreement.
-
-Notwithstanding the above, in the event the Agreement expires or is terminated:
- (i) as a result of The Qt Company choosing not to renew the Development
- License(s) as set forth in Section 3.1, and where such decision of
- non-renewal is not due to any ongoing breach or alleged breach (as
- reasonably determined by The Qt Company) by Licensee of the terms of this
- Agreement or any applicable license terms of Open Source Qt, then all valid
- licenses possessed by the Licensee at such date shall be extended to be
- valid in perpetuity under the terms of this Agreement and Licensee is
- entitled to purchase additional licenses as set forth in Section 10.2; or
- (ii) for reason other than by The Qt Company pursuant to item (i) above
- or pursuant to Section 12.2, then the Licensee is entitled, for a
- period of six (6) months after the effective date of termination,
- to continue distribution of Devices under the Distribution Licenses
- paid but unused at such effective date of termination.
-
-Upon any such termination the Licensee shall destroy or return to The Qt
-Company all copies of the Licensed Software and all related materials and will
-certify the same to The Qt Company upon its request, provided however that
-Licensee may retain and exploit such copies of the Licensed Software as it may
-reasonably require in providing continued support to Customers.
+
+Upon expiry or termination of the Agreement, Licensee shall cease and shall
+cause all Designated Users (including those of its Affiliates' and
+Contractors') to cease using the Licensed Software under this Agreement. For
+clarity, a Development License of a Designated User or a QA Tools License, and
+all rights relating thereto, shall always terminate at the expiry of the
+respective Development License Term, even if the Agreement continues to remain
+in force.
+
+Upon such termination the Licensee shall destroy or return to The Qt Company
+all copies of the Licensed Software and all related materials and will certify
+the same by Licensee's duly authorized officer to The Qt Company upon its
+request, provided however that Licensee may retain and exploit such copies of
+the Licensed Software as it may reasonably require in providing continued
+support to Customers.
+
+Except when this Agreement is terminated by The Qt Company due to Licensee's
+material breach as set forth in Section 12.2, the Licensee may continue
+distribution of Applications and Devices under the terms of this Agreement
+despite the termination of this Agreement. In such event the terms hereof will
+continue to be applicable and govern any such distribution of Applications and
+Devices beyond the expiry or termination of this Agreement. In case of
+termination by The Qt Company due to Licensee's material breach, Licensee must
+cease any distribution of Applications and Devices at the date of termination
+of this Agreement.
Expiry or termination of this Agreement for any reason whatsoever shall not
relieve Licensee of its obligation to pay any License Fees accrued or payable
-to The Qt Company prior to the effective date of termination, and Licensee
-shall immediately pay to The Qt Company all such fees upon the effective date
-of termination. Termination of this Agreement shall not affect any rights of
-Customers to continue use of Applications and Devices (and therein
-incorporated Redistributables).
-
-12.5. Extension in case of bankruptcy
-In the event The Qt Company is declared bankrupt under a final,
-non-cancellable decision by relevant court of law, and this Agreement is not,
-at the date of expiry of the Development License(s) pursuant to Section 3.1,
-assigned to party, who has assumed The Qt Company's position as a legitimate
-licensor of Licensed Software under this Agreement, then all valid licenses
-possessed by the Licensee at such date of expiry, and which the Licensee has
-not notified for expiry, shall be extended to be valid in perpetuity under the
-terms of this Agreement.
+to The Qt Company prior to the effective date of termination, and Licensee pay
+to The Qt Company all such fees within 30 days from the effective date of
+termination of this Agreement.
+
+Termination of this Agreement shall not affect any rights of Customers to
+continue use of Applications and Devices (and therein incorporated
+Redistributables).
+
+12.5. Extension of Rights under Special Circumstances
+
+In the event of The Qt Company choosing not to renew the Development License(s)
+or QA Tools Licenses, as set forth in Section 3.1 and 3.5 respectively, and
+where such decision of non-renewal is not due to any ongoing breach or alleged
+breach (as reasonably determined by The Qt Company) by Licensee of the terms of
+this Agreement or any applicable license terms of Open Source Qt, then all
+valid and affected Development Licenses and QA Tools licenses possessed by the
+Licensee at such date shall be extended to be valid in perpetuity under the
+terms of this Agreement and Licensee is entitled to purchase additional
+licenses as set forth in Section 10.2.
+
+In the event The Qt Company is declared bankrupt under a final, non-cancellable
+decision by relevant court of law, and this Agreement is not, at the date of
+expiry of the Development License(s) or QA Tools Licenses, assigned to party,
+who has assumed The Qt Company's position as a legitimate licensor of Licensed
+Software under this Agreement, then all valid Development Licenses and QA Tools
+Licenses possessed by the Licensee at such date of expiry, and which the
+Licensee has not notified for expiry, shall be extended to be valid in
+perpetuity under the terms of this Agreement.
+
+For clarity, in case of an extension under this Section 12.5, any such
+extension shall not apply to The Qt Company's Support obligations, but Support
+shall be provided only up until the end of the respective fixed Development
+License Term regardless of the extension of relevant Development License or QA
+Tools License, unless otherwise agreed between the Parties.
13. GOVERNING LAW AND LEGAL VENUE
In the event this Agreement is in the name of The Qt Company Inc., a Delaware
Corporation, then:
- (i) this Agreement shall be construed and interpreted in accordance with
- the laws of the State of California, USA, excluding its choice of
- law provisions;
- (ii) the United Nations Convention on Contracts for the International
- Sale of Goods will not apply to this Agreement; and
- (iii) any dispute, claim or controversy arising out of or relating to this
- Agreement or the breach, termination, enforcement, interpretation or
- validity thereof, including the determination of the scope or
- applicability of this Agreement to arbitrate, shall be determined by
- arbitration in San Francisco, USA, before one arbitrator. The
- arbitration shall be administered by JAMS pursuant to JAMS'
- Streamlined Arbitration Rules and Procedures. Judgment on the Award
- may be entered in any court having jurisdiction. This Section shall
- not preclude parties from seeking provisional remedies in aid of
- arbitration from a court of appropriate jurisdiction.
+ (i) this Agreement shall be construed and interpreted in accordance with
+ the laws of the State of California, USA, excluding its choice of law
+ provisions;
+ (ii) the United Nations Convention on Contracts for the International Sale
+ of Goods will not apply to this Agreement; and
+ (iii) any dispute, claim or controversy arising out of or relating to this
+ Agreement or the breach, termination, enforcement, interpretation or
+ validity thereof, including the determination of the scope or
+ applicability of this Agreement to arbitrate, shall be determined by
+ arbitration in San Francisco, USA, before one arbitrator. The
+ arbitration shall be administered by JAMS pursuant to JAMS' Streamlined
+ Arbitration Rules and Procedures. Judgment on the Award may be entered
+ in any court having jurisdiction. This Section shall not preclude
+ parties from seeking provisional remedies in aid of arbitration from a
+ court of appropriate jurisdiction.
In the event this Agreement is in the name of The Qt Company Ltd., a Finnish
Company, then:
- (i) this Agreement shall be construed and interpreted in accordance with
- the laws of Finland, excluding its choice of law provisions;
- (ii) the United Nations Convention on Contracts for the International
- Sale of Goods will not apply to this Agreement; and
- (iii) any disputes, controversy or claim arising out of or relating to
- this Agreement, or the breach, termination or validity thereof shall
- be finally settled by arbitration in accordance with the Arbitration
- Rules of Finland Chamber of Commerce. The arbitration tribunal shall
- consist of one (1), or if either Party so requires, of three (3),
- arbitrators. The award shall be final and binding and enforceable in
- any court of competent jurisdiction. The arbitration shall be held
- in Helsinki, Finland and the process shall be conducted in the
- English language. This Section shall not preclude parties from
- seeking provisional remedies in aid of arbitration from a court of
- appropriate jurisdiction.
+ (i) this Agreement shall be construed and interpreted in accordance with
+ the laws of Finland, excluding its choice of law provisions;
+ (ii) the United Nations Convention on Contracts for the International Sale
+ of Goods will not apply to this Agreement; and
+ (iii) any disputes, controversy or claim arising out of or relating to this
+ Agreement, or the breach, termination or validity thereof shall be
+ finally settled by arbitration in accordance with the Arbitration Rules
+ of International Chamber of Commerce. The arbitration tribunal shall
+ consist of one (1), or if either Party so requires, of three (3),
+ arbitrators. The award shall be final and binding and enforceable in
+ any court of competent jurisdiction. The arbitration shall be held in
+ Helsinki, Finland and the process shall be conducted in the English
+ language. This Section shall not preclude parties from seeking
+ provisional remedies in aid of arbitration from a court of appropriate
+ jurisdiction.
14. GENERAL PROVISIONS
14.1. No Assignment
+
Except in the case of a merger or sale of substantially all of its corporate
-assets, Licensee shall not be entitled to assign or transfer all or any of
-its rights, benefits and obligations under this Agreement without the prior
-written consent of The Qt Company, which shall not be unreasonably withheld
-or delayed. The Qt Company shall be entitled to freely assign or transfer any
-of its rights, benefits or obligations under this Agreement.
+assets, Licensee shall not be entitled to assign or transfer all or any of its
+rights, benefits and obligations under this Agreement without the prior written
+consent of The Qt Company, which shall not be unreasonably withheld or delayed.
+The Qt Company shall be entitled to freely assign or transfer any of its
+rights, benefits or obligations under this Agreement.
14.2. No Third-Party Representations
+
Licensee shall make no representations or warranties concerning the Licensed
Software on behalf of The Qt Company. Any representation or warranty Licensee
-makes or purports to make on The Qt Company's behalf shall be void as to The
-Qt Company.
+makes or purports to make on The Qt Company's behalf shall be void as to
+The Qt Company.
14.3. Surviving Sections
+
Any terms and conditions that by their nature or otherwise reasonably should
survive termination of this Agreement shall so be deemed to survive. Such
sections include especially the following: 1, 2, 6, 7, 9, 11, 12.4, 13 and 14.
14.4. Entire Agreement
-This Agreement, the exhibits hereto, the License Certificate and any
-applicable Purchase Order accepted by The Qt Company constitute the complete
-agreement between the Parties and supersedes all prior or contemporaneous
-discussions, representations, and proposals, written or oral, with respect
-to the subject matters discussed herein.
+
+This Agreement, the Appendices hereto, the License Certificate and any
+applicable quote and Purchase Order accepted by The Qt Company constitute the
+complete agreement between the Parties and supersedes all prior or
+contemporaneous discussions, representations, and proposals, written or oral,
+with respect to the subject matters discussed herein.
In the event of any conflict or inconsistency between this Agreement and any
-Purchase Order, the terms of this Agreement will prevail over the terms of
-the Purchase Order with respect to such conflict or inconsistency.
+Purchase Order, the terms of this Agreement will prevail over the terms of the
+Purchase Order with respect to such conflict or inconsistency.
-Parties specifically acknowledge and agree that this Agreement prevails
-over any click-to-accept or similar agreements the Designated Users may
-need to accept online upon download of the Licensed Software, as may be
-required by The Qt Company's applicable processes relating to Licensed
-Software.
+Parties specifically acknowledge and agree that this Agreement prevails over
+any click-to-accept or similar agreements the Designated Users may need to
+accept online upon download of the Licensed Software, as may be required by
+The Qt Company's applicable processes relating to Licensed Software.
14.5. Modifications
+
No modification of this Agreement shall be effective unless contained in a
writing executed by an authorized representative of each Party. No term or
condition contained in Licensee's Purchase Order ("Deviating Terms") shall
apply unless The Qt Company has expressly agreed such Deviating Terms in
-writing. Unless and to the extent expressly agreed by The Qt Company, any
-such Deviating Terms shall be deemed void and with no legal effect. For
-clarity, delivery of the Licensed Software following the receipt of the
-Purchase Order including Deviating Terms shall not constitute acceptance of
-such Deviating Terms."
+writing. Unless and to the extent expressly agreed by The Qt Company, any such
+Deviating Terms shall be deemed void and with no legal effect. For clarity,
+delivery of the Licensed Software following the receipt of the Purchase Order
+including Deviating Terms shall not constitute acceptance of such Deviating
+Terms.
14.6. Force Majeure
-Except for the payment obligations hereunder, neither Party shall be liable
-to the other for any delay or non-performance of its obligations hereunder
-in the event and to the extent that such delay or non-performance is due to
-an event of act of God, terrorist attack or other similar unforeseeable
-catastrophic event that prevents either Party for fulfilling its
-obligations under this Agreement and which such Party cannot avoid or
-circumvent ("Force Majeure Event"). If the Force Majeure Event results in
-a delay or non-performance of a Party for a period of three (3) months or
-longer, then either Party shall have the right to terminate this Agreement
-with immediate effect without any liability (except for the obligations of
-payment arising prior to the event of Force Majeure) towards the other
-Party.
+
+Except for the payment obligations hereunder, neither Party shall be liable to
+the other for any delay or non-performance of its obligations hereunder in the
+event and to the extent that such delay or non-performance is due to an event
+of act of God, terrorist attack or other similar unforeseeable catastrophic
+event that prevents either Party for fulfilling its obligations under this
+Agreement and which such Party cannot avoid or circumvent ("Force Majeure
+Event"). If the Force Majeure Event results in a delay or non-performance of a
+Party for a period of three (3) months or longer, then either Party shall have
+the right to terminate this Agreement with immediate effect without any
+liability (except for the obligations of payment arising prior to the event of
+Force Majeure) towards the other Party.
14.7. Notices
-Any notice given by one Party to the other shall be deemed properly given
-and deemed received if specifically acknowledged by the receiving Party in
-writing or when successfully delivered to the recipient by hand, fax, or
-special courier during normal business hours on a business day to the
-addresses specified for each Party on the signature page. Each
-communication and document made or delivered by one Party to the other
-Party pursuant to this Agreement shall be in the English language.
+
+Any notice given by one Party to the other shall be deemed properly given and
+deemed received if specifically acknowledged by the receiving Party in writing
+or when successfully delivered to the recipient by hand, fax, or special
+courier during normal business hours on a business day to the addresses
+specified for each Party on the signature page. Each communication and document
+made or delivered by one Party to the other Party pursuant to this Agreement
+shall be in the English language.
14.8. Export Control
+
Licensee acknowledges that the Redistributables, as incorporated in
-Applications or Devices, may be subject to export control restrictions
-under the applicable laws of respective countries. Licensee shall fully
-comply with all applicable export license restrictions and requirements
-as well as with all laws and regulations relating to the Redistributables
-and exercise of licenses hereunder and shall procure all necessary
-governmental authorizations, including without limitation, all necessary
-licenses, approvals, permissions or consents, where necessary for the
-re-exportation of the Redistributables, Applications and/or Devices.
+Applications or Devices, may be subject to export control restrictions under
+the applicable laws of respective countries. Licensee shall fully comply with
+all applicable export license restrictions and requirements as well as with all
+laws and regulations relating to the Redistributables and exercise of licenses
+hereunder and shall procure all necessary governmental authorizations,
+including without limitation, all necessary licenses, approvals, permissions or
+consents, where necessary for the re-exportation of the Redistributables,
+Applications and/or Devices.
14.9. No Implied License
-There are no implied licenses or other implied rights granted under
-this Agreement, and all rights, save for those expressly granted hereunder,
-shall remain with The Qt Company and its licensors. In addition, no licenses
-or immunities are granted to the combination of the Licensed Software with
-any other software or hardware not delivered by The Qt Company under this
+
+There are no implied licenses or other implied rights granted under this
+Agreement, and all rights, save for those expressly granted hereunder, shall
+remain with The Qt Company and its licensors. In addition, no licenses or
+immunities are granted to the combination of the Licensed Software with any
+other software or hardware not delivered by The Qt Company under this
Agreement.
14.10. Attorney Fees
-The prevailing Party in any action to enforce this Agreement shall be
-entitled to recover its attorney's fees and costs in connection with such
-action.
+
+The prevailing Party in any action to enforce this Agreement shall be entitled
+to recover its attorney's fees and costs in connection with such action, as to
+be ordered by the relevant dispute resolution body.
14.11. Privacy
+
Licensee acknowledges and agrees that for the purpose of this Agreement,
-The Qt Company may collect, use, transfer and disclose personal data
-pertaining to Designated Users as well as any other employees and directors
-of the Licensee and its Contractors relevant for carrying out the intent of
-this Agreement. Such personal data may be collected from the Licensee or
-directly from the relevant individuals. The Parties acknowledge that with
-regard to such personal data processed hereunder, The Qt Company shall be
-regarded as the Data Controller under the applicable Data Protection
-Legislation. The Qt Company shall process any such personal data in
-accordance with its privacy policies and practices, which will comply with
-all applicable requirements of the Data Protection Legislation.
+The Qt Company may collect, use, transfer and disclose personal data pertaining
+to Designated Users as well as any other employees and directors of the
+Licensee and its Contractors relevant for carrying out the intent of this
+Agreement. Such personal data will be primarily collected from the relevant
+individuals but may be collected also from Licensee (e.g. in the course of
+Licensee's reporting obligations). The Parties acknowledge that as
+The Qt Company determines the purpose and means for such collection and
+processing of the applicable personal data, The Qt Company shall be regarded as
+the Data Controller under the applicable Data Protection Legislation.
+The Qt Company shall process any such personal data in accordance with its
+privacy and security policies and practices, which will comply with all
+applicable requirements of the Data Protection Legislation.
14.12. Severability
-If any provision of this Agreement shall be adjudged by any court of
-competent jurisdiction to be unenforceable or invalid, that provision shall
-be limited or eliminated to the minimum extent necessary so that this
-Agreement shall otherwise remain in full force and effect and enforceable.
-APPENDICES
-
-The Agreement includes Appendix 1, and possibly one or more of the
-appendices 3-5, depending on the product(s) purchased by the Licensee,
-what is stated in the quote or invoice, and/or what is stated in the
-Licensee's License Certificate.
+If any provision of this Agreement shall be adjudged by any court of competent
+jurisdiction to be unenforceable or invalid, that provision shall be limited or
+eliminated to the minimum extent necessary so that this Agreement shall
+otherwise remain in full force and effect and enforceable.
-APPENDIX 1
+14.13. Marketing Rights
-The modules and/or tools that are included in the respective product - Qt
-for Application Development (QtAD), Qt for Device Creation (QtDC), Qt for
-MCUs (QtMCU), Qt 3D Studio (Qt3DS) and Qt Design Studio (QtDS) - are
-marked with 'X' in the below table. The modules and tools are ported to Qt 6
-in stages and are subject to availability.
+Parties have agreed upon Marketing Rights pursuant to Appendix 7, if any.
-Parts of the product that are permitted for distribution in object-code
-form only ("Redistributables") are marked with 'R' in the below table.
-+-----------------------------------------------------------------------+
-| Modules / Tools | QtAD | QtDC | QtMCU | Qt3DS | QtDS |
-+-----------------------------------------------------------------------+
-| Qt Core | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt GUI | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Multimedia | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Multimedia Widgets | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Network | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt PDF | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt QML | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Quick | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Quick Controls 2 | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Quick Dialogs | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Quick Layouts | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Quick Test | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt SQL | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Test | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Widgets | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Active Qt | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt 3D | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Android Extras | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Bluetooth | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Canvas 3D | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Concurrent | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt D-Bus | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Gamepad | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Graphical Effects | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Help | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Image Formats | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Location | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Mac Extras | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Network Authorization | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt NFC | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Platform Headers | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Positioning | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Print Support | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Purchasing | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt for Python | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Quick Controls | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Quick Extras | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Quick Widgets | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt SCXML | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Sensors | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Serial Bus | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Serial Port | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Speech | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt SVG | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt UI Tools | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt WebChannel | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt WebEngine | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt WebSockets | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt WebView | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Windows Extras | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt X11 Extras | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt XML | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt XML Patterns | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Wayland Compositor | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Charts | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Data Visualization | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Virtual Keyboard | X, R | X, R | | | |
-+-----------------------------------------------------------------------+
-| Boot 2 Qt stack | | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt OTA | | X, R | | | |
-+-----------------------------------------------------------------------+
-| Device Utilities | | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Debugging Bridge (QDB) Daemon | | X, R | | | |
-+-----------------------------------------------------------------------+
-| Qt Quick Ultralite Controls | | | X, R | | |
-+-----------------------------------------------------------------------+
-| Qt Quick Ultralite | | | X, R | | |
-+-----------------------------------------------------------------------+
-| Qt Creator | X | X | X | | |
-+-----------------------------------------------------------------------+
-| Qt Designer (Qt Widget Designer) | X | X | | | |
-+-----------------------------------------------------------------------+
-| Qt Quick Designer (Qt Creator | X, R | X, R | X, R | | |
-| plugin) | | | | | |
-+-----------------------------------------------------------------------+
-| Qt Linguist | X, R | X, R | X, R | | |
-+-----------------------------------------------------------------------+
-| Qt Assistant | X, R | X, R | X, R | | |
-+-----------------------------------------------------------------------+
-| Lupdate | X, R | X, R | X, R | | |
-+-----------------------------------------------------------------------+
-| Lrelease | X, R | X, R | X, R | | |
-+-----------------------------------------------------------------------+
-| Qmake | X | X | | | |
-+-----------------------------------------------------------------------+
-| Uic | X | X | | | |
-+-----------------------------------------------------------------------+
-| Rcc | X | X | | | |
-+-----------------------------------------------------------------------+
-| Qlalr | X | X | | | |
-+-----------------------------------------------------------------------+
-| Qdoc | X | X | | | |
-+-----------------------------------------------------------------------+
-| Qmlscene | X | X | | | |
-+-----------------------------------------------------------------------+
-| Qmlviewer | X | X | | | |
-+-----------------------------------------------------------------------+
-| Target toolchains | | X | X | | |
-+-----------------------------------------------------------------------+
-| Qt Debugging Bridge (QDB) Host | | X | | | |
-| Tools | | | | | |
-+-----------------------------------------------------------------------+
-| qtconfig-gui | | X | | | |
-+-----------------------------------------------------------------------+
-| Qt Emulator | | X | | | |
-+-----------------------------------------------------------------------+
-| Qmlinterfacegenerator | | | X | | |
-+-----------------------------------------------------------------------+
-| Qmltocpp | | | X | | |
-+-----------------------------------------------------------------------+
-| qulfontcompiler | | | X | | |
-+-----------------------------------------------------------------------+
-| Qt53DStudioRuntime2 | | | | X, R | |
-+-----------------------------------------------------------------------+
-| Qt 3D Studio | | | | X | |
-+-----------------------------------------------------------------------+
-| Qt Design Studio | | | | | X |
-+-----------------------------------------------------------------------+
-APPENDIX 3: ADDITIONS TO LICENSED SOFTWARE
-
-In addition to what is provided under the definition of the Licensed Software,
-Parties agree that Licensed Software shall also include the Add-On Products of
-The Qt Company, as mentioned in this Appendix, if included in the quote /
-invoice.
-
-The Modules and/or Tools of the Licensed Software that are included with each
-Add-On Product respectively are marked with 'X' in the below table. The modules
-are ported to Qt 6 in stages and are subject to availability.
-
-Parts of the respective Add-On Product that are permitted for distribution in
-object-code form only ("Redistributables") are marked with 'R' in the below
-table.
-
-+------------------------------------------------------------------------------------------------+
-| | Add-On Product(s) |
-| +--------------------------------------------------------------------------+
-| Modules / Tools of | Qt for | Qt | Qt | Qt | Qt | Qt |
-| Licensed Software | Automation | Automotive | Safe | Application | GammaRay | Deployment |
-| | / Qt M2M | Suite | Renderer | Manager | | Platform |
-| | Protocols | | | | | Package |
-+------------------------------------------------------------------------------------------------+
-| Qt MQTT | X, R | | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt KNX | X, R | | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt OPC UA | X, R | | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt CoAP | X, R | | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt Safe Renderer | | X, R | X, R | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt Application | | X, R | | X, R | | |
-| Manager | | | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt IVI | | X, R | | | | |
-+------------------------------------------------------------------------------------------------+
-| Reference UI | | X, R | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt GENIVI Extras | | X, R | | | | |
-+------------------------------------------------------------------------------------------------+
-| QML Live | | X | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt Creator | | X | | | | |
-| Deployment | | | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt Creator Plugin | | X | | X | | |
-| for Qt Application Manager | | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt Automotive Suite | | X | | | | |
-| Deployment Server | | | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt Design Studio | | X | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt 3D Studio | | X | | | | |
-+------------------------------------------------------------------------------------------------+
-| GammaRay | | X | | | X | |
-+------------------------------------------------------------------------------------------------+
-| Platform adaptations| | | | | | X |
-| for specified | | | | | |
-| Deployment Platforms | | | | | |
-+------------------------------------------------------------------------------------------------+
-| Qt for Device | | X | | | | |
-| Creation | | | | | | |
-+------------------------------------------------------------------------------------------------+
-
-
-All the above Redistributables are subject to applicable provisions and
-limitations including but not limited to what is defined in section 3 of the
-Agreement.
+APPENDICES
+The Agreement includes following Appendices 1-10, as applicable.
+- Appendix 1: Licensed Software details
+- Appendix 2: Pricing
+- Appendix 3: Add-on Software details (optional)
+- Appendix 4: Non-commercial and educational Licenses (optional)
+- Appendix 5: Small business and startup Licenses (optional)
+- Appendix 6: License Reporting (optional)
+- Appendix 7: Marketing Rights (optional)
+- Appendix 8: Intentionally left blank (optional)
+- Appendix 9: Support Terms
+- Appendix 10: Conversion from legacy Licenses to Subscription (optional)
+
+
+APPENDIX 1: LICENSED SOFTWARE
+
+The modules and/or tools that are included in the latest publicly available
+version of the respective product at the effective date of this Agreement- Qt
+for Application Development Professional (ADP), Qt for Application Development
+Enterprise (ADE), Qt for Device Creation Professional (DCP), Qt for Device
+Creation Enterprise (DCE), - are marked with "X" in the below table. The
+modules and tools are specific to each product version respectively and may
+vary from version to version. Modules and tools included in the latest publicly
+available version of the respective product at any given time are listed in
+Appendix 1 of the latest version of this Agreement available at
+www.qt.io/terms-conditions/. If a new version of Licensed Software does not
+include a module or tool present in an older version which Licensee is entitled
+to use under a valid license from The Qt Company, then Licensee will continue
+to have such right during the Term of this Agreement. In the event a new
+version of the Licensed Software adds modules or tools to any previous
+version(s), Licensee's rights will extend to cover also such additional modules
+and tools.
+
+Parts of the product that are permitted for distribution in object-code form
+only ("Redistributables") are marked with "R" in the below table.
+
++----------------------------------------------------------+
+| Modules / Tools | ADP | ADE | DCP | DCE |
++----------------------------------------------------------+
+| Active Qt | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt 3D | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt 5 Core Compatibility APIs | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Android Extras | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Bluetooth | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Canvas 3D | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Charts | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Concurrent | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Core | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Data Visualization | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt D-Bus | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt for Python | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt for WebAssembly | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Gamepad | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Graphical Effects | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt GUI | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Help | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Image Formats | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Location | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Lottie Animation | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Mac Extras | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Multimedia | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Multimedia Widgets | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Network | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Network Authorization | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt NFC | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt OpenGL | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt PDF | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Platform Headers | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Positioning | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Print Support | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Purchasing | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt QML | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick 3D | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick Controls 1 | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick Controls | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick Dialogs | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick Extras | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick Layouts | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick Test | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick Timeline | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick WebGL | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick Widgets | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Remote Objects | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Script | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Script Tools | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt SCXML | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Sensors | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Serial Bus | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Serial Port | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Shader Tools | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Speech | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt State Machine | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt SQL | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt SVG | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Test | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt UI Tools | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Virtual Keyboard | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Wayland Compositor | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt WebChannel | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt WebEngine | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt WebSockets | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt WebView | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Widgets | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Windows Extras | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt X11 Extras | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt XML | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt XML Patterns | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Designer (Qt Widget Designer) | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Linguist | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt Assistant | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| lupdate | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| lrelease | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| lconvert | X,R | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt MQTT | | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt KNX | | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt OPC UA | | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Qt CoAP | | X,R | X,R | X,R |
++----------------------------------------------------------+
+| Boot 2 Qt stacks | | | X,R | X,R |
++----------------------------------------------------------+
+| Qt OTA | | | X,R | X,R |
++----------------------------------------------------------+
+| Device Utilities | | | X,R | X,R |
++----------------------------------------------------------+
+| Qt Debugging Bridge (QBD) Daemon | | | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick Ultralite Controls | | | X,R | X,R |
++----------------------------------------------------------+
+| Qt Quick Ultralite | | | X,R | X,R |
++----------------------------------------------------------+
+| Qt Safe Renderer (QSR) | | | | X,R |
++----------------------------------------------------------+
+| Qt Application Manager | | | | X,R |
++----------------------------------------------------------+
+| Qt Interface Framework | | | | X,R |
++----------------------------------------------------------+
+| Neptune Reference UI | | | | X,R |
++----------------------------------------------------------+
+| Qt for Android Automotive (QAA) | | | | X,R |
++----------------------------------------------------------+
+| Qt Creator | X | X | X | X |
++----------------------------------------------------------+
+| Qt Design Studio Professional | X | X | X | X |
++----------------------------------------------------------+
+| androiddeployqt | X | X | X | X |
++----------------------------------------------------------+
+| androidtestrunner | X | X | X | X |
++----------------------------------------------------------+
+| canbusutil | X | X | X | X |
++----------------------------------------------------------+
+| dumpcpp | X | X | X | X |
++----------------------------------------------------------+
+| dumpdoc | X | X | X | X |
++----------------------------------------------------------+
+| fixqt4headers.pl | X | X | X | X |
++----------------------------------------------------------+
+| idc | X | X | X | X |
++----------------------------------------------------------+
+| moc | X | X | X | X |
++----------------------------------------------------------+
+| pixeltool | X | X | X | X |
++----------------------------------------------------------+
+| qdbus | X | X | X | X |
++----------------------------------------------------------+
+| qdbuscpp2xml | X | X | X | X |
++----------------------------------------------------------+
+| qdbusviwer | X | X | X | X |
++----------------------------------------------------------+
+| qdbusxml2cpp | X | X | X | X |
++----------------------------------------------------------+
+| qdistancefieldgenerator | X | X | X | X |
++----------------------------------------------------------+
+| qdoc | X | X | X | X |
++----------------------------------------------------------+
+| qhelpgenerator | X | X | X | X |
++----------------------------------------------------------+
+| qlalr | X | X | X | X |
++----------------------------------------------------------+
+| qmake | X | X | X | X |
++----------------------------------------------------------+
+| qml | X | X | X | X |
++----------------------------------------------------------+
+| qmlcachegen | X | X | X | X |
++----------------------------------------------------------+
+| qmldom | X | X | X | X |
++----------------------------------------------------------+
+| qmleasing | X | X | X | X |
++----------------------------------------------------------+
+| qmlformat | X | X | X | X |
++----------------------------------------------------------+
+| qmllint | X | X | X | X |
++----------------------------------------------------------+
+| qmlpreview | X | X | X | X |
++----------------------------------------------------------+
+| qmlprofiler | X | X | X | X |
++----------------------------------------------------------+
+| qmlscene | X | X | X | X |
++----------------------------------------------------------+
+| qmltestrunner | X | X | X | X |
++----------------------------------------------------------+
+| qmltime | X | X | X | X |
++----------------------------------------------------------+
+| qmlviewer | X | X | X | X |
++----------------------------------------------------------+
+| qtdiag | X | X | X | X |
++----------------------------------------------------------+
+| qtpaths | X | X | X | X |
++----------------------------------------------------------+
+| qtplugininfo | X | X | X | X |
++----------------------------------------------------------+
+| qvkgen | X | X | X | X |
++----------------------------------------------------------+
+| rcc | X | X | X | X |
++----------------------------------------------------------+
+| tracegen | X | X | X | X |
++----------------------------------------------------------+
+| uic | X | X | X | X |
++----------------------------------------------------------+
+| windeployqt | X | X | X | X |
++----------------------------------------------------------+
+| Target toolchains | | | X | X |
++----------------------------------------------------------+
+| Qt Debugging Bridge Host Tools | | | X | X |
++----------------------------------------------------------+
+| qtconfig-gui | | | X | X |
++----------------------------------------------------------+
+| Qt Emulator | | | X | X |
++----------------------------------------------------------+
+| Qt Creator VxWorks plugin | | | X | X |
++----------------------------------------------------------+
+| Qt Creator plugin for Qt | | | | X |
+| Application Manager | | | | |
++----------------------------------------------------------+
+| qmlinterfacegenerator | | | | X |
++----------------------------------------------------------+
+| qmltocpp | | | | X |
++----------------------------------------------------------+
+| qulfontcompiler | | | | X |
++----------------------------------------------------------+
+| Qt Deployment Server | | | | X |
++----------------------------------------------------------+
+
+
+Rights for Application and Device use cases
+
+Following table summarizes the rights afforded by different products of the
+Licensed Software to create and distribute Applications and Devices as defined
+in this Agreement (X marks for rights):
+
++---------------------------------------------------------------+
+| | Applications | Devices |
++---------------------------------------------------------------+
+| ADP | X | |
++---------------------------------------------------------------+
+| ADE | X | |
++---------------------------------------------------------------+
+| DCP | X | X |
++---------------------------------------------------------------+
+| DCE | X | X |
++---------------------------------------------------------------+
+
+Licensed Software: Designer tools and modules
+
+The modules and/or tools that are included in the respective product - Qt for
+Design Studio Professional (DSP), Qt for Design Studio Enterprise (DSE) - are
+marked with "X" in the below table.
+
+Designer tools provides no Redistributables.
+
++---------------------------------------------+
+| | DSP | DSE |
++---------------------------------------------+
+| Qt Design Studio | X | X |
++---------------------------------------------+
+| Qt Design Bridges | | X |
++---------------------------------------------+
+| QML Live on host | X | X |
++---------------------------------------------+
+| QML Live on target | | X |
++---------------------------------------------+
+| Variant Management | | X |
++---------------------------------------------+
+| Shader creation tools | | X |
++---------------------------------------------+
+| Profiling tools | | X |
++---------------------------------------------+
+| Simulink support | | X |
++---------------------------------------------+
+
+
+Both DSP and DSE can be used to create an user interface for use cases covered
+by ADP, ADE, DCP and DCE.
+
+Licensed Software: QA Tools
+
+The modules and/or tools that are included in the respective QA Tools product
+- Squish (both Tester and execution Licenses), Coco or Test Center - are marked
+with "X" in the below table. Optional features that will need additional
+licenses are marked with "O". QA Tools include no Redistributables.
+
++---------------------------------------------------------------------+
+| | Squish | Coco | Test Center |
++---------------------------------------------------------------------+
+| Squish IDE | X | | |
++---------------------------------------------------------------------+
+| QA Tool-specific command line tools | X | X | X |
++---------------------------------------------------------------------+
+| Coverage Browser | | X | |
++---------------------------------------------------------------------+
+| HTML interface | | | X |
++---------------------------------------------------------------------+
+| Qt Support Module | X | | |
++---------------------------------------------------------------------+
+| Java support module | X | | |
++---------------------------------------------------------------------+
+| Windows support module | X | | |
++---------------------------------------------------------------------+
+| iOS support module | X | | |
++---------------------------------------------------------------------+
+| Android support module | X | | |
++---------------------------------------------------------------------+
+| Web support module | X | | |
++---------------------------------------------------------------------+
+| macOS support module | X | | |
++---------------------------------------------------------------------+
+| VNC support module | X | | |
++---------------------------------------------------------------------+
+| MCU support module | X | | |
++---------------------------------------------------------------------+
+| C and C++ language module | | X | |
++---------------------------------------------------------------------+
+| C# language module | | X | |
++---------------------------------------------------------------------+
+| QML language module | | X | |
++---------------------------------------------------------------------+
+| Tester Cross-Compilation Add-On | O | O | |
++---------------------------------------------------------------------+
+
+License capabilities for Squish
+
+License capabilities that are included in the Squish Tester and Execution
+Licenses are marked with "X" in the below table.
+
++-----------------------------------------------------------------------------+
+| | Squish Tester License | Squish Execution License |
++-----------------------------------------------------------------------------+
+| Ability to create, edit, | X | |
+| and debug test cas | | |
++-----------------------------------------------------------------------------+
+| Ability to execute test | X | X |
+| cases | | |
++-----------------------------------------------------------------------------+
+
+Install and use capabilities for QA Tools
+
+Install and use capabilities that are included in the respective QA Tools
+products are defined in the below table.
+
++-----------------------------------------------------------------------------+
+| | Squish | Squish | Coco | Test |
+| | Tester | Execution | License | Center |
+| | License | License | | License |
++-----------------------------------------------------------------------------+
+| Number of installation | Unlimited | Unlimited | Unlimited | One(1) |
+| instances per license | | | | |
++-----------------------------------------------------------------------------+
+| Number of concurrent | Limited by| Limited by | Limited by | Limited by |
+| users | number of | number of | number of | number of |
+| | Squish | Squish | Coco | Test Center |
+| | Tester | Execution | Tester | Licenses |
+| | Licenses | Licenses | Licenses | |
++-----------------------------------------------------------------------------+
+
+
+APPENDIX 2: PRICING
+
+Separate template
+
+APPENDIX 3: ADD-ON PRODUCTS TO LICENSED SOFTWARE
+
+Intentionally left blank.
APPENDIX 4: SMALL BUSINESS AND STARTUP
The provisions of this Appendix 4 are applicable for companies with an annual
-revenue, including funding, equivalent to maximum of 250,000 USD (in
-applicable currency) during the latest full calendar year, as evidenced by
-duly audited records of the Licensee and approved by The Qt Company
-("Start-up Company").
+revenue, including funding, equivalent to maximum of 250,000 USD (in applicable
+currency) during the latest full calendar year, as evidenced by duly audited
+records of the Licensee and approved by The Qt Company ("Start-up Company").
Start-up Companies are qualified for a discounted License Fee for maximum of
-four (4) Development Licenses ("Start-up Development License") unless
-otherwise agreed between the parties.
+four (4) Development Licenses ("Start-up Development License") unless otherwise
+agreed between the parties.
Start-up Development License entitles the respective Designated User for
-Support only for installation related issues.
+Support only for Install Support as defined in Appendix 9, Support Terms.
+
+Upon expiry of the respective Development License Term, the Start-up
+Development Licenses shall be automatically extended, pursuant to Section 3.1
+of the Agreement, for a Renewal Term either as new Start-up Development
+Licenses (if the Licensee still qualifies as a Start-up Company), or as normal
+then standard list price Development Licenses (if the Licensee no longer
+qualifies as a Start-up Company).
-Upon expiry of the respective License Term, the Start-up Development
-Licenses shall be automatically extended, pursuant to Section 3.1 of the
-Agreement, for a Renewal Term either as new Start-up Development Licenses
-(if the Licensee still qualifies as a Start-up Company), or as normal
-Development Licenses (if the Licensee no longer qualifies as a Start-up
-company).
+APPENDIX 5: NON-COMMERCIAL AND EDUCATIONAL USE
-APPENDIX 5: NON-COMMERCIAL USE
-The provisions of this Appendix 5 are applicable for non-commercial use of
-the Licensed Software by the Licensee.
+The provisions of this Appendix 5 are applicable for non-commercial use of the
+Licensed Software by the Licensee.
For the purpose of this Appendix 5, the following additional definitions
-(replacing the relevant definition of the Agreement, where applicable)
-shall be applicable:
+(replacing the relevant definition of the Agreement, where applicable) shall be
+applicable:
"Demo Units" shall mean (i) hardware development platform, which incorporates
-the Licensed Software along with Licensee's software and/or hardware, and
-(ii) prototype versions of Applications or Devices.
+the Licensed Software along with Licensee's software and/or hardware, and (ii)
+prototype versions of Applications or Devices.
"Designated User(s)" shall mean the employees and students of the Licensee.
"Licensee Products" shall mean Applications and/or Devices.
-"Permitted Purpose" shall mean (i) Licensee's internal evaluation and
-testing of Licensed Software, (ii) building Demo Units as well as (iii)
-educational use.
-
-"Term" shall mean a period of twelve (12) months or any such other period
-as may be agreed between the Parties.
+"Permitted Purpose" shall mean (i) Licensee's internal evaluation and testing
+of Licensed Software, (ii) building Demo Units as well as (iii) educational
+use.
-For the purpose of this Appendix 5, the following changes shall be agreed
-with respect to relevant Sections of the Agreement:
+"Agreement Term" shall mean a period of twelve (12) months or any such other
+period as may be agreed between the Parties.
- I. Recital (A) shall be replaced in its entirety to read as follows:
- "(A) Licensee wishes to use the Licensed Software for the Permitted
- Purpose."
- II. Section 3.1 shall be replaced in its entirety to read as follows:
+For the purpose of this Appendix 5, the following changes shall be agreed with
+respect to relevant Sections of the Agreement:
+ I. Recital (A) shall be replaced in its entirety to read as follows:
+ "(A) Licensee wishes to use the Licensed Software for the Permitted
+ Purpose."
+ II. Section 3.1 shall be replaced in its entirety to read as follows:
"The Qt Company grants to Licensee a personal, non-exclusive,
non-transferable, revocable, royalty-free license, valid for the
- Term, to use, modify and copy the Licensed Software solely for the
- Permitted Purpose.
- Licensee may install copies of the Licensed Software on five (5)
- computers per Designated User, provided that only the Designated
- Users who have a valid Development License may use the Licensed
- Software.
- Licensee may demonstrate the Demo Units, provided that such
- demonstrations must be conducted by Licensee, and the Demo Units
- must remain in Licensee's possession and under Licensee's control
+ Agreement Term, to use, modify and copy the Licensed Software solely
+ for the Permitted Purpose. Licensee may install copies of the Licensed
+ Software on five (5) computers per Designated User, provided that only
+ the Designated Users who have a valid Development License may use the
+ Licensed Software. Licensee may demonstrate the Demo Units, provided
+ that such demonstrations must be conducted by Licensee, and the Demo
+ Units must remain in Licensee's possession and under Licensee's control
at all times.
For clarity, this Agreement does not (i) entitle Licensee to use
Licensed Software to create Applications or Devices (other than
- prototypes thereof) or (ii) carry any distribution rights to
- Licensee, but such rights are subject to and conditional upon
- conclusion of a separate license agreement with The Qt Company."
- III. Sections 3.2, 3.3, 8 and 10 shall be deleted.
- IV. Section 3.4 shall be replaced in its entirety to read as follows:
+ prototypes thereof) or (ii) carry any distribution rights to Licensee,
+ but such rights are subject to and conditional upon conclusion of a
+ separate license agreement with The Qt Company."
+ III. Sections 3.2, 3.3, 3.5, 3.6, 8 and 10 shall be deleted.
+ IV. Section 3.4 shall be replaced in its entirety to read as follows:
"Licensee shall not:
- - remove or alter any copyright, trademark or other proprietary
- rights notice contained in any portion of the Licensed Software;
- - transfer, publish, sublicense, disclose, display or otherwise
- make the Licensed Software available to any third party (except
- that Licensee may demonstrate the Demo Units pursuant to Section
- 3.1);
- - in any way combine, incorporate or integrate Licensed Software
- with, or use Licensed Software for creation of, any software
- created with or incorporating Open Source Qt;
-
- Licensee shall cause all Designated Users who make use of the
- licenses granted under this Agreement, to be contractually bound
- to comply with the relevant terms of this Agreement and not to use
- the Licensed Software beyond the terms hereof. Licensee shall be
- responsible for any and all actions and omissions of its
- Designated Users relating to the Licensed Software and use
- thereof.
-
- Any use of Licensed Software beyond the provisions of this
- Agreement is strictly prohibited and requires an additional license
- from The Qt Company."
- V. Section 12 shall be replaced in its entirety to read as follows:
- "This Agreement shall enter into force upon due acceptance by both
- Parties and remain in force for the Term, unless and until
- terminated pursuant to the terms of Section 12.
-
- Upon termination of the Agreement, Licensee shall cease using the
- Licensed Software. All other copies of Licensed Software in the
- possession or control of Licensee must be erased or destroyed.
- An officer of Licensee must, upon request, promptly deliver to
- The Qt Company a written confirmation that this has occurred."
-
-Except for the modifications specified above, this Appendix carries no
-change to the terms of the Agreement which shall remain in full force.
+ - remove or alter any copyright, trademark or other proprietary rights
+ notice contained in any portion of the Licensed Software;
+ - transfer, publish, sublicense, disclose, display or otherwise make
+ the Licensed Software available to any third party (except that
+ Licensee may demonstrate the Demo Units pursuant to Section 3.1);
+ - in any way combine, incorporate or integrate Licensed Software with,
+ or use Licensed Software for creation of, any software created with
+ or incorporating Open Source Qt; Licensee shall cause all Designated
+ Users who make use of the licenses granted under this Agreement, to
+ be contractually bound to comply with the relevant terms of this
+ Agreement and not to use the Licensed Software beyond the terms
+ hereof. Licensee shall be responsible for any and all actions and
+ omissions of its Designated Users relating to the Licensed Software
+ and use thereof. Any use of Licensed Software beyond the provisions
+ of this Agreement is strictly prohibited and requires an additional
+ license from The Qt Company."
+ V. Section 12 shall be replaced in its entirety to read as follows:
+ "This Agreement shall enter into force upon due acceptance by both
+ Parties and remain in force for the Agreement Term, unless and until
+ terminated pursuant to the terms of Section 12.
+ Upon termination of the Agreement, Licensee shall cease using the
+ Licensed Software. All other copies of Licensed Software in the
+ possession or control of Licensee must be erased or destroyed. An
+ officer of Licensee must, upon request, promptly deliver to The Qt
+ Company a written confirmation that this has occurred."
+
+Except for the modifications specified above, this Appendix carries no change
+to the terms of the Agreement which shall remain in full force.
+
+APPENDIX 6: LICENSE REPORTING
+
+Separate template
+
+APPENDIX 7: MARKETING RIGHTS
+
+This Appendix 7 has the purpose to grant visibility through The Qt Company
+marketing channels of the usage of Qt and related product and service in
+Licensee product. Following related marketing right are agreed between the Qt
+Company and the Licensee.
+
+1. LICENSEE NAME AND LICENSEE LOGO
+
+The Qt Company has the right to use Licensee name and Licensee logo in public
+channel, in respect of the value proposition that the Qt company provided to
+the Licensee.
+
+2. MARKETING CONTENT COOPERATION
+
+2.1. LICENSEE CASES
+
+The Licensee is open to collaborate on content creation for marketing and
+communication purpose. The Licensee will nominate one responsible that will be
+in charge to support The Qt company with this content creation, according to
+content format paragraph, answering technical questions or sharing professional
+picture or video of required content. The Qt Company will have the right to
+advertise this in Content Format and Channel as mentioned in paragraph 3 and 4.
+
+2.2. FINAL PRODUCT REFERRAL
+
+Licensee agree that The Qt Company could connect their software product and
+services with the Licensee device or application, that the Licensee has created
+using The Qt Company technology and competence. Licensee will provide high
+quality picture, and video of the created final product where the Qt technology
+is running into. The Qt Company will have the right to advertise this in
+Content Format and Channel as mentioned in paragraph 3 and 4.
+
+3. CONTENT FORMAT
+
+- Video
+- Written Licensee case
+- Press release
+- Social media posts
+- Emails
+- Event booth Graphics
+- Printed material
+
+4. CHANNELS
+
+- Social media
+- The Qt Company resource center and website
+- Email to the Qt company contact database
+- Events
+- Online webinars
+- Public speech
+- Public presentations
+
+APPENDIX 8: INTENTIONALLY LEFT BLANK
+
+APPENDIX 9: SUPPORT TERMS
+
+These Qt support terms and conditions ("Support Terms") set forth the legal
+framework, where under The Qt Company ("The Qt Company") provides support
+services (as herein defined) to the Licensee.
+
+1 DEFINITIONS
+
+"Application Code" shall mean a computer software program written strictly
+using the Qt programming language, by or for the Licensee, with a user
+interface, enabling the Licensee or their users to accomplish a specific task
+and display any results of the task on the display monitor or screen.
+
+"Dedicated Contact" shall mean the employee of The Qt Company who will be the
+first point of contact for all Designated Users' requests for Support.
+
+"Errors" shall mean an error, flaw, mistake, failure, or fault in Licensed
+Software that prevents it from behaving as described in the relevant
+documentation or as agreed between the Parties.
+
+"Extended Support" shall mean a continuation to the normal Support period,
+which allows Designated Users to receive selected Support (Standard Support or
+Premium Support) for a version of Licensed Software that is no longer generally
+supported by The Qt Company.
+
+"Install Support" shall mean Support that is limited to installation related
+Error(s) on Development Platforms specified as supported host platforms for
+each Qt release under doc.qt.io.
+
+"Maintenance Release" shall mean a release or version of Licensed Software
+containing bug fixes, error corrections and other changes targeted to
+maintaining and improving product stability and quality. Maintenance Releases
+are generally depicted as a change to the third digit of Licensed Software
+version number.
+
+"Platforms" shall mean both Development Platforms and Deployment Platforms.
+Supported host and target Platforms may vary from for each Qt release as
+defined under doc.qt.io.
+
+"Premium Support" shall mean an upgraded level of Support that The Qt Company
+provides pursuant to these Support Terms to Licensee if Licensee has purchased
+Premium Support instead of Standard Support. Premium Support shall always be
+purchased for all Designated User(s) in the respective development team of the
+Licensee.
+
+"Response Time" shall mean the period of time from when Licensee notifies
+TheQt Company about an Error or requests Support until The Qt Company provides
+Licensee with a response that addresses (but not necessarily resolves) the
+reported Error or provides the requested Support.
+
+"Standard Support" shall mean standard level of Support that The Qt Company
+provides pursuant to these Support Terms to Licensee.
+
+"Support" shall mean developer assistance that is provided by The Qt Company
+to assist eligible Designated Users in Licensed Software installation, usage
+and functionality problem resolution for Error(s) and Error workarounds
+pursuant to the terms of these Support Terms. Support for different products is
+available as specified in the below table ("X" marking the Support that is
+included in the license price, optional Add-on Support services are marked as
+"O"):
+
++-----------------------------------------------------------------------+
+| |ADP|ADE|DCP|DCE|DSP|DSE|Squish|Coco|Test Center|
++-----------------------------------------------------------------------+
+| Install Support | X | X | X | X | X | X | X | X | X |
++-----------------------------------------------------------------------+
+| Standard Support | | X | X | X | X | X | X | X | X |
++-----------------------------------------------------------------------+
+| Premium Support | | O | O | O | O | O | O | O | O |
++-----------------------------------------------------------------------+
+| Extended Support | | O | O | O | O | O | | | |
++-----------------------------------------------------------------------+
+| Tool Qualification Kit| | | | | | | O | O | |
++-----------------------------------------------------------------------+
+
+"Support Validity Term" shall mean the Development License Term or any other
+fixed time period agreed between the Parties during which time the Customer is
+eligible to receive Support from The Qt Company.
+
+"Tool Qualification Kit" shall mean a customized set of documents and
+validation test cases.
+
+2 SUPPORT SERVICES
+
+2.1 Support Services Provided by The Qt Company
+
+Subject to these Support Terms and during the Support Validity Term, The Qt
+Company will via its web-based support user-interface, provide Designated
+User(s) with Support for the Platforms which Customer has licensed under the
+Agreement.
+The Qt Company will make commercially reasonable efforts to solve any Errors
+reported by Designated User(s). Resolution of an Error may be provided through
+Designated User(s) themselves downloading of a later released version of the
+applicable Licensed Software product(s) or providing the Designated User with a
+temporary workaround addressing such Error.
+
+2.2 Licensee's Obligations
+
+To report an Error, the Designated User shall register the Error on The Qt
+Company's web-based support user interface located at:
+https://account.qt.io/login or at another location designated by The Qt Company.
+
+The Designated User must provide adequate information and documentation to The
+Qt Company to enable it to recreate the Error or problem for which the
+Designated User has sought assistance.
+To ensure efficient handling of Errors, the Designated User must provide the
+following information, where relevant:
+- A clear, detailed description of the problem, question or suggestion;
+- Identification of which Licensed Software product and version is affected;
+- Identification of the operating environment (e.g. operating system, hardware
+ Platform, build tools, etc.) on which the problem exists;
+- On Standard Support: A complete and compilable test case of not more than 500
+ lines of code that demonstrates the problem;
+- On Premium Support: A complete and compilable test case that demonstrates the
+ problem or access to Application Code source codes.
+
+Additional relevant content, such as screenshots, etc.
+Additional content should be included as attachments. The preferred image
+formats are JPEG and PNG. Compressed content should be included in zip or
+tar.gz archives. Executable content and documents in platform specific formats
+such as Microsoft Office' are not accepted.
+
+In order for The Qt Company to provide prompt handling of Errors, the
+Designated User shall promptly respond to any requests from The Qt Company for
+additional information.
+
+2.3 Support Limitations
+
+General limitations:
+
+Each version or release of the Licensed Software will be Supported under
+Standard Support or Premium Support only for limited time period as set forth
+in doc.qt.io. For example, regular releases of Qt Software are supported for
+one (1) year from the release date of the version x.y.0 and Long Term Support
+(LTS) Releases are supported for a period of three (3) years from the release
+date of the LTS version x.y.0.
+
+The Qt Company shall only provide Support for Designated User(s).
+
+Support is made available for the entire development teams only: It is not
+allowed to purchase Support only for some members of the development team, and
+all Designated Users of the respective development team must be eligible for
+the same level of Support.
+
+Support is not provided for snapshots, preview releases, beta releases or
+release candidates.
+
+The Qt Company shall have no obligation to provide Support for hardware or
+operating system specific problems or problems arising from improper use,
+accident, neglect or modification of Qt.
+
+Limitations with Install Support:
+
+Support limited to Error(s) regarding installation and setting up of the Qt
+development environment on host Platforms.
+
+Limitations with Standard Support:
+
+The Qt Company shall not provide Support for third-party software or problems
+caused by third-party software even if such third-party software is distributed
+together with Licensed Software product(s).
+
+The Qt Company shall only provide Support for Error(s) that are reported on and
+can be reproduced on Platforms that are officially supported for the release of
+the Licensed Software.
+
+Limitations with Premium support:
+
+The Qt Company shall not provide Support for third-party software or problems
+caused by third-party software. However, if such third-party software is
+distributed together with Licensed Software, The Qt Company will make
+commercially reasonable efforts to solve such problems.
+
+The Qt Company shall only provide Support for Error(s) that can be reproduced
+on Platforms that are officially supported for the release of the Licensed
+Software. If the Error is on a Platform that is not supported, The Qt Company
+will make commercially reasonable efforts to provide a solution on closest
+corresponding supported Platform.
+
+Premium Support is optional and purchased for an agreed bucket of hours
+("Bucket"). Hours can be used by any Designated User in the respective
+development team. To encourage continuous usage of the Support, ten percent
+(10%) of the purchased Bucket shall automatically expire (regardless of whether
+such support hours are actually used or not by the Licensee) each month after
+three (3) months from the purchase of the Premium Support.
+
+2.4 Extended Support
+
+Extended Support extends the Support Validity Term for a release of Licensed
+Software that is no longer generally supported.
+
+Extended Support includes and is by default provided with Standard Support
+rules and limitations, unless Extended Support is purchased with Premium
+Support in which case Premium Support rules and limitations will apply.
+
+Extended Support is optional and purchased with annual fee and separately per
+each Licensee product. Extended Support will need definition of (i) Licensee
+product, (ii) used Platform(s) and (iii) Licensed Software version(s).
+
+2.5 Tool Qualification Kit
+
+The Qt Company shall provide set of customized documents and validation tests
+that enable Licensee to qualify QA testing tool for the purpose of ISO 26262,
+EN 50128, DO-330, IEC 61508, IEC 62304 or IEC 13485 certification Licensee end
+to end solution.
+
+3 RESPONSE TIME
+
+In performing Support, The Qt Company shall commit to following, non-binding,
+Response Times:
+
+Standard Support: Errors and Support requests will have a Response Time not to
+exceed two (2) business days.
+
+Premium Support: Errors and Support requests will have a Response Time not to
+exceed one (1) business day.
+
+For complex issues, The Qt Company may provide an initial response to the
+Designated User and then follow up, without undue delay, with additional
+communication before an Error is properly addressed or Support provided.
+
+4 ADDITIONAL SERVICES IN PREMIUM SUPPORT
+
+The Designated User(s) will be assigned a Dedicated Contact to handle requests
+for Support. Dedicated Contact is subject to change in cases such as sick
+leave, vacation and other similar reasons.
+
+The Designated User(s) can on request ask The Qt Company to access their
+computer remotely in order to resolve problems directly.
+
+The Designated User(s) can request a session via Instant Messaging or phone
+call in the support request to The Qt Company.
+
+Premium Support can assist Licensee in implementing new features, bug fixes
+and accessing patches in Licensed Software or Application Code.
+
+All Support requests will be handled with high priority.
+
+5 MAINTENANCE RELEASES, UPDATES AND UPGRADES
+
+Under the Support the Customer is eligible for Maintenance Releases and Updates
+that The Qt Company generally makes available to customers who has purchased
+Support. Unless otherwise decided by The Company at its free and absolute
+discretion, Upgrades will not be provided under the Support.
+
+The primary focus of Maintenance Releases is product quality. Therefore, each
+Maintenance Release typically includes the following types of changes to the
+previous version of Licensed Software:
+- Bug fixes caused by changes to previously working code;
+- Fixes related to build issues on supported Platforms;
+- Error corrections specific to a single Platform that are not present on other
+ Platforms;
+- Critical Error corrections such as crashes, data corruption, loss of data,
+ race conditions; and
+- Updates to documentation and license information when deemed necessary by
+ The Qt Company.
+
+The primary focus of Updates is introducing new features to Licensed Software
+and covering new platforms. Therefore, each Updates typically includes the
+following types of changes to the previous version of Licensed Software:
+- New platform support;
+- New toolchain support;
+- New features and Qt modules;
+
+6 WARRANTY DISCLAIMER
+
+The Qt Company makes no warranties that the Support provided will be successful
+in resolving any difficulties or problems or in diagnosing faults reported by
+Licensee. Support is provided to Licensee on an "as is" basis. To the maximum
+extent permitted by applicable law, The Qt Company disclaims all warranties and
+conditions, either express or implied, including, but not limited to, implied
+warranties of merchantability and fitness for a particular purpose for the
+Support provided by The Qt Company to Licensee.
+
+APPENDIX 10: CONVERSION TO SUBSCRIPTION
+
+Subject to the terms of this Appendix Licensee's current development licenses
+("Current Licenses") for commercial version of Qt Software and the license
+agreements governing such Current Licenses ("Existing Agreements") are being
+replaced by this Agreement and subscription based Development Licenses
+governed hereunder, as further specified below.
+
++---------------------------------------------------------------------------+
+| Existing Agreement(s) | <Trolltech, Nokia, Digia, The Qt Company> and |
+| signing parties, version | <Licensee> <Version of the Agreement, e.g. 2,0,|
+| and date of signatures | 3.2 or 4.1> <Date of the agreement signatures> |
+| thereof | |
++---------------------------------------------------------------------------+
+
+Parties hereby agree on conversion of Current Licenses listed in attached
+Exhibit A to the subscription licenses listed in attached Exhibit B for use
+through License Term. As of the date hereof,
+
+i. Licensee's Current Licenses as listed in Exhibit A shall terminate and be
+replaced with the Subscription licenses listed in Exhibit B and;
+ii. Existing Agreements are terminated.
+
+Prices for the conversion of Current Licenses are defined in Appendix 2
+Pricing or Quote.
+
+Notwithstanding anything in this Appendix to the contrary, and in addition to
+any payments due pursuant to this Appendix, Licensee remains fully obligated to
+fulfill any and all outstanding payment obligations to The Qt Company under any
+applicable Existing Agreements. For the avoidance of doubt, if any payments
+remain outstanding on the Current Licenses under the applicable terms Licensee
+will continue to make such payments in accordance with the applicable order
+documentation, notwithstanding the fact that the Current Licenses are being
+converted to Development Licenses pursuant to this Appendix.
diff --git a/configure b/configure
index b6c9b462f2..a356427631 100755
--- a/configure
+++ b/configure
@@ -474,6 +474,10 @@ while [ "$#" -gt 0 ]; do
VAR=`echo $1 | sed 's,^-\(.*\),\1,'`
VAL="yes"
;;
+ # Special case for macOS universal builds
+ QMAKE_APPLE_DEVICE_ARCHS=*)
+ QMAKE_APPLE_DEVICE_ARCHS=`echo $1 | sed 's,^QMAKE_APPLE_DEVICE_ARCHS=\(.*\),\1,'`
+ ;;
# most options don't need processing in the configure script, skip them. qmake will do the real validation
*)
shift
@@ -781,6 +785,10 @@ setBootstrapVariable()
if [ "$BUILD_ON_MAC" = "yes" ]; then
echo "EXTRA_CXXFLAGS += -MMD" >> "$mkfile"
+ for arch in $QMAKE_APPLE_DEVICE_ARCHS; do
+ echo "EXTRA_CXXFLAGS += -arch $arch" >> "$mkfile"
+ echo "EXTRA_LFLAGS += -arch $arch" >> "$mkfile"
+ done
cat "$in_mkfile" >> "$mkfile"
echo "-include \$(notdir \$(DEPEND_SRC:%.cpp=%.d))" >> "$mkfile"
else
diff --git a/doc/global/config.qdocconf b/doc/global/config.qdocconf
index acfd5869ed..1dd11ad74b 100644
--- a/doc/global/config.qdocconf
+++ b/doc/global/config.qdocconf
@@ -3,7 +3,7 @@
dita.metadata.default.author = Qt Project
dita.metadata.default.permissions = all
dita.metadata.default.publisher = Qt Project
-dita.metadata.default.copyryear = 2020
+dita.metadata.default.copyryear = 2022
dita.metadata.default.copyrholder = The Qt Company Ltd
dita.metadata.default.audience = programmer
diff --git a/doc/global/externalsites/qtcreator.qdoc b/doc/global/externalsites/qtcreator.qdoc
index e283b32360..5d97a87ad1 100644
--- a/doc/global/externalsites/qtcreator.qdoc
+++ b/doc/global/externalsites/qtcreator.qdoc
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2019 The Qt Company Ltd.
+** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
@@ -25,603 +25,641 @@
**
****************************************************************************/
+// Up-to-date with Qt Creator 6.0.0
+
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-deployment-qnx.html
+ \externalpage https://doc.qt.io/qtcreator/creator-deployment-qnx.html
\title Qt Creator: Deploying Applications to QNX Neutrino Devices
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-developing-baremetal.html
+ \externalpage https://doc.qt.io/qtcreator/creator-developing-baremetal.html
\title Qt Creator: Connecting Bare Metal Devices
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-developing-qnx.html
+ \externalpage https://doc.qt.io/qtcreator/creator-developing-qnx.html
\title Qt Creator: Connecting QNX Devices
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-developing-generic-linux.html
- \title Qt Creator: Connecting Embedded Linux Devices
+ \externalpage https://doc.qt.io/qtcreator/creator-developing-generic-linux.html
+ \title Qt Creator: Connecting Generic Remote Linux Devices
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-developing-mcu.html
+ \title Qt Creator: Connecting MCUs
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-setup-webassembly.html
+ \title Qt Creator: Building Applications for the Web
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-deployment-embedded-linux.html
- \title Qt Creator: Deploying Applications to Embedded Linux Devices
+ \externalpage https://doc.qt.io/qtcreator/creator-deployment-embedded-linux.html
+ \title Qt Creator: Deploying Applications to Generic Remote Linux Devices
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-faq.html
+ \externalpage https://doc.qt.io/qtcreator/creator-faq.html
\title Qt Creator: FAQ
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-tips.html
- \title Qt Creator: Tips and Tricks
+ \externalpage https://doc.qt.io/qtcreator/creator-how-tos.html
+ \title Qt Creator: How-tos
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-help.html
+ \externalpage https://doc.qt.io/qtcreator/creator-help.html
\title Qt Creator: Using the Help Mode
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-quick-tour.html
+ \externalpage https://doc.qt.io/qtcreator/creator-quick-tour.html
\title Qt Creator: User Interface
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-modes.html
+ \externalpage https://doc.qt.io/qtcreator/creator-modes.html
\title Qt Creator: Selecting Modes
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-sidebar-views.html
+ \externalpage https://doc.qt.io/qtcreator/creator-sidebars.html
+ \title Qt Creator: Working with Sidebars
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-sidebar-views.html
\title Qt Creator: Browsing Project Contents
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-output-panes.html
+ \externalpage https://doc.qt.io/qtcreator/creator-projects-view.html
+ \title Qt Creator: Projects
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-file-system-view.html
+ \title Qt Creator: File System
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-open-documents-view.html
+ \title Qt Creator: Open Documents
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-output-panes.html
\title Qt Creator: Viewing Output
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-cli.html
+ \externalpage https://doc.qt.io/qtcreator/creator-cli.html
\title Qt Creator: Using Command Line Options
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-task-lists.html
+ \externalpage https://doc.qt.io/qtcreator/creator-task-lists.html
\title Qt Creator: Showing Task List Files in Issues Pane
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-managing-sessions.html
+ \externalpage https://doc.qt.io/qtcreator/creator-telemetry.html
+ \title Qt Creator: Managing Data Collection
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/collecting-usage-statistics.html
+ \title Qt Creator: Collecting Usage Statistics
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-project-managing-sessions.html
\title Qt Creator: Managing Sessions
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-editor-external.html
+ \externalpage https://doc.qt.io/qtcreator/creator-editor-external.html
\title Qt Creator: Using External Tools
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-version-control.html
+ \externalpage https://doc.qt.io/qtcreator/creator-version-control.html
\title Qt Creator: Using Version Control Systems
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-vcs-bazaar.html
+ \externalpage https://doc.qt.io/qtcreator/creator-vcs-bazaar.html
\title Qt Creator: Using Bazaar
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-vcs-clearcase.html
+ \externalpage https://doc.qt.io/qtcreator/creator-vcs-clearcase.html
\title Qt Creator: Using ClearCase
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-vcs-cvs.html
+ \externalpage https://doc.qt.io/qtcreator/creator-vcs-cvs.html
\title Qt Creator: Using CVS
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-vcs-git.html
+ \externalpage https://doc.qt.io/qtcreator/creator-vcs-git.html
\title Qt Creator: Using Git
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-vcs-mercurial.html
+ \externalpage https://doc.qt.io/qtcreator/creator-vcs-mercurial.html
\title Qt Creator: Using Mercurial
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-vcs-perforce.html
+ \externalpage https://doc.qt.io/qtcreator/creator-vcs-perforce.html
\title Qt Creator: Using Perforce
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-vcs-subversion.html
+ \externalpage https://doc.qt.io/qtcreator/creator-vcs-subversion.html
\title Qt Creator: Using Subversion
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-keyboard-shortcuts.html
+ \externalpage https://doc.qt.io/qtcreator/creator-keyboard-shortcuts.html
\title Qt Creator: Keyboard Shortcuts
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/qmldesigner-pathview-editor.html
- \title Qt Creator: Editing PathView Properties
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/qmldesigner-connections.html
- \title Qt Creator: Adding Connections
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/quick-signals.html
- \title Qt Creator: Connecting Objects to Signals
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/quick-dynamic-properties.html
- \title Qt Creator: Specifying Dynamic Properties
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/quick-property-bindings.html
- \title Qt Creator: Adding Bindings Between Properties
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/quick-connections-backend.html
- \title Qt Creator: Managing C++ Backend Objects
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/qtcreator-transitions-example.html
+ \externalpage https://doc.qt.io/qtcreator/qtcreator-transitions-example.html
\title Qt Creator: Creating a Qt Quick Application
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/qtquick-iso-icon-browser.html
- \title Qt Creator: Browsing ISO 7000 Icons
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/quick-export-to-qml.html
- \title Qt Creator: Exporting Designs from Graphics Software
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/creator-qml-modules-with-plugins.html
+ \externalpage https://doc.qt.io/qtcreator/creator-qml-modules-with-plugins.html
\title Qt Creator: Using QML Modules with Plugins
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/quick-converting-ui-projects.html
+ \externalpage https://doc.qt.io/qtcreator/quick-converting-ui-projects.html
\title Qt Creator: Converting UI Projects to Applications
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-visual-editor.html
+ \externalpage https://doc.qt.io/qtcreator/creator-visual-editor.html
\title Qt Creator: Developing Qt Quick Applications
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-using-qt-quick-designer.html
- \title Qt Creator: Editing QML Files in Design Mode
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/quick-projects.html
+ \externalpage https://doc.qt.io/qtcreator/quick-projects.html
\title Qt Creator: Creating Qt Quick Projects
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/quick-components.html
- \title Qt Creator: Creating Components
+ \externalpage https://doc.qt.io/qtcreator/creator-qtquickdesigner-plugin.html
+ \title Qt Creator: Using Qt Quick Designer
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/qt-quick-toolbars.html
+ \externalpage https://doc.qt.io/qtcreator/qt-quick-toolbars.html
\title Qt Creator: Using Qt Quick Toolbars
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/quick-buttons.html
- \title Qt Creator: Creating Buttons
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/quick-scalable-image.html
- \title Qt Creator: Creating Scalable Buttons and Borders
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/creator-editor-options.html
+ \externalpage https://doc.qt.io/qtcreator/creator-editor-options.html
\title Qt Creator: Configuring the Editor
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-editor-functions.html
+ \externalpage https://doc.qt.io/qtcreator/creator-editor-functions.html
\title Qt Creator: Writing Code
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-coding-navigating.html
+ \externalpage https://doc.qt.io/qtcreator/creator-coding-navigating.html
\title Qt Creator: Working in Edit Mode
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-highlighting.html
+ \externalpage https://doc.qt.io/qtcreator/creator-highlighting.html
\title Qt Creator: Semantic Highlighting
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-checking-code-syntax.html
+ \externalpage https://doc.qt.io/qtcreator/creator-checking-code-syntax.html
\title Qt Creator: Checking Code Syntax
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-completing-code.html
+ \externalpage https://doc.qt.io/qtcreator/creator-completing-code.html
\title Qt Creator: Completing Code
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-editor-codepasting.html
+ \externalpage https://doc.qt.io/qtcreator/creator-editor-codepasting.html
\title Qt Creator: Pasting and Fetching Code Snippets
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-macros.html
+ \externalpage https://doc.qt.io/qtcreator/creator-macros.html
\title Qt Creator: Using Text Editing Macros
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-editor-fakevim.html
+ \externalpage https://doc.qt.io/qtcreator/creator-editor-fakevim.html
\title Qt Creator: Using FakeVim Mode
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-indenting-code.html
+ \externalpage https://doc.qt.io/qtcreator/creator-indenting-code.html
\title Qt Creator: Indenting Text or Code
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-editor-finding.html
+ \externalpage https://doc.qt.io/qtcreator/creator-editor-finding.html
\title Qt Creator: Finding and Replacing
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-editor-refactoring.html
+ \externalpage https://doc.qt.io/qtcreator/creator-editor-refactoring.html
\title Qt Creator: Refactoring
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-editor-locator.html
+ \externalpage https://doc.qt.io/qtcreator/creator-editor-quick-fixes.html
+ \title Qt Creator: Applying Refactoring Actions
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-editor-locator.html
\title Qt Creator: Searching with the Locator
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-coding.html
+ \externalpage https://doc.qt.io/qtcreator/creator-coding.html
\title Qt Creator: Coding
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-editor-options-text.html
+ \externalpage https://doc.qt.io/qtcreator/creator-editor-options-text.html
\title Qt Creator: Specifying Text Editor Settings
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-finding-overview.html
+ \externalpage https://doc.qt.io/qtcreator/creator-finding-overview.html
\title Qt Creator: Finding
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-mime-types.html
+ \externalpage https://doc.qt.io/qtcreator/creator-mime-types.html
\title Qt Creator: Editing MIME Types
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-modeling.html
+ \externalpage https://doc.qt.io/qtcreator/creator-modeling.html
\title Qt Creator: Modeling
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-qml-debugging-example.html
+ \externalpage https://doc.qt.io/qtcreator/creator-qml-debugging-example.html
\title Qt Creator: Debugging a Qt Quick Example Application
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-debugging-example.html
+ \externalpage https://doc.qt.io/qtcreator/creator-debugging-example.html
\title Qt Creator: Debugging a C++ Example Application
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-debugger-engines.html
+ \externalpage https://doc.qt.io/qtcreator/creator-debugger-engines.html
\title Qt Creator: Setting Up Debugger
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-debugging-qml.html
+ \externalpage https://doc.qt.io/qtcreator/creator-debugging-qml.html
\title Qt Creator: Debugging Qt Quick Projects
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-debugging.html
+ \externalpage https://doc.qt.io/qtcreator/creator-debugging.html
\title Qt Creator: Debugging
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-debugger-operating-modes.html
+ \externalpage https://doc.qt.io/qtcreator/creator-debugger-operating-modes.html
\title Qt Creator: Launching the Debugger
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-debug-mode.html
+ \externalpage https://doc.qt.io/qtcreator/creator-debug-mode.html
\title Qt Creator: Interacting with the Debugger
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-debugging-helpers.html
+ \externalpage https://doc.qt.io/qtcreator/creator-debugging-helpers.html
\title Qt Creator: Using Debugging Helpers
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-troubleshooting-debugging.html
+ \externalpage https://doc.qt.io/qtcreator/creator-troubleshooting-debugging.html
\title Qt Creator: Troubleshooting Debugger
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/index.html
+ \externalpage https://doc.qt.io/qtcreator/index.html
\title Qt Creator Manual
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-advanced.html
+ \externalpage https://doc.qt.io/qtcreator/creator-advanced.html
\title Qt Creator: Advanced Use
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-os-supported-platforms.html
+ \externalpage https://doc.qt.io/qtcreator/creator-os-supported-platforms.html
\title Qt Creator: Supported Platforms
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-connecting-mobile.html
+ \externalpage https://doc.qt.io/qtcreator/creator-desktop-platforms.html
+ \title Qt Creator: Desktop Platforms
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-embedded-platforms.html
+ \title Qt Creator: Embedded Platforms
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-mobile-platforms.html
+ \title Qt Creator: Mobile Platforms
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-connecting-mobile.html
\title Qt Creator: Connecting Devices
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-usability.html
+ \externalpage https://doc.qt.io/qtcreator/creator-usability.html
\title Qt Creator: Optimizing Applications for Mobile Devices
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-acknowledgements.html
+ \externalpage https://doc.qt.io/qtcreator/creator-acknowledgements.html
\title Qt Creator: Acknowledgements
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-help-overview.html
+ \externalpage https://doc.qt.io/qtcreator/creator-help-overview.html
\title Qt Creator: Getting Help
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/technical-support.html
+ \externalpage https://doc.qt.io/qtcreator/technical-support.html
\title Qt Creator: Technical Support
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-overview.html
+ \externalpage https://doc.qt.io/qtcreator/creator-overview.html
\title Qt Creator: IDE Overview
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-testing.html
+ \externalpage https://doc.qt.io/qtcreator/creator-testing.html
\title Qt Creator: Testing
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-deployment.html
+ \externalpage https://doc.qt.io/qtcreator/creator-deployment.html
\title Qt Creator: Deploying to Devices
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-tutorials.html
+ \externalpage https://doc.qt.io/qtcreator/creator-tutorials.html
\title Qt Creator: Tutorials
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-known-issues.html
+ \externalpage https://doc.qt.io/qtcreator/creator-known-issues.html
\title Qt Creator: Known Issues
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-design-mode.html
+ \externalpage https://doc.qt.io/qtcreator/creator-design-mode.html
\title Qt Creator: Designing User Interfaces
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-glossary.html
+ \externalpage https://doc.qt.io/qtcreator/creator-glossary.html
\title Qt Creator: Glossary
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-getting-started.html
+ \externalpage https://doc.qt.io/qtcreator/creator-getting-started.html
\title Qt Creator: Getting Started
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-analyzer.html
+ \externalpage https://doc.qt.io/qtcreator/creator-analyzer.html
\title Qt Creator: Detecting Memory Leaks with Memcheck
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-cache-profiler.html
+ \externalpage https://doc.qt.io/qtcreator/creator-cache-profiler.html
\title Qt Creator: Profiling Function Execution
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-running-valgrind-remotely.html
+ \externalpage https://doc.qt.io/qtcreator/creator-running-valgrind-remotely.html
\title Qt Creator: Running Valgrind Tools on External Applications
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-valgrind-overview.html
+ \externalpage https://doc.qt.io/qtcreator/creator-valgrind-overview.html
\title Qt Creator: Using Valgrind Code Analysis Tools
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-analyze-mode.html
+ \externalpage https://doc.qt.io/qtcreator/creator-analyze-mode.html
\title Qt Creator: Analyzing Code
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-qml-performance-monitor.html
+ \externalpage https://doc.qt.io/qtcreator/creator-qml-performance-monitor.html
\title Qt Creator: Profiling QML Applications
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-deploying-android.html
+ \externalpage https://doc.qt.io/qtcreator/creator-deploying-android.html
\title Qt Creator: Deploying Applications to Android Devices
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-developing-ios.html
+ \externalpage https://doc.qt.io/qtcreator/creator-developing-ios.html
\title Qt Creator: Connecting iOS devices
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-developing-android.html
+ \externalpage https://doc.qt.io/qtcreator/creator-developing-android.html
\title Qt Creator: Connecting Android Devices
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-build-example-application.html
+ \externalpage https://doc.qt.io/qtcreator/creator-build-example-application.html
\title Qt Creator: Building and Running an Example
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-generic.html
+ \externalpage https://doc.qt.io/qtcreator/creator-project-generic.html
\title Qt Creator: Setting Up a Generic Project
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-sharing-project-settings.html
+ \externalpage https://doc.qt.io/qtcreator/creator-sharing-project-settings.html
\title Qt Creator: Sharing Project Settings
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-opening.html
+ \externalpage https://doc.qt.io/qtcreator/creator-project-opening.html
\title Qt Creator: Opening Projects
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-managing.html
+ \externalpage https://doc.qt.io/qtcreator/creator-project-managing.html
\title Qt Creator: Managing Projects
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-cmake.html
+ \externalpage https://doc.qt.io/qtcreator/creator-project-cmake.html
\title Qt Creator: Setting Up CMake
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-targets.html
+ \externalpage https://doc.qt.io/qtcreator/creator-targets.html
\title Qt Creator: Adding Kits
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-tool-chains.html
+ \externalpage https://doc.qt.io/qtcreator/creator-tool-chains.html
\title Qt Creator: Adding Compilers
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-qbs.html
+ \externalpage https://doc.qt.io/qtcreator/creator-project-qbs.html
\title Qt Creator: Setting Up Qbs
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-creating.html
+ \externalpage https://doc.qt.io/qtcreator/creator-project-creating.html
\title Qt Creator: Creating Projects
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-wizards.html
+ \externalpage https://doc.qt.io/qtcreator/creator-project-wizards.html
\title Qt Creator: Adding New Custom Wizards
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-wizards-json.html
- \title Qt Creator: Adding JSON-Based Wizards
+ \externalpage https://doc.qt.io/qtcreator/creator-project-meson.html
+ \title Qt Creator: Setting Up Meson
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-project-nimble.html
+ \title Qt Creator: Setting Up Nimble
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-project-incredibuild.html
+ \title Qt Creator: Setting Up IncrediBuild
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-wizards-xml.html
- \title Qt Creator: Adding XML-Based Wizards
+ \externalpage https://doc.qt.io/qtcreator/creator-project-conan.html
+ \title Qt Creator: Setting Up Conan
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-projects-autotools.html
+ \externalpage https://doc.qt.io/qtcreator/creator-projects-autotools.html
\title Qt Creator: Setting Up an Autotools Project
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-configuring-projects.html
+ \externalpage https://doc.qt.io/qtcreator/creator-configuring-projects.html
\title Qt Creator: Configuring Projects
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-build-process-customizing.html
+ \externalpage https://doc.qt.io/qtcreator/creator-build-process-customizing.html
\title Qt Creator: Customizing the Build Process
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-build-settings.html
+ \externalpage https://doc.qt.io/qtcreator/creator-build-settings.html
\title Qt Creator: Specifying Build Settings
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-code-style-settings.html
+ \externalpage https://doc.qt.io/qtcreator/creator-build-settings-cmake.html
+ \title Qt Creator: CMake Build Configuration
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-build-settings-qmake.html
+ \title Qt Creator: qmake Build Configuration
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-build-settings-qbs.html
+ \title Qt Creator: Qbs Build Configuration
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-build-settings-meson.html
+ \title Qt Creator: Meson Build Configuration
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-build-settings-incredibuild.html
+ \title Qt Creator: IncrediBuild Build Configuration
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-build-settings-conan.html
+ \title Qt Creator: Conan Build Configuration
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-code-style-settings.html
\title Qt Creator: Specifying Code Style Settings
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-run-settings.html
+ \externalpage https://doc.qt.io/qtcreator/creator-run-settings.html
\title Qt Creator: Specifying Run Settings
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html
+ \externalpage https://doc.qt.io/qtcreator/creator-project-qmake-libraries.html
\title Qt Creator: Adding Libraries to Projects
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-other.html
- \title Qt Creator: Using Other Build Systems
+ \externalpage https://doc.qt.io/qtcreator/creator-project-other.html
+ \title Qt Creator: Build Systems
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-running-targets.html
+ \externalpage https://doc.qt.io/qtcreator/creator-running-targets.html
\title Qt Creator: Running on Multiple Platforms
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-build-dependencies.html
+ \externalpage https://doc.qt.io/qtcreator/creator-build-dependencies.html
\title Qt Creator: Specifying Dependencies
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-building-running.html
+ \externalpage https://doc.qt.io/qtcreator/creator-project-settings-environment.html
+ \title Qt Creator: Specifying Environment Settings
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-custom-output-parsers.html
+ \title Qt Creator: Using Custom Output Parsers
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-building-running.html
\title Qt Creator: Building and Running
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-editor-settings.html
+ \externalpage https://doc.qt.io/qtcreator/creator-editor-settings.html
\title Qt Creator: Specifying Editor Settings
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-qmake.html
+ \externalpage https://doc.qt.io/qtcreator/creator-project-qmake.html
\title Qt Creator: Adding Qt Versions
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-building-targets.html
+ \externalpage https://doc.qt.io/qtcreator/creator-building-targets.html
\title Qt Creator: Building for Multiple Platforms
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-using-qt-designer.html
+ \externalpage https://doc.qt.io/qtcreator/creator-using-qt-designer.html
\title Qt Creator: Developing Widget Based Applications
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-writing-program.html
+ \externalpage https://doc.qt.io/qtcreator/creator-writing-program.html
\title Qt Creator: Creating a Qt Widget Based Application
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/adding-plugins.html
+ \externalpage https://doc.qt.io/qtcreator/adding-plugins.html
\title Qt Creator: Adding Qt Designer Plugins
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-configuring.html
+ \externalpage https://doc.qt.io/qtcreator/creator-configuring.html
\title Qt Creator: Configuring Qt Creator
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-debuggers.html
+ \externalpage https://doc.qt.io/qtcreator/creator-debuggers.html
\title Qt Creator: Adding Debuggers
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/qt-creator-accelbubble-example.html
+ \externalpage https://doc.qt.io/qtcreator/qtcreator-accelbubble-example.html
\title Qt Creator: Creating a Mobile Application
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-diff-editor.html
+ \externalpage https://doc.qt.io/qtcreator/creator-diff-editor.html
\title Qt Creator: Comparing Files
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-beautifier.html
+ \externalpage https://doc.qt.io/qtcreator/creator-beautifier.html
\title Qt Creator: Beautifying Source Code
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-clang-codemodel.html
+ \externalpage https://doc.qt.io/qtcreator/creator-clang-codemodel.html
\title Qt Creator: Parsing C++ Files with the Clang Code Model
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-quick-ui-forms.html
- \title Qt Creator: Qt Quick UI Forms
+ \externalpage https://doc.qt.io/qtcreator/creator-quick-ui-forms.html
+ \title Qt Creator: UI Files
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-clang-tools.html
+ \externalpage https://doc.qt.io/qtcreator/creator-clang-tools.html
\title Qt Creator: Using Clang Tools
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-heob.html
+ \externalpage https://doc.qt.io/qtcreator/creator-heob.html
\title Qt Creator: Detecting Memory Leaks with Heob
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-cpu-usage-analyzer.html
+ \externalpage https://doc.qt.io/qtcreator/creator-cpu-usage-analyzer.html
\title Qt Creator: Analyzing CPU Usage
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-cppcheck.html
+ \externalpage https://doc.qt.io/qtcreator/creator-cppcheck.html
\title Qt Creator: Analyzing Code with Cppcheck
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-autotest.html
+ \externalpage https://doc.qt.io/qtcreator/creator-ctf-visualizer.html
+ \title Qt Creator: Visualizing Chrome Trace Events
+*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/creator-autotest.html
\title Qt Creator: Running Autotests
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-project-creating.html#creating-c-classes
+ \externalpage https://doc.qt.io/qtcreator/creator-project-creating.html#creating-c-classes
\title Qt Creator: Creating C++ Classes
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-writing-program.html
+ \externalpage https://doc.qt.io/qtcreator/creator-writing-program.html
\title Creating a Qt Widget Based Application
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/qtquick-navigator.html
- \title Qt Creator: Managing Item Hierarchy
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/qtquick-properties.html
- \title Qt Creator: Specifying Item Properties
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/quick-states.html
- \title Qt Creator: Adding States
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/creator-scxml.html
+ \externalpage https://doc.qt.io/qtcreator/creator-scxml.html
\title Qt Creator: Editing State Charts
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/studio-timeline.html
- \title Qt Creator: Creating Animations
-*/
-/*!
- \externalpage http://doc.qt.io/qtcreator/creator-language-servers.html
+ \externalpage https://doc.qt.io/qtcreator/creator-language-servers.html
\title Qt Creator: Using Language Servers
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/qtcreator-toc.html
+ \externalpage https://doc.qt.io/qtcreator/qtcreator-toc.html
\title Qt Creator: All Topics
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-live-preview.html
- \title Qt Creator: Previewing
+ \externalpage https://doc.qt.io/qtcreator/creator-live-preview.html
+ \title Qt Creator: Validating with Target Hardware
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-live-preview-desktop.html
+ \externalpage https://doc.qt.io/qtcreator/creator-live-preview-desktop.html
\title Qt Creator: Previewing on Desktop
*/
/*!
- \externalpage http://doc.qt.io/qtcreator/creator-live-preview-devices.html
+ \externalpage https://doc.qt.io/qtcreator/creator-live-preview-devices.html
\title Qt Creator: Previewing on Devices
*/
+/*!
+ \externalpage https://doc.qt.io/qtcreator/qt-design-viewer.html
+ \title Qt Creator: Previewing in Browsers
+*/
diff --git a/doc/global/html-footer-online.qdocconf b/doc/global/html-footer-online.qdocconf
index f255726c1d..523d228b93 100644
--- a/doc/global/html-footer-online.qdocconf
+++ b/doc/global/html-footer-online.qdocconf
@@ -78,7 +78,7 @@ HTML.footer += \
" <ul id=\"menu-footer-submenu\" class=\"right clearfix\"><li id=\"menu-item-1795\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-1795\"><a title=\"Sign into your account.\" href=\"https://account.qt.io/login\">Sign In</a></li>\n" \
" <li id=\"menu-item-10375\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-10375\"><a href=\"mailto:feedback@theqtcompany.com?Subject=Feedback%20about%20doc.qt.io%20site\">Feedback</a></li>\n" \
" <li id=\"menu-item-1494\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1494\"><a href=\"http://qt.io/contact-us/\">Contact us</a></li>\n" \
- " <li id=\"menu-item-4472\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-4472\"><a href=\"http://qt.io/about-us/\">© 2020 The Qt Company</a></li>\n" \
+ " <li id=\"menu-item-4472\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-4472\"><a href=\"http://qt.io/about-us/\">© 2022 The Qt Company</a></li>\n" \
" </ul>\n" \
"</div>\n" \
"</div>\n" \
diff --git a/doc/global/html-footer.qdocconf b/doc/global/html-footer.qdocconf
index 5c29851e90..673e500291 100644
--- a/doc/global/html-footer.qdocconf
+++ b/doc/global/html-footer.qdocconf
@@ -8,7 +8,7 @@ HTML.footer = \
"</div>\n" \
"<div class=\"footer\">\n" \
" <p>\n" \
- " <acronym title=\"Copyright\">&copy;</acronym> 2020 The Qt Company Ltd.\n" \
+ " <acronym title=\"Copyright\">&copy;</acronym> 2022 The Qt Company Ltd.\n" \
" Documentation contributions included herein are the copyrights of\n" \
" their respective owners.<br/>" \
" The documentation provided herein is licensed under the terms of the" \
diff --git a/doc/global/includes/standardpath/functiondocs.qdocinc b/doc/global/includes/standardpath/functiondocs.qdocinc
index 4385b6446d..4cbf29cd45 100644
--- a/doc/global/includes/standardpath/functiondocs.qdocinc
+++ b/doc/global/includes/standardpath/functiondocs.qdocinc
@@ -55,6 +55,9 @@
Returns the absolute file path to the executable, or an empty
string if not found.
+ If the given \n executableName is an absolute path pointing to
+ an executable its clean path is returned.
+
//! [findExecutable]
//! [locate]
diff --git a/doc/global/qt-module-defaults-online.qdocconf b/doc/global/qt-module-defaults-online.qdocconf
index 41fb8acc66..635caf0b94 100644
--- a/doc/global/qt-module-defaults-online.qdocconf
+++ b/doc/global/qt-module-defaults-online.qdocconf
@@ -5,7 +5,7 @@
HTML.footer = \
" </div>\n" \
" <p class=\"copy-notice\">\n" \
- " <acronym title=\"Copyright\">&copy;</acronym> 2020 The Qt Company Ltd.\n" \
+ " <acronym title=\"Copyright\">&copy;</acronym> 2022 The Qt Company Ltd.\n" \
" Documentation contributions included herein are the copyrights of\n" \
" their respective owners. " \
" The documentation provided herein is licensed under the terms of the" \
diff --git a/mkspecs/common/ghs-base.conf b/mkspecs/common/ghs-base.conf
index a66971578c..eba9680349 100644
--- a/mkspecs/common/ghs-base.conf
+++ b/mkspecs/common/ghs-base.conf
@@ -8,7 +8,7 @@ QMAKE_COMPILER = ghs
QMAKE_CFLAGS += --signed_fields --no_commons --diag_suppress=1,82,228,236,381,611,961,997,1795,1974
QMAKE_CFLAGS_DEPS += -MD
-QMAKE_CFLAGS_RELEASE += -Ospeed -Olink -Omax
+QMAKE_CFLAGS_RELEASE += -Ospeed -Olink -Omax -no_uvfd
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE -g
QMAKE_CFLAGS_DEBUG += -g -Omaxdebug
QMAKE_CFLAGS_SHLIB +=
@@ -34,7 +34,7 @@ QMAKE_CXXFLAGS_EXCEPTIONS_ON += --exceptions
QMAKE_LFLAGS += --signed_fields --no_commons --no_implicit_include --link_once_templates -non_shared --new_outside_of_constructor
QMAKE_LFLAGS_DEBUG += -g -Omaxdebug
-QMAKE_LFLAGS_RELEASE += -Ospeed -Olink -Omax
+QMAKE_LFLAGS_RELEASE += -Ospeed -Olink -Omax -no_uvfd
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_LFLAGS_RELEASE -g
QMAKE_LFLAGS_CXX11 += --c++11 --thread_local_storage
QMAKE_LFLAGS_EXCEPTIONS_ON += --exceptions
diff --git a/mkspecs/features/qt_targets.prf b/mkspecs/features/qt_targets.prf
index 3810d1e0ad..be897db7c9 100644
--- a/mkspecs/features/qt_targets.prf
+++ b/mkspecs/features/qt_targets.prf
@@ -1,4 +1,4 @@
QMAKE_TARGET_COMPANY = The Qt Company Ltd.
isEmpty(QMAKE_TARGET_PRODUCT): QMAKE_TARGET_PRODUCT = Qt5
isEmpty(QMAKE_TARGET_DESCRIPTION): QMAKE_TARGET_DESCRIPTION = C++ Application Development Framework
-QMAKE_TARGET_COPYRIGHT = Copyright (C) 2020 The Qt Company Ltd.
+QMAKE_TARGET_COPYRIGHT = Copyright (C) 2022 The Qt Company Ltd.
diff --git a/mkspecs/features/uikit/devices.py b/mkspecs/features/uikit/devices.py
index 8cdcb370a0..5f2bd5dff2 100755
--- a/mkspecs/features/uikit/devices.py
+++ b/mkspecs/features/uikit/devices.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
#############################################################################
##
diff --git a/mkspecs/features/winrt/package_manifest.prf b/mkspecs/features/winrt/package_manifest.prf
index 279971bd65..2abe75f726 100644
--- a/mkspecs/features/winrt/package_manifest.prf
+++ b/mkspecs/features/winrt/package_manifest.prf
@@ -37,8 +37,7 @@
else: \
VCLIBS = $${VCLIBS}
# VS 2017 and 2019 still use vclibs 140
- contains(MSVC_VER, "15.0"): VCLIBS = $$replace(VCLIBS, 150, 140)
- contains(MSVC_VER, "16.0"): VCLIBS = $$replace(VCLIBS, 160, 140)
+ contains(MSVC_VER, "1[56]\.[0-9]"): VCLIBS = $$replace(VCLIBS, 1[56][0-9], 140)
VCLIBS = "$${VCLIBS}\" MinVersion=\"14.0.0.0\" Publisher=\"CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"
WINRT_MANIFEST.dependencies += $$VCLIBS
}
diff --git a/qmake/library/qmakeparser.cpp b/qmake/library/qmakeparser.cpp
index ffe90ebda7..3aa3a3c937 100644
--- a/qmake/library/qmakeparser.cpp
+++ b/qmake/library/qmakeparser.cpp
@@ -1549,7 +1549,8 @@ static bool getBlock(const ushort *tokens, int limit, int &offset, QString *outS
ok = getSubBlock(tokens, limit, offset, outStr, indent, "block");
break;
default:
- Q_ASSERT(!"unhandled token");
+ // unhandled token
+ Q_UNREACHABLE();
}
}
if (!ok)
diff --git a/src/3rdparty/angle/patches/0001-ANGLE-Load-the-DirectX-libraries-from-the-system.patch b/src/3rdparty/angle/patches/0001-ANGLE-Load-the-DirectX-libraries-from-the-system.patch
new file mode 100644
index 0000000000..fea52c78b8
--- /dev/null
+++ b/src/3rdparty/angle/patches/0001-ANGLE-Load-the-DirectX-libraries-from-the-system.patch
@@ -0,0 +1,77 @@
+From a5b015834168dee1ba91603bb82ccab3a50b445c Mon Sep 17 00:00:00 2001
+From: Andy Shaw <andy.shaw@qt.io>
+Date: Fri, 18 Feb 2022 14:47:55 +0100
+Subject: [PATCH] ANGLE: Load the DirectX libraries from the system path
+ directly
+
+Change-Id: I34812b32e420a6f50e5be6b26b97c8e21e0e7870
+---
+ .../renderer/d3d/d3d11/DebugAnnotator11.cpp | 8 +++++++-
+ .../libANGLE/renderer/d3d/d3d11/Renderer11.cpp | 18 +++++++++++++++---
+ 2 files changed, 22 insertions(+), 4 deletions(-)
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
+index 1e70363e11..8100acf56c 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
+@@ -11,6 +11,8 @@
+ #include "common/debug.h"
+ #include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
+
++#define INFO_BUFFER_SIZE 32767
++
+ namespace rx
+ {
+
+@@ -88,7 +90,11 @@ void DebugAnnotator11::initializeDevice()
+ if (!mInitialized)
+ {
+ #if !defined(ANGLE_ENABLE_WINDOWS_STORE)
+- mD3d11Module = LoadLibrary(TEXT("d3d11.dll"));
++ TCHAR infoBuf[INFO_BUFFER_SIZE];
++ DWORD bufCharCount = INFO_BUFFER_SIZE;
++ GetSystemDirectory(infoBuf, INFO_BUFFER_SIZE);
++ lstrcat(infoBuf, TEXT("\\d3d11.dll"));
++ mD3d11Module = LoadLibrary(infoBuf);
+ ASSERT(mD3d11Module);
+
+ PFN_D3D11_CREATE_DEVICE D3D11CreateDevice = (PFN_D3D11_CREATE_DEVICE)GetProcAddress(mD3d11Module, "D3D11CreateDevice");
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+index b0ef9abddc..c9aeace241 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+@@ -80,6 +80,8 @@
+ #define ANGLE_SKIP_DXGI_1_2_CHECK 0
+ #endif
+
++#define INFO_BUFFER_SIZE 32767
++
+ namespace rx
+ {
+
+@@ -772,9 +774,19 @@ egl::Error Renderer11::initializeD3DDevice()
+ {
+ SCOPED_ANGLE_HISTOGRAM_TIMER("GPU.ANGLE.Renderer11InitializeDLLsMS");
+ TRACE_EVENT0("gpu.angle", "Renderer11::initialize (Load DLLs)");
+- mDxgiModule = LoadLibrary(TEXT("dxgi.dll"));
+- mD3d11Module = LoadLibrary(TEXT("d3d11.dll"));
+- mDCompModule = LoadLibrary(TEXT("dcomp.dll"));
++ TCHAR dxgiFile[INFO_BUFFER_SIZE];
++ TCHAR d3d11File[INFO_BUFFER_SIZE];
++ TCHAR dcompFile[INFO_BUFFER_SIZE];
++ DWORD bufCharCount = INFO_BUFFER_SIZE;
++ GetSystemDirectory(dxgiFile, INFO_BUFFER_SIZE);
++ lstrcpy(d3d11File, dxgiFile);
++ lstrcpy(dcompFile, dxgiFile);
++ lstrcat(dxgiFile, TEXT("\\dxgi.dll"));
++ mDxgiModule = LoadLibrary(dxgiFile);
++ lstrcat(d3d11File, TEXT("\\d3d11.dll"));
++ mD3d11Module = LoadLibrary(d3d11File);
++ lstrcat(dcompFile, TEXT("\\dcomp.dll"));
++ mDCompModule = LoadLibrary(dcompFile);
+
+ if (mD3d11Module == nullptr || mDxgiModule == nullptr)
+ {
+--
+2.27.0.windows.1
+
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
index 1e70363e11..8100acf56c 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
@@ -11,6 +11,8 @@
#include "common/debug.h"
#include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
+#define INFO_BUFFER_SIZE 32767
+
namespace rx
{
@@ -88,7 +90,11 @@ void DebugAnnotator11::initializeDevice()
if (!mInitialized)
{
#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
- mD3d11Module = LoadLibrary(TEXT("d3d11.dll"));
+ TCHAR infoBuf[INFO_BUFFER_SIZE];
+ DWORD bufCharCount = INFO_BUFFER_SIZE;
+ GetSystemDirectory(infoBuf, INFO_BUFFER_SIZE);
+ lstrcat(infoBuf, TEXT("\\d3d11.dll"));
+ mD3d11Module = LoadLibrary(infoBuf);
ASSERT(mD3d11Module);
PFN_D3D11_CREATE_DEVICE D3D11CreateDevice = (PFN_D3D11_CREATE_DEVICE)GetProcAddress(mD3d11Module, "D3D11CreateDevice");
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
index b0ef9abddc..90a85f445a 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
@@ -80,6 +80,8 @@
#define ANGLE_SKIP_DXGI_1_2_CHECK 0
#endif
+#define INFO_BUFFER_SIZE 32767
+
namespace rx
{
@@ -772,9 +774,19 @@ egl::Error Renderer11::initializeD3DDevice()
{
SCOPED_ANGLE_HISTOGRAM_TIMER("GPU.ANGLE.Renderer11InitializeDLLsMS");
TRACE_EVENT0("gpu.angle", "Renderer11::initialize (Load DLLs)");
- mDxgiModule = LoadLibrary(TEXT("dxgi.dll"));
- mD3d11Module = LoadLibrary(TEXT("d3d11.dll"));
- mDCompModule = LoadLibrary(TEXT("dcomp.dll"));
+ TCHAR dxgiFile[INFO_BUFFER_SIZE];
+ TCHAR d3d11File[INFO_BUFFER_SIZE];
+ TCHAR dcompFile[INFO_BUFFER_SIZE];
+ DWORD bufCharCount = INFO_BUFFER_SIZE;
+ GetSystemDirectory(dxgiFile, INFO_BUFFER_SIZE);
+ lstrcpy(d3d11File, dxgiFile);
+ lstrcpy(dcompFile, dxgiFile);
+ lstrcat(dxgiFile, TEXT("\\dxgi.dll"));
+ mDxgiModule = LoadLibrary(dxgiFile);
+ lstrcat(d3d11File, TEXT("\\d3d11.dll"));
+ mD3d11Module = LoadLibrary(d3d11File);
+ lstrcat(dcompFile, TEXT("\\dcomp.dll"));
+ mDCompModule = LoadLibrary(dcompFile);
if (mD3d11Module == nullptr || mDxgiModule == nullptr)
{
diff --git a/src/3rdparty/libjpeg/LICENSE b/src/3rdparty/libjpeg/LICENSE
index a1cdad52fa..d753e1d76a 100644
--- a/src/3rdparty/libjpeg/LICENSE
+++ b/src/3rdparty/libjpeg/LICENSE
@@ -91,7 +91,7 @@ best of our understanding.
The Modified (3-clause) BSD License
===================================
-Copyright (C)2009-2021 D. R. Commander. All Rights Reserved.<br>
+Copyright (C)2009-2022 D. R. Commander. All Rights Reserved.<br>
Copyright (C)2015 Viktor Szathmáry. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/src/3rdparty/libjpeg/import_from_libjpeg_tarball.sh b/src/3rdparty/libjpeg/import_from_libjpeg_tarball.sh
index 2153eca35a..4184cc2769 100755
--- a/src/3rdparty/libjpeg/import_from_libjpeg_tarball.sh
+++ b/src/3rdparty/libjpeg/import_from_libjpeg_tarball.sh
@@ -158,11 +158,22 @@ FILES="
jsimddct.h
jstdhuff.c
jutils.c
- jversion.h
"
for i in $FILES; do
copy_file "$i" "src/$i"
done
+copy_file "jversion.h.in" "src/jversion.h"
+
+cyear=$(grep COPYRIGHT_YEAR $LIBJPEG_DIR/CMakeLists.txt | sed -e 's/.*"\(.*\)".*/\1/')
+sed -i -e "s/@COPYRIGHT_YEAR@/$cyear/" $TARGET_DIR/src/jversion.h
+
+sed -n -e 's/^[ ]*"//
+ s/\(\\n\)*"[ ]*\\*$//
+ /JCOPYRIGHT\ /,/^[ ]*$/ {
+ /Copyright/p
+ }
+ ' $TARGET_DIR/src/jversion.h > $TARGET_DIR/COPYRIGHT.txt
+
echo Done. $TARGET_DIR/src/jconfig.h and jconfigint.h may need manual updating.
diff --git a/src/3rdparty/libjpeg/qt_attribution.json b/src/3rdparty/libjpeg/qt_attribution.json
index b68563cb79..4cb6f2777b 100644
--- a/src/3rdparty/libjpeg/qt_attribution.json
+++ b/src/3rdparty/libjpeg/qt_attribution.json
@@ -6,12 +6,12 @@
"Description": "The Independent JPEG Group's JPEG software",
"Homepage": "http://libjpeg-turbo.virtualgl.org/",
- "Version": "2.1.1",
+ "Version": "2.1.3",
"License": "Independent JPEG Group License and BSD 3-Clause \"New\" or \"Revised\" License and zlib License",
"LicenseId": "IJG AND BSD-3-Clause AND Zlib",
"LicenseFiles": [ "LICENSE", "ijg-license.txt", "zlib-license.txt"],
- "Copyright": "Copyright (C) 2009-2021 D. R. Commander
-Copyright (C) 2015, 2020 Google, Inc.
+ "Copyright": "Copyright (C) 2009-2022 D. R. Commander
+Copyright (C) 2015, 2022 Google, Inc.
Copyright (C) 2019 Arm Limited
Copyright (C) 2015-2016, 2018 Matthieu Darbois
Copyright (C) 2011-2016 Siarhei Siamashka
diff --git a/src/3rdparty/libjpeg/src/ChangeLog.md b/src/3rdparty/libjpeg/src/ChangeLog.md
index 1fcb065a71..e6700c3c27 100644
--- a/src/3rdparty/libjpeg/src/ChangeLog.md
+++ b/src/3rdparty/libjpeg/src/ChangeLog.md
@@ -1,3 +1,59 @@
+2.1.3
+=====
+
+### Significant changes relative to 2.1.2
+
+1. Fixed a regression introduced by 2.0 beta1[7] whereby cjpeg compressed PGM
+input files into full-color JPEG images unless the `-grayscale` option was
+used.
+
+2. cjpeg now automatically compresses GIF and 8-bit BMP input files into
+grayscale JPEG images if the input files contain only shades of gray.
+
+3. The build system now enables the intrinsics implementation of the AArch64
+(Arm 64-bit) Neon SIMD extensions by default when using GCC 12 or later.
+
+4. Fixed a segfault that occurred while decompressing a 4:2:0 JPEG image using
+the merged (non-fancy) upsampling algorithms (that is, with
+`cinfo.do_fancy_upsampling` set to `FALSE`) along with `jpeg_crop_scanline()`.
+Specifically, the segfault occurred if the number of bytes remaining in the
+output buffer was less than the number of bytes required to represent one
+uncropped scanline of the output image. For that reason, the issue could only
+be reproduced using the libjpeg API, not using djpeg.
+
+
+2.1.2
+=====
+
+### Significant changes relative to 2.1.1
+
+1. Fixed a regression introduced by 2.1 beta1[13] that caused the remaining
+GAS implementations of AArch64 (Arm 64-bit) Neon SIMD functions (which are used
+by default with GCC for performance reasons) to be placed in the `.rodata`
+section rather than in the `.text` section. This caused the GNU linker to
+automatically place the `.rodata` section in an executable segment, which
+prevented libjpeg-turbo from working properly with other linkers and also
+represented a potential security risk.
+
+2. Fixed an issue whereby the `tjTransform()` function incorrectly computed the
+MCU block size for 4:4:4 JPEG images with non-unary sampling factors and thus
+unduly rejected some cropping regions, even though those regions aligned with
+8x8 MCU block boundaries.
+
+3. Fixed a regression introduced by 2.1 beta1[13] that caused the build system
+to enable the Arm Neon SIMD extensions when targetting Armv6 and other legacy
+architectures that do not support Neon instructions.
+
+4. libjpeg-turbo now performs run-time detection of AltiVec instructions on
+FreeBSD/PowerPC systems if AltiVec instructions are not enabled at compile
+time. This allows both AltiVec-equipped and non-AltiVec-equipped CPUs to be
+supported using the same build of libjpeg-turbo.
+
+5. cjpeg now accepts a `-strict` argument similar to that of djpeg and
+jpegtran, which causes the compressor to abort if an LZW-compressed GIF input
+image contains incomplete or corrupt image data.
+
+
2.1.1
=====
@@ -22,9 +78,9 @@ metadata.
5. libjpeg-turbo should now build and run on CHERI-enabled architectures, which
use capability pointers that are larger than the size of `size_t`.
-6. Fixed a regression introduced by 2.1 beta1[5] that caused a segfault in the
-64-bit SSE2 Huffman encoder when attempting to losslessly transform a
-specially-crafted malformed JPEG image.
+6. Fixed a regression (CVE-2021-37972) introduced by 2.1 beta1[5] that caused a
+segfault in the 64-bit SSE2 Huffman encoder when attempting to losslessly
+transform a specially-crafted malformed JPEG image.
2.1.0
@@ -609,7 +665,7 @@ algorithm that caused incorrect dithering in the output image. This algorithm
now produces bitwise-identical results to the unmerged algorithms.
12. The SIMD function symbols for x86[-64]/ELF, MIPS/ELF, macOS/x86[-64] (if
-libjpeg-turbo is built with YASM), and iOS/Arm[64] builds are now private.
+libjpeg-turbo is built with Yasm), and iOS/Arm[64] builds are now private.
This prevents those symbols from being exposed in applications or shared
libraries that link statically with libjpeg-turbo.
@@ -1494,8 +1550,8 @@ either the fast or the accurate DCT/IDCT algorithms in the underlying codec.
### Significant changes relative to 1.2 beta1:
-1. Fixed build issue with YASM on Unix systems (the libjpeg-turbo build system
-was not adding the current directory to the assembler include path, so YASM
+1. Fixed build issue with Yasm on Unix systems (the libjpeg-turbo build system
+was not adding the current directory to the assembler include path, so Yasm
was not able to find jsimdcfg.inc.)
2. Fixed out-of-bounds read in SSE2 SIMD code that occurred when decompressing
@@ -1563,7 +1619,7 @@ transposed or rotated 90 degrees.
8. All legacy VirtualGL code has been re-factored, and this has allowed
libjpeg-turbo, in its entirety, to be re-licensed under a BSD-style license.
-9. libjpeg-turbo can now be built with YASM.
+9. libjpeg-turbo can now be built with Yasm.
10. Added SIMD acceleration for ARM Linux and iOS platforms that support
NEON instructions.
diff --git a/src/3rdparty/libjpeg/src/jcapimin.c b/src/3rdparty/libjpeg/src/jcapimin.c
index 178c55ba47..84e7ecc9a7 100644
--- a/src/3rdparty/libjpeg/src/jcapimin.c
+++ b/src/3rdparty/libjpeg/src/jcapimin.c
@@ -4,8 +4,8 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1994-1998, Thomas G. Lane.
* Modified 2003-2010 by Guido Vollbeding.
- * It was modified by The libjpeg-turbo Project to include only code relevant
- * to libjpeg-turbo.
+ * libjpeg-turbo Modifications:
+ * Copyright (C) 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -52,7 +52,7 @@ jpeg_CreateCompress(j_compress_ptr cinfo, int version, size_t structsize)
{
struct jpeg_error_mgr *err = cinfo->err;
void *client_data = cinfo->client_data; /* ignore Purify complaint here */
- MEMZERO(cinfo, sizeof(struct jpeg_compress_struct));
+ memset(cinfo, 0, sizeof(struct jpeg_compress_struct));
cinfo->err = err;
cinfo->client_data = client_data;
}
diff --git a/src/3rdparty/libjpeg/src/jcarith.c b/src/3rdparty/libjpeg/src/jcarith.c
index b6d093f70e..b1720521bf 100644
--- a/src/3rdparty/libjpeg/src/jcarith.c
+++ b/src/3rdparty/libjpeg/src/jcarith.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Developed 1997-2009 by Guido Vollbeding.
* libjpeg-turbo Modifications:
- * Copyright (C) 2015, 2018, D. R. Commander.
+ * Copyright (C) 2015, 2018, 2021-2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -338,14 +338,14 @@ emit_restart(j_compress_ptr cinfo, int restart_num)
compptr = cinfo->cur_comp_info[ci];
/* DC needs no table for refinement scan */
if (cinfo->progressive_mode == 0 || (cinfo->Ss == 0 && cinfo->Ah == 0)) {
- MEMZERO(entropy->dc_stats[compptr->dc_tbl_no], DC_STAT_BINS);
+ memset(entropy->dc_stats[compptr->dc_tbl_no], 0, DC_STAT_BINS);
/* Reset DC predictions to 0 */
entropy->last_dc_val[ci] = 0;
entropy->dc_context[ci] = 0;
}
/* AC needs no table when not present */
if (cinfo->progressive_mode == 0 || cinfo->Se) {
- MEMZERO(entropy->ac_stats[compptr->ac_tbl_no], AC_STAT_BINS);
+ memset(entropy->ac_stats[compptr->ac_tbl_no], 0, AC_STAT_BINS);
}
}
@@ -836,7 +836,7 @@ start_pass(j_compress_ptr cinfo, boolean gather_statistics)
* We are fully adaptive here and need no extra
* statistics gathering pass!
*/
- ERREXIT(cinfo, JERR_NOT_COMPILED);
+ ERREXIT(cinfo, JERR_NOTIMPL);
/* We assume jcmaster.c already validated the progressive scan parameters. */
@@ -867,7 +867,7 @@ start_pass(j_compress_ptr cinfo, boolean gather_statistics)
if (entropy->dc_stats[tbl] == NULL)
entropy->dc_stats[tbl] = (unsigned char *)(*cinfo->mem->alloc_small)
((j_common_ptr)cinfo, JPOOL_IMAGE, DC_STAT_BINS);
- MEMZERO(entropy->dc_stats[tbl], DC_STAT_BINS);
+ memset(entropy->dc_stats[tbl], 0, DC_STAT_BINS);
/* Initialize DC predictions to 0 */
entropy->last_dc_val[ci] = 0;
entropy->dc_context[ci] = 0;
@@ -880,7 +880,7 @@ start_pass(j_compress_ptr cinfo, boolean gather_statistics)
if (entropy->ac_stats[tbl] == NULL)
entropy->ac_stats[tbl] = (unsigned char *)(*cinfo->mem->alloc_small)
((j_common_ptr)cinfo, JPOOL_IMAGE, AC_STAT_BINS);
- MEMZERO(entropy->ac_stats[tbl], AC_STAT_BINS);
+ memset(entropy->ac_stats[tbl], 0, AC_STAT_BINS);
#ifdef CALCULATE_SPECTRAL_CONDITIONING
if (cinfo->progressive_mode)
/* Section G.1.3.2: Set appropriate arithmetic conditioning value Kx */
diff --git a/src/3rdparty/libjpeg/src/jchuff.c b/src/3rdparty/libjpeg/src/jchuff.c
index 8ff817b151..f4dfa1cb54 100644
--- a/src/3rdparty/libjpeg/src/jchuff.c
+++ b/src/3rdparty/libjpeg/src/jchuff.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1997, Thomas G. Lane.
* libjpeg-turbo Modifications:
- * Copyright (C) 2009-2011, 2014-2016, 2018-2021, D. R. Commander.
+ * Copyright (C) 2009-2011, 2014-2016, 2018-2022, D. R. Commander.
* Copyright (C) 2015, Matthieu Darbois.
* Copyright (C) 2018, Matthias Räncker.
* Copyright (C) 2020, Arm Limited.
@@ -200,12 +200,12 @@ start_pass_huff(j_compress_ptr cinfo, boolean gather_statistics)
entropy->dc_count_ptrs[dctbl] = (long *)
(*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
257 * sizeof(long));
- MEMZERO(entropy->dc_count_ptrs[dctbl], 257 * sizeof(long));
+ memset(entropy->dc_count_ptrs[dctbl], 0, 257 * sizeof(long));
if (entropy->ac_count_ptrs[actbl] == NULL)
entropy->ac_count_ptrs[actbl] = (long *)
(*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
257 * sizeof(long));
- MEMZERO(entropy->ac_count_ptrs[actbl], 257 * sizeof(long));
+ memset(entropy->ac_count_ptrs[actbl], 0, 257 * sizeof(long));
#endif
} else {
/* Compute derived values for Huffman tables */
@@ -315,8 +315,8 @@ jpeg_make_c_derived_tbl(j_compress_ptr cinfo, boolean isDC, int tblno,
* this lets us detect duplicate VAL entries here, and later
* allows emit_bits to detect any attempt to emit such symbols.
*/
- MEMZERO(dtbl->ehufco, sizeof(dtbl->ehufco));
- MEMZERO(dtbl->ehufsi, sizeof(dtbl->ehufsi));
+ memset(dtbl->ehufco, 0, sizeof(dtbl->ehufco));
+ memset(dtbl->ehufsi, 0, sizeof(dtbl->ehufsi));
/* This is also a convenient place to check for out-of-range
* and duplicated VAL entries. We allow 0..255 for AC symbols
@@ -478,7 +478,7 @@ dump_buffer(working_state *state)
buffer = _buffer; \
while (bytes > 0) { \
bytestocopy = MIN(bytes, state->free_in_buffer); \
- MEMCOPY(state->next_output_byte, buffer, bytestocopy); \
+ memcpy(state->next_output_byte, buffer, bytestocopy); \
state->next_output_byte += bytestocopy; \
buffer += bytestocopy; \
state->free_in_buffer -= bytestocopy; \
@@ -941,8 +941,8 @@ jpeg_gen_optimal_table(j_compress_ptr cinfo, JHUFF_TBL *htbl, long freq[])
/* This algorithm is explained in section K.2 of the JPEG standard */
- MEMZERO(bits, sizeof(bits));
- MEMZERO(codesize, sizeof(codesize));
+ memset(bits, 0, sizeof(bits));
+ memset(codesize, 0, sizeof(codesize));
for (i = 0; i < 257; i++)
others[i] = -1; /* init links to empty */
@@ -1044,7 +1044,7 @@ jpeg_gen_optimal_table(j_compress_ptr cinfo, JHUFF_TBL *htbl, long freq[])
bits[i]--;
/* Return final symbol counts (only for lengths 0..16) */
- MEMCOPY(htbl->bits, bits, sizeof(htbl->bits));
+ memcpy(htbl->bits, bits, sizeof(htbl->bits));
/* Return a list of the symbols sorted by code length */
/* It's not real clear to me why we don't need to consider the codelength
@@ -1083,8 +1083,8 @@ finish_pass_gather(j_compress_ptr cinfo)
/* It's important not to apply jpeg_gen_optimal_table more than once
* per table, because it clobbers the input frequency counts!
*/
- MEMZERO(did_dc, sizeof(did_dc));
- MEMZERO(did_ac, sizeof(did_ac));
+ memset(did_dc, 0, sizeof(did_dc));
+ memset(did_ac, 0, sizeof(did_ac));
for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
compptr = cinfo->cur_comp_info[ci];
diff --git a/src/3rdparty/libjpeg/src/jconfig.h b/src/3rdparty/libjpeg/src/jconfig.h
index 17b9137e3e..7982724a26 100644
--- a/src/3rdparty/libjpeg/src/jconfig.h
+++ b/src/3rdparty/libjpeg/src/jconfig.h
@@ -2,9 +2,9 @@
#define JPEG_LIB_VERSION 80
-#define LIBJPEG_TURBO_VERSION 2.1.1
+#define LIBJPEG_TURBO_VERSION 2.1.3
-#define LIBJPEG_TURBO_VERSION_NUMBER 2001001
+#define LIBJPEG_TURBO_VERSION_NUMBER 2001003
#define C_ARITH_CODING_SUPPORTED 1
@@ -14,10 +14,4 @@
#define BITS_IN_JSAMPLE 8
-#define HAVE_STDDEF_H 1
-
-#define HAVE_STDLIB_H 1
-
-#define HAVE_UNSIGNED_CHAR 1
-
-#define HAVE_UNSIGNED_SHORT 1
+#define NO_PUTENV
diff --git a/src/3rdparty/libjpeg/src/jconfig.h.in b/src/3rdparty/libjpeg/src/jconfig.h.in
index d4284d97b8..e0180122fe 100644
--- a/src/3rdparty/libjpeg/src/jconfig.h.in
+++ b/src/3rdparty/libjpeg/src/jconfig.h.in
@@ -32,37 +32,6 @@
#define BITS_IN_JSAMPLE @BITS_IN_JSAMPLE@ /* use 8 or 12 */
-/* Define to 1 if you have the <locale.h> header file. */
-#cmakedefine HAVE_LOCALE_H 1
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#cmakedefine HAVE_STDDEF_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#cmakedefine HAVE_STDLIB_H 1
-
-/* Define if you need to include <sys/types.h> to get size_t. */
-#cmakedefine NEED_SYS_TYPES_H 1
-
-/* Define if you have BSD-like bzero and bcopy in <strings.h> rather than
- memset/memcpy in <string.h>. */
-#cmakedefine NEED_BSD_STRINGS 1
-
-/* Define to 1 if the system has the type `unsigned char'. */
-#cmakedefine HAVE_UNSIGNED_CHAR 1
-
-/* Define to 1 if the system has the type `unsigned short'. */
-#cmakedefine HAVE_UNSIGNED_SHORT 1
-
-/* Compiler does not support pointers to undefined structures. */
-#cmakedefine INCOMPLETE_TYPES_BROKEN 1
-
/* Define if your (broken) compiler shifts signed values as if they were
unsigned. */
#cmakedefine RIGHT_SHIFT_IS_UNSIGNED 1
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
diff --git a/src/3rdparty/libjpeg/src/jcphuff.c b/src/3rdparty/libjpeg/src/jcphuff.c
index 1101987180..872e570bff 100644
--- a/src/3rdparty/libjpeg/src/jcphuff.c
+++ b/src/3rdparty/libjpeg/src/jcphuff.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1995-1997, Thomas G. Lane.
* libjpeg-turbo Modifications:
- * Copyright (C) 2011, 2015, 2018, 2021, D. R. Commander.
+ * Copyright (C) 2011, 2015, 2018, 2021-2022, D. R. Commander.
* Copyright (C) 2016, 2018, Matthieu Darbois.
* Copyright (C) 2020, Arm Limited.
* Copyright (C) 2021, Alex Richardson.
@@ -275,7 +275,7 @@ start_pass_phuff(j_compress_ptr cinfo, boolean gather_statistics)
entropy->count_ptrs[tbl] = (long *)
(*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
257 * sizeof(long));
- MEMZERO(entropy->count_ptrs[tbl], 257 * sizeof(long));
+ memset(entropy->count_ptrs[tbl], 0, 257 * sizeof(long));
} else {
/* Compute derived values for Huffman table */
/* We may do this more than once for a table, but it's not expensive */
@@ -584,8 +584,8 @@ encode_mcu_DC_first(j_compress_ptr cinfo, JBLOCKROW *MCU_data)
continue; \
/* For a negative coef, want temp2 = bitwise complement of abs(coef) */ \
temp2 ^= temp; \
- values[k] = temp; \
- values[k + DCTSIZE2] = temp2; \
+ values[k] = (JCOEF)temp; \
+ values[k + DCTSIZE2] = (JCOEF)temp2; \
zerobits |= ((size_t)1U) << k; \
} \
}
@@ -1062,7 +1062,7 @@ finish_pass_gather_phuff(j_compress_ptr cinfo)
/* It's important not to apply jpeg_gen_optimal_table more than once
* per table, because it clobbers the input frequency counts!
*/
- MEMZERO(did, sizeof(did));
+ memset(did, 0, sizeof(did));
for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
compptr = cinfo->cur_comp_info[ci];
diff --git a/src/3rdparty/libjpeg/src/jcprepct.c b/src/3rdparty/libjpeg/src/jcprepct.c
index d59713ae68..f27cc34507 100644
--- a/src/3rdparty/libjpeg/src/jcprepct.c
+++ b/src/3rdparty/libjpeg/src/jcprepct.c
@@ -3,8 +3,8 @@
*
* This file is part of the Independent JPEG Group's software:
* Copyright (C) 1994-1996, Thomas G. Lane.
- * It was modified by The libjpeg-turbo Project to include only code relevant
- * to libjpeg-turbo.
+ * libjpeg-turbo Modifications:
+ * Copyright (C) 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -289,8 +289,8 @@ create_context_buffer(j_compress_ptr cinfo)
cinfo->max_h_samp_factor) / compptr->h_samp_factor),
(JDIMENSION)(3 * rgroup_height));
/* Copy true buffer row pointers into the middle of the fake row array */
- MEMCOPY(fake_buffer + rgroup_height, true_buffer,
- 3 * rgroup_height * sizeof(JSAMPROW));
+ memcpy(fake_buffer + rgroup_height, true_buffer,
+ 3 * rgroup_height * sizeof(JSAMPROW));
/* Fill in the above and below wraparound pointers */
for (i = 0; i < rgroup_height; i++) {
fake_buffer[i] = true_buffer[2 * rgroup_height + i];
diff --git a/src/3rdparty/libjpeg/src/jctrans.c b/src/3rdparty/libjpeg/src/jctrans.c
index ab6a2186db..e121028ec7 100644
--- a/src/3rdparty/libjpeg/src/jctrans.c
+++ b/src/3rdparty/libjpeg/src/jctrans.c
@@ -5,7 +5,7 @@
* Copyright (C) 1995-1998, Thomas G. Lane.
* Modified 2000-2009 by Guido Vollbeding.
* libjpeg-turbo Modifications:
- * Copyright (C) 2020, D. R. Commander.
+ * Copyright (C) 2020, 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -100,8 +100,8 @@ jpeg_copy_critical_parameters(j_decompress_ptr srcinfo, j_compress_ptr dstinfo)
qtblptr = &dstinfo->quant_tbl_ptrs[tblno];
if (*qtblptr == NULL)
*qtblptr = jpeg_alloc_quant_table((j_common_ptr)dstinfo);
- MEMCOPY((*qtblptr)->quantval, srcinfo->quant_tbl_ptrs[tblno]->quantval,
- sizeof((*qtblptr)->quantval));
+ memcpy((*qtblptr)->quantval, srcinfo->quant_tbl_ptrs[tblno]->quantval,
+ sizeof((*qtblptr)->quantval));
(*qtblptr)->sent_table = FALSE;
}
}
diff --git a/src/3rdparty/libjpeg/src/jdapimin.c b/src/3rdparty/libjpeg/src/jdapimin.c
index 4609b1322f..f50c27edc3 100644
--- a/src/3rdparty/libjpeg/src/jdapimin.c
+++ b/src/3rdparty/libjpeg/src/jdapimin.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1994-1998, Thomas G. Lane.
* libjpeg-turbo Modifications:
- * Copyright (C) 2016, D. R. Commander.
+ * Copyright (C) 2016, 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -53,7 +53,7 @@ jpeg_CreateDecompress(j_decompress_ptr cinfo, int version, size_t structsize)
{
struct jpeg_error_mgr *err = cinfo->err;
void *client_data = cinfo->client_data; /* ignore Purify complaint here */
- MEMZERO(cinfo, sizeof(struct jpeg_decompress_struct));
+ memset(cinfo, 0, sizeof(struct jpeg_decompress_struct));
cinfo->err = err;
cinfo->client_data = client_data;
}
@@ -92,7 +92,7 @@ jpeg_CreateDecompress(j_decompress_ptr cinfo, int version, size_t structsize)
cinfo->master = (struct jpeg_decomp_master *)
(*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_PERMANENT,
sizeof(my_decomp_master));
- MEMZERO(cinfo->master, sizeof(my_decomp_master));
+ memset(cinfo->master, 0, sizeof(my_decomp_master));
}
diff --git a/src/3rdparty/libjpeg/src/jdapistd.c b/src/3rdparty/libjpeg/src/jdapistd.c
index 695a620099..8827d8abf5 100644
--- a/src/3rdparty/libjpeg/src/jdapistd.c
+++ b/src/3rdparty/libjpeg/src/jdapistd.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1994-1996, Thomas G. Lane.
* libjpeg-turbo Modifications:
- * Copyright (C) 2010, 2015-2020, D. R. Commander.
+ * Copyright (C) 2010, 2015-2020, 2022, D. R. Commander.
* Copyright (C) 2015, Google, Inc.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
@@ -159,6 +159,7 @@ jpeg_crop_scanline(j_decompress_ptr cinfo, JDIMENSION *xoffset,
JDIMENSION input_xoffset;
boolean reinit_upsampler = FALSE;
jpeg_component_info *compptr;
+ my_master_ptr master = (my_master_ptr)cinfo->master;
if (cinfo->global_state != DSTATE_SCANNING || cinfo->output_scanline != 0)
ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
@@ -208,6 +209,11 @@ jpeg_crop_scanline(j_decompress_ptr cinfo, JDIMENSION *xoffset,
*/
*width = *width + input_xoffset - *xoffset;
cinfo->output_width = *width;
+ if (master->using_merged_upsample && cinfo->max_v_samp_factor == 2) {
+ my_merged_upsample_ptr upsample = (my_merged_upsample_ptr)cinfo->upsample;
+ upsample->out_row_width =
+ cinfo->output_width * cinfo->out_color_components;
+ }
/* Set the first and last iMCU columns that we must decompress. These values
* will be used in single-scan decompressions.
diff --git a/src/3rdparty/libjpeg/src/jdarith.c b/src/3rdparty/libjpeg/src/jdarith.c
index 7f0d3a785c..21575e80c7 100644
--- a/src/3rdparty/libjpeg/src/jdarith.c
+++ b/src/3rdparty/libjpeg/src/jdarith.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Developed 1997-2015 by Guido Vollbeding.
* libjpeg-turbo Modifications:
- * Copyright (C) 2015-2020, D. R. Commander.
+ * Copyright (C) 2015-2020, 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -210,13 +210,13 @@ process_restart(j_decompress_ptr cinfo)
for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
compptr = cinfo->cur_comp_info[ci];
if (!cinfo->progressive_mode || (cinfo->Ss == 0 && cinfo->Ah == 0)) {
- MEMZERO(entropy->dc_stats[compptr->dc_tbl_no], DC_STAT_BINS);
+ memset(entropy->dc_stats[compptr->dc_tbl_no], 0, DC_STAT_BINS);
/* Reset DC predictions to 0 */
entropy->last_dc_val[ci] = 0;
entropy->dc_context[ci] = 0;
}
if (!cinfo->progressive_mode || cinfo->Ss) {
- MEMZERO(entropy->ac_stats[compptr->ac_tbl_no], AC_STAT_BINS);
+ memset(entropy->ac_stats[compptr->ac_tbl_no], 0, AC_STAT_BINS);
}
}
@@ -471,17 +471,17 @@ decode_mcu_AC_refine(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
if (*thiscoef) { /* previously nonzero coef */
if (arith_decode(cinfo, st + 2)) {
if (*thiscoef < 0)
- *thiscoef += m1;
+ *thiscoef += (JCOEF)m1;
else
- *thiscoef += p1;
+ *thiscoef += (JCOEF)p1;
}
break;
}
if (arith_decode(cinfo, st + 1)) { /* newly nonzero coef */
if (arith_decode(cinfo, entropy->fixed_bin))
- *thiscoef = m1;
+ *thiscoef = (JCOEF)m1;
else
- *thiscoef = p1;
+ *thiscoef = (JCOEF)p1;
break;
}
st += 3; k++;
@@ -698,8 +698,8 @@ bad:
/* Check that the scan parameters Ss, Se, Ah/Al are OK for sequential JPEG.
* This ought to be an error condition, but we make it a warning.
*/
- if (cinfo->Ss != 0 || cinfo->Ah != 0 || cinfo->Al != 0 ||
- (cinfo->Se < DCTSIZE2 && cinfo->Se != DCTSIZE2 - 1))
+ if (cinfo->Ss != 0 || cinfo->Se != DCTSIZE2 - 1 ||
+ cinfo->Ah != 0 || cinfo->Al != 0)
WARNMS(cinfo, JWRN_NOT_SEQUENTIAL);
/* Select MCU decoding routine */
entropy->pub.decode_mcu = decode_mcu;
@@ -715,7 +715,7 @@ bad:
if (entropy->dc_stats[tbl] == NULL)
entropy->dc_stats[tbl] = (unsigned char *)(*cinfo->mem->alloc_small)
((j_common_ptr)cinfo, JPOOL_IMAGE, DC_STAT_BINS);
- MEMZERO(entropy->dc_stats[tbl], DC_STAT_BINS);
+ memset(entropy->dc_stats[tbl], 0, DC_STAT_BINS);
/* Initialize DC predictions to 0 */
entropy->last_dc_val[ci] = 0;
entropy->dc_context[ci] = 0;
@@ -727,7 +727,7 @@ bad:
if (entropy->ac_stats[tbl] == NULL)
entropy->ac_stats[tbl] = (unsigned char *)(*cinfo->mem->alloc_small)
((j_common_ptr)cinfo, JPOOL_IMAGE, AC_STAT_BINS);
- MEMZERO(entropy->ac_stats[tbl], AC_STAT_BINS);
+ memset(entropy->ac_stats[tbl], 0, AC_STAT_BINS);
}
}
diff --git a/src/3rdparty/libjpeg/src/jdatadst.c b/src/3rdparty/libjpeg/src/jdatadst.c
index 246fffb58a..6b4fed2339 100644
--- a/src/3rdparty/libjpeg/src/jdatadst.c
+++ b/src/3rdparty/libjpeg/src/jdatadst.c
@@ -5,7 +5,7 @@
* Copyright (C) 1994-1996, Thomas G. Lane.
* Modified 2009-2012 by Guido Vollbeding.
* libjpeg-turbo Modifications:
- * Copyright (C) 2013, 2016, D. R. Commander.
+ * Copyright (C) 2013, 2016, 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -23,11 +23,6 @@
#include "jpeglib.h"
#include "jerror.h"
-#ifndef HAVE_STDLIB_H /* <stdlib.h> should declare malloc(),free() */
-extern void *malloc(size_t size);
-extern void free(void *ptr);
-#endif
-
/* Expanded data destination object for stdio output */
@@ -116,7 +111,7 @@ empty_output_buffer(j_compress_ptr cinfo)
{
my_dest_ptr dest = (my_dest_ptr)cinfo->dest;
- if (JFWRITE(dest->outfile, dest->buffer, OUTPUT_BUF_SIZE) !=
+ if (fwrite(dest->buffer, 1, OUTPUT_BUF_SIZE, dest->outfile) !=
(size_t)OUTPUT_BUF_SIZE)
ERREXIT(cinfo, JERR_FILE_WRITE);
@@ -141,7 +136,7 @@ empty_mem_output_buffer(j_compress_ptr cinfo)
if (nextbuffer == NULL)
ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 10);
- MEMCOPY(nextbuffer, dest->buffer, dest->bufsize);
+ memcpy(nextbuffer, dest->buffer, dest->bufsize);
free(dest->newbuffer);
@@ -175,7 +170,7 @@ term_destination(j_compress_ptr cinfo)
/* Write any data remaining in the buffer */
if (datacount > 0) {
- if (JFWRITE(dest->outfile, dest->buffer, datacount) != datacount)
+ if (fwrite(dest->buffer, 1, datacount, dest->outfile) != datacount)
ERREXIT(cinfo, JERR_FILE_WRITE);
}
fflush(dest->outfile);
diff --git a/src/3rdparty/libjpeg/src/jdatasrc.c b/src/3rdparty/libjpeg/src/jdatasrc.c
index eadb4a2c90..e36a30d894 100644
--- a/src/3rdparty/libjpeg/src/jdatasrc.c
+++ b/src/3rdparty/libjpeg/src/jdatasrc.c
@@ -5,7 +5,7 @@
* Copyright (C) 1994-1996, Thomas G. Lane.
* Modified 2009-2011 by Guido Vollbeding.
* libjpeg-turbo Modifications:
- * Copyright (C) 2013, 2016, D. R. Commander.
+ * Copyright (C) 2013, 2016, 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -104,7 +104,7 @@ fill_input_buffer(j_decompress_ptr cinfo)
my_src_ptr src = (my_src_ptr)cinfo->src;
size_t nbytes;
- nbytes = JFREAD(src->infile, src->buffer, INPUT_BUF_SIZE);
+ nbytes = fread(src->buffer, 1, INPUT_BUF_SIZE, src->infile);
if (nbytes <= 0) {
if (src->start_of_file) /* Treat empty input file as fatal error */
diff --git a/src/3rdparty/libjpeg/src/jddctmgr.c b/src/3rdparty/libjpeg/src/jddctmgr.c
index 266f446623..e78d7bebe2 100644
--- a/src/3rdparty/libjpeg/src/jddctmgr.c
+++ b/src/3rdparty/libjpeg/src/jddctmgr.c
@@ -6,7 +6,7 @@
* Modified 2002-2010 by Guido Vollbeding.
* libjpeg-turbo Modifications:
* Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
- * Copyright (C) 2010, 2015, D. R. Commander.
+ * Copyright (C) 2010, 2015, 2022, D. R. Commander.
* Copyright (C) 2013, MIPS Technologies, Inc., California.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
@@ -345,7 +345,7 @@ jinit_inverse_dct(j_decompress_ptr cinfo)
compptr->dct_table =
(*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
sizeof(multiplier_table));
- MEMZERO(compptr->dct_table, sizeof(multiplier_table));
+ memset(compptr->dct_table, 0, sizeof(multiplier_table));
/* Mark multiplier table not yet set up for any method */
idct->cur_method[ci] = -1;
}
diff --git a/src/3rdparty/libjpeg/src/jdinput.c b/src/3rdparty/libjpeg/src/jdinput.c
index deec618f26..1bc5aff1a7 100644
--- a/src/3rdparty/libjpeg/src/jdinput.c
+++ b/src/3rdparty/libjpeg/src/jdinput.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1997, Thomas G. Lane.
* libjpeg-turbo Modifications:
- * Copyright (C) 2010, 2016, 2018, D. R. Commander.
+ * Copyright (C) 2010, 2016, 2018, 2022, D. R. Commander.
* Copyright (C) 2015, Google, Inc.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
@@ -264,7 +264,7 @@ latch_quant_tables(j_decompress_ptr cinfo)
qtbl = (JQUANT_TBL *)
(*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
sizeof(JQUANT_TBL));
- MEMCOPY(qtbl, cinfo->quant_tbl_ptrs[qtblno], sizeof(JQUANT_TBL));
+ memcpy(qtbl, cinfo->quant_tbl_ptrs[qtblno], sizeof(JQUANT_TBL));
compptr->quant_table = qtbl;
}
}
diff --git a/src/3rdparty/libjpeg/src/jdmarker.c b/src/3rdparty/libjpeg/src/jdmarker.c
index b964c3a1a6..f7eba615fd 100644
--- a/src/3rdparty/libjpeg/src/jdmarker.c
+++ b/src/3rdparty/libjpeg/src/jdmarker.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1998, Thomas G. Lane.
* libjpeg-turbo Modifications:
- * Copyright (C) 2012, 2015, D. R. Commander.
+ * Copyright (C) 2012, 2015, 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -473,7 +473,7 @@ get_dht(j_decompress_ptr cinfo)
for (i = 0; i < count; i++)
INPUT_BYTE(cinfo, huffval[i], return FALSE);
- MEMZERO(&huffval[count], (256 - count) * sizeof(UINT8));
+ memset(&huffval[count], 0, (256 - count) * sizeof(UINT8));
length -= count;
@@ -491,8 +491,8 @@ get_dht(j_decompress_ptr cinfo)
if (*htblptr == NULL)
*htblptr = jpeg_alloc_huff_table((j_common_ptr)cinfo);
- MEMCOPY((*htblptr)->bits, bits, sizeof((*htblptr)->bits));
- MEMCOPY((*htblptr)->huffval, huffval, sizeof((*htblptr)->huffval));
+ memcpy((*htblptr)->bits, bits, sizeof((*htblptr)->bits));
+ memcpy((*htblptr)->huffval, huffval, sizeof((*htblptr)->huffval));
}
if (length != 0)
diff --git a/src/3rdparty/libjpeg/src/jdmaster.c b/src/3rdparty/libjpeg/src/jdmaster.c
index cbc8774b1f..a3690bf560 100644
--- a/src/3rdparty/libjpeg/src/jdmaster.c
+++ b/src/3rdparty/libjpeg/src/jdmaster.c
@@ -5,7 +5,7 @@
* Copyright (C) 1991-1997, Thomas G. Lane.
* Modified 2002-2009 by Guido Vollbeding.
* libjpeg-turbo Modifications:
- * Copyright (C) 2009-2011, 2016, 2019, D. R. Commander.
+ * Copyright (C) 2009-2011, 2016, 2019, 2022, D. R. Commander.
* Copyright (C) 2013, Linaro Limited.
* Copyright (C) 2015, Google, Inc.
* For conditions of distribution and use, see the accompanying README.ijg
@@ -417,7 +417,7 @@ prepare_range_limit_table(j_decompress_ptr cinfo)
table += (MAXJSAMPLE + 1); /* allow negative subscripts of simple table */
cinfo->sample_range_limit = table;
/* First segment of "simple" table: limit[x] = 0 for x < 0 */
- MEMZERO(table - (MAXJSAMPLE + 1), (MAXJSAMPLE + 1) * sizeof(JSAMPLE));
+ memset(table - (MAXJSAMPLE + 1), 0, (MAXJSAMPLE + 1) * sizeof(JSAMPLE));
/* Main part of "simple" table: limit[x] = x */
for (i = 0; i <= MAXJSAMPLE; i++)
table[i] = (JSAMPLE)i;
@@ -426,10 +426,10 @@ prepare_range_limit_table(j_decompress_ptr cinfo)
for (i = CENTERJSAMPLE; i < 2 * (MAXJSAMPLE + 1); i++)
table[i] = MAXJSAMPLE;
/* Second half of post-IDCT table */
- MEMZERO(table + (2 * (MAXJSAMPLE + 1)),
- (2 * (MAXJSAMPLE + 1) - CENTERJSAMPLE) * sizeof(JSAMPLE));
- MEMCOPY(table + (4 * (MAXJSAMPLE + 1) - CENTERJSAMPLE),
- cinfo->sample_range_limit, CENTERJSAMPLE * sizeof(JSAMPLE));
+ memset(table + (2 * (MAXJSAMPLE + 1)), 0,
+ (2 * (MAXJSAMPLE + 1) - CENTERJSAMPLE) * sizeof(JSAMPLE));
+ memcpy(table + (4 * (MAXJSAMPLE + 1) - CENTERJSAMPLE),
+ cinfo->sample_range_limit, CENTERJSAMPLE * sizeof(JSAMPLE));
}
diff --git a/src/3rdparty/libjpeg/src/jdphuff.c b/src/3rdparty/libjpeg/src/jdphuff.c
index c6d82ca14b..9680ebcbd0 100644
--- a/src/3rdparty/libjpeg/src/jdphuff.c
+++ b/src/3rdparty/libjpeg/src/jdphuff.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1995-1997, Thomas G. Lane.
* libjpeg-turbo Modifications:
- * Copyright (C) 2015-2016, 2018-2021, D. R. Commander.
+ * Copyright (C) 2015-2016, 2018-2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -578,9 +578,9 @@ decode_mcu_AC_refine(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
if (GET_BITS(1)) {
if ((*thiscoef & p1) == 0) { /* do nothing if already set it */
if (*thiscoef >= 0)
- *thiscoef += p1;
+ *thiscoef += (JCOEF)p1;
else
- *thiscoef += m1;
+ *thiscoef += (JCOEF)m1;
}
}
} else {
@@ -612,9 +612,9 @@ decode_mcu_AC_refine(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
if (GET_BITS(1)) {
if ((*thiscoef & p1) == 0) { /* do nothing if already changed it */
if (*thiscoef >= 0)
- *thiscoef += p1;
+ *thiscoef += (JCOEF)p1;
else
- *thiscoef += m1;
+ *thiscoef += (JCOEF)m1;
}
}
}
diff --git a/src/3rdparty/libjpeg/src/jerror.c b/src/3rdparty/libjpeg/src/jerror.c
index 936c4f5d80..d544702937 100644
--- a/src/3rdparty/libjpeg/src/jerror.c
+++ b/src/3rdparty/libjpeg/src/jerror.c
@@ -3,8 +3,8 @@
*
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1998, Thomas G. Lane.
- * It was modified by The libjpeg-turbo Project to include only code relevant
- * to libjpeg-turbo.
+ * libjpeg-turbo Modifications:
+ * Copyright (C) 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -189,13 +189,13 @@ format_message(j_common_ptr cinfo, char *buffer)
/* Format the message into the passed buffer */
if (isstring)
- sprintf(buffer, msgtext, err->msg_parm.s);
+ snprintf(buffer, JMSG_LENGTH_MAX, msgtext, err->msg_parm.s);
else
- sprintf(buffer, msgtext,
- err->msg_parm.i[0], err->msg_parm.i[1],
- err->msg_parm.i[2], err->msg_parm.i[3],
- err->msg_parm.i[4], err->msg_parm.i[5],
- err->msg_parm.i[6], err->msg_parm.i[7]);
+ snprintf(buffer, JMSG_LENGTH_MAX, msgtext,
+ err->msg_parm.i[0], err->msg_parm.i[1],
+ err->msg_parm.i[2], err->msg_parm.i[3],
+ err->msg_parm.i[4], err->msg_parm.i[5],
+ err->msg_parm.i[6], err->msg_parm.i[7]);
}
diff --git a/src/3rdparty/libjpeg/src/jerror.h b/src/3rdparty/libjpeg/src/jerror.h
index 4476df2c93..eb44a1140a 100644
--- a/src/3rdparty/libjpeg/src/jerror.h
+++ b/src/3rdparty/libjpeg/src/jerror.h
@@ -5,7 +5,7 @@
* Copyright (C) 1994-1997, Thomas G. Lane.
* Modified 1997-2009 by Guido Vollbeding.
* libjpeg-turbo Modifications:
- * Copyright (C) 2014, 2017, D. R. Commander.
+ * Copyright (C) 2014, 2017, 2021-2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -103,7 +103,7 @@ JMESSAGE(JERR_MISMATCHED_QUANT_TABLE,
"Cannot transcode due to multiple use of quantization table %d")
JMESSAGE(JERR_MISSING_DATA, "Scan script does not transmit all data")
JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change")
-JMESSAGE(JERR_NOTIMPL, "Not implemented yet")
+JMESSAGE(JERR_NOTIMPL, "Requested features are incompatible")
JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time")
#if JPEG_LIB_VERSION >= 70
JMESSAGE(JERR_NO_ARITH_TABLE, "Arithmetic table 0x%02x was not defined")
@@ -268,6 +268,7 @@ JMESSAGE(JERR_BAD_DROP_SAMPLING,
#define ERREXITS(cinfo, code, str) \
((cinfo)->err->msg_code = (code), \
strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
+ (cinfo)->err->msg_parm.s[JMSG_STR_PARM_MAX - 1] = '\0', \
(*(cinfo)->err->error_exit) ((j_common_ptr)(cinfo)))
#define MAKESTMT(stuff) do { stuff } while (0)
@@ -324,6 +325,7 @@ JMESSAGE(JERR_BAD_DROP_SAMPLING,
#define TRACEMSS(cinfo, lvl, code, str) \
((cinfo)->err->msg_code = (code), \
strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
+ (cinfo)->err->msg_parm.s[JMSG_STR_PARM_MAX - 1] = '\0', \
(*(cinfo)->err->emit_message) ((j_common_ptr)(cinfo), (lvl)))
#endif /* JERROR_H */
diff --git a/src/3rdparty/libjpeg/src/jinclude.h b/src/3rdparty/libjpeg/src/jinclude.h
index c1bcf7d9da..120614b25c 100644
--- a/src/3rdparty/libjpeg/src/jinclude.h
+++ b/src/3rdparty/libjpeg/src/jinclude.h
@@ -3,8 +3,8 @@
*
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1994, Thomas G. Lane.
- * It was modified by The libjpeg-turbo Project to include only code relevant
- * to libjpeg-turbo.
+ * libjpeg-turbo Modifications:
+ * Copyright (C) 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -17,72 +17,117 @@
* JPEG library. Most applications need only include jpeglib.h.
*/
+#ifndef __JINCLUDE_H__
+#define __JINCLUDE_H__
/* Include auto-config file to find out which system include files we need. */
#include "jconfig.h" /* auto configuration options */
+#include "jconfigint.h"
#define JCONFIG_INCLUDED /* so that jpeglib.h doesn't do it again */
/*
- * We need the NULL macro and size_t typedef.
- * On an ANSI-conforming system it is sufficient to include <stddef.h>.
- * Otherwise, we get them from <stdlib.h> or <stdio.h>; we may have to
- * pull in <sys/types.h> as well.
* Note that the core JPEG library does not require <stdio.h>;
* only the default error handler and data source/destination modules do.
* But we must pull it in because of the references to FILE in jpeglib.h.
* You can remove those references if you want to compile without <stdio.h>.
*/
-#ifdef HAVE_STDDEF_H
#include <stddef.h>
-#endif
-
-#ifdef HAVE_STDLIB_H
#include <stdlib.h>
-#endif
-
-#ifdef NEED_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
#include <stdio.h>
+#include <string.h>
/*
- * We need memory copying and zeroing functions, plus strncpy().
- * ANSI and System V implementations declare these in <string.h>.
- * BSD doesn't have the mem() functions, but it does have bcopy()/bzero().
- * Some systems may declare memset and memcpy in <memory.h>.
- *
- * NOTE: we assume the size parameters to these functions are of type size_t.
- * Change the casts in these macros if not!
+ * These macros/inline functions facilitate using Microsoft's "safe string"
+ * functions with Visual Studio builds without the need to scatter #ifdefs
+ * throughout the code base.
*/
-#ifdef NEED_BSD_STRINGS
-#include <strings.h>
-#define MEMZERO(target, size) \
- bzero((void *)(target), (size_t)(size))
-#define MEMCOPY(dest, src, size) \
- bcopy((const void *)(src), (void *)(dest), (size_t)(size))
+#ifndef NO_GETENV
-#else /* not BSD, assume ANSI/SysV string lib */
+#ifdef _MSC_VER
-#include <string.h>
-#define MEMZERO(target, size) \
- memset((void *)(target), 0, (size_t)(size))
-#define MEMCOPY(dest, src, size) \
- memcpy((void *)(dest), (const void *)(src), (size_t)(size))
+static INLINE int GETENV_S(char *buffer, size_t buffer_size, const char *name)
+{
+ size_t required_size;
-#endif
+ return (int)getenv_s(&required_size, buffer, buffer_size, name);
+}
-/*
- * The modules that use fread() and fwrite() always invoke them through
- * these macros. On some systems you may need to twiddle the argument casts.
- * CAUTION: argument order is different from underlying functions!
+#else /* _MSC_VER */
+
+#include <errno.h>
+
+/* This provides a similar interface to the Microsoft/C11 getenv_s() function,
+ * but other than parameter validation, it has no advantages over getenv().
+ */
+
+static INLINE int GETENV_S(char *buffer, size_t buffer_size, const char *name)
+{
+ char *env;
+
+ if (!buffer) {
+ if (buffer_size == 0)
+ return 0;
+ else
+ return (errno = EINVAL);
+ }
+ if (buffer_size == 0)
+ return (errno = EINVAL);
+ if (!name) {
+ *buffer = 0;
+ return 0;
+ }
+
+ env = getenv(name);
+ if (!env)
+ {
+ *buffer = 0;
+ return 0;
+ }
+
+ if (strlen(env) + 1 > buffer_size) {
+ *buffer = 0;
+ return ERANGE;
+ }
+
+ strncpy(buffer, env, buffer_size);
+
+ return 0;
+}
+
+#endif /* _MSC_VER */
+
+#endif /* NO_GETENV */
+
+
+#ifndef NO_PUTENV
+
+#ifdef _WIN32
+
+#define PUTENV_S(name, value) _putenv_s(name, value)
+
+#else
+
+/* This provides a similar interface to the Microsoft _putenv_s() function, but
+ * other than parameter validation, it has no advantages over setenv().
*/
-#define JFREAD(file, buf, sizeofbuf) \
- ((size_t)fread((void *)(buf), (size_t)1, (size_t)(sizeofbuf), (file)))
-#define JFWRITE(file, buf, sizeofbuf) \
- ((size_t)fwrite((const void *)(buf), (size_t)1, (size_t)(sizeofbuf), (file)))
+static INLINE int PUTENV_S(const char *name, const char *value)
+{
+ if (!name || !value)
+ return (errno = EINVAL);
+
+ setenv(name, value, 1);
+
+ return errno;
+}
+
+#endif /* _WIN32 */
+
+#endif /* NO_PUTENV */
+
+
+#endif /* JINCLUDE_H */
diff --git a/src/3rdparty/libjpeg/src/jmemmgr.c b/src/3rdparty/libjpeg/src/jmemmgr.c
index 70b8ec0c49..8f5a4ab1c7 100644
--- a/src/3rdparty/libjpeg/src/jmemmgr.c
+++ b/src/3rdparty/libjpeg/src/jmemmgr.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1997, Thomas G. Lane.
* libjpeg-turbo Modifications:
- * Copyright (C) 2016, 2021, D. R. Commander.
+ * Copyright (C) 2016, 2021-2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -37,12 +37,6 @@
#endif
#include <limits.h>
-#ifndef NO_GETENV
-#ifndef HAVE_STDLIB_H /* <stdlib.h> should declare getenv() */
-extern char *getenv(const char *name);
-#endif
-#endif
-
LOCAL(size_t)
round_up_pow2(size_t a, size_t b)
@@ -1162,12 +1156,16 @@ jinit_memory_mgr(j_common_ptr cinfo)
*/
#ifndef NO_GETENV
{
- char *memenv;
+ char memenv[30] = { 0 };
- if ((memenv = getenv("JPEGMEM")) != NULL) {
+ if (!GETENV_S(memenv, 30, "JPEGMEM") && strlen(memenv) > 0) {
char ch = 'x';
+#ifdef _MSC_VER
+ if (sscanf_s(memenv, "%ld%c", &max_to_use, &ch, 1) > 0) {
+#else
if (sscanf(memenv, "%ld%c", &max_to_use, &ch) > 0) {
+#endif
if (ch == 'm' || ch == 'M')
max_to_use *= 1000L;
mem->pub.max_memory_to_use = max_to_use * 1000L;
diff --git a/src/3rdparty/libjpeg/src/jmemnobs.c b/src/3rdparty/libjpeg/src/jmemnobs.c
index 089be8f500..cd6571ba1c 100644
--- a/src/3rdparty/libjpeg/src/jmemnobs.c
+++ b/src/3rdparty/libjpeg/src/jmemnobs.c
@@ -22,11 +22,6 @@
#include "jpeglib.h"
#include "jmemsys.h" /* import the system-dependent declarations */
-#ifndef HAVE_STDLIB_H /* <stdlib.h> should declare malloc(),free() */
-extern void *malloc(size_t size);
-extern void free(void *ptr);
-#endif
-
/*
* Memory allocation and freeing are controlled by the regular library
diff --git a/src/3rdparty/libjpeg/src/jmorecfg.h b/src/3rdparty/libjpeg/src/jmorecfg.h
index fb3a9cf411..b33a991914 100644
--- a/src/3rdparty/libjpeg/src/jmorecfg.h
+++ b/src/3rdparty/libjpeg/src/jmorecfg.h
@@ -100,11 +100,7 @@ typedef unsigned char UINT8;
/* UINT16 must hold at least the values 0..65535. */
-#ifdef HAVE_UNSIGNED_SHORT
typedef unsigned short UINT16;
-#else /* not HAVE_UNSIGNED_SHORT */
-typedef unsigned int UINT16;
-#endif /* HAVE_UNSIGNED_SHORT */
/* INT16 must hold at least the values -32768..32767. */
diff --git a/src/3rdparty/libjpeg/src/jpegint.h b/src/3rdparty/libjpeg/src/jpegint.h
index 8c8534793a..6af9e2a179 100644
--- a/src/3rdparty/libjpeg/src/jpegint.h
+++ b/src/3rdparty/libjpeg/src/jpegint.h
@@ -373,12 +373,3 @@ extern const int jpeg_natural_order[]; /* zigzag coef order to natural order */
/* Arithmetic coding probability estimation tables in jaricom.c */
extern const JLONG jpeg_aritab[];
-
-/* Suppress undefined-structure complaints if necessary. */
-
-#ifdef INCOMPLETE_TYPES_BROKEN
-#ifndef AM_MEMORY_MANAGER /* only jmemmgr.c defines these */
-struct jvirt_sarray_control { long dummy; };
-struct jvirt_barray_control { long dummy; };
-#endif
-#endif /* INCOMPLETE_TYPES_BROKEN */
diff --git a/src/3rdparty/libjpeg/src/jstdhuff.c b/src/3rdparty/libjpeg/src/jstdhuff.c
index 036d6495a5..345b513d4d 100644
--- a/src/3rdparty/libjpeg/src/jstdhuff.c
+++ b/src/3rdparty/libjpeg/src/jstdhuff.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1998, Thomas G. Lane.
* libjpeg-turbo Modifications:
- * Copyright (C) 2013, D. R. Commander.
+ * Copyright (C) 2013, 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -29,7 +29,7 @@ add_huff_table(j_common_ptr cinfo, JHUFF_TBL **htblptr, const UINT8 *bits,
return;
/* Copy the number-of-symbols-of-each-code-length counts */
- MEMCOPY((*htblptr)->bits, bits, sizeof((*htblptr)->bits));
+ memcpy((*htblptr)->bits, bits, sizeof((*htblptr)->bits));
/* Validate the counts. We do this here mainly so we can copy the right
* number of symbols from the val[] array, without risking marching off
@@ -41,8 +41,9 @@ add_huff_table(j_common_ptr cinfo, JHUFF_TBL **htblptr, const UINT8 *bits,
if (nsymbols < 1 || nsymbols > 256)
ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
- MEMCOPY((*htblptr)->huffval, val, nsymbols * sizeof(UINT8));
- MEMZERO(&((*htblptr)->huffval[nsymbols]), (256 - nsymbols) * sizeof(UINT8));
+ memcpy((*htblptr)->huffval, val, nsymbols * sizeof(UINT8));
+ memset(&((*htblptr)->huffval[nsymbols]), 0,
+ (256 - nsymbols) * sizeof(UINT8));
/* Initialize sent_table FALSE so table will be written to JPEG file. */
(*htblptr)->sent_table = FALSE;
diff --git a/src/3rdparty/libjpeg/src/jutils.c b/src/3rdparty/libjpeg/src/jutils.c
index 5c5bb17dc5..d86271624a 100644
--- a/src/3rdparty/libjpeg/src/jutils.c
+++ b/src/3rdparty/libjpeg/src/jutils.c
@@ -3,8 +3,8 @@
*
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1996, Thomas G. Lane.
- * It was modified by The libjpeg-turbo Project to include only code
- * relevant to libjpeg-turbo.
+ * libjpeg-turbo Modifications:
+ * Copyright (C) 2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -110,7 +110,7 @@ jcopy_sample_rows(JSAMPARRAY input_array, int source_row,
for (row = num_rows; row > 0; row--) {
inptr = *input_array++;
outptr = *output_array++;
- MEMCOPY(outptr, inptr, count);
+ memcpy(outptr, inptr, count);
}
}
@@ -120,7 +120,7 @@ jcopy_block_row(JBLOCKROW input_row, JBLOCKROW output_row,
JDIMENSION num_blocks)
/* Copy a row of coefficient blocks from one place to another. */
{
- MEMCOPY(output_row, input_row, num_blocks * (DCTSIZE2 * sizeof(JCOEF)));
+ memcpy(output_row, input_row, num_blocks * (DCTSIZE2 * sizeof(JCOEF)));
}
@@ -129,5 +129,5 @@ jzero_far(void *target, size_t bytestozero)
/* Zero out a chunk of memory. */
/* This might be sample-array data, block-array data, or alloc_large data. */
{
- MEMZERO(target, bytestozero);
+ memset(target, 0, bytestozero);
}
diff --git a/src/3rdparty/libjpeg/src/jversion.h b/src/3rdparty/libjpeg/src/jversion.h
index 2ab534af41..63db95b99b 100644
--- a/src/3rdparty/libjpeg/src/jversion.h
+++ b/src/3rdparty/libjpeg/src/jversion.h
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-2020, Thomas G. Lane, Guido Vollbeding.
* libjpeg-turbo Modifications:
- * Copyright (C) 2010, 2012-2021, D. R. Commander.
+ * Copyright (C) 2010, 2012-2022, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -37,7 +37,7 @@
*/
#define JCOPYRIGHT \
- "Copyright (C) 2009-2021 D. R. Commander\n" \
+ "Copyright (C) 2009-2022 D. R. Commander\n" \
"Copyright (C) 2015, 2020 Google, Inc.\n" \
"Copyright (C) 2019-2020 Arm Limited\n" \
"Copyright (C) 2015-2016, 2018 Matthieu Darbois\n" \
@@ -51,4 +51,4 @@
"Copyright (C) 1991-2020 Thomas G. Lane, Guido Vollbeding"
#define JCOPYRIGHT_SHORT \
- "Copyright (C) 1991-2021 The libjpeg-turbo Project and many others"
+ "Copyright (C) 1991-2022 The libjpeg-turbo Project and many others"
diff --git a/src/3rdparty/sqlite/qt_attribution.json b/src/3rdparty/sqlite/qt_attribution.json
index 6b052726f2..bfcbc793d6 100644
--- a/src/3rdparty/sqlite/qt_attribution.json
+++ b/src/3rdparty/sqlite/qt_attribution.json
@@ -6,8 +6,8 @@
"Description": "SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.",
"Homepage": "https://www.sqlite.org/",
- "Version": "3.36.0",
- "DownloadLocation": "https://www.sqlite.org/2021/sqlite-amalgamation-3360000.zip",
+ "Version": "3.37.2",
+ "DownloadLocation": "https://www.sqlite.org/2022/sqlite-amalgamation-3370200.zip",
"License": "Public Domain",
"Copyright": "The authors disclaim copyright to the source code. However, a license can be obtained if needed."
}
diff --git a/src/3rdparty/sqlite/sqlite3.c b/src/3rdparty/sqlite/sqlite3.c
index 89faea5b23..62f197db2c 100644
--- a/src/3rdparty/sqlite/sqlite3.c
+++ b/src/3rdparty/sqlite/sqlite3.c
@@ -1,6 +1,6 @@
/******************************************************************************
** This file is an amalgamation of many separate C source files from SQLite
-** version 3.36.0. By combining all the individual C code files into this
+** version 3.37.2. By combining all the individual C code files into this
** single large file, the entire code can be compiled as a single translation
** unit. This allows many compilers to do optimizations that would not be
** possible if the files were compiled separately. Performance improvements
@@ -22,793 +22,6 @@
#ifndef SQLITE_PRIVATE
# define SQLITE_PRIVATE static
#endif
-/************** Begin file ctime.c *******************************************/
-/*
-** 2010 February 23
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-*************************************************************************
-**
-** This file implements routines used to report what compile-time options
-** SQLite was built with.
-*/
-
-#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS /* IMP: R-16824-07538 */
-
-/*
-** Include the configuration header output by 'configure' if we're using the
-** autoconf-based build
-*/
-#if defined(_HAVE_SQLITE_CONFIG_H) && !defined(SQLITECONFIG_H)
-#include "config.h"
-#define SQLITECONFIG_H 1
-#endif
-
-/* These macros are provided to "stringify" the value of the define
-** for those options in which the value is meaningful. */
-#define CTIMEOPT_VAL_(opt) #opt
-#define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt)
-
-/* Like CTIMEOPT_VAL, but especially for SQLITE_DEFAULT_LOOKASIDE. This
-** option requires a separate macro because legal values contain a single
-** comma. e.g. (-DSQLITE_DEFAULT_LOOKASIDE="100,100") */
-#define CTIMEOPT_VAL2_(opt1,opt2) #opt1 "," #opt2
-#define CTIMEOPT_VAL2(opt) CTIMEOPT_VAL2_(opt)
-
-/*
-** An array of names of all compile-time options. This array should
-** be sorted A-Z.
-**
-** This array looks large, but in a typical installation actually uses
-** only a handful of compile-time options, so most times this array is usually
-** rather short and uses little memory space.
-*/
-static const char * const sqlite3azCompileOpt[] = {
-
-/*
-** BEGIN CODE GENERATED BY tool/mkctime.tcl
-*/
-#if SQLITE_32BIT_ROWID
- "32BIT_ROWID",
-#endif
-#if SQLITE_4_BYTE_ALIGNED_MALLOC
- "4_BYTE_ALIGNED_MALLOC",
-#endif
-#if SQLITE_64BIT_STATS
- "64BIT_STATS",
-#endif
-#ifdef SQLITE_ALLOW_COVERING_INDEX_SCAN
-# if SQLITE_ALLOW_COVERING_INDEX_SCAN != 1
- "ALLOW_COVERING_INDEX_SCAN=" CTIMEOPT_VAL(SQLITE_ALLOW_COVERING_INDEX_SCAN),
-# endif
-#endif
-#if SQLITE_ALLOW_URI_AUTHORITY
- "ALLOW_URI_AUTHORITY",
-#endif
-#ifdef SQLITE_BITMASK_TYPE
- "BITMASK_TYPE=" CTIMEOPT_VAL(SQLITE_BITMASK_TYPE),
-#endif
-#if SQLITE_BUG_COMPATIBLE_20160819
- "BUG_COMPATIBLE_20160819",
-#endif
-#if SQLITE_CASE_SENSITIVE_LIKE
- "CASE_SENSITIVE_LIKE",
-#endif
-#if SQLITE_CHECK_PAGES
- "CHECK_PAGES",
-#endif
-#if defined(__clang__) && defined(__clang_major__)
- "COMPILER=clang-" CTIMEOPT_VAL(__clang_major__) "."
- CTIMEOPT_VAL(__clang_minor__) "."
- CTIMEOPT_VAL(__clang_patchlevel__),
-#elif defined(_MSC_VER)
- "COMPILER=msvc-" CTIMEOPT_VAL(_MSC_VER),
-#elif defined(__GNUC__) && defined(__VERSION__)
- "COMPILER=gcc-" __VERSION__,
-#endif
-#if SQLITE_COVERAGE_TEST
- "COVERAGE_TEST",
-#endif
-#if SQLITE_DEBUG
- "DEBUG",
-#endif
-#if SQLITE_DEFAULT_AUTOMATIC_INDEX
- "DEFAULT_AUTOMATIC_INDEX",
-#endif
-#if SQLITE_DEFAULT_AUTOVACUUM
- "DEFAULT_AUTOVACUUM",
-#endif
-#ifdef SQLITE_DEFAULT_CACHE_SIZE
- "DEFAULT_CACHE_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_CACHE_SIZE),
-#endif
-#if SQLITE_DEFAULT_CKPTFULLFSYNC
- "DEFAULT_CKPTFULLFSYNC",
-#endif
-#ifdef SQLITE_DEFAULT_FILE_FORMAT
- "DEFAULT_FILE_FORMAT=" CTIMEOPT_VAL(SQLITE_DEFAULT_FILE_FORMAT),
-#endif
-#ifdef SQLITE_DEFAULT_FILE_PERMISSIONS
- "DEFAULT_FILE_PERMISSIONS=" CTIMEOPT_VAL(SQLITE_DEFAULT_FILE_PERMISSIONS),
-#endif
-#if SQLITE_DEFAULT_FOREIGN_KEYS
- "DEFAULT_FOREIGN_KEYS",
-#endif
-#ifdef SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT
- "DEFAULT_JOURNAL_SIZE_LIMIT=" CTIMEOPT_VAL(SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT),
-#endif
-#ifdef SQLITE_DEFAULT_LOCKING_MODE
- "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE),
-#endif
-#ifdef SQLITE_DEFAULT_LOOKASIDE
- "DEFAULT_LOOKASIDE=" CTIMEOPT_VAL2(SQLITE_DEFAULT_LOOKASIDE),
-#endif
-#ifdef SQLITE_DEFAULT_MEMSTATUS
-# if SQLITE_DEFAULT_MEMSTATUS != 1
- "DEFAULT_MEMSTATUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_MEMSTATUS),
-# endif
-#endif
-#ifdef SQLITE_DEFAULT_MMAP_SIZE
- "DEFAULT_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_MMAP_SIZE),
-#endif
-#ifdef SQLITE_DEFAULT_PAGE_SIZE
- "DEFAULT_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_PAGE_SIZE),
-#endif
-#ifdef SQLITE_DEFAULT_PCACHE_INITSZ
- "DEFAULT_PCACHE_INITSZ=" CTIMEOPT_VAL(SQLITE_DEFAULT_PCACHE_INITSZ),
-#endif
-#ifdef SQLITE_DEFAULT_PROXYDIR_PERMISSIONS
- "DEFAULT_PROXYDIR_PERMISSIONS=" CTIMEOPT_VAL(SQLITE_DEFAULT_PROXYDIR_PERMISSIONS),
-#endif
-#if SQLITE_DEFAULT_RECURSIVE_TRIGGERS
- "DEFAULT_RECURSIVE_TRIGGERS",
-#endif
-#ifdef SQLITE_DEFAULT_ROWEST
- "DEFAULT_ROWEST=" CTIMEOPT_VAL(SQLITE_DEFAULT_ROWEST),
-#endif
-#ifdef SQLITE_DEFAULT_SECTOR_SIZE
- "DEFAULT_SECTOR_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_SECTOR_SIZE),
-#endif
-#ifdef SQLITE_DEFAULT_SYNCHRONOUS
- "DEFAULT_SYNCHRONOUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_SYNCHRONOUS),
-#endif
-#ifdef SQLITE_DEFAULT_WAL_AUTOCHECKPOINT
- "DEFAULT_WAL_AUTOCHECKPOINT=" CTIMEOPT_VAL(SQLITE_DEFAULT_WAL_AUTOCHECKPOINT),
-#endif
-#ifdef SQLITE_DEFAULT_WAL_SYNCHRONOUS
- "DEFAULT_WAL_SYNCHRONOUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_WAL_SYNCHRONOUS),
-#endif
-#ifdef SQLITE_DEFAULT_WORKER_THREADS
- "DEFAULT_WORKER_THREADS=" CTIMEOPT_VAL(SQLITE_DEFAULT_WORKER_THREADS),
-#endif
-#if SQLITE_DIRECT_OVERFLOW_READ
- "DIRECT_OVERFLOW_READ",
-#endif
-#if SQLITE_DISABLE_DIRSYNC
- "DISABLE_DIRSYNC",
-#endif
-#if SQLITE_DISABLE_FTS3_UNICODE
- "DISABLE_FTS3_UNICODE",
-#endif
-#if SQLITE_DISABLE_FTS4_DEFERRED
- "DISABLE_FTS4_DEFERRED",
-#endif
-#if SQLITE_DISABLE_INTRINSIC
- "DISABLE_INTRINSIC",
-#endif
-#if SQLITE_DISABLE_LFS
- "DISABLE_LFS",
-#endif
-#if SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS
- "DISABLE_PAGECACHE_OVERFLOW_STATS",
-#endif
-#if SQLITE_DISABLE_SKIPAHEAD_DISTINCT
- "DISABLE_SKIPAHEAD_DISTINCT",
-#endif
-#ifdef SQLITE_ENABLE_8_3_NAMES
- "ENABLE_8_3_NAMES=" CTIMEOPT_VAL(SQLITE_ENABLE_8_3_NAMES),
-#endif
-#if SQLITE_ENABLE_API_ARMOR
- "ENABLE_API_ARMOR",
-#endif
-#if SQLITE_ENABLE_ATOMIC_WRITE
- "ENABLE_ATOMIC_WRITE",
-#endif
-#if SQLITE_ENABLE_BATCH_ATOMIC_WRITE
- "ENABLE_BATCH_ATOMIC_WRITE",
-#endif
-#if SQLITE_ENABLE_BYTECODE_VTAB
- "ENABLE_BYTECODE_VTAB",
-#endif
-#ifdef SQLITE_ENABLE_CEROD
- "ENABLE_CEROD=" CTIMEOPT_VAL(SQLITE_ENABLE_CEROD),
-#endif
-#if SQLITE_ENABLE_COLUMN_METADATA
- "ENABLE_COLUMN_METADATA",
-#endif
-#if SQLITE_ENABLE_COLUMN_USED_MASK
- "ENABLE_COLUMN_USED_MASK",
-#endif
-#if SQLITE_ENABLE_COSTMULT
- "ENABLE_COSTMULT",
-#endif
-#if SQLITE_ENABLE_CURSOR_HINTS
- "ENABLE_CURSOR_HINTS",
-#endif
-#if SQLITE_ENABLE_DBPAGE_VTAB
- "ENABLE_DBPAGE_VTAB",
-#endif
-#if SQLITE_ENABLE_DBSTAT_VTAB
- "ENABLE_DBSTAT_VTAB",
-#endif
-#if SQLITE_ENABLE_EXPENSIVE_ASSERT
- "ENABLE_EXPENSIVE_ASSERT",
-#endif
-#if SQLITE_ENABLE_EXPLAIN_COMMENTS
- "ENABLE_EXPLAIN_COMMENTS",
-#endif
-#if SQLITE_ENABLE_FTS3
- "ENABLE_FTS3",
-#endif
-#if SQLITE_ENABLE_FTS3_PARENTHESIS
- "ENABLE_FTS3_PARENTHESIS",
-#endif
-#if SQLITE_ENABLE_FTS3_TOKENIZER
- "ENABLE_FTS3_TOKENIZER",
-#endif
-#if SQLITE_ENABLE_FTS4
- "ENABLE_FTS4",
-#endif
-#if SQLITE_ENABLE_FTS5
- "ENABLE_FTS5",
-#endif
-#if SQLITE_ENABLE_GEOPOLY
- "ENABLE_GEOPOLY",
-#endif
-#if SQLITE_ENABLE_HIDDEN_COLUMNS
- "ENABLE_HIDDEN_COLUMNS",
-#endif
-#if SQLITE_ENABLE_ICU
- "ENABLE_ICU",
-#endif
-#if SQLITE_ENABLE_IOTRACE
- "ENABLE_IOTRACE",
-#endif
-#if SQLITE_ENABLE_JSON1
- "ENABLE_JSON1",
-#endif
-#if SQLITE_ENABLE_LOAD_EXTENSION
- "ENABLE_LOAD_EXTENSION",
-#endif
-#ifdef SQLITE_ENABLE_LOCKING_STYLE
- "ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE),
-#endif
-#if SQLITE_ENABLE_MATH_FUNCTIONS
- "ENABLE_MATH_FUNCTIONS",
-#endif
-#if SQLITE_ENABLE_MEMORY_MANAGEMENT
- "ENABLE_MEMORY_MANAGEMENT",
-#endif
-#if SQLITE_ENABLE_MEMSYS3
- "ENABLE_MEMSYS3",
-#endif
-#if SQLITE_ENABLE_MEMSYS5
- "ENABLE_MEMSYS5",
-#endif
-#if SQLITE_ENABLE_MULTIPLEX
- "ENABLE_MULTIPLEX",
-#endif
-#if SQLITE_ENABLE_NORMALIZE
- "ENABLE_NORMALIZE",
-#endif
-#if SQLITE_ENABLE_NULL_TRIM
- "ENABLE_NULL_TRIM",
-#endif
-#if SQLITE_ENABLE_OFFSET_SQL_FUNC
- "ENABLE_OFFSET_SQL_FUNC",
-#endif
-#if SQLITE_ENABLE_OVERSIZE_CELL_CHECK
- "ENABLE_OVERSIZE_CELL_CHECK",
-#endif
-#if SQLITE_ENABLE_PREUPDATE_HOOK
- "ENABLE_PREUPDATE_HOOK",
-#endif
-#if SQLITE_ENABLE_QPSG
- "ENABLE_QPSG",
-#endif
-#if SQLITE_ENABLE_RBU
- "ENABLE_RBU",
-#endif
-#if SQLITE_ENABLE_RTREE
- "ENABLE_RTREE",
-#endif
-#if SQLITE_ENABLE_SELECTTRACE
- "ENABLE_SELECTTRACE",
-#endif
-#if SQLITE_ENABLE_SESSION
- "ENABLE_SESSION",
-#endif
-#if SQLITE_ENABLE_SNAPSHOT
- "ENABLE_SNAPSHOT",
-#endif
-#if SQLITE_ENABLE_SORTER_REFERENCES
- "ENABLE_SORTER_REFERENCES",
-#endif
-#if SQLITE_ENABLE_SQLLOG
- "ENABLE_SQLLOG",
-#endif
-#if SQLITE_ENABLE_STAT4
- "ENABLE_STAT4",
-#endif
-#if SQLITE_ENABLE_STMTVTAB
- "ENABLE_STMTVTAB",
-#endif
-#if SQLITE_ENABLE_STMT_SCANSTATUS
- "ENABLE_STMT_SCANSTATUS",
-#endif
-#if SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
- "ENABLE_UNKNOWN_SQL_FUNCTION",
-#endif
-#if SQLITE_ENABLE_UNLOCK_NOTIFY
- "ENABLE_UNLOCK_NOTIFY",
-#endif
-#if SQLITE_ENABLE_UPDATE_DELETE_LIMIT
- "ENABLE_UPDATE_DELETE_LIMIT",
-#endif
-#if SQLITE_ENABLE_URI_00_ERROR
- "ENABLE_URI_00_ERROR",
-#endif
-#if SQLITE_ENABLE_VFSTRACE
- "ENABLE_VFSTRACE",
-#endif
-#if SQLITE_ENABLE_WHERETRACE
- "ENABLE_WHERETRACE",
-#endif
-#if SQLITE_ENABLE_ZIPVFS
- "ENABLE_ZIPVFS",
-#endif
-#if SQLITE_EXPLAIN_ESTIMATED_ROWS
- "EXPLAIN_ESTIMATED_ROWS",
-#endif
-#if SQLITE_EXTRA_IFNULLROW
- "EXTRA_IFNULLROW",
-#endif
-#ifdef SQLITE_EXTRA_INIT
- "EXTRA_INIT=" CTIMEOPT_VAL(SQLITE_EXTRA_INIT),
-#endif
-#ifdef SQLITE_EXTRA_SHUTDOWN
- "EXTRA_SHUTDOWN=" CTIMEOPT_VAL(SQLITE_EXTRA_SHUTDOWN),
-#endif
-#ifdef SQLITE_FTS3_MAX_EXPR_DEPTH
- "FTS3_MAX_EXPR_DEPTH=" CTIMEOPT_VAL(SQLITE_FTS3_MAX_EXPR_DEPTH),
-#endif
-#if SQLITE_FTS5_ENABLE_TEST_MI
- "FTS5_ENABLE_TEST_MI",
-#endif
-#if SQLITE_FTS5_NO_WITHOUT_ROWID
- "FTS5_NO_WITHOUT_ROWID",
-#endif
-#if HAVE_ISNAN || SQLITE_HAVE_ISNAN
- "HAVE_ISNAN",
-#endif
-#ifdef SQLITE_HOMEGROWN_RECURSIVE_MUTEX
-# if SQLITE_HOMEGROWN_RECURSIVE_MUTEX != 1
- "HOMEGROWN_RECURSIVE_MUTEX=" CTIMEOPT_VAL(SQLITE_HOMEGROWN_RECURSIVE_MUTEX),
-# endif
-#endif
-#if SQLITE_IGNORE_AFP_LOCK_ERRORS
- "IGNORE_AFP_LOCK_ERRORS",
-#endif
-#if SQLITE_IGNORE_FLOCK_LOCK_ERRORS
- "IGNORE_FLOCK_LOCK_ERRORS",
-#endif
-#if SQLITE_INLINE_MEMCPY
- "INLINE_MEMCPY",
-#endif
-#if SQLITE_INT64_TYPE
- "INT64_TYPE",
-#endif
-#ifdef SQLITE_INTEGRITY_CHECK_ERROR_MAX
- "INTEGRITY_CHECK_ERROR_MAX=" CTIMEOPT_VAL(SQLITE_INTEGRITY_CHECK_ERROR_MAX),
-#endif
-#if SQLITE_LIKE_DOESNT_MATCH_BLOBS
- "LIKE_DOESNT_MATCH_BLOBS",
-#endif
-#if SQLITE_LOCK_TRACE
- "LOCK_TRACE",
-#endif
-#if SQLITE_LOG_CACHE_SPILL
- "LOG_CACHE_SPILL",
-#endif
-#ifdef SQLITE_MALLOC_SOFT_LIMIT
- "MALLOC_SOFT_LIMIT=" CTIMEOPT_VAL(SQLITE_MALLOC_SOFT_LIMIT),
-#endif
-#ifdef SQLITE_MAX_ATTACHED
- "MAX_ATTACHED=" CTIMEOPT_VAL(SQLITE_MAX_ATTACHED),
-#endif
-#ifdef SQLITE_MAX_COLUMN
- "MAX_COLUMN=" CTIMEOPT_VAL(SQLITE_MAX_COLUMN),
-#endif
-#ifdef SQLITE_MAX_COMPOUND_SELECT
- "MAX_COMPOUND_SELECT=" CTIMEOPT_VAL(SQLITE_MAX_COMPOUND_SELECT),
-#endif
-#ifdef SQLITE_MAX_DEFAULT_PAGE_SIZE
- "MAX_DEFAULT_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_DEFAULT_PAGE_SIZE),
-#endif
-#ifdef SQLITE_MAX_EXPR_DEPTH
- "MAX_EXPR_DEPTH=" CTIMEOPT_VAL(SQLITE_MAX_EXPR_DEPTH),
-#endif
-#ifdef SQLITE_MAX_FUNCTION_ARG
- "MAX_FUNCTION_ARG=" CTIMEOPT_VAL(SQLITE_MAX_FUNCTION_ARG),
-#endif
-#ifdef SQLITE_MAX_LENGTH
- "MAX_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_LENGTH),
-#endif
-#ifdef SQLITE_MAX_LIKE_PATTERN_LENGTH
- "MAX_LIKE_PATTERN_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_LIKE_PATTERN_LENGTH),
-#endif
-#ifdef SQLITE_MAX_MEMORY
- "MAX_MEMORY=" CTIMEOPT_VAL(SQLITE_MAX_MEMORY),
-#endif
-#ifdef SQLITE_MAX_MMAP_SIZE
- "MAX_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE),
-#endif
-#ifdef SQLITE_MAX_MMAP_SIZE_
- "MAX_MMAP_SIZE_=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE_),
-#endif
-#ifdef SQLITE_MAX_PAGE_COUNT
- "MAX_PAGE_COUNT=" CTIMEOPT_VAL(SQLITE_MAX_PAGE_COUNT),
-#endif
-#ifdef SQLITE_MAX_PAGE_SIZE
- "MAX_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_PAGE_SIZE),
-#endif
-#ifdef SQLITE_MAX_SCHEMA_RETRY
- "MAX_SCHEMA_RETRY=" CTIMEOPT_VAL(SQLITE_MAX_SCHEMA_RETRY),
-#endif
-#ifdef SQLITE_MAX_SQL_LENGTH
- "MAX_SQL_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_SQL_LENGTH),
-#endif
-#ifdef SQLITE_MAX_TRIGGER_DEPTH
- "MAX_TRIGGER_DEPTH=" CTIMEOPT_VAL(SQLITE_MAX_TRIGGER_DEPTH),
-#endif
-#ifdef SQLITE_MAX_VARIABLE_NUMBER
- "MAX_VARIABLE_NUMBER=" CTIMEOPT_VAL(SQLITE_MAX_VARIABLE_NUMBER),
-#endif
-#ifdef SQLITE_MAX_VDBE_OP
- "MAX_VDBE_OP=" CTIMEOPT_VAL(SQLITE_MAX_VDBE_OP),
-#endif
-#ifdef SQLITE_MAX_WORKER_THREADS
- "MAX_WORKER_THREADS=" CTIMEOPT_VAL(SQLITE_MAX_WORKER_THREADS),
-#endif
-#if SQLITE_MEMDEBUG
- "MEMDEBUG",
-#endif
-#if SQLITE_MIXED_ENDIAN_64BIT_FLOAT
- "MIXED_ENDIAN_64BIT_FLOAT",
-#endif
-#if SQLITE_MMAP_READWRITE
- "MMAP_READWRITE",
-#endif
-#if SQLITE_MUTEX_NOOP
- "MUTEX_NOOP",
-#endif
-#if SQLITE_MUTEX_OMIT
- "MUTEX_OMIT",
-#endif
-#if SQLITE_MUTEX_PTHREADS
- "MUTEX_PTHREADS",
-#endif
-#if SQLITE_MUTEX_W32
- "MUTEX_W32",
-#endif
-#if SQLITE_NEED_ERR_NAME
- "NEED_ERR_NAME",
-#endif
-#if SQLITE_NOINLINE
- "NOINLINE",
-#endif
-#if SQLITE_NO_SYNC
- "NO_SYNC",
-#endif
-#if SQLITE_OMIT_ALTERTABLE
- "OMIT_ALTERTABLE",
-#endif
-#if SQLITE_OMIT_ANALYZE
- "OMIT_ANALYZE",
-#endif
-#if SQLITE_OMIT_ATTACH
- "OMIT_ATTACH",
-#endif
-#if SQLITE_OMIT_AUTHORIZATION
- "OMIT_AUTHORIZATION",
-#endif
-#if SQLITE_OMIT_AUTOINCREMENT
- "OMIT_AUTOINCREMENT",
-#endif
-#if SQLITE_OMIT_AUTOINIT
- "OMIT_AUTOINIT",
-#endif
-#if SQLITE_OMIT_AUTOMATIC_INDEX
- "OMIT_AUTOMATIC_INDEX",
-#endif
-#if SQLITE_OMIT_AUTORESET
- "OMIT_AUTORESET",
-#endif
-#if SQLITE_OMIT_AUTOVACUUM
- "OMIT_AUTOVACUUM",
-#endif
-#if SQLITE_OMIT_BETWEEN_OPTIMIZATION
- "OMIT_BETWEEN_OPTIMIZATION",
-#endif
-#if SQLITE_OMIT_BLOB_LITERAL
- "OMIT_BLOB_LITERAL",
-#endif
-#if SQLITE_OMIT_CAST
- "OMIT_CAST",
-#endif
-#if SQLITE_OMIT_CHECK
- "OMIT_CHECK",
-#endif
-#if SQLITE_OMIT_COMPLETE
- "OMIT_COMPLETE",
-#endif
-#if SQLITE_OMIT_COMPOUND_SELECT
- "OMIT_COMPOUND_SELECT",
-#endif
-#if SQLITE_OMIT_CONFLICT_CLAUSE
- "OMIT_CONFLICT_CLAUSE",
-#endif
-#if SQLITE_OMIT_CTE
- "OMIT_CTE",
-#endif
-#if defined(SQLITE_OMIT_DATETIME_FUNCS) || defined(SQLITE_OMIT_FLOATING_POINT)
- "OMIT_DATETIME_FUNCS",
-#endif
-#if SQLITE_OMIT_DECLTYPE
- "OMIT_DECLTYPE",
-#endif
-#if SQLITE_OMIT_DEPRECATED
- "OMIT_DEPRECATED",
-#endif
-#if SQLITE_OMIT_DESERIALIZE
- "OMIT_DESERIALIZE",
-#endif
-#if SQLITE_OMIT_DISKIO
- "OMIT_DISKIO",
-#endif
-#if SQLITE_OMIT_EXPLAIN
- "OMIT_EXPLAIN",
-#endif
-#if SQLITE_OMIT_FLAG_PRAGMAS
- "OMIT_FLAG_PRAGMAS",
-#endif
-#if SQLITE_OMIT_FLOATING_POINT
- "OMIT_FLOATING_POINT",
-#endif
-#if SQLITE_OMIT_FOREIGN_KEY
- "OMIT_FOREIGN_KEY",
-#endif
-#if SQLITE_OMIT_GET_TABLE
- "OMIT_GET_TABLE",
-#endif
-#if SQLITE_OMIT_HEX_INTEGER
- "OMIT_HEX_INTEGER",
-#endif
-#if SQLITE_OMIT_INCRBLOB
- "OMIT_INCRBLOB",
-#endif
-#if SQLITE_OMIT_INTEGRITY_CHECK
- "OMIT_INTEGRITY_CHECK",
-#endif
-#if SQLITE_OMIT_INTROSPECTION_PRAGMAS
- "OMIT_INTROSPECTION_PRAGMAS",
-#endif
-#if SQLITE_OMIT_LIKE_OPTIMIZATION
- "OMIT_LIKE_OPTIMIZATION",
-#endif
-#if SQLITE_OMIT_LOAD_EXTENSION
- "OMIT_LOAD_EXTENSION",
-#endif
-#if SQLITE_OMIT_LOCALTIME
- "OMIT_LOCALTIME",
-#endif
-#if SQLITE_OMIT_LOOKASIDE
- "OMIT_LOOKASIDE",
-#endif
-#if SQLITE_OMIT_MEMORYDB
- "OMIT_MEMORYDB",
-#endif
-#if SQLITE_OMIT_OR_OPTIMIZATION
- "OMIT_OR_OPTIMIZATION",
-#endif
-#if SQLITE_OMIT_PAGER_PRAGMAS
- "OMIT_PAGER_PRAGMAS",
-#endif
-#if SQLITE_OMIT_PARSER_TRACE
- "OMIT_PARSER_TRACE",
-#endif
-#if SQLITE_OMIT_POPEN
- "OMIT_POPEN",
-#endif
-#if SQLITE_OMIT_PRAGMA
- "OMIT_PRAGMA",
-#endif
-#if SQLITE_OMIT_PROGRESS_CALLBACK
- "OMIT_PROGRESS_CALLBACK",
-#endif
-#if SQLITE_OMIT_QUICKBALANCE
- "OMIT_QUICKBALANCE",
-#endif
-#if SQLITE_OMIT_REINDEX
- "OMIT_REINDEX",
-#endif
-#if SQLITE_OMIT_SCHEMA_PRAGMAS
- "OMIT_SCHEMA_PRAGMAS",
-#endif
-#if SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
- "OMIT_SCHEMA_VERSION_PRAGMAS",
-#endif
-#if SQLITE_OMIT_SHARED_CACHE
- "OMIT_SHARED_CACHE",
-#endif
-#if SQLITE_OMIT_SHUTDOWN_DIRECTORIES
- "OMIT_SHUTDOWN_DIRECTORIES",
-#endif
-#if SQLITE_OMIT_SUBQUERY
- "OMIT_SUBQUERY",
-#endif
-#if SQLITE_OMIT_TCL_VARIABLE
- "OMIT_TCL_VARIABLE",
-#endif
-#if SQLITE_OMIT_TEMPDB
- "OMIT_TEMPDB",
-#endif
-#if SQLITE_OMIT_TEST_CONTROL
- "OMIT_TEST_CONTROL",
-#endif
-#ifdef SQLITE_OMIT_TRACE
-# if SQLITE_OMIT_TRACE != 1
- "OMIT_TRACE=" CTIMEOPT_VAL(SQLITE_OMIT_TRACE),
-# endif
-#endif
-#if SQLITE_OMIT_TRIGGER
- "OMIT_TRIGGER",
-#endif
-#if SQLITE_OMIT_TRUNCATE_OPTIMIZATION
- "OMIT_TRUNCATE_OPTIMIZATION",
-#endif
-#if SQLITE_OMIT_UTF16
- "OMIT_UTF16",
-#endif
-#if SQLITE_OMIT_VACUUM
- "OMIT_VACUUM",
-#endif
-#if SQLITE_OMIT_VIEW
- "OMIT_VIEW",
-#endif
-#if SQLITE_OMIT_VIRTUALTABLE
- "OMIT_VIRTUALTABLE",
-#endif
-#if SQLITE_OMIT_WAL
- "OMIT_WAL",
-#endif
-#if SQLITE_OMIT_WSD
- "OMIT_WSD",
-#endif
-#if SQLITE_OMIT_XFER_OPT
- "OMIT_XFER_OPT",
-#endif
-#if SQLITE_PCACHE_SEPARATE_HEADER
- "PCACHE_SEPARATE_HEADER",
-#endif
-#if SQLITE_PERFORMANCE_TRACE
- "PERFORMANCE_TRACE",
-#endif
-#ifdef SQLITE_POWERSAFE_OVERWRITE
-# if SQLITE_POWERSAFE_OVERWRITE != 1
- "POWERSAFE_OVERWRITE=" CTIMEOPT_VAL(SQLITE_POWERSAFE_OVERWRITE),
-# endif
-#endif
-#if SQLITE_PREFER_PROXY_LOCKING
- "PREFER_PROXY_LOCKING",
-#endif
-#if SQLITE_PROXY_DEBUG
- "PROXY_DEBUG",
-#endif
-#if SQLITE_REVERSE_UNORDERED_SELECTS
- "REVERSE_UNORDERED_SELECTS",
-#endif
-#if SQLITE_RTREE_INT_ONLY
- "RTREE_INT_ONLY",
-#endif
-#if SQLITE_SECURE_DELETE
- "SECURE_DELETE",
-#endif
-#if SQLITE_SMALL_STACK
- "SMALL_STACK",
-#endif
-#ifdef SQLITE_SORTER_PMASZ
- "SORTER_PMASZ=" CTIMEOPT_VAL(SQLITE_SORTER_PMASZ),
-#endif
-#if SQLITE_SOUNDEX
- "SOUNDEX",
-#endif
-#ifdef SQLITE_STAT4_SAMPLES
- "STAT4_SAMPLES=" CTIMEOPT_VAL(SQLITE_STAT4_SAMPLES),
-#endif
-#ifdef SQLITE_STMTJRNL_SPILL
- "STMTJRNL_SPILL=" CTIMEOPT_VAL(SQLITE_STMTJRNL_SPILL),
-#endif
-#if SQLITE_SUBSTR_COMPATIBILITY
- "SUBSTR_COMPATIBILITY",
-#endif
-#if (!defined(SQLITE_WIN32_MALLOC) \
- && !defined(SQLITE_ZERO_MALLOC) \
- && !defined(SQLITE_MEMDEBUG) \
- ) || defined(SQLITE_SYSTEM_MALLOC)
- "SYSTEM_MALLOC",
-#endif
-#if SQLITE_TCL
- "TCL",
-#endif
-#ifdef SQLITE_TEMP_STORE
- "TEMP_STORE=" CTIMEOPT_VAL(SQLITE_TEMP_STORE),
-#endif
-#if SQLITE_TEST
- "TEST",
-#endif
-#if defined(SQLITE_THREADSAFE)
- "THREADSAFE=" CTIMEOPT_VAL(SQLITE_THREADSAFE),
-#elif defined(THREADSAFE)
- "THREADSAFE=" CTIMEOPT_VAL(THREADSAFE),
-#else
- "THREADSAFE=1",
-#endif
-#if SQLITE_UNLINK_AFTER_CLOSE
- "UNLINK_AFTER_CLOSE",
-#endif
-#if SQLITE_UNTESTABLE
- "UNTESTABLE",
-#endif
-#if SQLITE_USER_AUTHENTICATION
- "USER_AUTHENTICATION",
-#endif
-#if SQLITE_USE_ALLOCA
- "USE_ALLOCA",
-#endif
-#if SQLITE_USE_FCNTL_TRACE
- "USE_FCNTL_TRACE",
-#endif
-#if SQLITE_USE_URI
- "USE_URI",
-#endif
-#if SQLITE_VDBE_COVERAGE
- "VDBE_COVERAGE",
-#endif
-#if SQLITE_WIN32_MALLOC
- "WIN32_MALLOC",
-#endif
-#if SQLITE_ZERO_MALLOC
- "ZERO_MALLOC",
-#endif
-/*
-** END CODE GENERATED BY tool/mkctime.tcl
-*/
-};
-
-SQLITE_PRIVATE const char **sqlite3CompileOptions(int *pnOpt){
- *pnOpt = sizeof(sqlite3azCompileOpt) / sizeof(sqlite3azCompileOpt[0]);
- return (const char**)sqlite3azCompileOpt;
-}
-
-#endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */
-
-/************** End of ctime.c ***********************************************/
/************** Begin file sqliteInt.h ***************************************/
/*
** 2001 September 15
@@ -1074,6 +287,17 @@ SQLITE_PRIVATE const char **sqlite3CompileOptions(int *pnOpt){
# define _USE_32BIT_TIME_T
#endif
+/* Optionally #include a user-defined header, whereby compilation options
+** may be set prior to where they take effect, but after platform setup.
+** If SQLITE_CUSTOM_INCLUDE=? is defined, its value names the #include
+** file.
+*/
+#ifdef SQLITE_CUSTOM_INCLUDE
+# define INC_STRINGIFY_(f) #f
+# define INC_STRINGIFY(f) INC_STRINGIFY_(f)
+# include INC_STRINGIFY(SQLITE_CUSTOM_INCLUDE)
+#endif
+
/* The public SQLite interface. The _FILE_OFFSET_BITS macro must appear
** first in QNX. Also, the _USE_32BIT_TIME_T macro must appear first for
** MinGW.
@@ -1125,7 +349,30 @@ extern "C" {
/*
-** Provide the ability to override linkage features of the interface.
+** Facilitate override of interface linkage and calling conventions.
+** Be aware that these macros may not be used within this particular
+** translation of the amalgamation and its associated header file.
+**
+** The SQLITE_EXTERN and SQLITE_API macros are used to instruct the
+** compiler that the target identifier should have external linkage.
+**
+** The SQLITE_CDECL macro is used to set the calling convention for
+** public functions that accept a variable number of arguments.
+**
+** The SQLITE_APICALL macro is used to set the calling convention for
+** public functions that accept a fixed number of arguments.
+**
+** The SQLITE_STDCALL macro is no longer used and is now deprecated.
+**
+** The SQLITE_CALLBACK macro is used to set the calling convention for
+** function pointers.
+**
+** The SQLITE_SYSAPI macro is used to set the calling convention for
+** functions provided by the operating system.
+**
+** Currently, the SQLITE_CDECL, SQLITE_APICALL, SQLITE_CALLBACK, and
+** SQLITE_SYSAPI macros are used only when building for environments
+** that require non-default calling conventions.
*/
#ifndef SQLITE_EXTERN
# define SQLITE_EXTERN extern
@@ -1205,9 +452,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
-#define SQLITE_VERSION "3.36.0"
-#define SQLITE_VERSION_NUMBER 3036000
-#define SQLITE_SOURCE_ID "2021-06-18 18:36:39 5c9a6c06871cb9fe42814af9c039eb6da5427a6ec28f187af7ebfb62eafa66e5"
+#define SQLITE_VERSION "3.37.2"
+#define SQLITE_VERSION_NUMBER 3037002
+#define SQLITE_SOURCE_ID "2022-01-06 13:25:41 872ba256cbf61d9290b571c0e6d82a20c224ca3ad82971edc46b29818d5d17a0"
/*
** CAPI3REF: Run-Time Library Version Numbers
@@ -1619,6 +866,7 @@ SQLITE_API int sqlite3_exec(
#define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8))
#define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8))
#define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT |(11<<8))
+#define SQLITE_CONSTRAINT_DATATYPE (SQLITE_CONSTRAINT |(12<<8))
#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
@@ -1632,6 +880,19 @@ SQLITE_API int sqlite3_exec(
** These bit values are intended for use in the
** 3rd parameter to the [sqlite3_open_v2()] interface and
** in the 4th parameter to the [sqlite3_vfs.xOpen] method.
+**
+** Only those flags marked as "Ok for sqlite3_open_v2()" may be
+** used as the third argument to the [sqlite3_open_v2()] interface.
+** The other flags have historically been ignored by sqlite3_open_v2(),
+** though future versions of SQLite might change so that an error is
+** raised if any of the disallowed bits are passed into sqlite3_open_v2().
+** Applications should not depend on the historical behavior.
+**
+** Note in particular that passing the SQLITE_OPEN_EXCLUSIVE flag into
+** [sqlite3_open_v2()] does *not* cause the underlying database file
+** to be opened using O_EXCL. Passing SQLITE_OPEN_EXCLUSIVE into
+** [sqlite3_open_v2()] has historically be a no-op and might become an
+** error in future versions of SQLite.
*/
#define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */
@@ -1654,6 +915,7 @@ SQLITE_API int sqlite3_exec(
#define SQLITE_OPEN_PRIVATECACHE 0x00040000 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_WAL 0x00080000 /* VFS only */
#define SQLITE_OPEN_NOFOLLOW 0x01000000 /* Ok for sqlite3_open_v2() */
+#define SQLITE_OPEN_EXRESCODE 0x02000000 /* Extended result codes */
/* Reserved: 0x00F00000 */
/* Legacy compatibility: */
@@ -3546,11 +2808,14 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64);
** CAPI3REF: Count The Number Of Rows Modified
** METHOD: sqlite3
**
-** ^This function returns the number of rows modified, inserted or
+** ^These functions return the number of rows modified, inserted or
** deleted by the most recently completed INSERT, UPDATE or DELETE
** statement on the database connection specified by the only parameter.
-** ^Executing any other type of SQL statement does not modify the value
-** returned by this function.
+** The two functions are identical except for the type of the return value
+** and that if the number of rows modified by the most recent INSERT, UPDATE
+** or DELETE is greater than the maximum value supported by type "int", then
+** the return value of sqlite3_changes() is undefined. ^Executing any other
+** type of SQL statement does not modify the value returned by these functions.
**
** ^Only changes made directly by the INSERT, UPDATE or DELETE statement are
** considered - auxiliary changes caused by [CREATE TRIGGER | triggers],
@@ -3599,16 +2864,21 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64);
** </ul>
*/
SQLITE_API int sqlite3_changes(sqlite3*);
+SQLITE_API sqlite3_int64 sqlite3_changes64(sqlite3*);
/*
** CAPI3REF: Total Number Of Rows Modified
** METHOD: sqlite3
**
-** ^This function returns the total number of rows inserted, modified or
+** ^These functions return the total number of rows inserted, modified or
** deleted by all [INSERT], [UPDATE] or [DELETE] statements completed
** since the database connection was opened, including those executed as
-** part of trigger programs. ^Executing any other type of SQL statement
-** does not affect the value returned by sqlite3_total_changes().
+** part of trigger programs. The two functions are identical except for the
+** type of the return value and that if the number of rows modified by the
+** connection exceeds the maximum value supported by type "int", then
+** the return value of sqlite3_total_changes() is undefined. ^Executing
+** any other type of SQL statement does not affect the value returned by
+** sqlite3_total_changes().
**
** ^Changes made as part of [foreign key actions] are included in the
** count, but those made as part of REPLACE constraint resolution are
@@ -3636,6 +2906,7 @@ SQLITE_API int sqlite3_changes(sqlite3*);
** </ul>
*/
SQLITE_API int sqlite3_total_changes(sqlite3*);
+SQLITE_API sqlite3_int64 sqlite3_total_changes64(sqlite3*);
/*
** CAPI3REF: Interrupt A Long-Running Query
@@ -4465,6 +3736,14 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** the default shared cache setting provided by
** [sqlite3_enable_shared_cache()].)^
**
+** [[OPEN_EXRESCODE]] ^(<dt>[SQLITE_OPEN_EXRESCODE]</dt>
+** <dd>The database connection comes up in "extended result code mode".
+** In other words, the database behaves has if
+** [sqlite3_extended_result_codes(db,1)] where called on the database
+** connection as soon as the connection is created. In addition to setting
+** the extended result code mode, this flag also causes [sqlite3_open_v2()]
+** to return an extended result code.</dd>
+**
** [[OPEN_NOFOLLOW]] ^(<dt>[SQLITE_OPEN_NOFOLLOW]</dt>
** <dd>The database filename is not allowed to be a symbolic link</dd>
** </dl>)^
@@ -4472,7 +3751,15 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** If the 3rd parameter to sqlite3_open_v2() is not one of the
** required combinations shown above optionally combined with other
** [SQLITE_OPEN_READONLY | SQLITE_OPEN_* bits]
-** then the behavior is undefined.
+** then the behavior is undefined. Historic versions of SQLite
+** have silently ignored surplus bits in the flags parameter to
+** sqlite3_open_v2(), however that behavior might not be carried through
+** into future versions of SQLite and so applications should not rely
+** upon it. Note in particular that the SQLITE_OPEN_EXCLUSIVE flag is a no-op
+** for sqlite3_open_v2(). The SQLITE_OPEN_EXCLUSIVE does *not* cause
+** the open to fail if the database already exists. The SQLITE_OPEN_EXCLUSIVE
+** flag is intended for use by the [sqlite3_vfs|VFS interface] only, and not
+** by sqlite3_open_v2().
**
** ^The fourth parameter to sqlite3_open_v2() is the name of the
** [sqlite3_vfs] object that defines the operating system interface that
@@ -5240,12 +4527,17 @@ SQLITE_API int sqlite3_prepare16_v3(
** are managed by SQLite and are automatically freed when the prepared
** statement is finalized.
** ^The string returned by sqlite3_expanded_sql(P), on the other hand,
-** is obtained from [sqlite3_malloc()] and must be free by the application
+** is obtained from [sqlite3_malloc()] and must be freed by the application
** by passing it to [sqlite3_free()].
+**
+** ^The sqlite3_normalized_sql() interface is only available if
+** the [SQLITE_ENABLE_NORMALIZE] compile-time option is defined.
*/
SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
SQLITE_API char *sqlite3_expanded_sql(sqlite3_stmt *pStmt);
+#ifdef SQLITE_ENABLE_NORMALIZE
SQLITE_API const char *sqlite3_normalized_sql(sqlite3_stmt *pStmt);
+#endif
/*
** CAPI3REF: Determine If An SQL Statement Writes The Database
@@ -7430,6 +6722,72 @@ SQLITE_API void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
/*
+** CAPI3REF: Autovacuum Compaction Amount Callback
+** METHOD: sqlite3
+**
+** ^The sqlite3_autovacuum_pages(D,C,P,X) interface registers a callback
+** function C that is invoked prior to each autovacuum of the database
+** file. ^The callback is passed a copy of the generic data pointer (P),
+** the schema-name of the attached database that is being autovacuumed,
+** the the size of the database file in pages, the number of free pages,
+** and the number of bytes per page, respectively. The callback should
+** return the number of free pages that should be removed by the
+** autovacuum. ^If the callback returns zero, then no autovacuum happens.
+** ^If the value returned is greater than or equal to the number of
+** free pages, then a complete autovacuum happens.
+**
+** <p>^If there are multiple ATTACH-ed database files that are being
+** modified as part of a transaction commit, then the autovacuum pages
+** callback is invoked separately for each file.
+**
+** <p><b>The callback is not reentrant.</b> The callback function should
+** not attempt to invoke any other SQLite interface. If it does, bad
+** things may happen, including segmentation faults and corrupt database
+** files. The callback function should be a simple function that
+** does some arithmetic on its input parameters and returns a result.
+**
+** ^The X parameter to sqlite3_autovacuum_pages(D,C,P,X) is an optional
+** destructor for the P parameter. ^If X is not NULL, then X(P) is
+** invoked whenever the database connection closes or when the callback
+** is overwritten by another invocation of sqlite3_autovacuum_pages().
+**
+** <p>^There is only one autovacuum pages callback per database connection.
+** ^Each call to the sqlite3_autovacuum_pages() interface overrides all
+** previous invocations for that database connection. ^If the callback
+** argument (C) to sqlite3_autovacuum_pages(D,C,P,X) is a NULL pointer,
+** then the autovacuum steps callback is cancelled. The return value
+** from sqlite3_autovacuum_pages() is normally SQLITE_OK, but might
+** be some other error code if something goes wrong. The current
+** implementation will only return SQLITE_OK or SQLITE_MISUSE, but other
+** return codes might be added in future releases.
+**
+** <p>If no autovacuum pages callback is specified (the usual case) or
+** a NULL pointer is provided for the callback,
+** then the default behavior is to vacuum all free pages. So, in other
+** words, the default behavior is the same as if the callback function
+** were something like this:
+**
+** <blockquote><pre>
+** &nbsp; unsigned int demonstration_autovac_pages_callback(
+** &nbsp; void *pClientData,
+** &nbsp; const char *zSchema,
+** &nbsp; unsigned int nDbPage,
+** &nbsp; unsigned int nFreePage,
+** &nbsp; unsigned int nBytePerPage
+** &nbsp; ){
+** &nbsp; return nFreePage;
+** &nbsp; }
+** </pre></blockquote>
+*/
+SQLITE_API int sqlite3_autovacuum_pages(
+ sqlite3 *db,
+ unsigned int(*)(void*,const char*,unsigned int,unsigned int,unsigned int),
+ void*,
+ void(*)(void*)
+);
+
+
+/*
** CAPI3REF: Data Change Notification Callbacks
** METHOD: sqlite3
**
@@ -10092,8 +9450,9 @@ SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
**
** A single database handle may have at most a single write-ahead log callback
** registered at one time. ^Calling [sqlite3_wal_hook()] replaces any
-** previously registered write-ahead log callback. ^Note that the
-** [sqlite3_wal_autocheckpoint()] interface and the
+** previously registered write-ahead log callback. ^The return value is
+** a copy of the third parameter from the previous call, if any, or 0.
+** ^Note that the [sqlite3_wal_autocheckpoint()] interface and the
** [wal_autocheckpoint pragma] both invoke [sqlite3_wal_hook()] and will
** overwrite any prior [sqlite3_wal_hook()] settings.
*/
@@ -10960,6 +10319,10 @@ SQLITE_API unsigned char *sqlite3_serialize(
** database is currently in a read transaction or is involved in a backup
** operation.
**
+** It is not possible to deserialized into the TEMP database. If the
+** S argument to sqlite3_deserialize(D,S,P,N,M,F) is "temp" then the
+** function returns SQLITE_ERROR.
+**
** If sqlite3_deserialize(D,S,P,N,M,F) fails for any reason and if the
** SQLITE_DESERIALIZE_FREEONCLOSE bit is set in argument F, then
** [sqlite3_free()] is invoked on argument P prior to returning.
@@ -13442,7 +12805,7 @@ struct fts5_api {
** autoconf-based build
*/
#if defined(_HAVE_SQLITE_CONFIG_H) && !defined(SQLITECONFIG_H)
-/* #include "config.h" */
+#include "config.h"
#define SQLITECONFIG_H 1
#endif
@@ -13678,11 +13041,12 @@ struct fts5_api {
#ifndef __has_extension
# define __has_extension(x) 0 /* compatibility with non-clang compilers */
#endif
-#if GCC_VERSION>=4007000 || \
- (__has_extension(c_atomic) && __has_extension(c_atomic_store_n))
+#if GCC_VERSION>=4007000 || __has_extension(c_atomic)
+# define SQLITE_ATOMIC_INTRINSICS 1
# define AtomicLoad(PTR) __atomic_load_n((PTR),__ATOMIC_RELAXED)
# define AtomicStore(PTR,VAL) __atomic_store_n((PTR),(VAL),__ATOMIC_RELAXED)
#else
+# define SQLITE_ATOMIC_INTRINSICS 0
# define AtomicLoad(PTR) (*(PTR))
# define AtomicStore(PTR,VAL) (*(PTR) = (VAL))
#endif
@@ -13887,11 +13251,12 @@ struct fts5_api {
** is significant and used at least once. On switch statements
** where multiple cases go to the same block of code, testcase()
** can insure that all cases are evaluated.
-**
*/
-#ifdef SQLITE_COVERAGE_TEST
-SQLITE_PRIVATE void sqlite3Coverage(int);
-# define testcase(X) if( X ){ sqlite3Coverage(__LINE__); }
+#if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_DEBUG)
+# ifndef SQLITE_AMALGAMATION
+ extern unsigned int sqlite3CoverageCounter;
+# endif
+# define testcase(X) if( X ){ sqlite3CoverageCounter += (unsigned)__LINE__; }
#else
# define testcase(X)
#endif
@@ -13922,6 +13287,14 @@ SQLITE_PRIVATE void sqlite3Coverage(int);
#endif
/*
+** Disable ALWAYS() and NEVER() (make them pass-throughs) for coverage
+** and mutation testing
+*/
+#if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_MUTATION_TEST)
+# define SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS 1
+#endif
+
+/*
** The ALWAYS and NEVER macros surround boolean expressions which
** are intended to always be true or false, respectively. Such
** expressions could be omitted from the code completely. But they
@@ -13936,7 +13309,7 @@ SQLITE_PRIVATE void sqlite3Coverage(int);
** be true and false so that the unreachable code they specify will
** not be counted as untested code.
*/
-#if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_MUTATION_TEST)
+#if defined(SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS)
# define ALWAYS(X) (1)
# define NEVER(X) (0)
#elif !defined(NDEBUG)
@@ -13948,26 +13321,6 @@ SQLITE_PRIVATE void sqlite3Coverage(int);
#endif
/*
-** The harmless(X) macro indicates that expression X is usually false
-** but can be true without causing any problems, but we don't know of
-** any way to cause X to be true.
-**
-** In debugging and testing builds, this macro will abort if X is ever
-** true. In this way, developers are alerted to a possible test case
-** that causes X to be true. If a harmless macro ever fails, that is
-** an opportunity to change the macro into a testcase() and add a new
-** test case to the test suite.
-**
-** For normal production builds, harmless(X) is a no-op, since it does
-** not matter whether expression X is true or false.
-*/
-#ifdef SQLITE_DEBUG
-# define harmless(X) assert(!(X));
-#else
-# define harmless(X)
-#endif
-
-/*
** Some conditionals are optimizations only. In other words, if the
** conditionals are replaced with a constant 1 (true) or 0 (false) then
** the correct answer is still obtained, though perhaps not as quickly.
@@ -14031,6 +13384,13 @@ SQLITE_PRIVATE void sqlite3Coverage(int);
#endif
/*
+** SQLITE_OMIT_VIRTUALTABLE implies SQLITE_OMIT_ALTERTABLE
+*/
+#if defined(SQLITE_OMIT_VIRTUALTABLE) && !defined(SQLITE_OMIT_ALTERTABLE)
+# define SQLITE_OMIT_ALTERTABLE
+#endif
+
+/*
** Return true (non-zero) if the input is an integer that is too large
** to fit in 32-bits. This macro is used inside of various testcase()
** macros to verify that we have tested SQLite for large-file support.
@@ -14142,7 +13502,7 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*);
/*
** Number of entries in a hash table
*/
-/* #define sqliteHashCount(H) ((H)->count) // NOT USED */
+#define sqliteHashCount(H) ((H)->count)
#endif /* SQLITE_HASH_H */
@@ -14174,8 +13534,8 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*);
#define TK_LP 22
#define TK_RP 23
#define TK_AS 24
-#define TK_WITHOUT 25
-#define TK_COMMA 26
+#define TK_COMMA 25
+#define TK_WITHOUT 26
#define TK_ABORT 27
#define TK_ACTION 28
#define TK_AFTER 29
@@ -14438,7 +13798,7 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*);
** number of pages. A negative number N translations means that a buffer
** of -1024*N bytes is allocated and used for as many pages as it will hold.
**
-** The default value of "20" was choosen to minimize the run-time of the
+** The default value of "20" was chosen to minimize the run-time of the
** speedtest1 test program with options: --shrink-memory --reprepare
*/
#ifndef SQLITE_DEFAULT_PCACHE_INITSZ
@@ -14600,6 +13960,7 @@ typedef INT16_TYPE LogEst;
# define SQLITE_PTRSIZE __SIZEOF_POINTER__
# elif defined(i386) || defined(__i386__) || defined(_M_IX86) || \
defined(_M_ARM) || defined(__arm__) || defined(__x86) || \
+ (defined(__APPLE__) && defined(__POWERPC__)) || \
(defined(__TOS_AIX__) && !defined(__64BIT__))
# define SQLITE_PTRSIZE 4
# else
@@ -14794,11 +14155,25 @@ struct BusyHandler {
/*
** Name of table that holds the database schema.
+**
+** The PREFERRED names are used whereever possible. But LEGACY is also
+** used for backwards compatibility.
+**
+** 1. Queries can use either the PREFERRED or the LEGACY names
+** 2. The sqlite3_set_authorizer() callback uses the LEGACY name
+** 3. The PRAGMA table_list statement uses the PREFERRED name
+**
+** The LEGACY names are stored in the internal symbol hash table
+** in support of (2). Names are translated using sqlite3PreferredTableName()
+** for (3). The sqlite3FindTable() function takes care of translating
+** names for (1).
+**
+** Note that "sqlite_temp_schema" can also be called "temp.sqlite_schema".
*/
-#define DFLT_SCHEMA_TABLE "sqlite_master"
-#define DFLT_TEMP_SCHEMA_TABLE "sqlite_temp_master"
-#define ALT_SCHEMA_TABLE "sqlite_schema"
-#define ALT_TEMP_SCHEMA_TABLE "sqlite_temp_schema"
+#define LEGACY_SCHEMA_TABLE "sqlite_master"
+#define LEGACY_TEMP_SCHEMA_TABLE "sqlite_temp_master"
+#define PREFERRED_SCHEMA_TABLE "sqlite_schema"
+#define PREFERRED_TEMP_SCHEMA_TABLE "sqlite_temp_schema"
/*
@@ -14810,7 +14185,7 @@ struct BusyHandler {
** The name of the schema table. The name is different for TEMP.
*/
#define SCHEMA_TABLE(x) \
- ((!OMIT_TEMPDB)&&(x==1)?DFLT_TEMP_SCHEMA_TABLE:DFLT_SCHEMA_TABLE)
+ ((!OMIT_TEMPDB)&&(x==1)?LEGACY_TEMP_SCHEMA_TABLE:LEGACY_SCHEMA_TABLE)
/*
** A convenience macro that returns the number of elements in
@@ -15351,7 +14726,7 @@ SQLITE_PRIVATE int sqlite3BtreeIncrVacuum(Btree *);
#define BTREE_BLOBKEY 2 /* Table has keys only - no data */
SQLITE_PRIVATE int sqlite3BtreeDropTable(Btree*, int, int*);
-SQLITE_PRIVATE int sqlite3BtreeClearTable(Btree*, int, int*);
+SQLITE_PRIVATE int sqlite3BtreeClearTable(Btree*, int, i64*);
SQLITE_PRIVATE int sqlite3BtreeClearTableOfCursor(BtCursor*);
SQLITE_PRIVATE int sqlite3BtreeTripAllCursors(Btree*, int, int);
@@ -15475,13 +14850,17 @@ SQLITE_PRIVATE void sqlite3BtreeCursorHint(BtCursor*, int, ...);
#endif
SQLITE_PRIVATE int sqlite3BtreeCloseCursor(BtCursor*);
-SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
+SQLITE_PRIVATE int sqlite3BtreeTableMoveto(
BtCursor*,
- UnpackedRecord *pUnKey,
i64 intKey,
int bias,
int *pRes
);
+SQLITE_PRIVATE int sqlite3BtreeIndexMoveto(
+ BtCursor*,
+ UnpackedRecord *pUnKey,
+ int *pRes
+);
SQLITE_PRIVATE int sqlite3BtreeCursorHasMoved(BtCursor*);
SQLITE_PRIVATE int sqlite3BtreeCursorRestore(BtCursor*, int*);
SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor*, u8 flags);
@@ -15832,35 +15211,35 @@ typedef struct VdbeOpList VdbeOpList;
#define OP_If 18 /* jump */
#define OP_Not 19 /* same as TK_NOT, synopsis: r[P2]= !r[P1] */
#define OP_IfNot 20 /* jump */
-#define OP_IfNullRow 21 /* jump, synopsis: if P1.nullRow then r[P3]=NULL, goto P2 */
-#define OP_SeekLT 22 /* jump, synopsis: key=r[P3@P4] */
-#define OP_SeekLE 23 /* jump, synopsis: key=r[P3@P4] */
-#define OP_SeekGE 24 /* jump, synopsis: key=r[P3@P4] */
-#define OP_SeekGT 25 /* jump, synopsis: key=r[P3@P4] */
-#define OP_IfNotOpen 26 /* jump, synopsis: if( !csr[P1] ) goto P2 */
-#define OP_IfNoHope 27 /* jump, synopsis: key=r[P3@P4] */
-#define OP_NoConflict 28 /* jump, synopsis: key=r[P3@P4] */
-#define OP_NotFound 29 /* jump, synopsis: key=r[P3@P4] */
-#define OP_Found 30 /* jump, synopsis: key=r[P3@P4] */
-#define OP_SeekRowid 31 /* jump, synopsis: intkey=r[P3] */
-#define OP_NotExists 32 /* jump, synopsis: intkey=r[P3] */
-#define OP_Last 33 /* jump */
-#define OP_IfSmaller 34 /* jump */
-#define OP_SorterSort 35 /* jump */
-#define OP_Sort 36 /* jump */
-#define OP_Rewind 37 /* jump */
-#define OP_IdxLE 38 /* jump, synopsis: key=r[P3@P4] */
-#define OP_IdxGT 39 /* jump, synopsis: key=r[P3@P4] */
-#define OP_IdxLT 40 /* jump, synopsis: key=r[P3@P4] */
-#define OP_IdxGE 41 /* jump, synopsis: key=r[P3@P4] */
-#define OP_RowSetRead 42 /* jump, synopsis: r[P3]=rowset(P1) */
+#define OP_IsNullOrType 21 /* jump, synopsis: if typeof(r[P1]) IN (P3,5) goto P2 */
+#define OP_IfNullRow 22 /* jump, synopsis: if P1.nullRow then r[P3]=NULL, goto P2 */
+#define OP_SeekLT 23 /* jump, synopsis: key=r[P3@P4] */
+#define OP_SeekLE 24 /* jump, synopsis: key=r[P3@P4] */
+#define OP_SeekGE 25 /* jump, synopsis: key=r[P3@P4] */
+#define OP_SeekGT 26 /* jump, synopsis: key=r[P3@P4] */
+#define OP_IfNotOpen 27 /* jump, synopsis: if( !csr[P1] ) goto P2 */
+#define OP_IfNoHope 28 /* jump, synopsis: key=r[P3@P4] */
+#define OP_NoConflict 29 /* jump, synopsis: key=r[P3@P4] */
+#define OP_NotFound 30 /* jump, synopsis: key=r[P3@P4] */
+#define OP_Found 31 /* jump, synopsis: key=r[P3@P4] */
+#define OP_SeekRowid 32 /* jump, synopsis: intkey=r[P3] */
+#define OP_NotExists 33 /* jump, synopsis: intkey=r[P3] */
+#define OP_Last 34 /* jump */
+#define OP_IfSmaller 35 /* jump */
+#define OP_SorterSort 36 /* jump */
+#define OP_Sort 37 /* jump */
+#define OP_Rewind 38 /* jump */
+#define OP_IdxLE 39 /* jump, synopsis: key=r[P3@P4] */
+#define OP_IdxGT 40 /* jump, synopsis: key=r[P3@P4] */
+#define OP_IdxLT 41 /* jump, synopsis: key=r[P3@P4] */
+#define OP_IdxGE 42 /* jump, synopsis: key=r[P3@P4] */
#define OP_Or 43 /* same as TK_OR, synopsis: r[P3]=(r[P1] || r[P2]) */
#define OP_And 44 /* same as TK_AND, synopsis: r[P3]=(r[P1] && r[P2]) */
-#define OP_RowSetTest 45 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */
-#define OP_Program 46 /* jump */
-#define OP_FkIfZero 47 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
-#define OP_IfPos 48 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
-#define OP_IfNotZero 49 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */
+#define OP_RowSetRead 45 /* jump, synopsis: r[P3]=rowset(P1) */
+#define OP_RowSetTest 46 /* jump, synopsis: if r[P3] in rowset(P1) goto P2 */
+#define OP_Program 47 /* jump */
+#define OP_FkIfZero 48 /* jump, synopsis: if fkctr[P1]==0 goto P2 */
+#define OP_IfPos 49 /* jump, synopsis: if r[P1]>0 then r[P1]-=P3, goto P2 */
#define OP_IsNull 50 /* jump, same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */
#define OP_NotNull 51 /* jump, same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */
#define OP_Ne 52 /* jump, same as TK_NE, synopsis: IF r[P3]!=r[P1] */
@@ -15870,49 +15249,49 @@ typedef struct VdbeOpList VdbeOpList;
#define OP_Lt 56 /* jump, same as TK_LT, synopsis: IF r[P3]<r[P1] */
#define OP_Ge 57 /* jump, same as TK_GE, synopsis: IF r[P3]>=r[P1] */
#define OP_ElseEq 58 /* jump, same as TK_ESCAPE */
-#define OP_DecrJumpZero 59 /* jump, synopsis: if (--r[P1])==0 goto P2 */
-#define OP_IncrVacuum 60 /* jump */
-#define OP_VNext 61 /* jump */
-#define OP_Init 62 /* jump, synopsis: Start at P2 */
-#define OP_PureFunc 63 /* synopsis: r[P3]=func(r[P2@NP]) */
-#define OP_Function 64 /* synopsis: r[P3]=func(r[P2@NP]) */
-#define OP_Return 65
-#define OP_EndCoroutine 66
-#define OP_HaltIfNull 67 /* synopsis: if r[P3]=null halt */
-#define OP_Halt 68
-#define OP_Integer 69 /* synopsis: r[P2]=P1 */
-#define OP_Int64 70 /* synopsis: r[P2]=P4 */
-#define OP_String 71 /* synopsis: r[P2]='P4' (len=P1) */
-#define OP_Null 72 /* synopsis: r[P2..P3]=NULL */
-#define OP_SoftNull 73 /* synopsis: r[P1]=NULL */
-#define OP_Blob 74 /* synopsis: r[P2]=P4 (len=P1) */
-#define OP_Variable 75 /* synopsis: r[P2]=parameter(P1,P4) */
-#define OP_Move 76 /* synopsis: r[P2@P3]=r[P1@P3] */
-#define OP_Copy 77 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
-#define OP_SCopy 78 /* synopsis: r[P2]=r[P1] */
-#define OP_IntCopy 79 /* synopsis: r[P2]=r[P1] */
-#define OP_ChngCntRow 80 /* synopsis: output=r[P1] */
-#define OP_ResultRow 81 /* synopsis: output=r[P1@P2] */
-#define OP_CollSeq 82
-#define OP_AddImm 83 /* synopsis: r[P1]=r[P1]+P2 */
-#define OP_RealAffinity 84
-#define OP_Cast 85 /* synopsis: affinity(r[P1]) */
-#define OP_Permutation 86
-#define OP_Compare 87 /* synopsis: r[P1@P3] <-> r[P2@P3] */
-#define OP_IsTrue 88 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
-#define OP_ZeroOrNull 89 /* synopsis: r[P2] = 0 OR NULL */
-#define OP_Offset 90 /* synopsis: r[P3] = sqlite_offset(P1) */
-#define OP_Column 91 /* synopsis: r[P3]=PX */
-#define OP_Affinity 92 /* synopsis: affinity(r[P1@P2]) */
-#define OP_MakeRecord 93 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
-#define OP_Count 94 /* synopsis: r[P2]=count() */
-#define OP_ReadCookie 95
-#define OP_SetCookie 96
-#define OP_ReopenIdx 97 /* synopsis: root=P2 iDb=P3 */
-#define OP_OpenRead 98 /* synopsis: root=P2 iDb=P3 */
-#define OP_OpenWrite 99 /* synopsis: root=P2 iDb=P3 */
-#define OP_OpenDup 100
-#define OP_OpenAutoindex 101 /* synopsis: nColumn=P2 */
+#define OP_IfNotZero 59 /* jump, synopsis: if r[P1]!=0 then r[P1]--, goto P2 */
+#define OP_DecrJumpZero 60 /* jump, synopsis: if (--r[P1])==0 goto P2 */
+#define OP_IncrVacuum 61 /* jump */
+#define OP_VNext 62 /* jump */
+#define OP_Init 63 /* jump, synopsis: Start at P2 */
+#define OP_PureFunc 64 /* synopsis: r[P3]=func(r[P2@NP]) */
+#define OP_Function 65 /* synopsis: r[P3]=func(r[P2@NP]) */
+#define OP_Return 66
+#define OP_EndCoroutine 67
+#define OP_HaltIfNull 68 /* synopsis: if r[P3]=null halt */
+#define OP_Halt 69
+#define OP_Integer 70 /* synopsis: r[P2]=P1 */
+#define OP_Int64 71 /* synopsis: r[P2]=P4 */
+#define OP_String 72 /* synopsis: r[P2]='P4' (len=P1) */
+#define OP_Null 73 /* synopsis: r[P2..P3]=NULL */
+#define OP_SoftNull 74 /* synopsis: r[P1]=NULL */
+#define OP_Blob 75 /* synopsis: r[P2]=P4 (len=P1) */
+#define OP_Variable 76 /* synopsis: r[P2]=parameter(P1,P4) */
+#define OP_Move 77 /* synopsis: r[P2@P3]=r[P1@P3] */
+#define OP_Copy 78 /* synopsis: r[P2@P3+1]=r[P1@P3+1] */
+#define OP_SCopy 79 /* synopsis: r[P2]=r[P1] */
+#define OP_IntCopy 80 /* synopsis: r[P2]=r[P1] */
+#define OP_ChngCntRow 81 /* synopsis: output=r[P1] */
+#define OP_ResultRow 82 /* synopsis: output=r[P1@P2] */
+#define OP_CollSeq 83
+#define OP_AddImm 84 /* synopsis: r[P1]=r[P1]+P2 */
+#define OP_RealAffinity 85
+#define OP_Cast 86 /* synopsis: affinity(r[P1]) */
+#define OP_Permutation 87
+#define OP_Compare 88 /* synopsis: r[P1@P3] <-> r[P2@P3] */
+#define OP_IsTrue 89 /* synopsis: r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4 */
+#define OP_ZeroOrNull 90 /* synopsis: r[P2] = 0 OR NULL */
+#define OP_Offset 91 /* synopsis: r[P3] = sqlite_offset(P1) */
+#define OP_Column 92 /* synopsis: r[P3]=PX */
+#define OP_TypeCheck 93 /* synopsis: typecheck(r[P1@P2]) */
+#define OP_Affinity 94 /* synopsis: affinity(r[P1@P2]) */
+#define OP_MakeRecord 95 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
+#define OP_Count 96 /* synopsis: r[P2]=count() */
+#define OP_ReadCookie 97
+#define OP_SetCookie 98
+#define OP_ReopenIdx 99 /* synopsis: root=P2 iDb=P3 */
+#define OP_OpenRead 100 /* synopsis: root=P2 iDb=P3 */
+#define OP_OpenWrite 101 /* synopsis: root=P2 iDb=P3 */
#define OP_BitAnd 102 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
#define OP_BitOr 103 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
#define OP_ShiftLeft 104 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
@@ -15923,74 +15302,76 @@ typedef struct VdbeOpList VdbeOpList;
#define OP_Divide 109 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
#define OP_Remainder 110 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
#define OP_Concat 111 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
-#define OP_OpenEphemeral 112 /* synopsis: nColumn=P2 */
+#define OP_OpenDup 112
#define OP_BitNot 113 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
-#define OP_SorterOpen 114
-#define OP_SequenceTest 115 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
+#define OP_OpenAutoindex 114 /* synopsis: nColumn=P2 */
+#define OP_OpenEphemeral 115 /* synopsis: nColumn=P2 */
#define OP_String8 116 /* same as TK_STRING, synopsis: r[P2]='P4' */
-#define OP_OpenPseudo 117 /* synopsis: P3 columns in r[P2] */
-#define OP_Close 118
-#define OP_ColumnsUsed 119
-#define OP_SeekScan 120 /* synopsis: Scan-ahead up to P1 rows */
-#define OP_SeekHit 121 /* synopsis: set P2<=seekHit<=P3 */
-#define OP_Sequence 122 /* synopsis: r[P2]=cursor[P1].ctr++ */
-#define OP_NewRowid 123 /* synopsis: r[P2]=rowid */
-#define OP_Insert 124 /* synopsis: intkey=r[P3] data=r[P2] */
-#define OP_RowCell 125
-#define OP_Delete 126
-#define OP_ResetCount 127
-#define OP_SorterCompare 128 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
-#define OP_SorterData 129 /* synopsis: r[P2]=data */
-#define OP_RowData 130 /* synopsis: r[P2]=data */
-#define OP_Rowid 131 /* synopsis: r[P2]=rowid */
-#define OP_NullRow 132
-#define OP_SeekEnd 133
-#define OP_IdxInsert 134 /* synopsis: key=r[P2] */
-#define OP_SorterInsert 135 /* synopsis: key=r[P2] */
-#define OP_IdxDelete 136 /* synopsis: key=r[P2@P3] */
-#define OP_DeferredSeek 137 /* synopsis: Move P3 to P1.rowid if needed */
-#define OP_IdxRowid 138 /* synopsis: r[P2]=rowid */
-#define OP_FinishSeek 139
-#define OP_Destroy 140
-#define OP_Clear 141
-#define OP_ResetSorter 142
-#define OP_CreateBtree 143 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
-#define OP_SqlExec 144
-#define OP_ParseSchema 145
-#define OP_LoadAnalysis 146
-#define OP_DropTable 147
-#define OP_DropIndex 148
-#define OP_DropTrigger 149
-#define OP_IntegrityCk 150
-#define OP_RowSetAdd 151 /* synopsis: rowset(P1)=r[P2] */
+#define OP_SorterOpen 117
+#define OP_SequenceTest 118 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
+#define OP_OpenPseudo 119 /* synopsis: P3 columns in r[P2] */
+#define OP_Close 120
+#define OP_ColumnsUsed 121
+#define OP_SeekScan 122 /* synopsis: Scan-ahead up to P1 rows */
+#define OP_SeekHit 123 /* synopsis: set P2<=seekHit<=P3 */
+#define OP_Sequence 124 /* synopsis: r[P2]=cursor[P1].ctr++ */
+#define OP_NewRowid 125 /* synopsis: r[P2]=rowid */
+#define OP_Insert 126 /* synopsis: intkey=r[P3] data=r[P2] */
+#define OP_RowCell 127
+#define OP_Delete 128
+#define OP_ResetCount 129
+#define OP_SorterCompare 130 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
+#define OP_SorterData 131 /* synopsis: r[P2]=data */
+#define OP_RowData 132 /* synopsis: r[P2]=data */
+#define OP_Rowid 133 /* synopsis: r[P2]=rowid */
+#define OP_NullRow 134
+#define OP_SeekEnd 135
+#define OP_IdxInsert 136 /* synopsis: key=r[P2] */
+#define OP_SorterInsert 137 /* synopsis: key=r[P2] */
+#define OP_IdxDelete 138 /* synopsis: key=r[P2@P3] */
+#define OP_DeferredSeek 139 /* synopsis: Move P3 to P1.rowid if needed */
+#define OP_IdxRowid 140 /* synopsis: r[P2]=rowid */
+#define OP_FinishSeek 141
+#define OP_Destroy 142
+#define OP_Clear 143
+#define OP_ResetSorter 144
+#define OP_CreateBtree 145 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
+#define OP_SqlExec 146
+#define OP_ParseSchema 147
+#define OP_LoadAnalysis 148
+#define OP_DropTable 149
+#define OP_DropIndex 150
+#define OP_DropTrigger 151
#define OP_Real 152 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
-#define OP_Param 153
-#define OP_FkCounter 154 /* synopsis: fkctr[P1]+=P2 */
-#define OP_MemMax 155 /* synopsis: r[P1]=max(r[P1],r[P2]) */
-#define OP_OffsetLimit 156 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
-#define OP_AggInverse 157 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
-#define OP_AggStep 158 /* synopsis: accum=r[P3] step(r[P2@P5]) */
-#define OP_AggStep1 159 /* synopsis: accum=r[P3] step(r[P2@P5]) */
-#define OP_AggValue 160 /* synopsis: r[P3]=value N=P2 */
-#define OP_AggFinal 161 /* synopsis: accum=r[P1] N=P2 */
-#define OP_Expire 162
-#define OP_CursorLock 163
-#define OP_CursorUnlock 164
-#define OP_TableLock 165 /* synopsis: iDb=P1 root=P2 write=P3 */
-#define OP_VBegin 166
-#define OP_VCreate 167
-#define OP_VDestroy 168
-#define OP_VOpen 169
-#define OP_VColumn 170 /* synopsis: r[P3]=vcolumn(P2) */
-#define OP_VRename 171
-#define OP_Pagecount 172
-#define OP_MaxPgcnt 173
-#define OP_Trace 174
-#define OP_CursorHint 175
-#define OP_ReleaseReg 176 /* synopsis: release r[P1@P2] mask P3 */
-#define OP_Noop 177
-#define OP_Explain 178
-#define OP_Abortable 179
+#define OP_IntegrityCk 153
+#define OP_RowSetAdd 154 /* synopsis: rowset(P1)=r[P2] */
+#define OP_Param 155
+#define OP_FkCounter 156 /* synopsis: fkctr[P1]+=P2 */
+#define OP_MemMax 157 /* synopsis: r[P1]=max(r[P1],r[P2]) */
+#define OP_OffsetLimit 158 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
+#define OP_AggInverse 159 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
+#define OP_AggStep 160 /* synopsis: accum=r[P3] step(r[P2@P5]) */
+#define OP_AggStep1 161 /* synopsis: accum=r[P3] step(r[P2@P5]) */
+#define OP_AggValue 162 /* synopsis: r[P3]=value N=P2 */
+#define OP_AggFinal 163 /* synopsis: accum=r[P1] N=P2 */
+#define OP_Expire 164
+#define OP_CursorLock 165
+#define OP_CursorUnlock 166
+#define OP_TableLock 167 /* synopsis: iDb=P1 root=P2 write=P3 */
+#define OP_VBegin 168
+#define OP_VCreate 169
+#define OP_VDestroy 170
+#define OP_VOpen 171
+#define OP_VColumn 172 /* synopsis: r[P3]=vcolumn(P2) */
+#define OP_VRename 173
+#define OP_Pagecount 174
+#define OP_MaxPgcnt 175
+#define OP_Trace 176
+#define OP_CursorHint 177
+#define OP_ReleaseReg 178 /* synopsis: release r[P1@P2] mask P3 */
+#define OP_Noop 179
+#define OP_Explain 180
+#define OP_Abortable 181
/* Properties such as "out2" or "jump" that are specified in
** comments following the "case" for each opcode in the vdbe.c
@@ -16005,27 +15386,27 @@ typedef struct VdbeOpList VdbeOpList;
#define OPFLG_INITIALIZER {\
/* 0 */ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x10,\
/* 8 */ 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03,\
-/* 16 */ 0x01, 0x01, 0x03, 0x12, 0x03, 0x01, 0x09, 0x09,\
-/* 24 */ 0x09, 0x09, 0x01, 0x09, 0x09, 0x09, 0x09, 0x09,\
-/* 32 */ 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\
-/* 40 */ 0x01, 0x01, 0x23, 0x26, 0x26, 0x0b, 0x01, 0x01,\
-/* 48 */ 0x03, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
-/* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x01, 0x01, 0x01, 0x00,\
-/* 64 */ 0x00, 0x02, 0x02, 0x08, 0x00, 0x10, 0x10, 0x10,\
-/* 72 */ 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10,\
-/* 80 */ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00,\
-/* 88 */ 0x12, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x10, 0x10,\
-/* 96 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26,\
+/* 16 */ 0x01, 0x01, 0x03, 0x12, 0x03, 0x03, 0x01, 0x09,\
+/* 24 */ 0x09, 0x09, 0x09, 0x01, 0x09, 0x09, 0x09, 0x09,\
+/* 32 */ 0x09, 0x09, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,\
+/* 40 */ 0x01, 0x01, 0x01, 0x26, 0x26, 0x23, 0x0b, 0x01,\
+/* 48 */ 0x01, 0x03, 0x03, 0x03, 0x0b, 0x0b, 0x0b, 0x0b,\
+/* 56 */ 0x0b, 0x0b, 0x01, 0x03, 0x03, 0x01, 0x01, 0x01,\
+/* 64 */ 0x00, 0x00, 0x02, 0x02, 0x08, 0x00, 0x10, 0x10,\
+/* 72 */ 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,\
+/* 80 */ 0x10, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00,\
+/* 88 */ 0x00, 0x12, 0x1e, 0x20, 0x00, 0x00, 0x00, 0x00,\
+/* 96 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26,\
/* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\
/* 112 */ 0x00, 0x12, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\
-/* 120 */ 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,\
-/* 128 */ 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x04, 0x04,\
-/* 136 */ 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x10,\
-/* 144 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,\
-/* 152 */ 0x10, 0x10, 0x00, 0x04, 0x1a, 0x00, 0x00, 0x00,\
+/* 120 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\
+/* 128 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,\
+/* 136 */ 0x04, 0x04, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00,\
+/* 144 */ 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
+/* 152 */ 0x10, 0x00, 0x06, 0x10, 0x00, 0x04, 0x1a, 0x00,\
/* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
-/* 168 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\
-/* 176 */ 0x00, 0x00, 0x00, 0x00,}
+/* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10,\
+/* 176 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}
/* The resolve3P2Values() routine is able to run faster if it knows
** the value of the largest JUMP opcode. The smaller the maximum
@@ -16033,7 +15414,7 @@ typedef struct VdbeOpList VdbeOpList;
** generated this include file strives to group all JUMP opcodes
** together near the beginning of the list.
*/
-#define SQLITE_MX_JUMP_OPCODE 62 /* Maximum JUMP opcode */
+#define SQLITE_MX_JUMP_OPCODE 63 /* Maximum JUMP opcode */
/************** End of opcodes.h *********************************************/
/************** Continuing where we left off in vdbe.h ***********************/
@@ -17110,10 +16491,10 @@ struct sqlite3 {
u8 mTrace; /* zero or more SQLITE_TRACE flags */
u8 noSharedCache; /* True if no shared-cache backends */
u8 nSqlExec; /* Number of pending OP_SqlExec opcodes */
+ u8 eOpenState; /* Current condition of the connection */
int nextPagesize; /* Pagesize after VACUUM if >0 */
- u32 magic; /* Magic number for detect library misuse */
- int nChange; /* Value returned by sqlite3_changes() */
- int nTotalChange; /* Value returned by sqlite3_total_changes() */
+ i64 nChange; /* Value returned by sqlite3_changes() */
+ i64 nTotalChange; /* Value returned by sqlite3_total_changes() */
int aLimit[SQLITE_N_LIMIT]; /* Limits */
int nMaxSorterMmap; /* Maximum size of regions mapped by sorter */
struct sqlite3InitInfo { /* Information used during initialization */
@@ -17123,7 +16504,7 @@ struct sqlite3 {
unsigned orphanTrigger : 1; /* Last statement is orphaned TEMP trigger */
unsigned imposterTable : 1; /* Building an imposter table */
unsigned reopenMemdb : 1; /* ATTACH is really a reopen using MemDB */
- char **azInit; /* "type", "name", and "tbl_name" columns */
+ const char **azInit; /* "type", "name", and "tbl_name" columns */
} init;
int nVdbeActive; /* Number of VDBEs currently running */
int nVdbeRead; /* Number of active VDBEs that read or write */
@@ -17133,10 +16514,10 @@ struct sqlite3 {
int nExtension; /* Number of loaded extensions */
void **aExtension; /* Array of shared library handles */
union {
- void (*xLegacy)(void*,const char*); /* Legacy trace function */
- int (*xV2)(u32,void*,void*,void*); /* V2 Trace function */
+ void (*xLegacy)(void*,const char*); /* mTrace==SQLITE_TRACE_LEGACY */
+ int (*xV2)(u32,void*,void*,void*); /* All other mTrace values */
} trace;
- void *pTraceArg; /* Argument to the trace function */
+ void *pTraceArg; /* Argument to the trace function */
#ifndef SQLITE_OMIT_DEPRECATED
void (*xProfile)(void*,const char*,u64); /* Profiling function */
void *pProfileArg; /* Argument to profile function */
@@ -17147,6 +16528,9 @@ struct sqlite3 {
void (*xRollbackCallback)(void*); /* Invoked at every commit. */
void *pUpdateArg;
void (*xUpdateCallback)(void*,int, const char*,const char*,sqlite_int64);
+ void *pAutovacPagesArg; /* Client argument to autovac_pages */
+ void (*xAutovacDestr)(void*); /* Destructor for pAutovacPAgesArg */
+ unsigned int (*xAutovacPages)(void*,const char*,u32,u32,u32);
Parse *pParse; /* Current parse */
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
void *pPreUpdateArg; /* First argument to xPreUpdateCallback */
@@ -17276,6 +16660,7 @@ struct sqlite3 {
#define SQLITE_CountRows HI(0x00001) /* Count rows changed by INSERT, */
/* DELETE, or UPDATE and return */
/* the count using a callback. */
+#define SQLITE_CorruptRdOnly HI(0x00002) /* Prohibit writes due to error */
/* Flags used only if debugging */
#ifdef SQLITE_DEBUG
@@ -17322,6 +16707,8 @@ struct sqlite3 {
#define SQLITE_PropagateConst 0x00008000 /* The constant propagation opt */
#define SQLITE_MinMaxOpt 0x00010000 /* The min/max optimization */
#define SQLITE_SeekScan 0x00020000 /* The OP_SeekScan optimization */
+#define SQLITE_OmitOrderBy 0x00040000 /* Omit pointless ORDER BY */
+ /* TH3 expects this value ^^^^^^^^^^ to be 0x40000. Coordinate any change */
#define SQLITE_AllOpts 0xffffffff /* All optimizations */
/*
@@ -17336,17 +16723,16 @@ struct sqlite3 {
*/
#define ConstFactorOk(P) ((P)->okConstFactor)
-/*
-** Possible values for the sqlite.magic field.
-** The numbers are obtained at random and have no special meaning, other
-** than being distinct from one another.
+/* Possible values for the sqlite3.eOpenState field.
+** The numbers are randomly selected such that a minimum of three bits must
+** change to convert any number to another or to zero
*/
-#define SQLITE_MAGIC_OPEN 0xa029a697 /* Database is open */
-#define SQLITE_MAGIC_CLOSED 0x9f3c2d33 /* Database is closed */
-#define SQLITE_MAGIC_SICK 0x4b771290 /* Error and awaiting close */
-#define SQLITE_MAGIC_BUSY 0xf03b7906 /* Database currently in use */
-#define SQLITE_MAGIC_ERROR 0xb5357930 /* An SQLITE_MISUSE error occurred */
-#define SQLITE_MAGIC_ZOMBIE 0x64cffc7f /* Close with last statement close */
+#define SQLITE_STATE_OPEN 0x76 /* Database is open */
+#define SQLITE_STATE_CLOSED 0xce /* Database is closed */
+#define SQLITE_STATE_SICK 0xba /* Error and awaiting close */
+#define SQLITE_STATE_BUSY 0x6d /* Database currently in use */
+#define SQLITE_STATE_ERROR 0xd5 /* An SQLITE_MISUSE error occurred */
+#define SQLITE_STATE_ZOMBIE 0xa7 /* Close with last statement close */
/*
** Each SQL function is defined by an instance of the following
@@ -17371,7 +16757,7 @@ struct FuncDef {
union {
FuncDef *pHash; /* Next with a different name but the same hash */
FuncDestructor *pDestructor; /* Reference counted destructor function */
- } u;
+ } u; /* pHash if SQLITE_FUNC_BUILTIN, pDestructor otherwise */
};
/*
@@ -17401,12 +16787,13 @@ struct FuncDestructor {
** are assert() statements in the code to verify this.
**
** Value constraints (enforced via assert()):
-** SQLITE_FUNC_MINMAX == NC_MinMaxAgg == SF_MinMaxAgg
-** SQLITE_FUNC_LENGTH == OPFLAG_LENGTHARG
-** SQLITE_FUNC_TYPEOF == OPFLAG_TYPEOFARG
-** SQLITE_FUNC_CONSTANT == SQLITE_DETERMINISTIC from the API
-** SQLITE_FUNC_DIRECT == SQLITE_DIRECTONLY from the API
-** SQLITE_FUNC_UNSAFE == SQLITE_INNOCUOUS
+** SQLITE_FUNC_MINMAX == NC_MinMaxAgg == SF_MinMaxAgg
+** SQLITE_FUNC_ANYORDER == NC_OrderAgg == SF_OrderByReqd
+** SQLITE_FUNC_LENGTH == OPFLAG_LENGTHARG
+** SQLITE_FUNC_TYPEOF == OPFLAG_TYPEOFARG
+** SQLITE_FUNC_CONSTANT == SQLITE_DETERMINISTIC from the API
+** SQLITE_FUNC_DIRECT == SQLITE_DIRECTONLY from the API
+** SQLITE_FUNC_UNSAFE == SQLITE_INNOCUOUS
** SQLITE_FUNC_ENCMASK depends on SQLITE_UTF* macros in the API
*/
#define SQLITE_FUNC_ENCMASK 0x0003 /* SQLITE_UTF8, SQLITE_UTF16BE or UTF16LE */
@@ -17431,6 +16818,8 @@ struct FuncDestructor {
#define SQLITE_FUNC_SUBTYPE 0x00100000 /* Result likely to have sub-type */
#define SQLITE_FUNC_UNSAFE 0x00200000 /* Function has side effects */
#define SQLITE_FUNC_INLINE 0x00400000 /* Functions implemented in-line */
+#define SQLITE_FUNC_BUILTIN 0x00800000 /* This is a built-in function */
+#define SQLITE_FUNC_ANYORDER 0x08000000 /* count/min/max aggregate */
/* Identifier numbers for each in-line function */
#define INLINEFUNC_coalesce 0
@@ -17508,44 +16897,51 @@ struct FuncDestructor {
** parameter.
*/
#define FUNCTION(zName, nArg, iArg, bNC, xFunc) \
- {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
+ {nArg, SQLITE_FUNC_BUILTIN|\
+ SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
#define VFUNCTION(zName, nArg, iArg, bNC, xFunc) \
- {nArg, SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
#define SFUNCTION(zName, nArg, iArg, bNC, xFunc) \
- {nArg, SQLITE_UTF8|SQLITE_DIRECTONLY|SQLITE_FUNC_UNSAFE, \
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_DIRECTONLY|SQLITE_FUNC_UNSAFE, \
SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
#define MFUNCTION(zName, nArg, xPtr, xFunc) \
- {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8, \
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_FUNC_CONSTANT|SQLITE_UTF8, \
xPtr, 0, xFunc, 0, 0, 0, #zName, {0} }
#define INLINE_FUNC(zName, nArg, iArg, mFlags) \
- {nArg, SQLITE_UTF8|SQLITE_FUNC_INLINE|SQLITE_FUNC_CONSTANT|(mFlags), \
+ {nArg, SQLITE_FUNC_BUILTIN|\
+ SQLITE_UTF8|SQLITE_FUNC_INLINE|SQLITE_FUNC_CONSTANT|(mFlags), \
SQLITE_INT_TO_PTR(iArg), 0, noopFunc, 0, 0, 0, #zName, {0} }
#define TEST_FUNC(zName, nArg, iArg, mFlags) \
- {nArg, SQLITE_UTF8|SQLITE_FUNC_INTERNAL|SQLITE_FUNC_TEST| \
+ {nArg, SQLITE_FUNC_BUILTIN|\
+ SQLITE_UTF8|SQLITE_FUNC_INTERNAL|SQLITE_FUNC_TEST| \
SQLITE_FUNC_INLINE|SQLITE_FUNC_CONSTANT|(mFlags), \
SQLITE_INT_TO_PTR(iArg), 0, noopFunc, 0, 0, 0, #zName, {0} }
#define DFUNCTION(zName, nArg, iArg, bNC, xFunc) \
- {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8, \
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_FUNC_SLOCHNG|SQLITE_UTF8, \
0, 0, xFunc, 0, 0, 0, #zName, {0} }
#define PURE_DATE(zName, nArg, iArg, bNC, xFunc) \
- {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|SQLITE_FUNC_CONSTANT, \
+ {nArg, SQLITE_FUNC_BUILTIN|\
+ SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|SQLITE_FUNC_CONSTANT, \
(void*)&sqlite3Config, 0, xFunc, 0, 0, 0, #zName, {0} }
#define FUNCTION2(zName, nArg, iArg, bNC, xFunc, extraFlags) \
- {nArg,SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL)|extraFlags,\
+ {nArg, SQLITE_FUNC_BUILTIN|\
+ SQLITE_FUNC_CONSTANT|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL)|extraFlags,\
SQLITE_INT_TO_PTR(iArg), 0, xFunc, 0, 0, 0, #zName, {0} }
#define STR_FUNCTION(zName, nArg, pArg, bNC, xFunc) \
- {nArg, SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
+ {nArg, SQLITE_FUNC_BUILTIN|\
+ SQLITE_FUNC_SLOCHNG|SQLITE_UTF8|(bNC*SQLITE_FUNC_NEEDCOLL), \
pArg, 0, xFunc, 0, 0, 0, #zName, }
#define LIKEFUNC(zName, nArg, arg, flags) \
- {nArg, SQLITE_FUNC_CONSTANT|SQLITE_UTF8|flags, \
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_FUNC_CONSTANT|SQLITE_UTF8|flags, \
(void *)arg, 0, likeFunc, 0, 0, 0, #zName, {0} }
#define WAGGREGATE(zName, nArg, arg, nc, xStep, xFinal, xValue, xInverse, f) \
- {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|f, \
+ {nArg, SQLITE_FUNC_BUILTIN|SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|f, \
SQLITE_INT_TO_PTR(arg), 0, xStep,xFinal,xValue,xInverse,#zName, {0}}
#define INTERNAL_FUNCTION(zName, nArg, xFunc) \
- {nArg, SQLITE_FUNC_INTERNAL|SQLITE_UTF8|SQLITE_FUNC_CONSTANT, \
+ {nArg, SQLITE_FUNC_BUILTIN|\
+ SQLITE_FUNC_INTERNAL|SQLITE_UTF8|SQLITE_FUNC_CONSTANT, \
0, 0, xFunc, 0, 0, 0, #zName, {0} }
@@ -17601,18 +16997,42 @@ struct Module {
** or equal to the table column index. It is
** equal if and only if there are no VIRTUAL
** columns to the left.
+**
+** Notes on zCnName:
+** The zCnName field stores the name of the column, the datatype of the
+** column, and the collating sequence for the column, in that order, all in
+** a single allocation. Each string is 0x00 terminated. The datatype
+** is only included if the COLFLAG_HASTYPE bit of colFlags is set and the
+** collating sequence name is only included if the COLFLAG_HASCOLL bit is
+** set.
*/
struct Column {
- char *zName; /* Name of this column, \000, then the type */
- Expr *pDflt; /* Default value or GENERATED ALWAYS AS value */
- char *zColl; /* Collating sequence. If NULL, use the default */
- u8 notNull; /* An OE_ code for handling a NOT NULL constraint */
- char affinity; /* One of the SQLITE_AFF_... values */
- u8 szEst; /* Estimated size of value in this column. sizeof(INT)==1 */
- u8 hName; /* Column name hash for faster lookup */
- u16 colFlags; /* Boolean properties. See COLFLAG_ defines below */
+ char *zCnName; /* Name of this column */
+ unsigned notNull :4; /* An OE_ code for handling a NOT NULL constraint */
+ unsigned eCType :4; /* One of the standard types */
+ char affinity; /* One of the SQLITE_AFF_... values */
+ u8 szEst; /* Est size of value in this column. sizeof(INT)==1 */
+ u8 hName; /* Column name hash for faster lookup */
+ u16 iDflt; /* 1-based index of DEFAULT. 0 means "none" */
+ u16 colFlags; /* Boolean properties. See COLFLAG_ defines below */
};
+/* Allowed values for Column.eCType.
+**
+** Values must match entries in the global constant arrays
+** sqlite3StdTypeLen[] and sqlite3StdType[]. Each value is one more
+** than the offset into these arrays for the corresponding name.
+** Adjust the SQLITE_N_STDTYPE value if adding or removing entries.
+*/
+#define COLTYPE_CUSTOM 0 /* Type appended to zName */
+#define COLTYPE_ANY 1
+#define COLTYPE_BLOB 2
+#define COLTYPE_INT 3
+#define COLTYPE_INTEGER 4
+#define COLTYPE_REAL 5
+#define COLTYPE_TEXT 6
+#define SQLITE_N_STDTYPE 6 /* Number of standard types */
+
/* Allowed values for Column.colFlags.
**
** Constraints:
@@ -17629,6 +17049,7 @@ struct Column {
#define COLFLAG_STORED 0x0040 /* GENERATED ALWAYS AS ... STORED */
#define COLFLAG_NOTAVAIL 0x0080 /* STORED column not yet calculated */
#define COLFLAG_BUSY 0x0100 /* Blocks recursion on GENERATED columns */
+#define COLFLAG_HASCOLL 0x0200 /* Has collating sequence name in zCnName */
#define COLFLAG_GENERATED 0x0060 /* Combo: _STORED, _VIRTUAL */
#define COLFLAG_NOINSERT 0x0062 /* Combo: _HIDDEN, _STORED, _VIRTUAL */
@@ -17758,15 +17179,13 @@ struct VTable {
#define SQLITE_VTABRISK_High 2
/*
-** The schema for each SQL table and view is represented in memory
-** by an instance of the following structure.
+** The schema for each SQL table, virtual table, and view is represented
+** in memory by an instance of the following structure.
*/
struct Table {
char *zName; /* Name of the table or view */
Column *aCol; /* Information about each column */
Index *pIndex; /* List of SQL indexes on this table. */
- Select *pSelect; /* NULL for tables. Points to definition if a view. */
- FKey *pFKey; /* Linked list of all foreign keys in this table */
char *zColAff; /* String defining the affinity of each column */
ExprList *pCheck; /* All CHECK constraints */
/* ... also used as column name list in a VIEW */
@@ -17782,15 +17201,24 @@ struct Table {
LogEst costMult; /* Cost multiplier for using this table */
#endif
u8 keyConf; /* What to do in case of uniqueness conflict on iPKey */
-#ifndef SQLITE_OMIT_ALTERTABLE
- int addColOffset; /* Offset in CREATE TABLE stmt to add a new column */
-#endif
-#ifndef SQLITE_OMIT_VIRTUALTABLE
- int nModuleArg; /* Number of arguments to the module */
- char **azModuleArg; /* 0: module 1: schema 2: vtab name 3...: args */
- VTable *pVTable; /* List of VTable objects. */
-#endif
- Trigger *pTrigger; /* List of triggers stored in pSchema */
+ u8 eTabType; /* 0: normal, 1: virtual, 2: view */
+ union {
+ struct { /* Used by ordinary tables: */
+ int addColOffset; /* Offset in CREATE TABLE stmt to add a new column */
+ FKey *pFKey; /* Linked list of all foreign keys in this table */
+ ExprList *pDfltList; /* DEFAULT clauses on various columns.
+ ** Or the AS clause for generated columns. */
+ } tab;
+ struct { /* Used by views: */
+ Select *pSelect; /* View definition */
+ } view;
+ struct { /* Used by virtual tables only: */
+ int nArg; /* Number of arguments to the module */
+ char **azArg; /* 0: module 1: schema 2: vtab name 3...: args */
+ VTable *p; /* List of VTable objects. */
+ } vtab;
+ } u;
+ Trigger *pTrigger; /* List of triggers on this object */
Schema *pSchema; /* Schema that contains this table */
};
@@ -17809,24 +17237,35 @@ struct Table {
** TF_HasStored == COLFLAG_STORED
** TF_HasHidden == COLFLAG_HIDDEN
*/
-#define TF_Readonly 0x0001 /* Read-only system table */
-#define TF_HasHidden 0x0002 /* Has one or more hidden columns */
-#define TF_HasPrimaryKey 0x0004 /* Table has a primary key */
-#define TF_Autoincrement 0x0008 /* Integer primary key is autoincrement */
-#define TF_HasStat1 0x0010 /* nRowLogEst set from sqlite_stat1 */
-#define TF_HasVirtual 0x0020 /* Has one or more VIRTUAL columns */
-#define TF_HasStored 0x0040 /* Has one or more STORED columns */
-#define TF_HasGenerated 0x0060 /* Combo: HasVirtual + HasStored */
-#define TF_WithoutRowid 0x0080 /* No rowid. PRIMARY KEY is the key */
-#define TF_StatsUsed 0x0100 /* Query planner decisions affected by
+#define TF_Readonly 0x00000001 /* Read-only system table */
+#define TF_HasHidden 0x00000002 /* Has one or more hidden columns */
+#define TF_HasPrimaryKey 0x00000004 /* Table has a primary key */
+#define TF_Autoincrement 0x00000008 /* Integer primary key is autoincrement */
+#define TF_HasStat1 0x00000010 /* nRowLogEst set from sqlite_stat1 */
+#define TF_HasVirtual 0x00000020 /* Has one or more VIRTUAL columns */
+#define TF_HasStored 0x00000040 /* Has one or more STORED columns */
+#define TF_HasGenerated 0x00000060 /* Combo: HasVirtual + HasStored */
+#define TF_WithoutRowid 0x00000080 /* No rowid. PRIMARY KEY is the key */
+#define TF_StatsUsed 0x00000100 /* Query planner decisions affected by
** Index.aiRowLogEst[] values */
-#define TF_NoVisibleRowid 0x0200 /* No user-visible "rowid" column */
-#define TF_OOOHidden 0x0400 /* Out-of-Order hidden columns */
-#define TF_HasNotNull 0x0800 /* Contains NOT NULL constraints */
-#define TF_Shadow 0x1000 /* True for a shadow table */
-#define TF_HasStat4 0x2000 /* STAT4 info available for this table */
-#define TF_Ephemeral 0x4000 /* An ephemeral table */
-#define TF_Eponymous 0x8000 /* An eponymous virtual table */
+#define TF_NoVisibleRowid 0x00000200 /* No user-visible "rowid" column */
+#define TF_OOOHidden 0x00000400 /* Out-of-Order hidden columns */
+#define TF_HasNotNull 0x00000800 /* Contains NOT NULL constraints */
+#define TF_Shadow 0x00001000 /* True for a shadow table */
+#define TF_HasStat4 0x00002000 /* STAT4 info available for this table */
+#define TF_Ephemeral 0x00004000 /* An ephemeral table */
+#define TF_Eponymous 0x00008000 /* An eponymous virtual table */
+#define TF_Strict 0x00010000 /* STRICT mode */
+
+/*
+** Allowed values for Table.eTabType
+*/
+#define TABTYP_NORM 0 /* Ordinary table */
+#define TABTYP_VTAB 1 /* Virtual table */
+#define TABTYP_VIEW 2 /* A view */
+
+#define IsView(X) ((X)->eTabType==TABTYP_VIEW)
+#define IsOrdinaryTable(X) ((X)->eTabType==TABTYP_NORM)
/*
** Test to see whether or not a table is a virtual table. This is
@@ -17834,9 +17273,9 @@ struct Table {
** table support is omitted from the build.
*/
#ifndef SQLITE_OMIT_VIRTUALTABLE
-# define IsVirtual(X) ((X)->nModuleArg)
+# define IsVirtual(X) ((X)->eTabType==TABTYP_VTAB)
# define ExprIsVtab(X) \
- ((X)->op==TK_COLUMN && (X)->y.pTab!=0 && (X)->y.pTab->nModuleArg)
+ ((X)->op==TK_COLUMN && (X)->y.pTab!=0 && (X)->y.pTab->eTabType==TABTYP_VTAB)
#else
# define IsVirtual(X) 0
# define ExprIsVtab(X) 0
@@ -18225,10 +17664,10 @@ typedef int ynVar;
** tree.
**
** If the expression is an SQL literal (TK_INTEGER, TK_FLOAT, TK_BLOB,
-** or TK_STRING), then Expr.token contains the text of the SQL literal. If
-** the expression is a variable (TK_VARIABLE), then Expr.token contains the
+** or TK_STRING), then Expr.u.zToken contains the text of the SQL literal. If
+** the expression is a variable (TK_VARIABLE), then Expr.u.zToken contains the
** variable name. Finally, if the expression is an SQL function (TK_FUNCTION),
-** then Expr.token contains the name of the function.
+** then Expr.u.zToken contains the name of the function.
**
** Expr.pRight and Expr.pLeft are the left and right subexpressions of a
** binary operator. Either or both may be NULL.
@@ -18268,7 +17707,7 @@ typedef int ynVar;
** help reduce memory requirements, sometimes an Expr object will be
** truncated. And to reduce the number of memory allocations, sometimes
** two or more Expr objects will be stored in a single memory allocation,
-** together with Expr.zToken strings.
+** together with Expr.u.zToken strings.
**
** If the EP_Reduced and EP_TokenOnly flags are set when
** an Expr object is truncated. When EP_Reduced is set, then all
@@ -18337,8 +17776,7 @@ struct Expr {
} y;
};
-/*
-** The following are the meanings of bits in the Expr.flags field.
+/* The following are the meanings of bits in the Expr.flags field.
** Value restrictions:
**
** EP_Agg == NC_HasAgg == SF_HasAgg
@@ -18377,14 +17815,12 @@ struct Expr {
#define EP_FromDDL 0x40000000 /* Originates from sqlite_schema */
/* 0x80000000 // Available */
-/*
-** The EP_Propagate mask is a set of properties that automatically propagate
+/* The EP_Propagate mask is a set of properties that automatically propagate
** upwards into parent nodes.
*/
#define EP_Propagate (EP_Collate|EP_Subquery|EP_HasFunc)
-/*
-** These macros can be used to test, set, or clear bits in the
+/* Macros can be used to test, set, or clear bits in the
** Expr.flags field.
*/
#define ExprHasProperty(E,P) (((E)->flags&(P))!=0)
@@ -18394,6 +17830,16 @@ struct Expr {
#define ExprAlwaysTrue(E) (((E)->flags&(EP_FromJoin|EP_IsTrue))==EP_IsTrue)
#define ExprAlwaysFalse(E) (((E)->flags&(EP_FromJoin|EP_IsFalse))==EP_IsFalse)
+/* Macros used to ensure that the correct members of unions are accessed
+** in Expr.
+*/
+#define ExprUseUToken(E) (((E)->flags&EP_IntValue)==0)
+#define ExprUseUValue(E) (((E)->flags&EP_IntValue)!=0)
+#define ExprUseXList(E) (((E)->flags&EP_xIsSelect)==0)
+#define ExprUseXSelect(E) (((E)->flags&EP_xIsSelect)!=0)
+#define ExprUseYTab(E) (((E)->flags&(EP_WinFunc|EP_Subrtn))==0)
+#define ExprUseYWin(E) (((E)->flags&EP_WinFunc)!=0)
+#define ExprUseYSub(E) (((E)->flags&EP_Subrtn)!=0)
/* Flags for use with Expr.vvaFlags
*/
@@ -18476,11 +17922,12 @@ struct ExprList {
unsigned bSorterRef :1; /* Defer evaluation until after sorting */
unsigned bNulls: 1; /* True if explicit "NULLS FIRST/LAST" */
union {
- struct {
+ struct { /* Used by any ExprList other than Parse.pConsExpr */
u16 iOrderByCol; /* For ORDER BY, column number in result set */
u16 iAlias; /* Index into Parse.aAlias[] for zName */
} x;
- int iConstExprReg; /* Register in which Expr value is cached */
+ int iConstExprReg; /* Register in which Expr value is cached. Used only
+ ** by Parse.pConstExpr */
} u;
} a[1]; /* One slot for each expression in the list */
};
@@ -18518,6 +17965,13 @@ struct IdList {
/*
** The SrcItem object represents a single term in the FROM clause of a query.
** The SrcList object is mostly an array of SrcItems.
+**
+** Union member validity:
+**
+** u1.zIndexedBy fg.isIndexedBy && !fg.isTabFunc
+** u1.pFuncArg fg.isTabFunc && !fg.isIndexedBy
+** u2.pIBIndex fg.isIndexedBy && !fg.isCte
+** u2.pCteUse fg.isCte && !fg.isIndexedBy
*/
struct SrcItem {
Schema *pSchema; /* Schema to which this item is fixed */
@@ -18666,31 +18120,33 @@ struct NameContext {
** Allowed values for the NameContext, ncFlags field.
**
** Value constraints (all checked via assert()):
-** NC_HasAgg == SF_HasAgg == EP_Agg
-** NC_MinMaxAgg == SF_MinMaxAgg == SQLITE_FUNC_MINMAX
+** NC_HasAgg == SF_HasAgg == EP_Agg
+** NC_MinMaxAgg == SF_MinMaxAgg == SQLITE_FUNC_MINMAX
+** NC_OrderAgg == SF_OrderByReqd == SQLITE_FUNC_ANYORDER
** NC_HasWin == EP_Win
**
*/
-#define NC_AllowAgg 0x00001 /* Aggregate functions are allowed here */
-#define NC_PartIdx 0x00002 /* True if resolving a partial index WHERE */
-#define NC_IsCheck 0x00004 /* True if resolving a CHECK constraint */
-#define NC_GenCol 0x00008 /* True for a GENERATED ALWAYS AS clause */
-#define NC_HasAgg 0x00010 /* One or more aggregate functions seen */
-#define NC_IdxExpr 0x00020 /* True if resolving columns of CREATE INDEX */
-#define NC_SelfRef 0x0002e /* Combo: PartIdx, isCheck, GenCol, and IdxExpr */
-#define NC_VarSelect 0x00040 /* A correlated subquery has been seen */
-#define NC_UEList 0x00080 /* True if uNC.pEList is used */
-#define NC_UAggInfo 0x00100 /* True if uNC.pAggInfo is used */
-#define NC_UUpsert 0x00200 /* True if uNC.pUpsert is used */
-#define NC_UBaseReg 0x00400 /* True if uNC.iBaseReg is used */
-#define NC_MinMaxAgg 0x01000 /* min/max aggregates seen. See note above */
-#define NC_Complex 0x02000 /* True if a function or subquery seen */
-#define NC_AllowWin 0x04000 /* Window functions are allowed here */
-#define NC_HasWin 0x08000 /* One or more window functions seen */
-#define NC_IsDDL 0x10000 /* Resolving names in a CREATE statement */
-#define NC_InAggFunc 0x20000 /* True if analyzing arguments to an agg func */
-#define NC_FromDDL 0x40000 /* SQL text comes from sqlite_schema */
-#define NC_NoSelect 0x80000 /* Do not descend into sub-selects */
+#define NC_AllowAgg 0x000001 /* Aggregate functions are allowed here */
+#define NC_PartIdx 0x000002 /* True if resolving a partial index WHERE */
+#define NC_IsCheck 0x000004 /* True if resolving a CHECK constraint */
+#define NC_GenCol 0x000008 /* True for a GENERATED ALWAYS AS clause */
+#define NC_HasAgg 0x000010 /* One or more aggregate functions seen */
+#define NC_IdxExpr 0x000020 /* True if resolving columns of CREATE INDEX */
+#define NC_SelfRef 0x00002e /* Combo: PartIdx, isCheck, GenCol, and IdxExpr */
+#define NC_VarSelect 0x000040 /* A correlated subquery has been seen */
+#define NC_UEList 0x000080 /* True if uNC.pEList is used */
+#define NC_UAggInfo 0x000100 /* True if uNC.pAggInfo is used */
+#define NC_UUpsert 0x000200 /* True if uNC.pUpsert is used */
+#define NC_UBaseReg 0x000400 /* True if uNC.iBaseReg is used */
+#define NC_MinMaxAgg 0x001000 /* min/max aggregates seen. See note above */
+#define NC_Complex 0x002000 /* True if a function or subquery seen */
+#define NC_AllowWin 0x004000 /* Window functions are allowed here */
+#define NC_HasWin 0x008000 /* One or more window functions seen */
+#define NC_IsDDL 0x010000 /* Resolving names in a CREATE statement */
+#define NC_InAggFunc 0x020000 /* True if analyzing arguments to an agg func */
+#define NC_FromDDL 0x040000 /* SQL text comes from sqlite_schema */
+#define NC_NoSelect 0x080000 /* Do not descend into sub-selects */
+#define NC_OrderAgg 0x8000000 /* Has an aggregate other than count/min/max */
/*
** An instance of the following object describes a single ON CONFLICT
@@ -18773,9 +18229,10 @@ struct Select {
** "Select Flag".
**
** Value constraints (all checked via assert())
-** SF_HasAgg == NC_HasAgg
-** SF_MinMaxAgg == NC_MinMaxAgg == SQLITE_FUNC_MINMAX
-** SF_FixedLimit == WHERE_USE_LIMIT
+** SF_HasAgg == NC_HasAgg
+** SF_MinMaxAgg == NC_MinMaxAgg == SQLITE_FUNC_MINMAX
+** SF_OrderByReqd == NC_OrderAgg == SQLITE_FUNC_ANYORDER
+** SF_FixedLimit == WHERE_USE_LIMIT
*/
#define SF_Distinct 0x0000001 /* Output should be DISTINCT */
#define SF_All 0x0000002 /* Includes the ALL keyword */
@@ -18800,10 +18257,11 @@ struct Select {
#define SF_WinRewrite 0x0100000 /* Window function rewrite accomplished */
#define SF_View 0x0200000 /* SELECT statement is a view */
#define SF_NoopOrderBy 0x0400000 /* ORDER BY is ignored for this query */
-#define SF_UpdateFrom 0x0800000 /* Statement is an UPDATE...FROM */
+#define SF_UFSrcCheck 0x0800000 /* Check pSrc as required by UPDATE...FROM */
#define SF_PushDown 0x1000000 /* SELECT has be modified by push-down opt */
#define SF_MultiPart 0x2000000 /* Has multiple incompatible PARTITIONs */
#define SF_CopyCte 0x4000000 /* SELECT statement is a copy of a CTE */
+#define SF_OrderByReqd 0x8000000 /* The ORDER BY clause may not be omitted */
/*
** The results of a SELECT can be distributed in several ways, as defined
@@ -19045,7 +18503,8 @@ struct Parse {
AutoincInfo *pAinc; /* Information about AUTOINCREMENT counters */
Parse *pToplevel; /* Parse structure for main program (or NULL) */
Table *pTriggerTab; /* Table triggers are being coded for */
- Parse *pParentParse; /* Parent parser if this parser is nested */
+ TriggerPrg *pTriggerPrg; /* Linked list of coded triggers */
+ ParseCleanup *pCleanup; /* List of cleanup operations to run after parse */
union {
int addrCrTab; /* Address of OP_CreateBtree on CREATE TABLE */
Returning *pReturning; /* The RETURNING clause */
@@ -19100,14 +18559,14 @@ struct Parse {
Token sArg; /* Complete text of a module argument */
Table **apVtabLock; /* Pointer to virtual tables needing locking */
#endif
- TriggerPrg *pTriggerPrg; /* Linked list of coded triggers */
With *pWith; /* Current WITH clause, or NULL */
- ParseCleanup *pCleanup; /* List of cleanup operations to run after parse */
#ifndef SQLITE_OMIT_ALTERTABLE
RenameToken *pRename; /* Tokens subject to renaming by ALTER TABLE */
#endif
};
+/* Allowed values for Parse.eParseMode
+*/
#define PARSE_MODE_NORMAL 0
#define PARSE_MODE_DECLARE_VTAB 1
#define PARSE_MODE_RENAME 2
@@ -19329,8 +18788,10 @@ typedef struct {
/*
** Allowed values for mInitFlags
*/
+#define INITFLAG_AlterMask 0x0003 /* Types of ALTER */
#define INITFLAG_AlterRename 0x0001 /* Reparse after a RENAME */
#define INITFLAG_AlterDrop 0x0002 /* Reparse after a DROP COLUMN */
+#define INITFLAG_AlterAdd 0x0003 /* Reparse after an ADD COLUMN */
/* Tuning parameters are set using SQLITE_TESTCTRL_TUNE and are controlled
** on debug-builds of the CLI using ".testctrl tune ID VALUE". Tuning
@@ -19451,8 +18912,8 @@ struct Walker {
int n; /* A counter */
int iCur; /* A cursor number */
SrcList *pSrcList; /* FROM clause */
- struct SrcCount *pSrcCount; /* Counting column references */
struct CCurHint *pCCurHint; /* Used by codeCursorHint() */
+ struct RefSrcList *pRefSrcList; /* sqlite3ReferencesSrcList() */
int *aiCol; /* array of column indexes */
struct IdxCover *pIdxCover; /* Check for index coverage */
struct IdxExprTrans *pIdxTrans; /* Convert idxed expr to column */
@@ -19637,7 +19098,7 @@ SQLITE_PRIVATE void sqlite3WindowListDelete(sqlite3 *db, Window *p);
SQLITE_PRIVATE Window *sqlite3WindowAlloc(Parse*, int, int, Expr*, int , Expr*, u8);
SQLITE_PRIVATE void sqlite3WindowAttach(Parse*, Expr*, Window*);
SQLITE_PRIVATE void sqlite3WindowLink(Select *pSel, Window *pWin);
-SQLITE_PRIVATE int sqlite3WindowCompare(Parse*, Window*, Window*, int);
+SQLITE_PRIVATE int sqlite3WindowCompare(const Parse*, const Window*, const Window*, int);
SQLITE_PRIVATE void sqlite3WindowCodeInit(Parse*, Select*);
SQLITE_PRIVATE void sqlite3WindowCodeStep(Parse*, Select*, WhereInfo*, int, int);
SQLITE_PRIVATE int sqlite3WindowRewrite(Parse*, Select*);
@@ -19769,8 +19230,8 @@ SQLITE_PRIVATE void *sqlite3DbReallocOrFree(sqlite3 *, void *, u64);
SQLITE_PRIVATE void *sqlite3DbRealloc(sqlite3 *, void *, u64);
SQLITE_PRIVATE void sqlite3DbFree(sqlite3*, void*);
SQLITE_PRIVATE void sqlite3DbFreeNN(sqlite3*, void*);
-SQLITE_PRIVATE int sqlite3MallocSize(void*);
-SQLITE_PRIVATE int sqlite3DbMallocSize(sqlite3*, void*);
+SQLITE_PRIVATE int sqlite3MallocSize(const void*);
+SQLITE_PRIVATE int sqlite3DbMallocSize(sqlite3*, const void*);
SQLITE_PRIVATE void *sqlite3PageMalloc(int);
SQLITE_PRIVATE void sqlite3PageFree(void*);
SQLITE_PRIVATE void sqlite3MemSetDefault(void);
@@ -19886,6 +19347,7 @@ SQLITE_PRIVATE void sqlite3ErrorMsg(Parse*, const char*, ...);
SQLITE_PRIVATE int sqlite3ErrorToParser(sqlite3*,int);
SQLITE_PRIVATE void sqlite3Dequote(char*);
SQLITE_PRIVATE void sqlite3DequoteExpr(Expr*);
+SQLITE_PRIVATE void sqlite3DequoteToken(Token*);
SQLITE_PRIVATE void sqlite3TokenInit(Token*,char*);
SQLITE_PRIVATE int sqlite3KeywordCode(const unsigned char*, int);
SQLITE_PRIVATE int sqlite3RunParser(Parse*, const char*, char **);
@@ -19905,16 +19367,17 @@ SQLITE_PRIVATE Expr *sqlite3PExpr(Parse*, int, Expr*, Expr*);
SQLITE_PRIVATE void sqlite3PExprAddSelect(Parse*, Expr*, Select*);
SQLITE_PRIVATE Expr *sqlite3ExprAnd(Parse*,Expr*, Expr*);
SQLITE_PRIVATE Expr *sqlite3ExprSimplifiedAndOr(Expr*);
-SQLITE_PRIVATE Expr *sqlite3ExprFunction(Parse*,ExprList*, Token*, int);
-SQLITE_PRIVATE void sqlite3ExprFunctionUsable(Parse*,Expr*,FuncDef*);
+SQLITE_PRIVATE Expr *sqlite3ExprFunction(Parse*,ExprList*, const Token*, int);
+SQLITE_PRIVATE void sqlite3ExprFunctionUsable(Parse*,const Expr*,const FuncDef*);
SQLITE_PRIVATE void sqlite3ExprAssignVarNumber(Parse*, Expr*, u32);
SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3*, Expr*);
SQLITE_PRIVATE void sqlite3ExprDeferredDelete(Parse*, Expr*);
SQLITE_PRIVATE void sqlite3ExprUnmapAndDelete(Parse*, Expr*);
SQLITE_PRIVATE ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*);
SQLITE_PRIVATE ExprList *sqlite3ExprListAppendVector(Parse*,ExprList*,IdList*,Expr*);
+SQLITE_PRIVATE Select *sqlite3ExprListToValues(Parse*, int, ExprList*);
SQLITE_PRIVATE void sqlite3ExprListSetSortOrder(ExprList*,int,int);
-SQLITE_PRIVATE void sqlite3ExprListSetName(Parse*,ExprList*,Token*,int);
+SQLITE_PRIVATE void sqlite3ExprListSetName(Parse*,ExprList*,const Token*,int);
SQLITE_PRIVATE void sqlite3ExprListSetSpan(Parse*,ExprList*,const char*,const char*);
SQLITE_PRIVATE void sqlite3ExprListDelete(sqlite3*, ExprList*);
SQLITE_PRIVATE u32 sqlite3ExprListFlags(const ExprList*);
@@ -19930,6 +19393,10 @@ SQLITE_PRIVATE void sqlite3ResetAllSchemasOfConnection(sqlite3*);
SQLITE_PRIVATE void sqlite3ResetOneSchema(sqlite3*,int);
SQLITE_PRIVATE void sqlite3CollapseDatabaseArray(sqlite3*);
SQLITE_PRIVATE void sqlite3CommitInternalChanges(sqlite3*);
+SQLITE_PRIVATE void sqlite3ColumnSetExpr(Parse*,Table*,Column*,Expr*);
+SQLITE_PRIVATE Expr *sqlite3ColumnExpr(Table*,Column*);
+SQLITE_PRIVATE void sqlite3ColumnSetColl(sqlite3*,Column*,const char*zColl);
+SQLITE_PRIVATE const char *sqlite3ColumnColl(Column*);
SQLITE_PRIVATE void sqlite3DeleteColumnNames(sqlite3*,Table*);
SQLITE_PRIVATE void sqlite3GenerateColumnNames(Parse *pParse, Select *pSelect);
SQLITE_PRIVATE int sqlite3ColumnsFromExprList(Parse*,ExprList*,i16*,Column**);
@@ -19951,14 +19418,14 @@ SQLITE_PRIVATE void sqlite3ColumnPropertiesFromName(Table*, Column*);
#else
# define sqlite3ColumnPropertiesFromName(T,C) /* no-op */
#endif
-SQLITE_PRIVATE void sqlite3AddColumn(Parse*,Token*,Token*);
+SQLITE_PRIVATE void sqlite3AddColumn(Parse*,Token,Token);
SQLITE_PRIVATE void sqlite3AddNotNull(Parse*, int);
SQLITE_PRIVATE void sqlite3AddPrimaryKey(Parse*, ExprList*, int, int, int);
SQLITE_PRIVATE void sqlite3AddCheckConstraint(Parse*, Expr*, const char*, const char*);
SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse*,Expr*,const char*,const char*);
SQLITE_PRIVATE void sqlite3AddCollateType(Parse*, Token*);
SQLITE_PRIVATE void sqlite3AddGenerated(Parse*,Expr*,Token*);
-SQLITE_PRIVATE void sqlite3EndTable(Parse*,Token*,Token*,u8,Select*);
+SQLITE_PRIVATE void sqlite3EndTable(Parse*,Token*,Token*,u32,Select*);
SQLITE_PRIVATE void sqlite3AddReturning(Parse*,ExprList*);
SQLITE_PRIVATE int sqlite3ParseUri(const char*,const char*,unsigned int*,
sqlite3_vfs**,char**,char **);
@@ -20068,7 +19535,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeGetColumnOfTable(Vdbe*, Table*, int, int, int
SQLITE_PRIVATE void sqlite3ExprCodeMove(Parse*, int, int, int);
SQLITE_PRIVATE void sqlite3ExprCode(Parse*, Expr*, int);
#ifndef SQLITE_OMIT_GENERATED_COLUMNS
-SQLITE_PRIVATE void sqlite3ExprCodeGeneratedColumn(Parse*, Column*, int);
+SQLITE_PRIVATE void sqlite3ExprCodeGeneratedColumn(Parse*, Table*, Column*, int);
#endif
SQLITE_PRIVATE void sqlite3ExprCodeCopy(Parse*, Expr*, int);
SQLITE_PRIVATE void sqlite3ExprCodeFactorable(Parse*, Expr*, int);
@@ -20087,23 +19554,24 @@ SQLITE_PRIVATE Table *sqlite3FindTable(sqlite3*,const char*, const char*);
#define LOCATE_VIEW 0x01
#define LOCATE_NOERR 0x02
SQLITE_PRIVATE Table *sqlite3LocateTable(Parse*,u32 flags,const char*, const char*);
+SQLITE_PRIVATE const char *sqlite3PreferredTableName(const char*);
SQLITE_PRIVATE Table *sqlite3LocateTableItem(Parse*,u32 flags,SrcItem *);
SQLITE_PRIVATE Index *sqlite3FindIndex(sqlite3*,const char*, const char*);
SQLITE_PRIVATE void sqlite3UnlinkAndDeleteTable(sqlite3*,int,const char*);
SQLITE_PRIVATE void sqlite3UnlinkAndDeleteIndex(sqlite3*,int,const char*);
SQLITE_PRIVATE void sqlite3Vacuum(Parse*,Token*,Expr*);
SQLITE_PRIVATE int sqlite3RunVacuum(char**, sqlite3*, int, sqlite3_value*);
-SQLITE_PRIVATE char *sqlite3NameFromToken(sqlite3*, Token*);
-SQLITE_PRIVATE int sqlite3ExprCompare(Parse*,Expr*, Expr*, int);
-SQLITE_PRIVATE int sqlite3ExprCompareSkip(Expr*, Expr*, int);
-SQLITE_PRIVATE int sqlite3ExprListCompare(ExprList*, ExprList*, int);
-SQLITE_PRIVATE int sqlite3ExprImpliesExpr(Parse*,Expr*, Expr*, int);
+SQLITE_PRIVATE char *sqlite3NameFromToken(sqlite3*, const Token*);
+SQLITE_PRIVATE int sqlite3ExprCompare(const Parse*,const Expr*,const Expr*, int);
+SQLITE_PRIVATE int sqlite3ExprCompareSkip(Expr*,Expr*,int);
+SQLITE_PRIVATE int sqlite3ExprListCompare(const ExprList*,const ExprList*, int);
+SQLITE_PRIVATE int sqlite3ExprImpliesExpr(const Parse*,const Expr*,const Expr*, int);
SQLITE_PRIVATE int sqlite3ExprImpliesNonNullRow(Expr*,int);
SQLITE_PRIVATE void sqlite3AggInfoPersistWalkerInit(Walker*,Parse*);
SQLITE_PRIVATE void sqlite3ExprAnalyzeAggregates(NameContext*, Expr*);
SQLITE_PRIVATE void sqlite3ExprAnalyzeAggList(NameContext*,ExprList*);
SQLITE_PRIVATE int sqlite3ExprCoveredByIndex(Expr*, int iCur, Index *pIdx);
-SQLITE_PRIVATE int sqlite3FunctionUsesThisSrc(Expr*, SrcList*);
+SQLITE_PRIVATE int sqlite3ReferencesSrcList(Parse*, Expr*, SrcList*);
SQLITE_PRIVATE Vdbe *sqlite3GetVdbe(Parse*);
#ifndef SQLITE_UNTESTABLE
SQLITE_PRIVATE void sqlite3PrngSaveState(void);
@@ -20128,7 +19596,7 @@ SQLITE_PRIVATE int sqlite3ExprIsTableConstant(Expr*,int);
#ifdef SQLITE_ENABLE_CURSOR_HINTS
SQLITE_PRIVATE int sqlite3ExprContainsSubquery(Expr*);
#endif
-SQLITE_PRIVATE int sqlite3ExprIsInteger(Expr*, int*);
+SQLITE_PRIVATE int sqlite3ExprIsInteger(const Expr*, int*);
SQLITE_PRIVATE int sqlite3ExprCanBeNull(const Expr*);
SQLITE_PRIVATE int sqlite3ExprNeedsNoAffinityChange(const Expr*, char);
SQLITE_PRIVATE int sqlite3IsRowid(const char*);
@@ -20153,11 +19621,11 @@ SQLITE_PRIVATE void sqlite3MayAbort(Parse*);
SQLITE_PRIVATE void sqlite3HaltConstraint(Parse*, int, int, char*, i8, u8);
SQLITE_PRIVATE void sqlite3UniqueConstraint(Parse*, int, Index*);
SQLITE_PRIVATE void sqlite3RowidConstraint(Parse*, int, Table*);
-SQLITE_PRIVATE Expr *sqlite3ExprDup(sqlite3*,Expr*,int);
-SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3*,ExprList*,int);
-SQLITE_PRIVATE SrcList *sqlite3SrcListDup(sqlite3*,SrcList*,int);
-SQLITE_PRIVATE IdList *sqlite3IdListDup(sqlite3*,IdList*);
-SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3*,Select*,int);
+SQLITE_PRIVATE Expr *sqlite3ExprDup(sqlite3*,const Expr*,int);
+SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3*,const ExprList*,int);
+SQLITE_PRIVATE SrcList *sqlite3SrcListDup(sqlite3*,const SrcList*,int);
+SQLITE_PRIVATE IdList *sqlite3IdListDup(sqlite3*,const IdList*);
+SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3*,const Select*,int);
SQLITE_PRIVATE FuncDef *sqlite3FunctionSearch(int,const char*);
SQLITE_PRIVATE void sqlite3InsertBuiltinFuncs(FuncDef*,int);
SQLITE_PRIVATE FuncDef *sqlite3FindFunction(sqlite3*,const char*,int,u8,u8);
@@ -20295,7 +19763,7 @@ SQLITE_PRIVATE const char *sqlite3IndexAffinityStr(sqlite3*, Index*);
SQLITE_PRIVATE void sqlite3TableAffinity(Vdbe*, Table*, int);
SQLITE_PRIVATE char sqlite3CompareAffinity(const Expr *pExpr, char aff2);
SQLITE_PRIVATE int sqlite3IndexAffinityOk(const Expr *pExpr, char idx_affinity);
-SQLITE_PRIVATE char sqlite3TableColumnAffinity(Table*,int);
+SQLITE_PRIVATE char sqlite3TableColumnAffinity(const Table*,int);
SQLITE_PRIVATE char sqlite3ExprAffinity(const Expr *pExpr);
SQLITE_PRIVATE int sqlite3Atoi64(const char*, i64*, int, u8);
SQLITE_PRIVATE int sqlite3DecOrHexToI64(const char*, i64*);
@@ -20324,14 +19792,14 @@ SQLITE_PRIVATE void sqlite3SetTextEncoding(sqlite3 *db, u8);
SQLITE_PRIVATE CollSeq *sqlite3ExprCollSeq(Parse *pParse, const Expr *pExpr);
SQLITE_PRIVATE CollSeq *sqlite3ExprNNCollSeq(Parse *pParse, const Expr *pExpr);
SQLITE_PRIVATE int sqlite3ExprCollSeqMatch(Parse*,const Expr*,const Expr*);
-SQLITE_PRIVATE Expr *sqlite3ExprAddCollateToken(Parse *pParse, Expr*, const Token*, int);
-SQLITE_PRIVATE Expr *sqlite3ExprAddCollateString(Parse*,Expr*,const char*);
+SQLITE_PRIVATE Expr *sqlite3ExprAddCollateToken(const Parse *pParse, Expr*, const Token*, int);
+SQLITE_PRIVATE Expr *sqlite3ExprAddCollateString(const Parse*,Expr*,const char*);
SQLITE_PRIVATE Expr *sqlite3ExprSkipCollate(Expr*);
SQLITE_PRIVATE Expr *sqlite3ExprSkipCollateAndLikely(Expr*);
SQLITE_PRIVATE int sqlite3CheckCollSeq(Parse *, CollSeq *);
SQLITE_PRIVATE int sqlite3WritableSchema(sqlite3*);
SQLITE_PRIVATE int sqlite3CheckObjectName(Parse*, const char*,const char*,const char*);
-SQLITE_PRIVATE void sqlite3VdbeSetChanges(sqlite3 *, int);
+SQLITE_PRIVATE void sqlite3VdbeSetChanges(sqlite3 *, i64);
SQLITE_PRIVATE int sqlite3AddInt64(i64*,i64);
SQLITE_PRIVATE int sqlite3SubInt64(i64*,i64);
SQLITE_PRIVATE int sqlite3MulInt64(i64*,i64);
@@ -20356,11 +19824,15 @@ SQLITE_PRIVATE sqlite3_value *sqlite3ValueNew(sqlite3 *);
#ifndef SQLITE_OMIT_UTF16
SQLITE_PRIVATE char *sqlite3Utf16to8(sqlite3 *, const void*, int, u8);
#endif
-SQLITE_PRIVATE int sqlite3ValueFromExpr(sqlite3 *, Expr *, u8, u8, sqlite3_value **);
+SQLITE_PRIVATE int sqlite3ValueFromExpr(sqlite3 *, const Expr *, u8, u8, sqlite3_value **);
SQLITE_PRIVATE void sqlite3ValueApplyAffinity(sqlite3_value *, u8, u8);
#ifndef SQLITE_AMALGAMATION
SQLITE_PRIVATE const unsigned char sqlite3OpcodeProperty[];
SQLITE_PRIVATE const char sqlite3StrBINARY[];
+SQLITE_PRIVATE const unsigned char sqlite3StdTypeLen[];
+SQLITE_PRIVATE const char sqlite3StdTypeAffinity[];
+SQLITE_PRIVATE const char sqlite3StdTypeMap[];
+SQLITE_PRIVATE const char *sqlite3StdType[];
SQLITE_PRIVATE const unsigned char sqlite3UpperToLower[];
SQLITE_PRIVATE const unsigned char *sqlite3aLTb;
SQLITE_PRIVATE const unsigned char *sqlite3aEQb;
@@ -20404,9 +19876,9 @@ SQLITE_PRIVATE int sqlite3ResolveOrderGroupBy(Parse*, Select*, ExprList*, const
SQLITE_PRIVATE void sqlite3ColumnDefault(Vdbe *, Table *, int, int);
SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *, Token *);
SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *, SrcList *);
-SQLITE_PRIVATE void sqlite3AlterDropColumn(Parse*, SrcList*, Token*);
-SQLITE_PRIVATE void *sqlite3RenameTokenMap(Parse*, void*, Token*);
-SQLITE_PRIVATE void sqlite3RenameTokenRemap(Parse*, void *pTo, void *pFrom);
+SQLITE_PRIVATE void sqlite3AlterDropColumn(Parse*, SrcList*, const Token*);
+SQLITE_PRIVATE const void *sqlite3RenameTokenMap(Parse*, const void*, const Token*);
+SQLITE_PRIVATE void sqlite3RenameTokenRemap(Parse*, const void *pTo, const void *pFrom);
SQLITE_PRIVATE void sqlite3RenameExprUnmap(Parse*, Expr*);
SQLITE_PRIVATE void sqlite3RenameExprlistUnmap(Parse*, ExprList*);
SQLITE_PRIVATE CollSeq *sqlite3GetCollSeq(Parse*, u8, CollSeq *, const char*);
@@ -20450,6 +19922,8 @@ SQLITE_PRIVATE int sqlite3OpenTempDatabase(Parse *);
SQLITE_PRIVATE void sqlite3StrAccumInit(StrAccum*, sqlite3*, char*, int, int);
SQLITE_PRIVATE char *sqlite3StrAccumFinish(StrAccum*);
+SQLITE_PRIVATE void sqlite3StrAccumSetError(StrAccum*, u8);
+SQLITE_PRIVATE void sqlite3ResultStrAccum(sqlite3_context*,StrAccum*);
SQLITE_PRIVATE void sqlite3SelectDestInit(SelectDest*,int,int);
SQLITE_PRIVATE Expr *sqlite3CreateColumnExpr(sqlite3 *, SrcList *, int, int);
@@ -20502,7 +19976,7 @@ SQLITE_PRIVATE int sqlite3Utf8To8(unsigned char*);
#endif
#ifdef SQLITE_OMIT_VIRTUALTABLE
-# define sqlite3VtabClear(Y)
+# define sqlite3VtabClear(D,T)
# define sqlite3VtabSync(X,Y) SQLITE_OK
# define sqlite3VtabRollback(X)
# define sqlite3VtabCommit(X)
@@ -20539,9 +20013,11 @@ SQLITE_PRIVATE int sqlite3ReadOnlyShadowTables(sqlite3 *db);
#ifndef SQLITE_OMIT_VIRTUALTABLE
SQLITE_PRIVATE int sqlite3ShadowTableName(sqlite3 *db, const char *zName);
SQLITE_PRIVATE int sqlite3IsShadowTableOf(sqlite3*,Table*,const char*);
+SQLITE_PRIVATE void sqlite3MarkAllShadowTablesOf(sqlite3*, Table*);
#else
# define sqlite3ShadowTableName(A,B) 0
# define sqlite3IsShadowTableOf(A,B,C) 0
+# define sqlite3MarkAllShadowTablesOf(A,B)
#endif
SQLITE_PRIVATE int sqlite3VtabEponymousTableInit(Parse*,Module*);
SQLITE_PRIVATE void sqlite3VtabEponymousTableClear(sqlite3*,Module*);
@@ -20584,7 +20060,7 @@ SQLITE_PRIVATE With *sqlite3WithPush(Parse*, With*, u8);
# define sqlite3CteDelete(D,C)
# define sqlite3CteWithAdd(P,W,C) ((void*)0)
# define sqlite3WithDelete(x,y)
-# define sqlite3WithPush(x,y,z)
+# define sqlite3WithPush(x,y,z) ((void*)0)
#endif
#ifndef SQLITE_OMIT_UPSERT
SQLITE_PRIVATE Upsert *sqlite3UpsertNew(sqlite3*,ExprList*,Expr*,ExprList*,Expr*,Upsert*);
@@ -20617,6 +20093,7 @@ SQLITE_PRIVATE void sqlite3FkActions(Parse*, Table*, ExprList*, int, int*, int
SQLITE_PRIVATE int sqlite3FkRequired(Parse*, Table*, int*, int);
SQLITE_PRIVATE u32 sqlite3FkOldmask(Parse*, Table*);
SQLITE_PRIVATE FKey *sqlite3FkReferences(Table *);
+SQLITE_PRIVATE void sqlite3FkClearTriggerCache(sqlite3*,int);
#else
#define sqlite3FkActions(a,b,c,d,e,f)
#define sqlite3FkCheck(a,b,c,d,e,f)
@@ -20624,6 +20101,7 @@ SQLITE_PRIVATE FKey *sqlite3FkReferences(Table *);
#define sqlite3FkOldmask(a,b) 0
#define sqlite3FkRequired(a,b,c,d) 0
#define sqlite3FkReferences(a) 0
+ #define sqlite3FkClearTriggerCache(a,b)
#endif
#ifndef SQLITE_OMIT_FOREIGN_KEY
SQLITE_PRIVATE void sqlite3FkDelete(sqlite3 *, Table*);
@@ -20681,7 +20159,7 @@ SQLITE_PRIVATE void sqlite3MemJournalOpen(sqlite3_file *);
SQLITE_PRIVATE void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p);
#if SQLITE_MAX_EXPR_DEPTH>0
-SQLITE_PRIVATE int sqlite3SelectExprHeight(Select *);
+SQLITE_PRIVATE int sqlite3SelectExprHeight(const Select *);
SQLITE_PRIVATE int sqlite3ExprCheckHeight(Parse*, int);
#else
#define sqlite3SelectExprHeight(x) 0
@@ -20752,8 +20230,8 @@ SQLITE_API SQLITE_EXTERN void (SQLITE_CDECL *sqlite3IoTrace)(const char*,...);
*/
#ifdef SQLITE_MEMDEBUG
SQLITE_PRIVATE void sqlite3MemdebugSetType(void*,u8);
-SQLITE_PRIVATE int sqlite3MemdebugHasType(void*,u8);
-SQLITE_PRIVATE int sqlite3MemdebugNoType(void*,u8);
+SQLITE_PRIVATE int sqlite3MemdebugHasType(const void*,u8);
+SQLITE_PRIVATE int sqlite3MemdebugNoType(const void*,u8);
#else
# define sqlite3MemdebugSetType(X,Y) /* no-op */
# define sqlite3MemdebugHasType(X,Y) 1
@@ -20778,10 +20256,10 @@ SQLITE_PRIVATE int sqlite3DbpageRegister(sqlite3*);
SQLITE_PRIVATE int sqlite3DbstatRegister(sqlite3*);
#endif
-SQLITE_PRIVATE int sqlite3ExprVectorSize(Expr *pExpr);
-SQLITE_PRIVATE int sqlite3ExprIsVector(Expr *pExpr);
+SQLITE_PRIVATE int sqlite3ExprVectorSize(const Expr *pExpr);
+SQLITE_PRIVATE int sqlite3ExprIsVector(const Expr *pExpr);
SQLITE_PRIVATE Expr *sqlite3VectorFieldSubexpr(Expr*, int);
-SQLITE_PRIVATE Expr *sqlite3ExprForVectorField(Parse*,Expr*,int);
+SQLITE_PRIVATE Expr *sqlite3ExprForVectorField(Parse*,Expr*,int,int);
SQLITE_PRIVATE void sqlite3VectorErrorMsg(Parse*, Expr*);
#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
@@ -20791,6 +20269,990 @@ SQLITE_PRIVATE const char **sqlite3CompileOptions(int *pnOpt);
#endif /* SQLITEINT_H */
/************** End of sqliteInt.h *******************************************/
+/************** Begin file os_common.h ***************************************/
+/*
+** 2004 May 22
+**
+** The author disclaims copyright to this source code. In place of
+** a legal notice, here is a blessing:
+**
+** May you do good and not evil.
+** May you find forgiveness for yourself and forgive others.
+** May you share freely, never taking more than you give.
+**
+******************************************************************************
+**
+** This file contains macros and a little bit of code that is common to
+** all of the platform-specific files (os_*.c) and is #included into those
+** files.
+**
+** This file should be #included by the os_*.c files only. It is not a
+** general purpose header file.
+*/
+#ifndef _OS_COMMON_H_
+#define _OS_COMMON_H_
+
+/*
+** At least two bugs have slipped in because we changed the MEMORY_DEBUG
+** macro to SQLITE_DEBUG and some older makefiles have not yet made the
+** switch. The following code should catch this problem at compile-time.
+*/
+#ifdef MEMORY_DEBUG
+# error "The MEMORY_DEBUG macro is obsolete. Use SQLITE_DEBUG instead."
+#endif
+
+/*
+** Macros for performance tracing. Normally turned off. Only works
+** on i486 hardware.
+*/
+#ifdef SQLITE_PERFORMANCE_TRACE
+
+/*
+** hwtime.h contains inline assembler code for implementing
+** high-performance timing routines.
+*/
+/************** Include hwtime.h in the middle of os_common.h ****************/
+/************** Begin file hwtime.h ******************************************/
+/*
+** 2008 May 27
+**
+** The author disclaims copyright to this source code. In place of
+** a legal notice, here is a blessing:
+**
+** May you do good and not evil.
+** May you find forgiveness for yourself and forgive others.
+** May you share freely, never taking more than you give.
+**
+******************************************************************************
+**
+** This file contains inline asm code for retrieving "high-performance"
+** counters for x86 and x86_64 class CPUs.
+*/
+#ifndef SQLITE_HWTIME_H
+#define SQLITE_HWTIME_H
+
+/*
+** The following routine only works on pentium-class (or newer) processors.
+** It uses the RDTSC opcode to read the cycle count value out of the
+** processor and returns that value. This can be used for high-res
+** profiling.
+*/
+#if !defined(__STRICT_ANSI__) && \
+ (defined(__GNUC__) || defined(_MSC_VER)) && \
+ (defined(i386) || defined(__i386__) || defined(_M_IX86))
+
+ #if defined(__GNUC__)
+
+ __inline__ sqlite_uint64 sqlite3Hwtime(void){
+ unsigned int lo, hi;
+ __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
+ return (sqlite_uint64)hi << 32 | lo;
+ }
+
+ #elif defined(_MSC_VER)
+
+ __declspec(naked) __inline sqlite_uint64 __cdecl sqlite3Hwtime(void){
+ __asm {
+ rdtsc
+ ret ; return value at EDX:EAX
+ }
+ }
+
+ #endif
+
+#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__x86_64__))
+
+ __inline__ sqlite_uint64 sqlite3Hwtime(void){
+ unsigned long val;
+ __asm__ __volatile__ ("rdtsc" : "=A" (val));
+ return val;
+ }
+
+#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__ppc__))
+
+ __inline__ sqlite_uint64 sqlite3Hwtime(void){
+ unsigned long long retval;
+ unsigned long junk;
+ __asm__ __volatile__ ("\n\
+ 1: mftbu %1\n\
+ mftb %L0\n\
+ mftbu %0\n\
+ cmpw %0,%1\n\
+ bne 1b"
+ : "=r" (retval), "=r" (junk));
+ return retval;
+ }
+
+#else
+
+ /*
+ ** asm() is needed for hardware timing support. Without asm(),
+ ** disable the sqlite3Hwtime() routine.
+ **
+ ** sqlite3Hwtime() is only used for some obscure debugging
+ ** and analysis configurations, not in any deliverable, so this
+ ** should not be a great loss.
+ */
+SQLITE_PRIVATE sqlite_uint64 sqlite3Hwtime(void){ return ((sqlite_uint64)0); }
+
+#endif
+
+#endif /* !defined(SQLITE_HWTIME_H) */
+
+/************** End of hwtime.h **********************************************/
+/************** Continuing where we left off in os_common.h ******************/
+
+static sqlite_uint64 g_start;
+static sqlite_uint64 g_elapsed;
+#define TIMER_START g_start=sqlite3Hwtime()
+#define TIMER_END g_elapsed=sqlite3Hwtime()-g_start
+#define TIMER_ELAPSED g_elapsed
+#else
+#define TIMER_START
+#define TIMER_END
+#define TIMER_ELAPSED ((sqlite_uint64)0)
+#endif
+
+/*
+** If we compile with the SQLITE_TEST macro set, then the following block
+** of code will give us the ability to simulate a disk I/O error. This
+** is used for testing the I/O recovery logic.
+*/
+#if defined(SQLITE_TEST)
+SQLITE_API extern int sqlite3_io_error_hit;
+SQLITE_API extern int sqlite3_io_error_hardhit;
+SQLITE_API extern int sqlite3_io_error_pending;
+SQLITE_API extern int sqlite3_io_error_persist;
+SQLITE_API extern int sqlite3_io_error_benign;
+SQLITE_API extern int sqlite3_diskfull_pending;
+SQLITE_API extern int sqlite3_diskfull;
+#define SimulateIOErrorBenign(X) sqlite3_io_error_benign=(X)
+#define SimulateIOError(CODE) \
+ if( (sqlite3_io_error_persist && sqlite3_io_error_hit) \
+ || sqlite3_io_error_pending-- == 1 ) \
+ { local_ioerr(); CODE; }
+static void local_ioerr(){
+ IOTRACE(("IOERR\n"));
+ sqlite3_io_error_hit++;
+ if( !sqlite3_io_error_benign ) sqlite3_io_error_hardhit++;
+}
+#define SimulateDiskfullError(CODE) \
+ if( sqlite3_diskfull_pending ){ \
+ if( sqlite3_diskfull_pending == 1 ){ \
+ local_ioerr(); \
+ sqlite3_diskfull = 1; \
+ sqlite3_io_error_hit = 1; \
+ CODE; \
+ }else{ \
+ sqlite3_diskfull_pending--; \
+ } \
+ }
+#else
+#define SimulateIOErrorBenign(X)
+#define SimulateIOError(A)
+#define SimulateDiskfullError(A)
+#endif /* defined(SQLITE_TEST) */
+
+/*
+** When testing, keep a count of the number of open files.
+*/
+#if defined(SQLITE_TEST)
+SQLITE_API extern int sqlite3_open_file_count;
+#define OpenCounter(X) sqlite3_open_file_count+=(X)
+#else
+#define OpenCounter(X)
+#endif /* defined(SQLITE_TEST) */
+
+#endif /* !defined(_OS_COMMON_H_) */
+
+/************** End of os_common.h *******************************************/
+/************** Begin file ctime.c *******************************************/
+/*
+** 2010 February 23
+**
+** The author disclaims copyright to this source code. In place of
+** a legal notice, here is a blessing:
+**
+** May you do good and not evil.
+** May you find forgiveness for yourself and forgive others.
+** May you share freely, never taking more than you give.
+**
+*************************************************************************
+**
+** This file implements routines used to report what compile-time options
+** SQLite was built with.
+*/
+#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS /* IMP: R-16824-07538 */
+
+/*
+** Include the configuration header output by 'configure' if we're using the
+** autoconf-based build
+*/
+#if defined(_HAVE_SQLITE_CONFIG_H) && !defined(SQLITECONFIG_H)
+/* #include "config.h" */
+#define SQLITECONFIG_H 1
+#endif
+
+/* These macros are provided to "stringify" the value of the define
+** for those options in which the value is meaningful. */
+#define CTIMEOPT_VAL_(opt) #opt
+#define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt)
+
+/* Like CTIMEOPT_VAL, but especially for SQLITE_DEFAULT_LOOKASIDE. This
+** option requires a separate macro because legal values contain a single
+** comma. e.g. (-DSQLITE_DEFAULT_LOOKASIDE="100,100") */
+#define CTIMEOPT_VAL2_(opt1,opt2) #opt1 "," #opt2
+#define CTIMEOPT_VAL2(opt) CTIMEOPT_VAL2_(opt)
+/* #include "sqliteInt.h" */
+
+/*
+** An array of names of all compile-time options. This array should
+** be sorted A-Z.
+**
+** This array looks large, but in a typical installation actually uses
+** only a handful of compile-time options, so most times this array is usually
+** rather short and uses little memory space.
+*/
+static const char * const sqlite3azCompileOpt[] = {
+
+/*
+** BEGIN CODE GENERATED BY tool/mkctime.tcl
+*/
+#ifdef SQLITE_32BIT_ROWID
+ "32BIT_ROWID",
+#endif
+#ifdef SQLITE_4_BYTE_ALIGNED_MALLOC
+ "4_BYTE_ALIGNED_MALLOC",
+#endif
+#ifdef SQLITE_64BIT_STATS
+ "64BIT_STATS",
+#endif
+#ifdef SQLITE_ALLOW_COVERING_INDEX_SCAN
+# if SQLITE_ALLOW_COVERING_INDEX_SCAN != 1
+ "ALLOW_COVERING_INDEX_SCAN=" CTIMEOPT_VAL(SQLITE_ALLOW_COVERING_INDEX_SCAN),
+# endif
+#endif
+#ifdef SQLITE_ALLOW_URI_AUTHORITY
+ "ALLOW_URI_AUTHORITY",
+#endif
+#ifdef SQLITE_ATOMIC_INTRINSICS
+ "ATOMIC_INTRINSICS=" CTIMEOPT_VAL(SQLITE_ATOMIC_INTRINSICS),
+#endif
+#ifdef SQLITE_BITMASK_TYPE
+ "BITMASK_TYPE=" CTIMEOPT_VAL(SQLITE_BITMASK_TYPE),
+#endif
+#ifdef SQLITE_BUG_COMPATIBLE_20160819
+ "BUG_COMPATIBLE_20160819",
+#endif
+#ifdef SQLITE_CASE_SENSITIVE_LIKE
+ "CASE_SENSITIVE_LIKE",
+#endif
+#ifdef SQLITE_CHECK_PAGES
+ "CHECK_PAGES",
+#endif
+#if defined(__clang__) && defined(__clang_major__)
+ "COMPILER=clang-" CTIMEOPT_VAL(__clang_major__) "."
+ CTIMEOPT_VAL(__clang_minor__) "."
+ CTIMEOPT_VAL(__clang_patchlevel__),
+#elif defined(_MSC_VER)
+ "COMPILER=msvc-" CTIMEOPT_VAL(_MSC_VER),
+#elif defined(__GNUC__) && defined(__VERSION__)
+ "COMPILER=gcc-" __VERSION__,
+#endif
+#ifdef SQLITE_COVERAGE_TEST
+ "COVERAGE_TEST",
+#endif
+#ifdef SQLITE_DEBUG
+ "DEBUG",
+#endif
+#ifdef SQLITE_DEFAULT_AUTOMATIC_INDEX
+ "DEFAULT_AUTOMATIC_INDEX",
+#endif
+#ifdef SQLITE_DEFAULT_AUTOVACUUM
+ "DEFAULT_AUTOVACUUM",
+#endif
+#ifdef SQLITE_DEFAULT_CACHE_SIZE
+ "DEFAULT_CACHE_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_CACHE_SIZE),
+#endif
+#ifdef SQLITE_DEFAULT_CKPTFULLFSYNC
+ "DEFAULT_CKPTFULLFSYNC",
+#endif
+#ifdef SQLITE_DEFAULT_FILE_FORMAT
+ "DEFAULT_FILE_FORMAT=" CTIMEOPT_VAL(SQLITE_DEFAULT_FILE_FORMAT),
+#endif
+#ifdef SQLITE_DEFAULT_FILE_PERMISSIONS
+ "DEFAULT_FILE_PERMISSIONS=" CTIMEOPT_VAL(SQLITE_DEFAULT_FILE_PERMISSIONS),
+#endif
+#ifdef SQLITE_DEFAULT_FOREIGN_KEYS
+ "DEFAULT_FOREIGN_KEYS",
+#endif
+#ifdef SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT
+ "DEFAULT_JOURNAL_SIZE_LIMIT=" CTIMEOPT_VAL(SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT),
+#endif
+#ifdef SQLITE_DEFAULT_LOCKING_MODE
+ "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE),
+#endif
+#ifdef SQLITE_DEFAULT_LOOKASIDE
+ "DEFAULT_LOOKASIDE=" CTIMEOPT_VAL2(SQLITE_DEFAULT_LOOKASIDE),
+#endif
+#ifdef SQLITE_DEFAULT_MEMSTATUS
+# if SQLITE_DEFAULT_MEMSTATUS != 1
+ "DEFAULT_MEMSTATUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_MEMSTATUS),
+# endif
+#endif
+#ifdef SQLITE_DEFAULT_MMAP_SIZE
+ "DEFAULT_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_MMAP_SIZE),
+#endif
+#ifdef SQLITE_DEFAULT_PAGE_SIZE
+ "DEFAULT_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_PAGE_SIZE),
+#endif
+#ifdef SQLITE_DEFAULT_PCACHE_INITSZ
+ "DEFAULT_PCACHE_INITSZ=" CTIMEOPT_VAL(SQLITE_DEFAULT_PCACHE_INITSZ),
+#endif
+#ifdef SQLITE_DEFAULT_PROXYDIR_PERMISSIONS
+ "DEFAULT_PROXYDIR_PERMISSIONS=" CTIMEOPT_VAL(SQLITE_DEFAULT_PROXYDIR_PERMISSIONS),
+#endif
+#ifdef SQLITE_DEFAULT_RECURSIVE_TRIGGERS
+ "DEFAULT_RECURSIVE_TRIGGERS",
+#endif
+#ifdef SQLITE_DEFAULT_ROWEST
+ "DEFAULT_ROWEST=" CTIMEOPT_VAL(SQLITE_DEFAULT_ROWEST),
+#endif
+#ifdef SQLITE_DEFAULT_SECTOR_SIZE
+ "DEFAULT_SECTOR_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_SECTOR_SIZE),
+#endif
+#ifdef SQLITE_DEFAULT_SYNCHRONOUS
+ "DEFAULT_SYNCHRONOUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_SYNCHRONOUS),
+#endif
+#ifdef SQLITE_DEFAULT_WAL_AUTOCHECKPOINT
+ "DEFAULT_WAL_AUTOCHECKPOINT=" CTIMEOPT_VAL(SQLITE_DEFAULT_WAL_AUTOCHECKPOINT),
+#endif
+#ifdef SQLITE_DEFAULT_WAL_SYNCHRONOUS
+ "DEFAULT_WAL_SYNCHRONOUS=" CTIMEOPT_VAL(SQLITE_DEFAULT_WAL_SYNCHRONOUS),
+#endif
+#ifdef SQLITE_DEFAULT_WORKER_THREADS
+ "DEFAULT_WORKER_THREADS=" CTIMEOPT_VAL(SQLITE_DEFAULT_WORKER_THREADS),
+#endif
+#ifdef SQLITE_DIRECT_OVERFLOW_READ
+ "DIRECT_OVERFLOW_READ",
+#endif
+#ifdef SQLITE_DISABLE_DIRSYNC
+ "DISABLE_DIRSYNC",
+#endif
+#ifdef SQLITE_DISABLE_FTS3_UNICODE
+ "DISABLE_FTS3_UNICODE",
+#endif
+#ifdef SQLITE_DISABLE_FTS4_DEFERRED
+ "DISABLE_FTS4_DEFERRED",
+#endif
+#ifdef SQLITE_DISABLE_INTRINSIC
+ "DISABLE_INTRINSIC",
+#endif
+#ifdef SQLITE_DISABLE_LFS
+ "DISABLE_LFS",
+#endif
+#ifdef SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS
+ "DISABLE_PAGECACHE_OVERFLOW_STATS",
+#endif
+#ifdef SQLITE_DISABLE_SKIPAHEAD_DISTINCT
+ "DISABLE_SKIPAHEAD_DISTINCT",
+#endif
+#ifdef SQLITE_ENABLE_8_3_NAMES
+ "ENABLE_8_3_NAMES=" CTIMEOPT_VAL(SQLITE_ENABLE_8_3_NAMES),
+#endif
+#ifdef SQLITE_ENABLE_API_ARMOR
+ "ENABLE_API_ARMOR",
+#endif
+#ifdef SQLITE_ENABLE_ATOMIC_WRITE
+ "ENABLE_ATOMIC_WRITE",
+#endif
+#ifdef SQLITE_ENABLE_BATCH_ATOMIC_WRITE
+ "ENABLE_BATCH_ATOMIC_WRITE",
+#endif
+#ifdef SQLITE_ENABLE_BYTECODE_VTAB
+ "ENABLE_BYTECODE_VTAB",
+#endif
+#ifdef SQLITE_ENABLE_CEROD
+ "ENABLE_CEROD=" CTIMEOPT_VAL(SQLITE_ENABLE_CEROD),
+#endif
+#ifdef SQLITE_ENABLE_COLUMN_METADATA
+ "ENABLE_COLUMN_METADATA",
+#endif
+#ifdef SQLITE_ENABLE_COLUMN_USED_MASK
+ "ENABLE_COLUMN_USED_MASK",
+#endif
+#ifdef SQLITE_ENABLE_COSTMULT
+ "ENABLE_COSTMULT",
+#endif
+#ifdef SQLITE_ENABLE_CURSOR_HINTS
+ "ENABLE_CURSOR_HINTS",
+#endif
+#ifdef SQLITE_ENABLE_DBPAGE_VTAB
+ "ENABLE_DBPAGE_VTAB",
+#endif
+#ifdef SQLITE_ENABLE_DBSTAT_VTAB
+ "ENABLE_DBSTAT_VTAB",
+#endif
+#ifdef SQLITE_ENABLE_EXPENSIVE_ASSERT
+ "ENABLE_EXPENSIVE_ASSERT",
+#endif
+#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
+ "ENABLE_EXPLAIN_COMMENTS",
+#endif
+#ifdef SQLITE_ENABLE_FTS3
+ "ENABLE_FTS3",
+#endif
+#ifdef SQLITE_ENABLE_FTS3_PARENTHESIS
+ "ENABLE_FTS3_PARENTHESIS",
+#endif
+#ifdef SQLITE_ENABLE_FTS3_TOKENIZER
+ "ENABLE_FTS3_TOKENIZER",
+#endif
+#ifdef SQLITE_ENABLE_FTS4
+ "ENABLE_FTS4",
+#endif
+#ifdef SQLITE_ENABLE_FTS5
+ "ENABLE_FTS5",
+#endif
+#ifdef SQLITE_ENABLE_GEOPOLY
+ "ENABLE_GEOPOLY",
+#endif
+#ifdef SQLITE_ENABLE_HIDDEN_COLUMNS
+ "ENABLE_HIDDEN_COLUMNS",
+#endif
+#ifdef SQLITE_ENABLE_ICU
+ "ENABLE_ICU",
+#endif
+#ifdef SQLITE_ENABLE_IOTRACE
+ "ENABLE_IOTRACE",
+#endif
+#ifdef SQLITE_ENABLE_JSON1
+ "ENABLE_JSON1",
+#endif
+#ifdef SQLITE_ENABLE_LOAD_EXTENSION
+ "ENABLE_LOAD_EXTENSION",
+#endif
+#ifdef SQLITE_ENABLE_LOCKING_STYLE
+ "ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE),
+#endif
+#ifdef SQLITE_ENABLE_MATH_FUNCTIONS
+ "ENABLE_MATH_FUNCTIONS",
+#endif
+#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
+ "ENABLE_MEMORY_MANAGEMENT",
+#endif
+#ifdef SQLITE_ENABLE_MEMSYS3
+ "ENABLE_MEMSYS3",
+#endif
+#ifdef SQLITE_ENABLE_MEMSYS5
+ "ENABLE_MEMSYS5",
+#endif
+#ifdef SQLITE_ENABLE_MULTIPLEX
+ "ENABLE_MULTIPLEX",
+#endif
+#ifdef SQLITE_ENABLE_NORMALIZE
+ "ENABLE_NORMALIZE",
+#endif
+#ifdef SQLITE_ENABLE_NULL_TRIM
+ "ENABLE_NULL_TRIM",
+#endif
+#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
+ "ENABLE_OFFSET_SQL_FUNC",
+#endif
+#ifdef SQLITE_ENABLE_OVERSIZE_CELL_CHECK
+ "ENABLE_OVERSIZE_CELL_CHECK",
+#endif
+#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
+ "ENABLE_PREUPDATE_HOOK",
+#endif
+#ifdef SQLITE_ENABLE_QPSG
+ "ENABLE_QPSG",
+#endif
+#ifdef SQLITE_ENABLE_RBU
+ "ENABLE_RBU",
+#endif
+#ifdef SQLITE_ENABLE_RTREE
+ "ENABLE_RTREE",
+#endif
+#ifdef SQLITE_ENABLE_SELECTTRACE
+ "ENABLE_SELECTTRACE",
+#endif
+#ifdef SQLITE_ENABLE_SESSION
+ "ENABLE_SESSION",
+#endif
+#ifdef SQLITE_ENABLE_SNAPSHOT
+ "ENABLE_SNAPSHOT",
+#endif
+#ifdef SQLITE_ENABLE_SORTER_REFERENCES
+ "ENABLE_SORTER_REFERENCES",
+#endif
+#ifdef SQLITE_ENABLE_SQLLOG
+ "ENABLE_SQLLOG",
+#endif
+#ifdef SQLITE_ENABLE_STAT4
+ "ENABLE_STAT4",
+#endif
+#ifdef SQLITE_ENABLE_STMTVTAB
+ "ENABLE_STMTVTAB",
+#endif
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+ "ENABLE_STMT_SCANSTATUS",
+#endif
+#ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
+ "ENABLE_UNKNOWN_SQL_FUNCTION",
+#endif
+#ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
+ "ENABLE_UNLOCK_NOTIFY",
+#endif
+#ifdef SQLITE_ENABLE_UPDATE_DELETE_LIMIT
+ "ENABLE_UPDATE_DELETE_LIMIT",
+#endif
+#ifdef SQLITE_ENABLE_URI_00_ERROR
+ "ENABLE_URI_00_ERROR",
+#endif
+#ifdef SQLITE_ENABLE_VFSTRACE
+ "ENABLE_VFSTRACE",
+#endif
+#ifdef SQLITE_ENABLE_WHERETRACE
+ "ENABLE_WHERETRACE",
+#endif
+#ifdef SQLITE_ENABLE_ZIPVFS
+ "ENABLE_ZIPVFS",
+#endif
+#ifdef SQLITE_EXPLAIN_ESTIMATED_ROWS
+ "EXPLAIN_ESTIMATED_ROWS",
+#endif
+#ifdef SQLITE_EXTRA_IFNULLROW
+ "EXTRA_IFNULLROW",
+#endif
+#ifdef SQLITE_EXTRA_INIT
+ "EXTRA_INIT=" CTIMEOPT_VAL(SQLITE_EXTRA_INIT),
+#endif
+#ifdef SQLITE_EXTRA_SHUTDOWN
+ "EXTRA_SHUTDOWN=" CTIMEOPT_VAL(SQLITE_EXTRA_SHUTDOWN),
+#endif
+#ifdef SQLITE_FTS3_MAX_EXPR_DEPTH
+ "FTS3_MAX_EXPR_DEPTH=" CTIMEOPT_VAL(SQLITE_FTS3_MAX_EXPR_DEPTH),
+#endif
+#ifdef SQLITE_FTS5_ENABLE_TEST_MI
+ "FTS5_ENABLE_TEST_MI",
+#endif
+#ifdef SQLITE_FTS5_NO_WITHOUT_ROWID
+ "FTS5_NO_WITHOUT_ROWID",
+#endif
+#if HAVE_ISNAN || SQLITE_HAVE_ISNAN
+ "HAVE_ISNAN",
+#endif
+#ifdef SQLITE_HOMEGROWN_RECURSIVE_MUTEX
+# if SQLITE_HOMEGROWN_RECURSIVE_MUTEX != 1
+ "HOMEGROWN_RECURSIVE_MUTEX=" CTIMEOPT_VAL(SQLITE_HOMEGROWN_RECURSIVE_MUTEX),
+# endif
+#endif
+#ifdef SQLITE_IGNORE_AFP_LOCK_ERRORS
+ "IGNORE_AFP_LOCK_ERRORS",
+#endif
+#ifdef SQLITE_IGNORE_FLOCK_LOCK_ERRORS
+ "IGNORE_FLOCK_LOCK_ERRORS",
+#endif
+#ifdef SQLITE_INLINE_MEMCPY
+ "INLINE_MEMCPY",
+#endif
+#ifdef SQLITE_INT64_TYPE
+ "INT64_TYPE",
+#endif
+#ifdef SQLITE_INTEGRITY_CHECK_ERROR_MAX
+ "INTEGRITY_CHECK_ERROR_MAX=" CTIMEOPT_VAL(SQLITE_INTEGRITY_CHECK_ERROR_MAX),
+#endif
+#ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS
+ "LIKE_DOESNT_MATCH_BLOBS",
+#endif
+#ifdef SQLITE_LOCK_TRACE
+ "LOCK_TRACE",
+#endif
+#ifdef SQLITE_LOG_CACHE_SPILL
+ "LOG_CACHE_SPILL",
+#endif
+#ifdef SQLITE_MALLOC_SOFT_LIMIT
+ "MALLOC_SOFT_LIMIT=" CTIMEOPT_VAL(SQLITE_MALLOC_SOFT_LIMIT),
+#endif
+#ifdef SQLITE_MAX_ATTACHED
+ "MAX_ATTACHED=" CTIMEOPT_VAL(SQLITE_MAX_ATTACHED),
+#endif
+#ifdef SQLITE_MAX_COLUMN
+ "MAX_COLUMN=" CTIMEOPT_VAL(SQLITE_MAX_COLUMN),
+#endif
+#ifdef SQLITE_MAX_COMPOUND_SELECT
+ "MAX_COMPOUND_SELECT=" CTIMEOPT_VAL(SQLITE_MAX_COMPOUND_SELECT),
+#endif
+#ifdef SQLITE_MAX_DEFAULT_PAGE_SIZE
+ "MAX_DEFAULT_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_DEFAULT_PAGE_SIZE),
+#endif
+#ifdef SQLITE_MAX_EXPR_DEPTH
+ "MAX_EXPR_DEPTH=" CTIMEOPT_VAL(SQLITE_MAX_EXPR_DEPTH),
+#endif
+#ifdef SQLITE_MAX_FUNCTION_ARG
+ "MAX_FUNCTION_ARG=" CTIMEOPT_VAL(SQLITE_MAX_FUNCTION_ARG),
+#endif
+#ifdef SQLITE_MAX_LENGTH
+ "MAX_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_LENGTH),
+#endif
+#ifdef SQLITE_MAX_LIKE_PATTERN_LENGTH
+ "MAX_LIKE_PATTERN_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_LIKE_PATTERN_LENGTH),
+#endif
+#ifdef SQLITE_MAX_MEMORY
+ "MAX_MEMORY=" CTIMEOPT_VAL(SQLITE_MAX_MEMORY),
+#endif
+#ifdef SQLITE_MAX_MMAP_SIZE
+ "MAX_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE),
+#endif
+#ifdef SQLITE_MAX_MMAP_SIZE_
+ "MAX_MMAP_SIZE_=" CTIMEOPT_VAL(SQLITE_MAX_MMAP_SIZE_),
+#endif
+#ifdef SQLITE_MAX_PAGE_COUNT
+ "MAX_PAGE_COUNT=" CTIMEOPT_VAL(SQLITE_MAX_PAGE_COUNT),
+#endif
+#ifdef SQLITE_MAX_PAGE_SIZE
+ "MAX_PAGE_SIZE=" CTIMEOPT_VAL(SQLITE_MAX_PAGE_SIZE),
+#endif
+#ifdef SQLITE_MAX_SCHEMA_RETRY
+ "MAX_SCHEMA_RETRY=" CTIMEOPT_VAL(SQLITE_MAX_SCHEMA_RETRY),
+#endif
+#ifdef SQLITE_MAX_SQL_LENGTH
+ "MAX_SQL_LENGTH=" CTIMEOPT_VAL(SQLITE_MAX_SQL_LENGTH),
+#endif
+#ifdef SQLITE_MAX_TRIGGER_DEPTH
+ "MAX_TRIGGER_DEPTH=" CTIMEOPT_VAL(SQLITE_MAX_TRIGGER_DEPTH),
+#endif
+#ifdef SQLITE_MAX_VARIABLE_NUMBER
+ "MAX_VARIABLE_NUMBER=" CTIMEOPT_VAL(SQLITE_MAX_VARIABLE_NUMBER),
+#endif
+#ifdef SQLITE_MAX_VDBE_OP
+ "MAX_VDBE_OP=" CTIMEOPT_VAL(SQLITE_MAX_VDBE_OP),
+#endif
+#ifdef SQLITE_MAX_WORKER_THREADS
+ "MAX_WORKER_THREADS=" CTIMEOPT_VAL(SQLITE_MAX_WORKER_THREADS),
+#endif
+#ifdef SQLITE_MEMDEBUG
+ "MEMDEBUG",
+#endif
+#ifdef SQLITE_MIXED_ENDIAN_64BIT_FLOAT
+ "MIXED_ENDIAN_64BIT_FLOAT",
+#endif
+#ifdef SQLITE_MMAP_READWRITE
+ "MMAP_READWRITE",
+#endif
+#ifdef SQLITE_MUTEX_NOOP
+ "MUTEX_NOOP",
+#endif
+#ifdef SQLITE_MUTEX_OMIT
+ "MUTEX_OMIT",
+#endif
+#ifdef SQLITE_MUTEX_PTHREADS
+ "MUTEX_PTHREADS",
+#endif
+#ifdef SQLITE_MUTEX_W32
+ "MUTEX_W32",
+#endif
+#ifdef SQLITE_NEED_ERR_NAME
+ "NEED_ERR_NAME",
+#endif
+#ifdef SQLITE_NO_SYNC
+ "NO_SYNC",
+#endif
+#ifdef SQLITE_OMIT_ALTERTABLE
+ "OMIT_ALTERTABLE",
+#endif
+#ifdef SQLITE_OMIT_ANALYZE
+ "OMIT_ANALYZE",
+#endif
+#ifdef SQLITE_OMIT_ATTACH
+ "OMIT_ATTACH",
+#endif
+#ifdef SQLITE_OMIT_AUTHORIZATION
+ "OMIT_AUTHORIZATION",
+#endif
+#ifdef SQLITE_OMIT_AUTOINCREMENT
+ "OMIT_AUTOINCREMENT",
+#endif
+#ifdef SQLITE_OMIT_AUTOINIT
+ "OMIT_AUTOINIT",
+#endif
+#ifdef SQLITE_OMIT_AUTOMATIC_INDEX
+ "OMIT_AUTOMATIC_INDEX",
+#endif
+#ifdef SQLITE_OMIT_AUTORESET
+ "OMIT_AUTORESET",
+#endif
+#ifdef SQLITE_OMIT_AUTOVACUUM
+ "OMIT_AUTOVACUUM",
+#endif
+#ifdef SQLITE_OMIT_BETWEEN_OPTIMIZATION
+ "OMIT_BETWEEN_OPTIMIZATION",
+#endif
+#ifdef SQLITE_OMIT_BLOB_LITERAL
+ "OMIT_BLOB_LITERAL",
+#endif
+#ifdef SQLITE_OMIT_CAST
+ "OMIT_CAST",
+#endif
+#ifdef SQLITE_OMIT_CHECK
+ "OMIT_CHECK",
+#endif
+#ifdef SQLITE_OMIT_COMPLETE
+ "OMIT_COMPLETE",
+#endif
+#ifdef SQLITE_OMIT_COMPOUND_SELECT
+ "OMIT_COMPOUND_SELECT",
+#endif
+#ifdef SQLITE_OMIT_CONFLICT_CLAUSE
+ "OMIT_CONFLICT_CLAUSE",
+#endif
+#ifdef SQLITE_OMIT_CTE
+ "OMIT_CTE",
+#endif
+#if defined(SQLITE_OMIT_DATETIME_FUNCS) || defined(SQLITE_OMIT_FLOATING_POINT)
+ "OMIT_DATETIME_FUNCS",
+#endif
+#ifdef SQLITE_OMIT_DECLTYPE
+ "OMIT_DECLTYPE",
+#endif
+#ifdef SQLITE_OMIT_DEPRECATED
+ "OMIT_DEPRECATED",
+#endif
+#ifdef SQLITE_OMIT_DESERIALIZE
+ "OMIT_DESERIALIZE",
+#endif
+#ifdef SQLITE_OMIT_DISKIO
+ "OMIT_DISKIO",
+#endif
+#ifdef SQLITE_OMIT_EXPLAIN
+ "OMIT_EXPLAIN",
+#endif
+#ifdef SQLITE_OMIT_FLAG_PRAGMAS
+ "OMIT_FLAG_PRAGMAS",
+#endif
+#ifdef SQLITE_OMIT_FLOATING_POINT
+ "OMIT_FLOATING_POINT",
+#endif
+#ifdef SQLITE_OMIT_FOREIGN_KEY
+ "OMIT_FOREIGN_KEY",
+#endif
+#ifdef SQLITE_OMIT_GET_TABLE
+ "OMIT_GET_TABLE",
+#endif
+#ifdef SQLITE_OMIT_HEX_INTEGER
+ "OMIT_HEX_INTEGER",
+#endif
+#ifdef SQLITE_OMIT_INCRBLOB
+ "OMIT_INCRBLOB",
+#endif
+#ifdef SQLITE_OMIT_INTEGRITY_CHECK
+ "OMIT_INTEGRITY_CHECK",
+#endif
+#ifdef SQLITE_OMIT_INTROSPECTION_PRAGMAS
+ "OMIT_INTROSPECTION_PRAGMAS",
+#endif
+#ifdef SQLITE_OMIT_LIKE_OPTIMIZATION
+ "OMIT_LIKE_OPTIMIZATION",
+#endif
+#ifdef SQLITE_OMIT_LOAD_EXTENSION
+ "OMIT_LOAD_EXTENSION",
+#endif
+#ifdef SQLITE_OMIT_LOCALTIME
+ "OMIT_LOCALTIME",
+#endif
+#ifdef SQLITE_OMIT_LOOKASIDE
+ "OMIT_LOOKASIDE",
+#endif
+#ifdef SQLITE_OMIT_MEMORYDB
+ "OMIT_MEMORYDB",
+#endif
+#ifdef SQLITE_OMIT_OR_OPTIMIZATION
+ "OMIT_OR_OPTIMIZATION",
+#endif
+#ifdef SQLITE_OMIT_PAGER_PRAGMAS
+ "OMIT_PAGER_PRAGMAS",
+#endif
+#ifdef SQLITE_OMIT_PARSER_TRACE
+ "OMIT_PARSER_TRACE",
+#endif
+#ifdef SQLITE_OMIT_POPEN
+ "OMIT_POPEN",
+#endif
+#ifdef SQLITE_OMIT_PRAGMA
+ "OMIT_PRAGMA",
+#endif
+#ifdef SQLITE_OMIT_PROGRESS_CALLBACK
+ "OMIT_PROGRESS_CALLBACK",
+#endif
+#ifdef SQLITE_OMIT_QUICKBALANCE
+ "OMIT_QUICKBALANCE",
+#endif
+#ifdef SQLITE_OMIT_REINDEX
+ "OMIT_REINDEX",
+#endif
+#ifdef SQLITE_OMIT_SCHEMA_PRAGMAS
+ "OMIT_SCHEMA_PRAGMAS",
+#endif
+#ifdef SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
+ "OMIT_SCHEMA_VERSION_PRAGMAS",
+#endif
+#ifdef SQLITE_OMIT_SHARED_CACHE
+ "OMIT_SHARED_CACHE",
+#endif
+#ifdef SQLITE_OMIT_SHUTDOWN_DIRECTORIES
+ "OMIT_SHUTDOWN_DIRECTORIES",
+#endif
+#ifdef SQLITE_OMIT_SUBQUERY
+ "OMIT_SUBQUERY",
+#endif
+#ifdef SQLITE_OMIT_TCL_VARIABLE
+ "OMIT_TCL_VARIABLE",
+#endif
+#ifdef SQLITE_OMIT_TEMPDB
+ "OMIT_TEMPDB",
+#endif
+#ifdef SQLITE_OMIT_TEST_CONTROL
+ "OMIT_TEST_CONTROL",
+#endif
+#ifdef SQLITE_OMIT_TRACE
+# if SQLITE_OMIT_TRACE != 1
+ "OMIT_TRACE=" CTIMEOPT_VAL(SQLITE_OMIT_TRACE),
+# endif
+#endif
+#ifdef SQLITE_OMIT_TRIGGER
+ "OMIT_TRIGGER",
+#endif
+#ifdef SQLITE_OMIT_TRUNCATE_OPTIMIZATION
+ "OMIT_TRUNCATE_OPTIMIZATION",
+#endif
+#ifdef SQLITE_OMIT_UTF16
+ "OMIT_UTF16",
+#endif
+#ifdef SQLITE_OMIT_VACUUM
+ "OMIT_VACUUM",
+#endif
+#ifdef SQLITE_OMIT_VIEW
+ "OMIT_VIEW",
+#endif
+#ifdef SQLITE_OMIT_VIRTUALTABLE
+ "OMIT_VIRTUALTABLE",
+#endif
+#ifdef SQLITE_OMIT_WAL
+ "OMIT_WAL",
+#endif
+#ifdef SQLITE_OMIT_WSD
+ "OMIT_WSD",
+#endif
+#ifdef SQLITE_OMIT_XFER_OPT
+ "OMIT_XFER_OPT",
+#endif
+#ifdef SQLITE_PCACHE_SEPARATE_HEADER
+ "PCACHE_SEPARATE_HEADER",
+#endif
+#ifdef SQLITE_PERFORMANCE_TRACE
+ "PERFORMANCE_TRACE",
+#endif
+#ifdef SQLITE_POWERSAFE_OVERWRITE
+# if SQLITE_POWERSAFE_OVERWRITE != 1
+ "POWERSAFE_OVERWRITE=" CTIMEOPT_VAL(SQLITE_POWERSAFE_OVERWRITE),
+# endif
+#endif
+#ifdef SQLITE_PREFER_PROXY_LOCKING
+ "PREFER_PROXY_LOCKING",
+#endif
+#ifdef SQLITE_PROXY_DEBUG
+ "PROXY_DEBUG",
+#endif
+#ifdef SQLITE_REVERSE_UNORDERED_SELECTS
+ "REVERSE_UNORDERED_SELECTS",
+#endif
+#ifdef SQLITE_RTREE_INT_ONLY
+ "RTREE_INT_ONLY",
+#endif
+#ifdef SQLITE_SECURE_DELETE
+ "SECURE_DELETE",
+#endif
+#ifdef SQLITE_SMALL_STACK
+ "SMALL_STACK",
+#endif
+#ifdef SQLITE_SORTER_PMASZ
+ "SORTER_PMASZ=" CTIMEOPT_VAL(SQLITE_SORTER_PMASZ),
+#endif
+#ifdef SQLITE_SOUNDEX
+ "SOUNDEX",
+#endif
+#ifdef SQLITE_STAT4_SAMPLES
+ "STAT4_SAMPLES=" CTIMEOPT_VAL(SQLITE_STAT4_SAMPLES),
+#endif
+#ifdef SQLITE_STMTJRNL_SPILL
+ "STMTJRNL_SPILL=" CTIMEOPT_VAL(SQLITE_STMTJRNL_SPILL),
+#endif
+#ifdef SQLITE_SUBSTR_COMPATIBILITY
+ "SUBSTR_COMPATIBILITY",
+#endif
+#if (!defined(SQLITE_WIN32_MALLOC) \
+ && !defined(SQLITE_ZERO_MALLOC) \
+ && !defined(SQLITE_MEMDEBUG) \
+ ) || defined(SQLITE_SYSTEM_MALLOC)
+ "SYSTEM_MALLOC",
+#endif
+#ifdef SQLITE_TCL
+ "TCL",
+#endif
+#ifdef SQLITE_TEMP_STORE
+ "TEMP_STORE=" CTIMEOPT_VAL(SQLITE_TEMP_STORE),
+#endif
+#ifdef SQLITE_TEST
+ "TEST",
+#endif
+#if defined(SQLITE_THREADSAFE)
+ "THREADSAFE=" CTIMEOPT_VAL(SQLITE_THREADSAFE),
+#elif defined(THREADSAFE)
+ "THREADSAFE=" CTIMEOPT_VAL(THREADSAFE),
+#else
+ "THREADSAFE=1",
+#endif
+#ifdef SQLITE_UNLINK_AFTER_CLOSE
+ "UNLINK_AFTER_CLOSE",
+#endif
+#ifdef SQLITE_UNTESTABLE
+ "UNTESTABLE",
+#endif
+#ifdef SQLITE_USER_AUTHENTICATION
+ "USER_AUTHENTICATION",
+#endif
+#ifdef SQLITE_USE_ALLOCA
+ "USE_ALLOCA",
+#endif
+#ifdef SQLITE_USE_FCNTL_TRACE
+ "USE_FCNTL_TRACE",
+#endif
+#ifdef SQLITE_USE_URI
+ "USE_URI",
+#endif
+#ifdef SQLITE_VDBE_COVERAGE
+ "VDBE_COVERAGE",
+#endif
+#ifdef SQLITE_WIN32_MALLOC
+ "WIN32_MALLOC",
+#endif
+#ifdef SQLITE_ZERO_MALLOC
+ "ZERO_MALLOC",
+#endif
+/*
+** END CODE GENERATED BY tool/mkctime.tcl
+*/
+};
+
+SQLITE_PRIVATE const char **sqlite3CompileOptions(int *pnOpt){
+ *pnOpt = sizeof(sqlite3azCompileOpt) / sizeof(sqlite3azCompileOpt[0]);
+ return (const char**)sqlite3azCompileOpt;
+}
+
+#endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */
+
+/************** End of ctime.c ***********************************************/
/************** Begin file global.c ******************************************/
/*
** 2008 June 13
@@ -21092,6 +21554,18 @@ SQLITE_PRIVATE SQLITE_WSD struct Sqlite3Config sqlite3Config = {
*/
SQLITE_PRIVATE FuncDefHash sqlite3BuiltinFunctions;
+#if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_DEBUG)
+/*
+** Counter used for coverage testing. Does not come into play for
+** release builds.
+**
+** Access to this global variable is not mutex protected. This might
+** result in TSAN warnings. But as the variable does not exist in
+** release builds, that should not be a concern.
+*/
+SQLITE_PRIVATE unsigned int sqlite3CoverageCounter;
+#endif /* SQLITE_COVERAGE_TEST || SQLITE_DEBUG */
+
#ifdef VDBE_PROFILE
/*
** The following performance counter can be used in place of
@@ -21142,6 +21616,48 @@ SQLITE_PRIVATE const unsigned char sqlite3OpcodeProperty[] = OPFLG_INITIALIZER;
*/
SQLITE_PRIVATE const char sqlite3StrBINARY[] = "BINARY";
+/*
+** Standard typenames. These names must match the COLTYPE_* definitions.
+** Adjust the SQLITE_N_STDTYPE value if adding or removing entries.
+**
+** sqlite3StdType[] The actual names of the datatypes.
+**
+** sqlite3StdTypeLen[] The length (in bytes) of each entry
+** in sqlite3StdType[].
+**
+** sqlite3StdTypeAffinity[] The affinity associated with each entry
+** in sqlite3StdType[].
+**
+** sqlite3StdTypeMap[] The type value (as returned from
+** sqlite3_column_type() or sqlite3_value_type())
+** for each entry in sqlite3StdType[].
+*/
+SQLITE_PRIVATE const unsigned char sqlite3StdTypeLen[] = { 3, 4, 3, 7, 4, 4 };
+SQLITE_PRIVATE const char sqlite3StdTypeAffinity[] = {
+ SQLITE_AFF_NUMERIC,
+ SQLITE_AFF_BLOB,
+ SQLITE_AFF_INTEGER,
+ SQLITE_AFF_INTEGER,
+ SQLITE_AFF_REAL,
+ SQLITE_AFF_TEXT
+};
+SQLITE_PRIVATE const char sqlite3StdTypeMap[] = {
+ 0,
+ SQLITE_BLOB,
+ SQLITE_INTEGER,
+ SQLITE_INTEGER,
+ SQLITE_FLOAT,
+ SQLITE_TEXT
+};
+SQLITE_PRIVATE const char *sqlite3StdType[] = {
+ "ANY",
+ "BLOB",
+ "INT",
+ "INTEGER",
+ "REAL",
+ "TEXT"
+};
+
/************** End of global.c **********************************************/
/************** Begin file status.c ******************************************/
/*
@@ -21344,8 +21860,8 @@ struct VdbeFrame {
int nMem; /* Number of entries in aMem */
int nChildMem; /* Number of memory cells for child frame */
int nChildCsr; /* Number of cursors for child frame */
- int nChange; /* Statement changes (Vdbe.nChange) */
- int nDbChange; /* Value of db->nChange */
+ i64 nChange; /* Statement changes (Vdbe.nChange) */
+ i64 nDbChange; /* Value of db->nChange */
};
/* Magic number for sanity checking on VdbeFrame objects */
@@ -21552,7 +22068,7 @@ struct Vdbe {
u32 cacheCtr; /* VdbeCursor row cache generation counter */
int pc; /* The program counter */
int rc; /* Value to return */
- int nChange; /* Number of db changes made since last reset */
+ i64 nChange; /* Number of db changes made since last reset */
int iStatement; /* Statement number (or 0 if has no opened stmt) */
i64 iCurrentTime; /* Value of julianday('now') for this statement */
i64 nFkConstraint; /* Number of imm. FK constraints this VM */
@@ -21690,13 +22206,18 @@ SQLITE_PRIVATE void sqlite3VdbeMemSetDouble(Mem*, double);
SQLITE_PRIVATE void sqlite3VdbeMemSetPointer(Mem*, void*, const char*, void(*)(void*));
SQLITE_PRIVATE void sqlite3VdbeMemInit(Mem*,sqlite3*,u16);
SQLITE_PRIVATE void sqlite3VdbeMemSetNull(Mem*);
+#ifndef SQLITE_OMIT_INCRBLOB
SQLITE_PRIVATE void sqlite3VdbeMemSetZeroBlob(Mem*,int);
+#else
+SQLITE_PRIVATE int sqlite3VdbeMemSetZeroBlob(Mem*,int);
+#endif
#ifdef SQLITE_DEBUG
SQLITE_PRIVATE int sqlite3VdbeMemIsRowSet(const Mem*);
#endif
SQLITE_PRIVATE int sqlite3VdbeMemSetRowSet(Mem*);
SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem*);
SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem*, u8, u8);
+SQLITE_PRIVATE int sqlite3IntFloatCompare(i64,double);
SQLITE_PRIVATE i64 sqlite3VdbeIntValue(Mem*);
SQLITE_PRIVATE int sqlite3VdbeMemIntegerify(Mem*);
SQLITE_PRIVATE double sqlite3VdbeRealValue(Mem*);
@@ -23181,131 +23702,100 @@ static void strftimeFunc(
sqlite3_value **argv
){
DateTime x;
- u64 n;
size_t i,j;
- char *z;
sqlite3 *db;
const char *zFmt;
- char zBuf[100];
+ sqlite3_str sRes;
+
+
if( argc==0 ) return;
zFmt = (const char*)sqlite3_value_text(argv[0]);
if( zFmt==0 || isDate(context, argc-1, argv+1, &x) ) return;
db = sqlite3_context_db_handle(context);
- for(i=0, n=1; zFmt[i]; i++, n++){
- if( zFmt[i]=='%' ){
- switch( zFmt[i+1] ){
- case 'd':
- case 'H':
- case 'm':
- case 'M':
- case 'S':
- case 'W':
- n++;
- /* fall thru */
- case 'w':
- case '%':
- break;
- case 'f':
- n += 8;
- break;
- case 'j':
- n += 3;
- break;
- case 'Y':
- n += 8;
- break;
- case 's':
- case 'J':
- n += 50;
- break;
- default:
- return; /* ERROR. return a NULL */
- }
- i++;
- }
- }
- testcase( n==sizeof(zBuf)-1 );
- testcase( n==sizeof(zBuf) );
- testcase( n==(u64)db->aLimit[SQLITE_LIMIT_LENGTH]+1 );
- testcase( n==(u64)db->aLimit[SQLITE_LIMIT_LENGTH] );
- if( n<sizeof(zBuf) ){
- z = zBuf;
- }else if( n>(u64)db->aLimit[SQLITE_LIMIT_LENGTH] ){
- sqlite3_result_error_toobig(context);
- return;
- }else{
- z = sqlite3DbMallocRawNN(db, (int)n);
- if( z==0 ){
- sqlite3_result_error_nomem(context);
- return;
- }
- }
+ sqlite3StrAccumInit(&sRes, 0, 0, 0, db->aLimit[SQLITE_LIMIT_LENGTH]);
+
computeJD(&x);
computeYMD_HMS(&x);
for(i=j=0; zFmt[i]; i++){
- if( zFmt[i]!='%' ){
- z[j++] = zFmt[i];
- }else{
- i++;
- switch( zFmt[i] ){
- case 'd': sqlite3_snprintf(3, &z[j],"%02d",x.D); j+=2; break;
- case 'f': {
- double s = x.s;
- if( s>59.999 ) s = 59.999;
- sqlite3_snprintf(7, &z[j],"%06.3f", s);
- j += sqlite3Strlen30(&z[j]);
- break;
- }
- case 'H': sqlite3_snprintf(3, &z[j],"%02d",x.h); j+=2; break;
- case 'W': /* Fall thru */
- case 'j': {
- int nDay; /* Number of days since 1st day of year */
- DateTime y = x;
- y.validJD = 0;
- y.M = 1;
- y.D = 1;
- computeJD(&y);
- nDay = (int)((x.iJD-y.iJD+43200000)/86400000);
- if( zFmt[i]=='W' ){
- int wd; /* 0=Monday, 1=Tuesday, ... 6=Sunday */
- wd = (int)(((x.iJD+43200000)/86400000)%7);
- sqlite3_snprintf(3, &z[j],"%02d",(nDay+7-wd)/7);
- j += 2;
- }else{
- sqlite3_snprintf(4, &z[j],"%03d",nDay+1);
- j += 3;
- }
- break;
- }
- case 'J': {
- sqlite3_snprintf(20, &z[j],"%.16g",x.iJD/86400000.0);
- j+=sqlite3Strlen30(&z[j]);
- break;
- }
- case 'm': sqlite3_snprintf(3, &z[j],"%02d",x.M); j+=2; break;
- case 'M': sqlite3_snprintf(3, &z[j],"%02d",x.m); j+=2; break;
- case 's': {
- i64 iS = (i64)(x.iJD/1000 - 21086676*(i64)10000);
- sqlite3Int64ToText(iS, &z[j]);
- j += sqlite3Strlen30(&z[j]);
- break;
- }
- case 'S': sqlite3_snprintf(3,&z[j],"%02d",(int)x.s); j+=2; break;
- case 'w': {
- z[j++] = (char)(((x.iJD+129600000)/86400000) % 7) + '0';
- break;
- }
- case 'Y': {
- sqlite3_snprintf(5,&z[j],"%04d",x.Y); j+=sqlite3Strlen30(&z[j]);
- break;
+ if( zFmt[i]!='%' ) continue;
+ if( j<i ) sqlite3_str_append(&sRes, zFmt+j, (int)(i-j));
+ i++;
+ j = i + 1;
+ switch( zFmt[i] ){
+ case 'd': {
+ sqlite3_str_appendf(&sRes, "%02d", x.D);
+ break;
+ }
+ case 'f': {
+ double s = x.s;
+ if( s>59.999 ) s = 59.999;
+ sqlite3_str_appendf(&sRes, "%06.3f", s);
+ break;
+ }
+ case 'H': {
+ sqlite3_str_appendf(&sRes, "%02d", x.h);
+ break;
+ }
+ case 'W': /* Fall thru */
+ case 'j': {
+ int nDay; /* Number of days since 1st day of year */
+ DateTime y = x;
+ y.validJD = 0;
+ y.M = 1;
+ y.D = 1;
+ computeJD(&y);
+ nDay = (int)((x.iJD-y.iJD+43200000)/86400000);
+ if( zFmt[i]=='W' ){
+ int wd; /* 0=Monday, 1=Tuesday, ... 6=Sunday */
+ wd = (int)(((x.iJD+43200000)/86400000)%7);
+ sqlite3_str_appendf(&sRes,"%02d",(nDay+7-wd)/7);
+ }else{
+ sqlite3_str_appendf(&sRes,"%03d",nDay+1);
}
- default: z[j++] = '%'; break;
+ break;
+ }
+ case 'J': {
+ sqlite3_str_appendf(&sRes,"%.16g",x.iJD/86400000.0);
+ break;
+ }
+ case 'm': {
+ sqlite3_str_appendf(&sRes,"%02d",x.M);
+ break;
+ }
+ case 'M': {
+ sqlite3_str_appendf(&sRes,"%02d",x.m);
+ break;
+ }
+ case 's': {
+ i64 iS = (i64)(x.iJD/1000 - 21086676*(i64)10000);
+ sqlite3_str_appendf(&sRes,"%lld",iS);
+ break;
+ }
+ case 'S': {
+ sqlite3_str_appendf(&sRes,"%02d",(int)x.s);
+ break;
+ }
+ case 'w': {
+ sqlite3_str_appendchar(&sRes, 1,
+ (char)(((x.iJD+129600000)/86400000) % 7) + '0');
+ break;
+ }
+ case 'Y': {
+ sqlite3_str_appendf(&sRes,"%04d",x.Y);
+ break;
+ }
+ case '%': {
+ sqlite3_str_appendchar(&sRes, 1, '%');
+ break;
+ }
+ default: {
+ sqlite3_str_reset(&sRes);
+ return;
}
}
}
- z[j] = 0;
- sqlite3_result_text(context, z, -1,
- z==zBuf ? SQLITE_TRANSIENT : SQLITE_DYNAMIC);
+ if( j<i ) sqlite3_str_append(&sRes, zFmt+j, (int)(i-j));
+ sqlite3ResultStrAccum(context, &sRes);
}
/*
@@ -23586,6 +24076,7 @@ SQLITE_PRIVATE int sqlite3OsSectorSize(sqlite3_file *id){
return (xSectorSize ? xSectorSize(id) : SQLITE_DEFAULT_SECTOR_SIZE);
}
SQLITE_PRIVATE int sqlite3OsDeviceCharacteristics(sqlite3_file *id){
+ if( NEVER(id->pMethods==0) ) return 0;
return id->pMethods->xDeviceCharacteristics(id);
}
#ifndef SQLITE_OMIT_WAL
@@ -23740,12 +24231,15 @@ SQLITE_PRIVATE int sqlite3OsOpenMalloc(
rc = sqlite3OsOpen(pVfs, zFile, pFile, flags, pOutFlags);
if( rc!=SQLITE_OK ){
sqlite3_free(pFile);
+ *ppFile = 0;
}else{
*ppFile = pFile;
}
}else{
+ *ppFile = 0;
rc = SQLITE_NOMEM_BKPT;
}
+ assert( *ppFile!=0 || rc!=SQLITE_OK );
return rc;
}
SQLITE_PRIVATE void sqlite3OsCloseFree(sqlite3_file *pFile){
@@ -24463,7 +24957,7 @@ static void adjustStats(int iSize, int increment){
** This routine checks the guards at either end of the allocation and
** if they are incorrect it asserts.
*/
-static struct MemBlockHdr *sqlite3MemsysGetHeader(void *pAllocation){
+static struct MemBlockHdr *sqlite3MemsysGetHeader(const void *pAllocation){
struct MemBlockHdr *p;
int *pInt;
u8 *pU8;
@@ -24710,7 +25204,7 @@ SQLITE_PRIVATE void sqlite3MemdebugSetType(void *p, u8 eType){
**
** assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
*/
-SQLITE_PRIVATE int sqlite3MemdebugHasType(void *p, u8 eType){
+SQLITE_PRIVATE int sqlite3MemdebugHasType(const void *p, u8 eType){
int rc = 1;
if( p && sqlite3GlobalConfig.m.xFree==sqlite3MemFree ){
struct MemBlockHdr *pHdr;
@@ -24732,7 +25226,7 @@ SQLITE_PRIVATE int sqlite3MemdebugHasType(void *p, u8 eType){
**
** assert( sqlite3MemdebugNoType(p, MEMTYPE_LOOKASIDE) );
*/
-SQLITE_PRIVATE int sqlite3MemdebugNoType(void *p, u8 eType){
+SQLITE_PRIVATE int sqlite3MemdebugNoType(const void *p, u8 eType){
int rc = 1;
if( p && sqlite3GlobalConfig.m.xFree==sqlite3MemFree ){
struct MemBlockHdr *pHdr;
@@ -27110,205 +27604,7 @@ SQLITE_PRIVATE sqlite3_mutex_methods const *sqlite3DefaultMutex(void){
/*
** Include code that is common to all os_*.c files
*/
-/************** Include os_common.h in the middle of mutex_w32.c *************/
-/************** Begin file os_common.h ***************************************/
-/*
-** 2004 May 22
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-******************************************************************************
-**
-** This file contains macros and a little bit of code that is common to
-** all of the platform-specific files (os_*.c) and is #included into those
-** files.
-**
-** This file should be #included by the os_*.c files only. It is not a
-** general purpose header file.
-*/
-#ifndef _OS_COMMON_H_
-#define _OS_COMMON_H_
-
-/*
-** At least two bugs have slipped in because we changed the MEMORY_DEBUG
-** macro to SQLITE_DEBUG and some older makefiles have not yet made the
-** switch. The following code should catch this problem at compile-time.
-*/
-#ifdef MEMORY_DEBUG
-# error "The MEMORY_DEBUG macro is obsolete. Use SQLITE_DEBUG instead."
-#endif
-
-/*
-** Macros for performance tracing. Normally turned off. Only works
-** on i486 hardware.
-*/
-#ifdef SQLITE_PERFORMANCE_TRACE
-
-/*
-** hwtime.h contains inline assembler code for implementing
-** high-performance timing routines.
-*/
-/************** Include hwtime.h in the middle of os_common.h ****************/
-/************** Begin file hwtime.h ******************************************/
-/*
-** 2008 May 27
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-******************************************************************************
-**
-** This file contains inline asm code for retrieving "high-performance"
-** counters for x86 and x86_64 class CPUs.
-*/
-#ifndef SQLITE_HWTIME_H
-#define SQLITE_HWTIME_H
-
-/*
-** The following routine only works on pentium-class (or newer) processors.
-** It uses the RDTSC opcode to read the cycle count value out of the
-** processor and returns that value. This can be used for high-res
-** profiling.
-*/
-#if !defined(__STRICT_ANSI__) && \
- (defined(__GNUC__) || defined(_MSC_VER)) && \
- (defined(i386) || defined(__i386__) || defined(_M_IX86))
-
- #if defined(__GNUC__)
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned int lo, hi;
- __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
- return (sqlite_uint64)hi << 32 | lo;
- }
-
- #elif defined(_MSC_VER)
-
- __declspec(naked) __inline sqlite_uint64 __cdecl sqlite3Hwtime(void){
- __asm {
- rdtsc
- ret ; return value at EDX:EAX
- }
- }
-
- #endif
-
-#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__x86_64__))
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned long val;
- __asm__ __volatile__ ("rdtsc" : "=A" (val));
- return val;
- }
-
-#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__ppc__))
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned long long retval;
- unsigned long junk;
- __asm__ __volatile__ ("\n\
- 1: mftbu %1\n\
- mftb %L0\n\
- mftbu %0\n\
- cmpw %0,%1\n\
- bne 1b"
- : "=r" (retval), "=r" (junk));
- return retval;
- }
-
-#else
-
- /*
- ** asm() is needed for hardware timing support. Without asm(),
- ** disable the sqlite3Hwtime() routine.
- **
- ** sqlite3Hwtime() is only used for some obscure debugging
- ** and analysis configurations, not in any deliverable, so this
- ** should not be a great loss.
- */
-SQLITE_PRIVATE sqlite_uint64 sqlite3Hwtime(void){ return ((sqlite_uint64)0); }
-
-#endif
-
-#endif /* !defined(SQLITE_HWTIME_H) */
-
-/************** End of hwtime.h **********************************************/
-/************** Continuing where we left off in os_common.h ******************/
-
-static sqlite_uint64 g_start;
-static sqlite_uint64 g_elapsed;
-#define TIMER_START g_start=sqlite3Hwtime()
-#define TIMER_END g_elapsed=sqlite3Hwtime()-g_start
-#define TIMER_ELAPSED g_elapsed
-#else
-#define TIMER_START
-#define TIMER_END
-#define TIMER_ELAPSED ((sqlite_uint64)0)
-#endif
-
-/*
-** If we compile with the SQLITE_TEST macro set, then the following block
-** of code will give us the ability to simulate a disk I/O error. This
-** is used for testing the I/O recovery logic.
-*/
-#if defined(SQLITE_TEST)
-SQLITE_API extern int sqlite3_io_error_hit;
-SQLITE_API extern int sqlite3_io_error_hardhit;
-SQLITE_API extern int sqlite3_io_error_pending;
-SQLITE_API extern int sqlite3_io_error_persist;
-SQLITE_API extern int sqlite3_io_error_benign;
-SQLITE_API extern int sqlite3_diskfull_pending;
-SQLITE_API extern int sqlite3_diskfull;
-#define SimulateIOErrorBenign(X) sqlite3_io_error_benign=(X)
-#define SimulateIOError(CODE) \
- if( (sqlite3_io_error_persist && sqlite3_io_error_hit) \
- || sqlite3_io_error_pending-- == 1 ) \
- { local_ioerr(); CODE; }
-static void local_ioerr(){
- IOTRACE(("IOERR\n"));
- sqlite3_io_error_hit++;
- if( !sqlite3_io_error_benign ) sqlite3_io_error_hardhit++;
-}
-#define SimulateDiskfullError(CODE) \
- if( sqlite3_diskfull_pending ){ \
- if( sqlite3_diskfull_pending == 1 ){ \
- local_ioerr(); \
- sqlite3_diskfull = 1; \
- sqlite3_io_error_hit = 1; \
- CODE; \
- }else{ \
- sqlite3_diskfull_pending--; \
- } \
- }
-#else
-#define SimulateIOErrorBenign(X)
-#define SimulateIOError(A)
-#define SimulateDiskfullError(A)
-#endif /* defined(SQLITE_TEST) */
-
-/*
-** When testing, keep a count of the number of open files.
-*/
-#if defined(SQLITE_TEST)
-SQLITE_API extern int sqlite3_open_file_count;
-#define OpenCounter(X) sqlite3_open_file_count+=(X)
-#else
-#define OpenCounter(X)
-#endif /* defined(SQLITE_TEST) */
-
-#endif /* !defined(_OS_COMMON_H_) */
-
-/************** End of os_common.h *******************************************/
-/************** Continuing where we left off in mutex_w32.c ******************/
+/* #include "os_common.h" */
/*
** Include the header file for the Windows VFS.
@@ -28101,7 +28397,7 @@ SQLITE_API void *sqlite3_malloc64(sqlite3_uint64 n){
** TRUE if p is a lookaside memory allocation from db
*/
#ifndef SQLITE_OMIT_LOOKASIDE
-static int isLookaside(sqlite3 *db, void *p){
+static int isLookaside(sqlite3 *db, const void *p){
return SQLITE_WITHIN(p, db->lookaside.pStart, db->lookaside.pEnd);
}
#else
@@ -28112,18 +28408,18 @@ static int isLookaside(sqlite3 *db, void *p){
** Return the size of a memory allocation previously obtained from
** sqlite3Malloc() or sqlite3_malloc().
*/
-SQLITE_PRIVATE int sqlite3MallocSize(void *p){
+SQLITE_PRIVATE int sqlite3MallocSize(const void *p){
assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
- return sqlite3GlobalConfig.m.xSize(p);
+ return sqlite3GlobalConfig.m.xSize((void*)p);
}
-static int lookasideMallocSize(sqlite3 *db, void *p){
+static int lookasideMallocSize(sqlite3 *db, const void *p){
#ifndef SQLITE_OMIT_TWOSIZE_LOOKASIDE
return p<db->lookaside.pMiddle ? db->lookaside.szTrue : LOOKASIDE_SMALL;
#else
return db->lookaside.szTrue;
#endif
}
-SQLITE_PRIVATE int sqlite3DbMallocSize(sqlite3 *db, void *p){
+SQLITE_PRIVATE int sqlite3DbMallocSize(sqlite3 *db, const void *p){
assert( p!=0 );
#ifdef SQLITE_DEBUG
if( db==0 || !isLookaside(db,p) ){
@@ -28150,7 +28446,7 @@ SQLITE_PRIVATE int sqlite3DbMallocSize(sqlite3 *db, void *p){
}
}
}
- return sqlite3GlobalConfig.m.xSize(p);
+ return sqlite3GlobalConfig.m.xSize((void*)p);
}
SQLITE_API sqlite3_uint64 sqlite3_msize(void *p){
assert( sqlite3MemdebugNoType(p, (u8)~MEMTYPE_HEAP) );
@@ -28760,7 +29056,7 @@ static char et_getdigit(LONGDOUBLE_TYPE *val, int *cnt){
/*
** Set the StrAccum object to an error mode.
*/
-static void setStrAccumError(StrAccum *p, u8 eError){
+SQLITE_PRIVATE void sqlite3StrAccumSetError(StrAccum *p, u8 eError){
assert( eError==SQLITE_NOMEM || eError==SQLITE_TOOBIG );
p->accError = eError;
if( p->mxAlloc ) sqlite3_str_reset(p);
@@ -28796,12 +29092,12 @@ static char *printfTempBuf(sqlite3_str *pAccum, sqlite3_int64 n){
char *z;
if( pAccum->accError ) return 0;
if( n>pAccum->nAlloc && n>pAccum->mxAlloc ){
- setStrAccumError(pAccum, SQLITE_TOOBIG);
+ sqlite3StrAccumSetError(pAccum, SQLITE_TOOBIG);
return 0;
}
z = sqlite3DbMallocRaw(pAccum->db, n);
if( z==0 ){
- setStrAccumError(pAccum, SQLITE_NOMEM);
+ sqlite3StrAccumSetError(pAccum, SQLITE_NOMEM);
}
return z;
}
@@ -29540,7 +29836,7 @@ static int sqlite3StrAccumEnlarge(StrAccum *p, int N){
return 0;
}
if( p->mxAlloc==0 ){
- setStrAccumError(p, SQLITE_TOOBIG);
+ sqlite3StrAccumSetError(p, SQLITE_TOOBIG);
return p->nAlloc - p->nChar - 1;
}else{
char *zOld = isMalloced(p) ? p->zText : 0;
@@ -29553,7 +29849,7 @@ static int sqlite3StrAccumEnlarge(StrAccum *p, int N){
}
if( szNew > p->mxAlloc ){
sqlite3_str_reset(p);
- setStrAccumError(p, SQLITE_TOOBIG);
+ sqlite3StrAccumSetError(p, SQLITE_TOOBIG);
return 0;
}else{
p->nAlloc = (int)szNew;
@@ -29571,7 +29867,7 @@ static int sqlite3StrAccumEnlarge(StrAccum *p, int N){
p->printfFlags |= SQLITE_PRINTF_MALLOCED;
}else{
sqlite3_str_reset(p);
- setStrAccumError(p, SQLITE_NOMEM);
+ sqlite3StrAccumSetError(p, SQLITE_NOMEM);
return 0;
}
}
@@ -29644,7 +29940,7 @@ static SQLITE_NOINLINE char *strAccumFinishRealloc(StrAccum *p){
memcpy(zText, p->zText, p->nChar+1);
p->printfFlags |= SQLITE_PRINTF_MALLOCED;
}else{
- setStrAccumError(p, SQLITE_NOMEM);
+ sqlite3StrAccumSetError(p, SQLITE_NOMEM);
}
p->zText = zText;
return zText;
@@ -29660,6 +29956,22 @@ SQLITE_PRIVATE char *sqlite3StrAccumFinish(StrAccum *p){
}
/*
+** Use the content of the StrAccum passed as the second argument
+** as the result of an SQL function.
+*/
+SQLITE_PRIVATE void sqlite3ResultStrAccum(sqlite3_context *pCtx, StrAccum *p){
+ if( p->accError ){
+ sqlite3_result_error_code(pCtx, p->accError);
+ sqlite3_str_reset(p);
+ }else if( isMalloced(p) ){
+ sqlite3_result_text(pCtx, p->zText, p->nChar, SQLITE_DYNAMIC);
+ }else{
+ sqlite3_result_text(pCtx, "", 0, SQLITE_STATIC);
+ sqlite3_str_reset(p);
+ }
+}
+
+/*
** This singleton is an sqlite3_str object that is returned if
** sqlite3_malloc() fails to provide space for a real one. This
** sqlite3_str object accepts no new text and always returns
@@ -30079,6 +30391,8 @@ SQLITE_PRIVATE void sqlite3TreeViewSrcList(TreeView *pView, const SrcList *pSrc)
}
if( pItem->fg.jointype & JT_LEFT ){
sqlite3_str_appendf(&x, " LEFT-JOIN");
+ }else if( pItem->fg.jointype & JT_CROSS ){
+ sqlite3_str_appendf(&x, " CROSS-JOIN");
}
if( pItem->fg.fromDDL ){
sqlite3_str_appendf(&x, " DDL");
@@ -30377,6 +30691,7 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
sqlite3TreeViewLine(pView, "COLUMN(%d)%s%s",
pExpr->iColumn, zFlgs, zOp2);
}else{
+ assert( ExprUseYTab(pExpr) );
sqlite3TreeViewLine(pView, "{%d:%d} pTab=%p%s",
pExpr->iTable, pExpr->iColumn,
pExpr->y.pTab, zFlgs);
@@ -30396,11 +30711,13 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
}
#ifndef SQLITE_OMIT_FLOATING_POINT
case TK_FLOAT: {
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
sqlite3TreeViewLine(pView,"%s", pExpr->u.zToken);
break;
}
#endif
case TK_STRING: {
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
sqlite3TreeViewLine(pView,"%Q", pExpr->u.zToken);
break;
}
@@ -30409,17 +30726,19 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
break;
}
case TK_TRUEFALSE: {
- sqlite3TreeViewLine(pView,
- sqlite3ExprTruthValue(pExpr) ? "TRUE" : "FALSE");
+ sqlite3TreeViewLine(pView,"%s%s",
+ sqlite3ExprTruthValue(pExpr) ? "TRUE" : "FALSE", zFlgs);
break;
}
#ifndef SQLITE_OMIT_BLOB_LITERAL
case TK_BLOB: {
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
sqlite3TreeViewLine(pView,"%s", pExpr->u.zToken);
break;
}
#endif
case TK_VARIABLE: {
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
sqlite3TreeViewLine(pView,"VARIABLE(%s,%d)",
pExpr->u.zToken, pExpr->iColumn);
break;
@@ -30429,12 +30748,14 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
break;
}
case TK_ID: {
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
sqlite3TreeViewLine(pView,"ID \"%w\"", pExpr->u.zToken);
break;
}
#ifndef SQLITE_OMIT_CAST
case TK_CAST: {
/* Expressions of the form: CAST(pLeft AS token) */
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
sqlite3TreeViewLine(pView,"CAST %Q", pExpr->u.zToken);
sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
break;
@@ -30484,6 +30805,7 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
}
case TK_SPAN: {
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
sqlite3TreeViewLine(pView, "SPAN %Q", pExpr->u.zToken);
sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
break;
@@ -30495,6 +30817,7 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
** up in the treeview output as "SOFT-COLLATE". Explicit COLLATE
** operators that appear in the original SQL always have the
** EP_Collate bit set and appear in treeview output as just "COLLATE" */
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
sqlite3TreeViewLine(pView, "%sCOLLATE %Q%s",
!ExprHasProperty(pExpr, EP_Collate) ? "SOFT-" : "",
pExpr->u.zToken, zFlgs);
@@ -30510,6 +30833,7 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
pFarg = 0;
pWin = 0;
}else{
+ assert( ExprUseXList(pExpr) );
pFarg = pExpr->x.pList;
#ifndef SQLITE_OMIT_WINDOWFUNC
pWin = ExprHasProperty(pExpr, EP_WinFunc) ? pExpr->y.pWin : 0;
@@ -30517,6 +30841,7 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
pWin = 0;
#endif
}
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
if( pExpr->op==TK_AGG_FUNCTION ){
sqlite3TreeViewLine(pView, "AGG_FUNCTION%d %Q%s agg=%d[%d]/%p",
pExpr->op2, pExpr->u.zToken, zFlgs,
@@ -30548,11 +30873,13 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
}
#ifndef SQLITE_OMIT_SUBQUERY
case TK_EXISTS: {
+ assert( ExprUseXSelect(pExpr) );
sqlite3TreeViewLine(pView, "EXISTS-expr flags=0x%x", pExpr->flags);
sqlite3TreeViewSelect(pView, pExpr->x.pSelect, 0);
break;
}
case TK_SELECT: {
+ assert( ExprUseXSelect(pExpr) );
sqlite3TreeViewLine(pView, "subquery-expr flags=0x%x", pExpr->flags);
sqlite3TreeViewSelect(pView, pExpr->x.pSelect, 0);
break;
@@ -30560,7 +30887,7 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
case TK_IN: {
sqlite3TreeViewLine(pView, "IN flags=0x%x", pExpr->flags);
sqlite3TreeViewExpr(pView, pExpr->pLeft, 1);
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ if( ExprUseXSelect(pExpr) ){
sqlite3TreeViewSelect(pView, pExpr->x.pSelect, 0);
}else{
sqlite3TreeViewExprList(pView, pExpr->x.pList, 0, 0);
@@ -30581,9 +30908,12 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
** Z is stored in pExpr->pList->a[1].pExpr.
*/
case TK_BETWEEN: {
- Expr *pX = pExpr->pLeft;
- Expr *pY = pExpr->x.pList->a[0].pExpr;
- Expr *pZ = pExpr->x.pList->a[1].pExpr;
+ const Expr *pX, *pY, *pZ;
+ pX = pExpr->pLeft;
+ assert( ExprUseXList(pExpr) );
+ assert( pExpr->x.pList->nExpr==2 );
+ pY = pExpr->x.pList->a[0].pExpr;
+ pZ = pExpr->x.pList->a[1].pExpr;
sqlite3TreeViewLine(pView, "BETWEEN");
sqlite3TreeViewExpr(pView, pX, 1);
sqlite3TreeViewExpr(pView, pY, 1);
@@ -30605,6 +30935,7 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
case TK_CASE: {
sqlite3TreeViewLine(pView, "CASE");
sqlite3TreeViewExpr(pView, pExpr->pLeft, 1);
+ assert( ExprUseXList(pExpr) );
sqlite3TreeViewExprList(pView, pExpr->x.pList, 0, 0);
break;
}
@@ -30617,6 +30948,7 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
case OE_Fail: zType = "fail"; break;
case OE_Ignore: zType = "ignore"; break;
}
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
sqlite3TreeViewLine(pView, "RAISE %s(%Q)", zType, pExpr->u.zToken);
break;
}
@@ -30629,12 +30961,16 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
}
case TK_VECTOR: {
char *z = sqlite3_mprintf("VECTOR%s",zFlgs);
+ assert( ExprUseXList(pExpr) );
sqlite3TreeViewBareExprList(pView, pExpr->x.pList, z);
sqlite3_free(z);
break;
}
case TK_SELECT_COLUMN: {
- sqlite3TreeViewLine(pView, "SELECT-COLUMN %d", pExpr->iColumn);
+ sqlite3TreeViewLine(pView, "SELECT-COLUMN %d of [0..%d]%s",
+ pExpr->iColumn, pExpr->iTable-1,
+ pExpr->pRight==pExpr->pLeft ? " (SELECT-owner)" : "");
+ assert( ExprUseXSelect(pExpr->pLeft) );
sqlite3TreeViewSelect(pView, pExpr->pLeft->x.pSelect, 0);
break;
}
@@ -30651,6 +30987,15 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
sqlite3TreeViewExpr(pView, &tmp, 0);
break;
}
+ case TK_ROW: {
+ if( pExpr->iColumn<=0 ){
+ sqlite3TreeViewLine(pView, "First FROM table rowid");
+ }else{
+ sqlite3TreeViewLine(pView, "First FROM table column %d",
+ pExpr->iColumn-1);
+ }
+ break;
+ }
default: {
sqlite3TreeViewLine(pView, "op=%d", pExpr->op);
break;
@@ -31703,16 +32048,6 @@ SQLITE_PRIVATE void sqlite3UtfSelfTest(void){
#endif
/*
-** Routine needed to support the testcase() macro.
-*/
-#ifdef SQLITE_COVERAGE_TEST
-SQLITE_PRIVATE void sqlite3Coverage(int x){
- static unsigned dummy = 0;
- dummy += (unsigned)x;
-}
-#endif
-
-/*
** Calls to sqlite3FaultSim() are used to simulate a failure during testing,
** or to bypass normal error detection during testing in order to let
** execute proceed futher downstream.
@@ -31741,11 +32076,21 @@ SQLITE_PRIVATE int sqlite3FaultSim(int iTest){
#ifndef SQLITE_OMIT_FLOATING_POINT
/*
** Return true if the floating point value is Not a Number (NaN).
+**
+** Use the math library isnan() function if compiled with SQLITE_HAVE_ISNAN.
+** Otherwise, we have our own implementation that works on most systems.
*/
SQLITE_PRIVATE int sqlite3IsNaN(double x){
+ int rc; /* The value return */
+#if !SQLITE_HAVE_ISNAN && !HAVE_ISNAN
u64 y;
memcpy(&y,&x,sizeof(y));
- return IsNaN(y);
+ rc = IsNaN(y);
+#else
+ rc = isnan(x);
+#endif /* HAVE_ISNAN */
+ testcase( rc );
+ return rc;
}
#endif /* SQLITE_OMIT_FLOATING_POINT */
@@ -31770,8 +32115,14 @@ SQLITE_PRIVATE int sqlite3Strlen30(const char *z){
** the column name if and only if the COLFLAG_HASTYPE flag is set.
*/
SQLITE_PRIVATE char *sqlite3ColumnType(Column *pCol, char *zDflt){
- if( (pCol->colFlags & COLFLAG_HASTYPE)==0 ) return zDflt;
- return pCol->zName + strlen(pCol->zName) + 1;
+ if( pCol->colFlags & COLFLAG_HASTYPE ){
+ return pCol->zCnName + strlen(pCol->zCnName) + 1;
+ }else if( pCol->eCType ){
+ assert( pCol->eCType<=SQLITE_N_STDTYPE );
+ return (char*)sqlite3StdType[pCol->eCType-1];
+ }else{
+ return zDflt;
+ }
}
/*
@@ -31942,12 +32293,35 @@ SQLITE_PRIVATE void sqlite3Dequote(char *z){
z[j] = 0;
}
SQLITE_PRIVATE void sqlite3DequoteExpr(Expr *p){
+ assert( !ExprHasProperty(p, EP_IntValue) );
assert( sqlite3Isquote(p->u.zToken[0]) );
p->flags |= p->u.zToken[0]=='"' ? EP_Quoted|EP_DblQuoted : EP_Quoted;
sqlite3Dequote(p->u.zToken);
}
/*
+** If the input token p is quoted, try to adjust the token to remove
+** the quotes. This is not always possible:
+**
+** "abc" -> abc
+** "ab""cd" -> (not possible because of the interior "")
+**
+** Remove the quotes if possible. This is a optimization. The overall
+** system should still return the correct answer even if this routine
+** is always a no-op.
+*/
+SQLITE_PRIVATE void sqlite3DequoteToken(Token *p){
+ unsigned int i;
+ if( p->n<2 ) return;
+ if( !sqlite3Isquote(p->z[0]) ) return;
+ for(i=1; i<p->n-1; i++){
+ if( sqlite3Isquote(p->z[i]) ) return;
+ }
+ p->n -= 2;
+ p->z++;
+}
+
+/*
** Generate a Token object from a string
*/
SQLITE_PRIVATE void sqlite3TokenInit(Token *p, char *z){
@@ -33052,13 +33426,13 @@ static void logBadConnection(const char *zType){
** used as an argument to sqlite3_errmsg() or sqlite3_close().
*/
SQLITE_PRIVATE int sqlite3SafetyCheckOk(sqlite3 *db){
- u32 magic;
+ u8 eOpenState;
if( db==0 ){
logBadConnection("NULL");
return 0;
}
- magic = db->magic;
- if( magic!=SQLITE_MAGIC_OPEN ){
+ eOpenState = db->eOpenState;
+ if( eOpenState!=SQLITE_STATE_OPEN ){
if( sqlite3SafetyCheckSickOrOk(db) ){
testcase( sqlite3GlobalConfig.xLog!=0 );
logBadConnection("unopened");
@@ -33069,11 +33443,11 @@ SQLITE_PRIVATE int sqlite3SafetyCheckOk(sqlite3 *db){
}
}
SQLITE_PRIVATE int sqlite3SafetyCheckSickOrOk(sqlite3 *db){
- u32 magic;
- magic = db->magic;
- if( magic!=SQLITE_MAGIC_SICK &&
- magic!=SQLITE_MAGIC_OPEN &&
- magic!=SQLITE_MAGIC_BUSY ){
+ u8 eOpenState;
+ eOpenState = db->eOpenState;
+ if( eOpenState!=SQLITE_STATE_SICK &&
+ eOpenState!=SQLITE_STATE_OPEN &&
+ eOpenState!=SQLITE_STATE_BUSY ){
testcase( sqlite3GlobalConfig.xLog!=0 );
logBadConnection("invalid");
return 0;
@@ -33692,35 +34066,35 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
/* 18 */ "If" OpHelp(""),
/* 19 */ "Not" OpHelp("r[P2]= !r[P1]"),
/* 20 */ "IfNot" OpHelp(""),
- /* 21 */ "IfNullRow" OpHelp("if P1.nullRow then r[P3]=NULL, goto P2"),
- /* 22 */ "SeekLT" OpHelp("key=r[P3@P4]"),
- /* 23 */ "SeekLE" OpHelp("key=r[P3@P4]"),
- /* 24 */ "SeekGE" OpHelp("key=r[P3@P4]"),
- /* 25 */ "SeekGT" OpHelp("key=r[P3@P4]"),
- /* 26 */ "IfNotOpen" OpHelp("if( !csr[P1] ) goto P2"),
- /* 27 */ "IfNoHope" OpHelp("key=r[P3@P4]"),
- /* 28 */ "NoConflict" OpHelp("key=r[P3@P4]"),
- /* 29 */ "NotFound" OpHelp("key=r[P3@P4]"),
- /* 30 */ "Found" OpHelp("key=r[P3@P4]"),
- /* 31 */ "SeekRowid" OpHelp("intkey=r[P3]"),
- /* 32 */ "NotExists" OpHelp("intkey=r[P3]"),
- /* 33 */ "Last" OpHelp(""),
- /* 34 */ "IfSmaller" OpHelp(""),
- /* 35 */ "SorterSort" OpHelp(""),
- /* 36 */ "Sort" OpHelp(""),
- /* 37 */ "Rewind" OpHelp(""),
- /* 38 */ "IdxLE" OpHelp("key=r[P3@P4]"),
- /* 39 */ "IdxGT" OpHelp("key=r[P3@P4]"),
- /* 40 */ "IdxLT" OpHelp("key=r[P3@P4]"),
- /* 41 */ "IdxGE" OpHelp("key=r[P3@P4]"),
- /* 42 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
+ /* 21 */ "IsNullOrType" OpHelp("if typeof(r[P1]) IN (P3,5) goto P2"),
+ /* 22 */ "IfNullRow" OpHelp("if P1.nullRow then r[P3]=NULL, goto P2"),
+ /* 23 */ "SeekLT" OpHelp("key=r[P3@P4]"),
+ /* 24 */ "SeekLE" OpHelp("key=r[P3@P4]"),
+ /* 25 */ "SeekGE" OpHelp("key=r[P3@P4]"),
+ /* 26 */ "SeekGT" OpHelp("key=r[P3@P4]"),
+ /* 27 */ "IfNotOpen" OpHelp("if( !csr[P1] ) goto P2"),
+ /* 28 */ "IfNoHope" OpHelp("key=r[P3@P4]"),
+ /* 29 */ "NoConflict" OpHelp("key=r[P3@P4]"),
+ /* 30 */ "NotFound" OpHelp("key=r[P3@P4]"),
+ /* 31 */ "Found" OpHelp("key=r[P3@P4]"),
+ /* 32 */ "SeekRowid" OpHelp("intkey=r[P3]"),
+ /* 33 */ "NotExists" OpHelp("intkey=r[P3]"),
+ /* 34 */ "Last" OpHelp(""),
+ /* 35 */ "IfSmaller" OpHelp(""),
+ /* 36 */ "SorterSort" OpHelp(""),
+ /* 37 */ "Sort" OpHelp(""),
+ /* 38 */ "Rewind" OpHelp(""),
+ /* 39 */ "IdxLE" OpHelp("key=r[P3@P4]"),
+ /* 40 */ "IdxGT" OpHelp("key=r[P3@P4]"),
+ /* 41 */ "IdxLT" OpHelp("key=r[P3@P4]"),
+ /* 42 */ "IdxGE" OpHelp("key=r[P3@P4]"),
/* 43 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"),
/* 44 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"),
- /* 45 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
- /* 46 */ "Program" OpHelp(""),
- /* 47 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
- /* 48 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
- /* 49 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
+ /* 45 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
+ /* 46 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
+ /* 47 */ "Program" OpHelp(""),
+ /* 48 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
+ /* 49 */ "IfPos" OpHelp("if r[P1]>0 then r[P1]-=P3, goto P2"),
/* 50 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"),
/* 51 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"),
/* 52 */ "Ne" OpHelp("IF r[P3]!=r[P1]"),
@@ -33730,49 +34104,49 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
/* 56 */ "Lt" OpHelp("IF r[P3]<r[P1]"),
/* 57 */ "Ge" OpHelp("IF r[P3]>=r[P1]"),
/* 58 */ "ElseEq" OpHelp(""),
- /* 59 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
- /* 60 */ "IncrVacuum" OpHelp(""),
- /* 61 */ "VNext" OpHelp(""),
- /* 62 */ "Init" OpHelp("Start at P2"),
- /* 63 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
- /* 64 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
- /* 65 */ "Return" OpHelp(""),
- /* 66 */ "EndCoroutine" OpHelp(""),
- /* 67 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
- /* 68 */ "Halt" OpHelp(""),
- /* 69 */ "Integer" OpHelp("r[P2]=P1"),
- /* 70 */ "Int64" OpHelp("r[P2]=P4"),
- /* 71 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
- /* 72 */ "Null" OpHelp("r[P2..P3]=NULL"),
- /* 73 */ "SoftNull" OpHelp("r[P1]=NULL"),
- /* 74 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
- /* 75 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
- /* 76 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
- /* 77 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
- /* 78 */ "SCopy" OpHelp("r[P2]=r[P1]"),
- /* 79 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
- /* 80 */ "ChngCntRow" OpHelp("output=r[P1]"),
- /* 81 */ "ResultRow" OpHelp("output=r[P1@P2]"),
- /* 82 */ "CollSeq" OpHelp(""),
- /* 83 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
- /* 84 */ "RealAffinity" OpHelp(""),
- /* 85 */ "Cast" OpHelp("affinity(r[P1])"),
- /* 86 */ "Permutation" OpHelp(""),
- /* 87 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
- /* 88 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
- /* 89 */ "ZeroOrNull" OpHelp("r[P2] = 0 OR NULL"),
- /* 90 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
- /* 91 */ "Column" OpHelp("r[P3]=PX"),
- /* 92 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
- /* 93 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
- /* 94 */ "Count" OpHelp("r[P2]=count()"),
- /* 95 */ "ReadCookie" OpHelp(""),
- /* 96 */ "SetCookie" OpHelp(""),
- /* 97 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
- /* 98 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
- /* 99 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
- /* 100 */ "OpenDup" OpHelp(""),
- /* 101 */ "OpenAutoindex" OpHelp("nColumn=P2"),
+ /* 59 */ "IfNotZero" OpHelp("if r[P1]!=0 then r[P1]--, goto P2"),
+ /* 60 */ "DecrJumpZero" OpHelp("if (--r[P1])==0 goto P2"),
+ /* 61 */ "IncrVacuum" OpHelp(""),
+ /* 62 */ "VNext" OpHelp(""),
+ /* 63 */ "Init" OpHelp("Start at P2"),
+ /* 64 */ "PureFunc" OpHelp("r[P3]=func(r[P2@NP])"),
+ /* 65 */ "Function" OpHelp("r[P3]=func(r[P2@NP])"),
+ /* 66 */ "Return" OpHelp(""),
+ /* 67 */ "EndCoroutine" OpHelp(""),
+ /* 68 */ "HaltIfNull" OpHelp("if r[P3]=null halt"),
+ /* 69 */ "Halt" OpHelp(""),
+ /* 70 */ "Integer" OpHelp("r[P2]=P1"),
+ /* 71 */ "Int64" OpHelp("r[P2]=P4"),
+ /* 72 */ "String" OpHelp("r[P2]='P4' (len=P1)"),
+ /* 73 */ "Null" OpHelp("r[P2..P3]=NULL"),
+ /* 74 */ "SoftNull" OpHelp("r[P1]=NULL"),
+ /* 75 */ "Blob" OpHelp("r[P2]=P4 (len=P1)"),
+ /* 76 */ "Variable" OpHelp("r[P2]=parameter(P1,P4)"),
+ /* 77 */ "Move" OpHelp("r[P2@P3]=r[P1@P3]"),
+ /* 78 */ "Copy" OpHelp("r[P2@P3+1]=r[P1@P3+1]"),
+ /* 79 */ "SCopy" OpHelp("r[P2]=r[P1]"),
+ /* 80 */ "IntCopy" OpHelp("r[P2]=r[P1]"),
+ /* 81 */ "ChngCntRow" OpHelp("output=r[P1]"),
+ /* 82 */ "ResultRow" OpHelp("output=r[P1@P2]"),
+ /* 83 */ "CollSeq" OpHelp(""),
+ /* 84 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
+ /* 85 */ "RealAffinity" OpHelp(""),
+ /* 86 */ "Cast" OpHelp("affinity(r[P1])"),
+ /* 87 */ "Permutation" OpHelp(""),
+ /* 88 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
+ /* 89 */ "IsTrue" OpHelp("r[P2] = coalesce(r[P1]==TRUE,P3) ^ P4"),
+ /* 90 */ "ZeroOrNull" OpHelp("r[P2] = 0 OR NULL"),
+ /* 91 */ "Offset" OpHelp("r[P3] = sqlite_offset(P1)"),
+ /* 92 */ "Column" OpHelp("r[P3]=PX"),
+ /* 93 */ "TypeCheck" OpHelp("typecheck(r[P1@P2])"),
+ /* 94 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
+ /* 95 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
+ /* 96 */ "Count" OpHelp("r[P2]=count()"),
+ /* 97 */ "ReadCookie" OpHelp(""),
+ /* 98 */ "SetCookie" OpHelp(""),
+ /* 99 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
+ /* 100 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
+ /* 101 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
/* 102 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
/* 103 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
/* 104 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
@@ -33783,74 +34157,76 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
/* 109 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
/* 110 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
/* 111 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
- /* 112 */ "OpenEphemeral" OpHelp("nColumn=P2"),
+ /* 112 */ "OpenDup" OpHelp(""),
/* 113 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
- /* 114 */ "SorterOpen" OpHelp(""),
- /* 115 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
+ /* 114 */ "OpenAutoindex" OpHelp("nColumn=P2"),
+ /* 115 */ "OpenEphemeral" OpHelp("nColumn=P2"),
/* 116 */ "String8" OpHelp("r[P2]='P4'"),
- /* 117 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
- /* 118 */ "Close" OpHelp(""),
- /* 119 */ "ColumnsUsed" OpHelp(""),
- /* 120 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
- /* 121 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
- /* 122 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
- /* 123 */ "NewRowid" OpHelp("r[P2]=rowid"),
- /* 124 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
- /* 125 */ "RowCell" OpHelp(""),
- /* 126 */ "Delete" OpHelp(""),
- /* 127 */ "ResetCount" OpHelp(""),
- /* 128 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
- /* 129 */ "SorterData" OpHelp("r[P2]=data"),
- /* 130 */ "RowData" OpHelp("r[P2]=data"),
- /* 131 */ "Rowid" OpHelp("r[P2]=rowid"),
- /* 132 */ "NullRow" OpHelp(""),
- /* 133 */ "SeekEnd" OpHelp(""),
- /* 134 */ "IdxInsert" OpHelp("key=r[P2]"),
- /* 135 */ "SorterInsert" OpHelp("key=r[P2]"),
- /* 136 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
- /* 137 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
- /* 138 */ "IdxRowid" OpHelp("r[P2]=rowid"),
- /* 139 */ "FinishSeek" OpHelp(""),
- /* 140 */ "Destroy" OpHelp(""),
- /* 141 */ "Clear" OpHelp(""),
- /* 142 */ "ResetSorter" OpHelp(""),
- /* 143 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
- /* 144 */ "SqlExec" OpHelp(""),
- /* 145 */ "ParseSchema" OpHelp(""),
- /* 146 */ "LoadAnalysis" OpHelp(""),
- /* 147 */ "DropTable" OpHelp(""),
- /* 148 */ "DropIndex" OpHelp(""),
- /* 149 */ "DropTrigger" OpHelp(""),
- /* 150 */ "IntegrityCk" OpHelp(""),
- /* 151 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
+ /* 117 */ "SorterOpen" OpHelp(""),
+ /* 118 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
+ /* 119 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
+ /* 120 */ "Close" OpHelp(""),
+ /* 121 */ "ColumnsUsed" OpHelp(""),
+ /* 122 */ "SeekScan" OpHelp("Scan-ahead up to P1 rows"),
+ /* 123 */ "SeekHit" OpHelp("set P2<=seekHit<=P3"),
+ /* 124 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
+ /* 125 */ "NewRowid" OpHelp("r[P2]=rowid"),
+ /* 126 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
+ /* 127 */ "RowCell" OpHelp(""),
+ /* 128 */ "Delete" OpHelp(""),
+ /* 129 */ "ResetCount" OpHelp(""),
+ /* 130 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
+ /* 131 */ "SorterData" OpHelp("r[P2]=data"),
+ /* 132 */ "RowData" OpHelp("r[P2]=data"),
+ /* 133 */ "Rowid" OpHelp("r[P2]=rowid"),
+ /* 134 */ "NullRow" OpHelp(""),
+ /* 135 */ "SeekEnd" OpHelp(""),
+ /* 136 */ "IdxInsert" OpHelp("key=r[P2]"),
+ /* 137 */ "SorterInsert" OpHelp("key=r[P2]"),
+ /* 138 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
+ /* 139 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
+ /* 140 */ "IdxRowid" OpHelp("r[P2]=rowid"),
+ /* 141 */ "FinishSeek" OpHelp(""),
+ /* 142 */ "Destroy" OpHelp(""),
+ /* 143 */ "Clear" OpHelp(""),
+ /* 144 */ "ResetSorter" OpHelp(""),
+ /* 145 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
+ /* 146 */ "SqlExec" OpHelp(""),
+ /* 147 */ "ParseSchema" OpHelp(""),
+ /* 148 */ "LoadAnalysis" OpHelp(""),
+ /* 149 */ "DropTable" OpHelp(""),
+ /* 150 */ "DropIndex" OpHelp(""),
+ /* 151 */ "DropTrigger" OpHelp(""),
/* 152 */ "Real" OpHelp("r[P2]=P4"),
- /* 153 */ "Param" OpHelp(""),
- /* 154 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
- /* 155 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
- /* 156 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
- /* 157 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
- /* 158 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
- /* 159 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
- /* 160 */ "AggValue" OpHelp("r[P3]=value N=P2"),
- /* 161 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
- /* 162 */ "Expire" OpHelp(""),
- /* 163 */ "CursorLock" OpHelp(""),
- /* 164 */ "CursorUnlock" OpHelp(""),
- /* 165 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
- /* 166 */ "VBegin" OpHelp(""),
- /* 167 */ "VCreate" OpHelp(""),
- /* 168 */ "VDestroy" OpHelp(""),
- /* 169 */ "VOpen" OpHelp(""),
- /* 170 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
- /* 171 */ "VRename" OpHelp(""),
- /* 172 */ "Pagecount" OpHelp(""),
- /* 173 */ "MaxPgcnt" OpHelp(""),
- /* 174 */ "Trace" OpHelp(""),
- /* 175 */ "CursorHint" OpHelp(""),
- /* 176 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
- /* 177 */ "Noop" OpHelp(""),
- /* 178 */ "Explain" OpHelp(""),
- /* 179 */ "Abortable" OpHelp(""),
+ /* 153 */ "IntegrityCk" OpHelp(""),
+ /* 154 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
+ /* 155 */ "Param" OpHelp(""),
+ /* 156 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
+ /* 157 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
+ /* 158 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
+ /* 159 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
+ /* 160 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
+ /* 161 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
+ /* 162 */ "AggValue" OpHelp("r[P3]=value N=P2"),
+ /* 163 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
+ /* 164 */ "Expire" OpHelp(""),
+ /* 165 */ "CursorLock" OpHelp(""),
+ /* 166 */ "CursorUnlock" OpHelp(""),
+ /* 167 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
+ /* 168 */ "VBegin" OpHelp(""),
+ /* 169 */ "VCreate" OpHelp(""),
+ /* 170 */ "VDestroy" OpHelp(""),
+ /* 171 */ "VOpen" OpHelp(""),
+ /* 172 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
+ /* 173 */ "VRename" OpHelp(""),
+ /* 174 */ "Pagecount" OpHelp(""),
+ /* 175 */ "MaxPgcnt" OpHelp(""),
+ /* 176 */ "Trace" OpHelp(""),
+ /* 177 */ "CursorHint" OpHelp(""),
+ /* 178 */ "ReleaseReg" OpHelp("release r[P1@P2] mask P3"),
+ /* 179 */ "Noop" OpHelp(""),
+ /* 180 */ "Explain" OpHelp(""),
+ /* 181 */ "Abortable" OpHelp(""),
};
return azName[i];
}
@@ -34157,205 +34533,7 @@ static pid_t randomnessPid = 0;
/*
** Include code that is common to all os_*.c files
*/
-/************** Include os_common.h in the middle of os_unix.c ***************/
-/************** Begin file os_common.h ***************************************/
-/*
-** 2004 May 22
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-******************************************************************************
-**
-** This file contains macros and a little bit of code that is common to
-** all of the platform-specific files (os_*.c) and is #included into those
-** files.
-**
-** This file should be #included by the os_*.c files only. It is not a
-** general purpose header file.
-*/
-#ifndef _OS_COMMON_H_
-#define _OS_COMMON_H_
-
-/*
-** At least two bugs have slipped in because we changed the MEMORY_DEBUG
-** macro to SQLITE_DEBUG and some older makefiles have not yet made the
-** switch. The following code should catch this problem at compile-time.
-*/
-#ifdef MEMORY_DEBUG
-# error "The MEMORY_DEBUG macro is obsolete. Use SQLITE_DEBUG instead."
-#endif
-
-/*
-** Macros for performance tracing. Normally turned off. Only works
-** on i486 hardware.
-*/
-#ifdef SQLITE_PERFORMANCE_TRACE
-
-/*
-** hwtime.h contains inline assembler code for implementing
-** high-performance timing routines.
-*/
-/************** Include hwtime.h in the middle of os_common.h ****************/
-/************** Begin file hwtime.h ******************************************/
-/*
-** 2008 May 27
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-******************************************************************************
-**
-** This file contains inline asm code for retrieving "high-performance"
-** counters for x86 and x86_64 class CPUs.
-*/
-#ifndef SQLITE_HWTIME_H
-#define SQLITE_HWTIME_H
-
-/*
-** The following routine only works on pentium-class (or newer) processors.
-** It uses the RDTSC opcode to read the cycle count value out of the
-** processor and returns that value. This can be used for high-res
-** profiling.
-*/
-#if !defined(__STRICT_ANSI__) && \
- (defined(__GNUC__) || defined(_MSC_VER)) && \
- (defined(i386) || defined(__i386__) || defined(_M_IX86))
-
- #if defined(__GNUC__)
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned int lo, hi;
- __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
- return (sqlite_uint64)hi << 32 | lo;
- }
-
- #elif defined(_MSC_VER)
-
- __declspec(naked) __inline sqlite_uint64 __cdecl sqlite3Hwtime(void){
- __asm {
- rdtsc
- ret ; return value at EDX:EAX
- }
- }
-
- #endif
-
-#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__x86_64__))
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned long val;
- __asm__ __volatile__ ("rdtsc" : "=A" (val));
- return val;
- }
-
-#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__ppc__))
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned long long retval;
- unsigned long junk;
- __asm__ __volatile__ ("\n\
- 1: mftbu %1\n\
- mftb %L0\n\
- mftbu %0\n\
- cmpw %0,%1\n\
- bne 1b"
- : "=r" (retval), "=r" (junk));
- return retval;
- }
-
-#else
-
- /*
- ** asm() is needed for hardware timing support. Without asm(),
- ** disable the sqlite3Hwtime() routine.
- **
- ** sqlite3Hwtime() is only used for some obscure debugging
- ** and analysis configurations, not in any deliverable, so this
- ** should not be a great loss.
- */
-SQLITE_PRIVATE sqlite_uint64 sqlite3Hwtime(void){ return ((sqlite_uint64)0); }
-
-#endif
-
-#endif /* !defined(SQLITE_HWTIME_H) */
-
-/************** End of hwtime.h **********************************************/
-/************** Continuing where we left off in os_common.h ******************/
-
-static sqlite_uint64 g_start;
-static sqlite_uint64 g_elapsed;
-#define TIMER_START g_start=sqlite3Hwtime()
-#define TIMER_END g_elapsed=sqlite3Hwtime()-g_start
-#define TIMER_ELAPSED g_elapsed
-#else
-#define TIMER_START
-#define TIMER_END
-#define TIMER_ELAPSED ((sqlite_uint64)0)
-#endif
-
-/*
-** If we compile with the SQLITE_TEST macro set, then the following block
-** of code will give us the ability to simulate a disk I/O error. This
-** is used for testing the I/O recovery logic.
-*/
-#if defined(SQLITE_TEST)
-SQLITE_API extern int sqlite3_io_error_hit;
-SQLITE_API extern int sqlite3_io_error_hardhit;
-SQLITE_API extern int sqlite3_io_error_pending;
-SQLITE_API extern int sqlite3_io_error_persist;
-SQLITE_API extern int sqlite3_io_error_benign;
-SQLITE_API extern int sqlite3_diskfull_pending;
-SQLITE_API extern int sqlite3_diskfull;
-#define SimulateIOErrorBenign(X) sqlite3_io_error_benign=(X)
-#define SimulateIOError(CODE) \
- if( (sqlite3_io_error_persist && sqlite3_io_error_hit) \
- || sqlite3_io_error_pending-- == 1 ) \
- { local_ioerr(); CODE; }
-static void local_ioerr(){
- IOTRACE(("IOERR\n"));
- sqlite3_io_error_hit++;
- if( !sqlite3_io_error_benign ) sqlite3_io_error_hardhit++;
-}
-#define SimulateDiskfullError(CODE) \
- if( sqlite3_diskfull_pending ){ \
- if( sqlite3_diskfull_pending == 1 ){ \
- local_ioerr(); \
- sqlite3_diskfull = 1; \
- sqlite3_io_error_hit = 1; \
- CODE; \
- }else{ \
- sqlite3_diskfull_pending--; \
- } \
- }
-#else
-#define SimulateIOErrorBenign(X)
-#define SimulateIOError(A)
-#define SimulateDiskfullError(A)
-#endif /* defined(SQLITE_TEST) */
-
-/*
-** When testing, keep a count of the number of open files.
-*/
-#if defined(SQLITE_TEST)
-SQLITE_API extern int sqlite3_open_file_count;
-#define OpenCounter(X) sqlite3_open_file_count+=(X)
-#else
-#define OpenCounter(X)
-#endif /* defined(SQLITE_TEST) */
-
-#endif /* !defined(_OS_COMMON_H_) */
-
-/************** End of os_common.h *******************************************/
-/************** Continuing where we left off in os_unix.c ********************/
+/* #include "os_common.h" */
/*
** Define various macros that are missing from some systems.
@@ -38009,7 +38187,9 @@ static void unixModeBit(unixFile *pFile, unsigned char mask, int *pArg){
/* Forward declaration */
static int unixGetTempname(int nBuf, char *zBuf);
-static int unixFcntlExternalReader(unixFile*, int*);
+#ifndef SQLITE_OMIT_WAL
+ static int unixFcntlExternalReader(unixFile*, int*);
+#endif
/*
** Information and control of an open file handle.
@@ -38128,7 +38308,12 @@ static int unixFileControl(sqlite3_file *id, int op, void *pArg){
#endif /* SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__) */
case SQLITE_FCNTL_EXTERNAL_READER: {
+#ifndef SQLITE_OMIT_WAL
return unixFcntlExternalReader((unixFile*)id, (int*)pArg);
+#else
+ *(int*)pArg = 0;
+ return SQLITE_OK;
+#endif
}
}
return SQLITE_NOTFOUND;
@@ -39850,24 +40035,34 @@ static int fillInUnixFile(
}
/*
+** Directories to consider for temp files.
+*/
+static const char *azTempDirs[] = {
+ 0,
+ 0,
+ "/var/tmp",
+ "/usr/tmp",
+ "/tmp",
+ "."
+};
+
+/*
+** Initialize first two members of azTempDirs[] array.
+*/
+static void unixTempFileInit(void){
+ azTempDirs[0] = getenv("SQLITE_TMPDIR");
+ azTempDirs[1] = getenv("TMPDIR");
+}
+
+/*
** Return the name of a directory in which to put temporary files.
** If no suitable temporary file directory can be found, return NULL.
*/
static const char *unixTempFileDir(void){
- static const char *azDirs[] = {
- 0,
- 0,
- "/var/tmp",
- "/usr/tmp",
- "/tmp",
- "."
- };
unsigned int i = 0;
struct stat buf;
const char *zDir = sqlite3_temp_directory;
- if( !azDirs[0] ) azDirs[0] = getenv("SQLITE_TMPDIR");
- if( !azDirs[1] ) azDirs[1] = getenv("TMPDIR");
while(1){
if( zDir!=0
&& osStat(zDir, &buf)==0
@@ -39876,8 +40071,8 @@ static const char *unixTempFileDir(void){
){
return zDir;
}
- if( i>=sizeof(azDirs)/sizeof(azDirs[0]) ) break;
- zDir = azDirs[i++];
+ if( i>=sizeof(azTempDirs)/sizeof(azTempDirs[0]) ) break;
+ zDir = azTempDirs[i++];
}
return 0;
}
@@ -40183,6 +40378,11 @@ static int unixOpen(
}
memset(p, 0, sizeof(unixFile));
+#ifdef SQLITE_ASSERT_NO_FILES
+ /* Applications that never read or write a persistent disk files */
+ assert( zName==0 );
+#endif
+
if( eType==SQLITE_OPEN_MAIN_DB ){
UnixUnusedFd *pUnused;
pUnused = findReusableFd(zName, flags);
@@ -42144,6 +42344,9 @@ SQLITE_API int sqlite3_os_init(void){
assert( UNIX_SHM_DMS==128 ); /* Byte offset of the deadman-switch */
#endif
+ /* Initialize temp file dir array. */
+ unixTempFileInit();
+
return SQLITE_OK;
}
@@ -42183,205 +42386,7 @@ SQLITE_API int sqlite3_os_end(void){
/*
** Include code that is common to all os_*.c files
*/
-/************** Include os_common.h in the middle of os_win.c ****************/
-/************** Begin file os_common.h ***************************************/
-/*
-** 2004 May 22
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-******************************************************************************
-**
-** This file contains macros and a little bit of code that is common to
-** all of the platform-specific files (os_*.c) and is #included into those
-** files.
-**
-** This file should be #included by the os_*.c files only. It is not a
-** general purpose header file.
-*/
-#ifndef _OS_COMMON_H_
-#define _OS_COMMON_H_
-
-/*
-** At least two bugs have slipped in because we changed the MEMORY_DEBUG
-** macro to SQLITE_DEBUG and some older makefiles have not yet made the
-** switch. The following code should catch this problem at compile-time.
-*/
-#ifdef MEMORY_DEBUG
-# error "The MEMORY_DEBUG macro is obsolete. Use SQLITE_DEBUG instead."
-#endif
-
-/*
-** Macros for performance tracing. Normally turned off. Only works
-** on i486 hardware.
-*/
-#ifdef SQLITE_PERFORMANCE_TRACE
-
-/*
-** hwtime.h contains inline assembler code for implementing
-** high-performance timing routines.
-*/
-/************** Include hwtime.h in the middle of os_common.h ****************/
-/************** Begin file hwtime.h ******************************************/
-/*
-** 2008 May 27
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-******************************************************************************
-**
-** This file contains inline asm code for retrieving "high-performance"
-** counters for x86 and x86_64 class CPUs.
-*/
-#ifndef SQLITE_HWTIME_H
-#define SQLITE_HWTIME_H
-
-/*
-** The following routine only works on pentium-class (or newer) processors.
-** It uses the RDTSC opcode to read the cycle count value out of the
-** processor and returns that value. This can be used for high-res
-** profiling.
-*/
-#if !defined(__STRICT_ANSI__) && \
- (defined(__GNUC__) || defined(_MSC_VER)) && \
- (defined(i386) || defined(__i386__) || defined(_M_IX86))
-
- #if defined(__GNUC__)
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned int lo, hi;
- __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
- return (sqlite_uint64)hi << 32 | lo;
- }
-
- #elif defined(_MSC_VER)
-
- __declspec(naked) __inline sqlite_uint64 __cdecl sqlite3Hwtime(void){
- __asm {
- rdtsc
- ret ; return value at EDX:EAX
- }
- }
-
- #endif
-
-#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__x86_64__))
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned long val;
- __asm__ __volatile__ ("rdtsc" : "=A" (val));
- return val;
- }
-
-#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__ppc__))
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned long long retval;
- unsigned long junk;
- __asm__ __volatile__ ("\n\
- 1: mftbu %1\n\
- mftb %L0\n\
- mftbu %0\n\
- cmpw %0,%1\n\
- bne 1b"
- : "=r" (retval), "=r" (junk));
- return retval;
- }
-
-#else
-
- /*
- ** asm() is needed for hardware timing support. Without asm(),
- ** disable the sqlite3Hwtime() routine.
- **
- ** sqlite3Hwtime() is only used for some obscure debugging
- ** and analysis configurations, not in any deliverable, so this
- ** should not be a great loss.
- */
-SQLITE_PRIVATE sqlite_uint64 sqlite3Hwtime(void){ return ((sqlite_uint64)0); }
-
-#endif
-
-#endif /* !defined(SQLITE_HWTIME_H) */
-
-/************** End of hwtime.h **********************************************/
-/************** Continuing where we left off in os_common.h ******************/
-
-static sqlite_uint64 g_start;
-static sqlite_uint64 g_elapsed;
-#define TIMER_START g_start=sqlite3Hwtime()
-#define TIMER_END g_elapsed=sqlite3Hwtime()-g_start
-#define TIMER_ELAPSED g_elapsed
-#else
-#define TIMER_START
-#define TIMER_END
-#define TIMER_ELAPSED ((sqlite_uint64)0)
-#endif
-
-/*
-** If we compile with the SQLITE_TEST macro set, then the following block
-** of code will give us the ability to simulate a disk I/O error. This
-** is used for testing the I/O recovery logic.
-*/
-#if defined(SQLITE_TEST)
-SQLITE_API extern int sqlite3_io_error_hit;
-SQLITE_API extern int sqlite3_io_error_hardhit;
-SQLITE_API extern int sqlite3_io_error_pending;
-SQLITE_API extern int sqlite3_io_error_persist;
-SQLITE_API extern int sqlite3_io_error_benign;
-SQLITE_API extern int sqlite3_diskfull_pending;
-SQLITE_API extern int sqlite3_diskfull;
-#define SimulateIOErrorBenign(X) sqlite3_io_error_benign=(X)
-#define SimulateIOError(CODE) \
- if( (sqlite3_io_error_persist && sqlite3_io_error_hit) \
- || sqlite3_io_error_pending-- == 1 ) \
- { local_ioerr(); CODE; }
-static void local_ioerr(){
- IOTRACE(("IOERR\n"));
- sqlite3_io_error_hit++;
- if( !sqlite3_io_error_benign ) sqlite3_io_error_hardhit++;
-}
-#define SimulateDiskfullError(CODE) \
- if( sqlite3_diskfull_pending ){ \
- if( sqlite3_diskfull_pending == 1 ){ \
- local_ioerr(); \
- sqlite3_diskfull = 1; \
- sqlite3_io_error_hit = 1; \
- CODE; \
- }else{ \
- sqlite3_diskfull_pending--; \
- } \
- }
-#else
-#define SimulateIOErrorBenign(X)
-#define SimulateIOError(A)
-#define SimulateDiskfullError(A)
-#endif /* defined(SQLITE_TEST) */
-
-/*
-** When testing, keep a count of the number of open files.
-*/
-#if defined(SQLITE_TEST)
-SQLITE_API extern int sqlite3_open_file_count;
-#define OpenCounter(X) sqlite3_open_file_count+=(X)
-#else
-#define OpenCounter(X)
-#endif /* defined(SQLITE_TEST) */
-
-#endif /* !defined(_OS_COMMON_H_) */
-
-/************** End of os_common.h *******************************************/
-/************** Continuing where we left off in os_win.c *********************/
+/* #include "os_common.h" */
/*
** Include the header file for the Windows VFS.
@@ -48792,7 +48797,7 @@ static int memdbRead(
*/
static int memdbEnlarge(MemStore *p, sqlite3_int64 newSz){
unsigned char *pNew;
- if( (p->mFlags & SQLITE_DESERIALIZE_RESIZEABLE)==0 || p->nMmap>0 ){
+ if( (p->mFlags & SQLITE_DESERIALIZE_RESIZEABLE)==0 || NEVER(p->nMmap>0) ){
return SQLITE_FULL;
}
if( newSz>p->szMax ){
@@ -48851,8 +48856,9 @@ static int memdbTruncate(sqlite3_file *pFile, sqlite_int64 size){
MemStore *p = ((MemFile*)pFile)->pStore;
int rc = SQLITE_OK;
memdbEnter(p);
- if( NEVER(size>p->sz) ){
- rc = SQLITE_FULL;
+ if( size>p->sz ){
+ /* This can only happen with a corrupt wal mode db */
+ rc = SQLITE_CORRUPT;
}else{
p->sz = size;
}
@@ -48991,7 +48997,7 @@ static int memdbFetch(
){
MemStore *p = ((MemFile*)pFile)->pStore;
memdbEnter(p);
- if( iOfst+iAmt>p->sz ){
+ if( iOfst+iAmt>p->sz || (p->mFlags & SQLITE_DESERIALIZE_RESIZEABLE)!=0 ){
*pp = 0;
}else{
p->nMmap++;
@@ -49025,10 +49031,9 @@ static int memdbOpen(
MemFile *pFile = (MemFile*)pFd;
MemStore *p = 0;
int szName;
- if( (flags & SQLITE_OPEN_MAIN_DB)==0 ){
- return ORIGVFS(pVfs)->xOpen(ORIGVFS(pVfs), zName, pFd, flags, pOutFlags);
- }
- memset(pFile, 0, sizeof(*p));
+ UNUSED_PARAMETER(pVfs);
+
+ memset(pFile, 0, sizeof(*pFile));
szName = sqlite3Strlen30(zName);
if( szName>1 && zName[0]=='/' ){
int i;
@@ -49087,8 +49092,9 @@ static int memdbOpen(
p->szMax = sqlite3GlobalConfig.mxMemdbSize;
}
pFile->pStore = p;
- assert( pOutFlags!=0 ); /* True because flags==SQLITE_OPEN_MAIN_DB */
- *pOutFlags = flags | SQLITE_OPEN_MEMORY;
+ if( pOutFlags!=0 ){
+ *pOutFlags = flags | SQLITE_OPEN_MEMORY;
+ }
pFd->pMethods = &memdb_io_methods;
memdbLeave(p);
return SQLITE_OK;
@@ -49329,7 +49335,8 @@ SQLITE_API int sqlite3_deserialize(
sqlite3_mutex_enter(db->mutex);
if( zSchema==0 ) zSchema = db->aDb[0].zDbSName;
iDb = sqlite3FindDbName(db, zSchema);
- if( iDb<0 ){
+ testcase( iDb==1 );
+ if( iDb<2 && iDb!=0 ){
rc = SQLITE_ERROR;
goto end_deserialize;
}
@@ -49752,7 +49759,7 @@ SQLITE_PRIVATE int sqlite3BitvecBuiltinTest(int sz, int *aOp){
sqlite3BitvecClear(0, 1, pTmpSpace);
/* Run the program */
- pc = 0;
+ pc = i = 0;
while( (op = aOp[pc])!=0 ){
switch( op ){
case 1:
@@ -50056,11 +50063,14 @@ static int numberOfCachePages(PCache *p){
** suggested cache size is set to N. */
return p->szCache;
}else{
+ i64 n;
/* IMPLEMANTATION-OF: R-59858-46238 If the argument N is negative, then the
** number of cache pages is adjusted to be a number of pages that would
** use approximately abs(N*1024) bytes of memory based on the current
** page size. */
- return (int)((-1024*(i64)p->szCache)/(p->szPage+p->szExtra));
+ n = ((-1024*(i64)p->szCache)/(p->szPage+p->szExtra));
+ if( n>1000000000 ) n = 1000000000;
+ return (int)n;
}
}
@@ -51515,12 +51525,18 @@ static sqlite3_pcache *pcache1Create(int szPage, int szExtra, int bPurgeable){
*/
static void pcache1Cachesize(sqlite3_pcache *p, int nMax){
PCache1 *pCache = (PCache1 *)p;
+ u32 n;
+ assert( nMax>=0 );
if( pCache->bPurgeable ){
PGroup *pGroup = pCache->pGroup;
pcache1EnterMutex(pGroup);
- pGroup->nMaxPage += (nMax - pCache->nMax);
+ n = (u32)nMax;
+ if( n > 0x7fff0000 - pGroup->nMaxPage + pCache->nMax ){
+ n = 0x7fff0000 - pGroup->nMaxPage + pCache->nMax;
+ }
+ pGroup->nMaxPage += (n - pCache->nMax);
pGroup->mxPinned = pGroup->nMaxPage + 10 - pGroup->nMinPage;
- pCache->nMax = nMax;
+ pCache->nMax = n;
pCache->n90pct = pCache->nMax*9/10;
pcache1EnforceMaxPage(pCache);
pcache1LeaveMutex(pGroup);
@@ -51536,7 +51552,7 @@ static void pcache1Shrink(sqlite3_pcache *p){
PCache1 *pCache = (PCache1*)p;
if( pCache->bPurgeable ){
PGroup *pGroup = pCache->pGroup;
- int savedMaxPage;
+ unsigned int savedMaxPage;
pcache1EnterMutex(pGroup);
savedMaxPage = pGroup->nMaxPage;
pGroup->nMaxPage = 0;
@@ -53273,6 +53289,7 @@ struct Pager {
u8 noLock; /* Do not lock (except in WAL mode) */
u8 readOnly; /* True for a read-only database */
u8 memDb; /* True to inhibit all file I/O */
+ u8 memVfs; /* VFS-implemented memory database */
/**************************************************************************
** The following block contains those class members that change during
@@ -53322,8 +53339,8 @@ struct Pager {
i16 nReserve; /* Number of unused bytes at end of each page */
u32 vfsFlags; /* Flags for sqlite3_vfs.xOpen() */
u32 sectorSize; /* Assumed sector size during rollback */
- int pageSize; /* Number of bytes in a page */
Pgno mxPgno; /* Maximum allowed size of the database */
+ i64 pageSize; /* Number of bytes in a page */
i64 journalSizeLimit; /* Size limit for persistent journal files */
char *zFilename; /* Name of the database file */
char *zJournal; /* Name of the journal file */
@@ -55667,6 +55684,7 @@ static int readDbPage(PgHdr *pPg){
*/
static void pager_write_changecounter(PgHdr *pPg){
u32 change_counter;
+ if( NEVER(pPg==0) ) return;
/* Increment the value just read and write it back to byte 24. */
change_counter = sqlite3Get4byte((u8*)pPg->pPager->dbFileVers)+1;
@@ -56558,7 +56576,7 @@ static int pager_wait_on_lock(Pager *pPager, int locktype){
#if defined(SQLITE_DEBUG)
static void assertTruncateConstraintCb(PgHdr *pPg){
assert( pPg->flags&PGHDR_DIRTY );
- assert( !subjRequiresPage(pPg) || pPg->pgno<=pPg->pPager->dbSize );
+ assert( pPg->pgno<=pPg->pPager->dbSize || !subjRequiresPage(pPg) );
}
static void assertTruncateConstraint(Pager *pPager){
sqlite3PcacheIterateDirty(pPager->pPCache, assertTruncateConstraintCb);
@@ -57501,6 +57519,7 @@ SQLITE_PRIVATE int sqlite3PagerOpen(
pPager->zWal = 0;
}
#endif
+ (void)pPtr; /* Suppress warning about unused pPtr value */
if( nPathname ) sqlite3DbFree(0, zPathname);
pPager->pVfs = pVfs;
@@ -57513,7 +57532,7 @@ SQLITE_PRIVATE int sqlite3PagerOpen(
rc = sqlite3OsOpen(pVfs, pPager->zFilename, pPager->fd, vfsFlags, &fout);
assert( !memDb );
#ifndef SQLITE_OMIT_DESERIALIZE
- memJM = (fout&SQLITE_OPEN_MEMORY)!=0;
+ pPager->memVfs = memJM = (fout&SQLITE_OPEN_MEMORY)!=0;
#endif
readOnly = (fout&SQLITE_OPEN_READONLY)!=0;
@@ -57898,7 +57917,7 @@ SQLITE_PRIVATE int sqlite3PagerSharedLock(Pager *pPager){
** may mean that the pager was in the error-state when this
** function was called and the journal file does not exist.
*/
- if( !isOpen(pPager->jfd) ){
+ if( !isOpen(pPager->jfd) && pPager->journalMode!=PAGER_JOURNALMODE_OFF ){
sqlite3_vfs * const pVfs = pPager->pVfs;
int bExists; /* True if journal file exists */
rc = sqlite3OsAccess(
@@ -59380,8 +59399,8 @@ SQLITE_PRIVATE int sqlite3PagerRefcount(Pager *pPager){
** used by the pager and its associated cache.
*/
SQLITE_PRIVATE int sqlite3PagerMemUsed(Pager *pPager){
- int perPageSize = pPager->pageSize + pPager->nExtra + sizeof(PgHdr)
- + 5*sizeof(void*);
+ int perPageSize = pPager->pageSize + pPager->nExtra
+ + (int)(sizeof(PgHdr) + 5*sizeof(void*));
return perPageSize*sqlite3PcachePagecount(pPager->pPCache)
+ sqlite3MallocSize(pPager)
+ pPager->pageSize;
@@ -59450,7 +59469,7 @@ SQLITE_PRIVATE void sqlite3PagerCacheStat(Pager *pPager, int eStat, int reset, i
** Return true if this is an in-memory or temp-file backed pager.
*/
SQLITE_PRIVATE int sqlite3PagerIsMemdb(Pager *pPager){
- return pPager->tempFile;
+ return pPager->tempFile || pPager->memVfs;
}
/*
@@ -59575,14 +59594,14 @@ SQLITE_PRIVATE int sqlite3PagerSavepoint(Pager *pPager, int op, int iSavepoint){
}
pPager->nSavepoint = nNew;
- /* If this is a release of the outermost savepoint, truncate
- ** the sub-journal to zero bytes in size. */
+ /* Truncate the sub-journal so that it only includes the parts
+ ** that are still in use. */
if( op==SAVEPOINT_RELEASE ){
PagerSavepoint *pRel = &pPager->aSavepoint[nNew];
if( pRel->bTruncateOnRelease && isOpen(pPager->sjfd) ){
/* Only truncate if it is an in-memory sub-journal. */
if( sqlite3JournalIsInMemory(pPager->sjfd) ){
- i64 sz = (pPager->pageSize+4)*pRel->iSubRec;
+ i64 sz = (pPager->pageSize+4)*(i64)pRel->iSubRec;
rc = sqlite3OsTruncate(pPager->sjfd, sz);
assert( rc==SQLITE_OK );
}
@@ -59770,7 +59789,7 @@ SQLITE_PRIVATE int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, i
pPgOld = sqlite3PagerLookup(pPager, pgno);
assert( !pPgOld || pPgOld->nRef==1 || CORRUPT_DB );
if( pPgOld ){
- if( pPgOld->nRef>1 ){
+ if( NEVER(pPgOld->nRef>1) ){
sqlite3PagerUnrefNotNull(pPgOld);
return SQLITE_CORRUPT_BKPT;
}
@@ -60516,7 +60535,10 @@ SQLITE_PRIVATE int sqlite3PagerWalFramesize(Pager *pPager){
** HASHTABLE_NPAGE_ONE frames. The values of HASHTABLE_NPAGE_ONE and
** HASHTABLE_NPAGE are selected so that together the wal-index header and
** first index block are the same size as all other index blocks in the
-** wal-index.
+** wal-index. The values are:
+**
+** HASHTABLE_NPAGE 4096
+** HASHTABLE_NPAGE_ONE 4062
**
** Each index block contains two sections, a page-mapping that contains the
** database page number associated with each wal frame, and a hash-table
@@ -60752,6 +60774,70 @@ struct WalCkptInfo {
};
#define READMARK_NOT_USED 0xffffffff
+/*
+** This is a schematic view of the complete 136-byte header of the
+** wal-index file (also known as the -shm file):
+**
+** +-----------------------------+
+** 0: | iVersion | \
+** +-----------------------------+ |
+** 4: | (unused padding) | |
+** +-----------------------------+ |
+** 8: | iChange | |
+** +-------+-------+-------------+ |
+** 12: | bInit | bBig | szPage | |
+** +-------+-------+-------------+ |
+** 16: | mxFrame | | First copy of the
+** +-----------------------------+ | WalIndexHdr object
+** 20: | nPage | |
+** +-----------------------------+ |
+** 24: | aFrameCksum | |
+** | | |
+** +-----------------------------+ |
+** 32: | aSalt | |
+** | | |
+** +-----------------------------+ |
+** 40: | aCksum | |
+** | | /
+** +-----------------------------+
+** 48: | iVersion | \
+** +-----------------------------+ |
+** 52: | (unused padding) | |
+** +-----------------------------+ |
+** 56: | iChange | |
+** +-------+-------+-------------+ |
+** 60: | bInit | bBig | szPage | |
+** +-------+-------+-------------+ | Second copy of the
+** 64: | mxFrame | | WalIndexHdr
+** +-----------------------------+ |
+** 68: | nPage | |
+** +-----------------------------+ |
+** 72: | aFrameCksum | |
+** | | |
+** +-----------------------------+ |
+** 80: | aSalt | |
+** | | |
+** +-----------------------------+ |
+** 88: | aCksum | |
+** | | /
+** +-----------------------------+
+** 96: | nBackfill |
+** +-----------------------------+
+** 100: | 5 read marks |
+** | |
+** | |
+** | |
+** | |
+** +-------+-------+------+------+
+** 120: | Write | Ckpt | Rcvr | Rd0 | \
+** +-------+-------+------+------+ ) 8 lock bytes
+** | Read1 | Read2 | Rd3 | Rd4 | /
+** +-------+-------+------+------+
+** 128: | nBackfillAttempted |
+** +-----------------------------+
+** 132: | (unused padding) |
+** +-----------------------------+
+*/
/* A block of WALINDEX_LOCK_RESERVED bytes beginning at
** WALINDEX_LOCK_OFFSET is reserved for locks. Since some systems
@@ -60908,9 +60994,13 @@ struct WalIterator {
** so. It is safe to enlarge the wal-index if pWal->writeLock is true
** or pWal->exclusiveMode==WAL_HEAPMEMORY_MODE.
**
-** If this call is successful, *ppPage is set to point to the wal-index
-** page and SQLITE_OK is returned. If an error (an OOM or VFS error) occurs,
-** then an SQLite error code is returned and *ppPage is set to 0.
+** Three possible result scenarios:
+**
+** (1) rc==SQLITE_OK and *ppPage==Requested-Wal-Index-Page
+** (2) rc>=SQLITE_ERROR and *ppPage==NULL
+** (3) rc==SQLITE_OK and *ppPage==NULL // only if iPage==0
+**
+** Scenario (3) can only occur when pWal->writeLock is false and iPage==0
*/
static SQLITE_NOINLINE int walIndexPageRealloc(
Wal *pWal, /* The WAL context */
@@ -60943,7 +61033,9 @@ static SQLITE_NOINLINE int walIndexPageRealloc(
rc = sqlite3OsShmMap(pWal->pDbFd, iPage, WALINDEX_PGSZ,
pWal->writeLock, (void volatile **)&pWal->apWiData[iPage]
);
- assert( pWal->apWiData[iPage]!=0 || rc!=SQLITE_OK || pWal->writeLock==0 );
+ assert( pWal->apWiData[iPage]!=0
+ || rc!=SQLITE_OK
+ || (pWal->writeLock==0 && iPage==0) );
testcase( pWal->apWiData[iPage]==0 && rc==SQLITE_OK );
if( rc==SQLITE_OK ){
if( iPage>0 && sqlite3FaultSim(600) ) rc = SQLITE_NOMEM;
@@ -61282,8 +61374,8 @@ struct WalHashLoc {
** slot in the hash table is set to N, it refers to frame number
** (pLoc->iZero+N) in the log.
**
-** Finally, set pLoc->aPgno so that pLoc->aPgno[1] is the page number of the
-** first frame indexed by the hash table, frame (pLoc->iZero+1).
+** Finally, set pLoc->aPgno so that pLoc->aPgno[0] is the page number of the
+** first frame indexed by the hash table, frame (pLoc->iZero).
*/
static int walHashGet(
Wal *pWal, /* WAL handle */
@@ -61295,7 +61387,7 @@ static int walHashGet(
rc = walIndexPage(pWal, iHash, &pLoc->aPgno);
assert( rc==SQLITE_OK || iHash>0 );
- if( rc==SQLITE_OK ){
+ if( pLoc->aPgno ){
pLoc->aHash = (volatile ht_slot *)&pLoc->aPgno[HASHTABLE_NPAGE];
if( iHash==0 ){
pLoc->aPgno = &pLoc->aPgno[WALINDEX_HDR_SIZE/sizeof(u32)];
@@ -61303,7 +61395,8 @@ static int walHashGet(
}else{
pLoc->iZero = HASHTABLE_NPAGE_ONE + (iHash-1)*HASHTABLE_NPAGE;
}
- pLoc->aPgno = &pLoc->aPgno[-1];
+ }else if( NEVER(rc==SQLITE_OK) ){
+ rc = SQLITE_ERROR;
}
return rc;
}
@@ -61385,8 +61478,9 @@ static void walCleanupHash(Wal *pWal){
/* Zero the entries in the aPgno array that correspond to frames with
** frame numbers greater than pWal->hdr.mxFrame.
*/
- nByte = (int)((char *)sLoc.aHash - (char *)&sLoc.aPgno[iLimit+1]);
- memset((void *)&sLoc.aPgno[iLimit+1], 0, nByte);
+ nByte = (int)((char *)sLoc.aHash - (char *)&sLoc.aPgno[iLimit]);
+ assert( nByte>=0 );
+ memset((void *)&sLoc.aPgno[iLimit], 0, nByte);
#ifdef SQLITE_ENABLE_EXPENSIVE_ASSERT
/* Verify that the every entry in the mapping region is still reachable
@@ -61395,11 +61489,11 @@ static void walCleanupHash(Wal *pWal){
if( iLimit ){
int j; /* Loop counter */
int iKey; /* Hash key */
- for(j=1; j<=iLimit; j++){
+ for(j=0; j<iLimit; j++){
for(iKey=walHash(sLoc.aPgno[j]);sLoc.aHash[iKey];iKey=walNextHash(iKey)){
- if( sLoc.aHash[iKey]==j ) break;
+ if( sLoc.aHash[iKey]==j+1 ) break;
}
- assert( sLoc.aHash[iKey]==j );
+ assert( sLoc.aHash[iKey]==j+1 );
}
}
#endif /* SQLITE_ENABLE_EXPENSIVE_ASSERT */
@@ -61431,9 +61525,9 @@ static int walIndexAppend(Wal *pWal, u32 iFrame, u32 iPage){
** entire hash table and aPgno[] array before proceeding.
*/
if( idx==1 ){
- int nByte = (int)((u8 *)&sLoc.aHash[HASHTABLE_NSLOT]
- - (u8 *)&sLoc.aPgno[1]);
- memset((void*)&sLoc.aPgno[1], 0, nByte);
+ int nByte = (int)((u8*)&sLoc.aHash[HASHTABLE_NSLOT] - (u8*)sLoc.aPgno);
+ assert( nByte>=0 );
+ memset((void*)sLoc.aPgno, 0, nByte);
}
/* If the entry in aPgno[] is already set, then the previous writer
@@ -61442,9 +61536,9 @@ static int walIndexAppend(Wal *pWal, u32 iFrame, u32 iPage){
** Remove the remnants of that writers uncommitted transaction from
** the hash-table before writing any new entries.
*/
- if( sLoc.aPgno[idx] ){
+ if( sLoc.aPgno[idx-1] ){
walCleanupHash(pWal);
- assert( !sLoc.aPgno[idx] );
+ assert( !sLoc.aPgno[idx-1] );
}
/* Write the aPgno[] array entry and the hash-table slot. */
@@ -61452,7 +61546,7 @@ static int walIndexAppend(Wal *pWal, u32 iFrame, u32 iPage){
for(iKey=walHash(iPage); sLoc.aHash[iKey]; iKey=walNextHash(iKey)){
if( (nCollide--)==0 ) return SQLITE_CORRUPT_BKPT;
}
- sLoc.aPgno[idx] = iPage;
+ sLoc.aPgno[idx-1] = iPage;
AtomicStore(&sLoc.aHash[iKey], (ht_slot)idx);
#ifdef SQLITE_ENABLE_EXPENSIVE_ASSERT
@@ -61473,19 +61567,18 @@ static int walIndexAppend(Wal *pWal, u32 iFrame, u32 iPage){
*/
if( (idx&0x3ff)==0 ){
int i; /* Loop counter */
- for(i=1; i<=idx; i++){
+ for(i=0; i<idx; i++){
for(iKey=walHash(sLoc.aPgno[i]);
sLoc.aHash[iKey];
iKey=walNextHash(iKey)){
- if( sLoc.aHash[iKey]==i ) break;
+ if( sLoc.aHash[iKey]==i+1 ) break;
}
- assert( sLoc.aHash[iKey]==i );
+ assert( sLoc.aHash[iKey]==i+1 );
}
}
#endif /* SQLITE_ENABLE_EXPENSIVE_ASSERT */
}
-
return rc;
}
@@ -61606,7 +61699,8 @@ static int walIndexRecover(Wal *pWal){
u32 iFirst = 1 + (iPg==0?0:HASHTABLE_NPAGE_ONE+(iPg-1)*HASHTABLE_NPAGE);
u32 nHdr, nHdr32;
rc = walIndexPage(pWal, iPg, (volatile u32**)&aShare);
- if( rc ) break;
+ assert( aShare!=0 || rc!=SQLITE_OK );
+ if( aShare==0 ) break;
pWal->apWiData[iPg] = aPrivate;
for(iFrame=iFirst; iFrame<=iLast; iFrame++){
@@ -61765,14 +61859,43 @@ SQLITE_PRIVATE int sqlite3WalOpen(
assert( zWalName && zWalName[0] );
assert( pDbFd );
+ /* Verify the values of various constants. Any changes to the values
+ ** of these constants would result in an incompatible on-disk format
+ ** for the -shm file. Any change that causes one of these asserts to
+ ** fail is a backward compatibility problem, even if the change otherwise
+ ** works.
+ **
+ ** This table also serves as a helpful cross-reference when trying to
+ ** interpret hex dumps of the -shm file.
+ */
+ assert( 48 == sizeof(WalIndexHdr) );
+ assert( 40 == sizeof(WalCkptInfo) );
+ assert( 120 == WALINDEX_LOCK_OFFSET );
+ assert( 136 == WALINDEX_HDR_SIZE );
+ assert( 4096 == HASHTABLE_NPAGE );
+ assert( 4062 == HASHTABLE_NPAGE_ONE );
+ assert( 8192 == HASHTABLE_NSLOT );
+ assert( 383 == HASHTABLE_HASH_1 );
+ assert( 32768 == WALINDEX_PGSZ );
+ assert( 8 == SQLITE_SHM_NLOCK );
+ assert( 5 == WAL_NREADER );
+ assert( 24 == WAL_FRAME_HDRSIZE );
+ assert( 32 == WAL_HDRSIZE );
+ assert( 120 == WALINDEX_LOCK_OFFSET + WAL_WRITE_LOCK );
+ assert( 121 == WALINDEX_LOCK_OFFSET + WAL_CKPT_LOCK );
+ assert( 122 == WALINDEX_LOCK_OFFSET + WAL_RECOVER_LOCK );
+ assert( 123 == WALINDEX_LOCK_OFFSET + WAL_READ_LOCK(0) );
+ assert( 124 == WALINDEX_LOCK_OFFSET + WAL_READ_LOCK(1) );
+ assert( 125 == WALINDEX_LOCK_OFFSET + WAL_READ_LOCK(2) );
+ assert( 126 == WALINDEX_LOCK_OFFSET + WAL_READ_LOCK(3) );
+ assert( 127 == WALINDEX_LOCK_OFFSET + WAL_READ_LOCK(4) );
+
/* In the amalgamation, the os_unix.c and os_win.c source files come before
** this source file. Verify that the #defines of the locking byte offsets
** in os_unix.c and os_win.c agree with the WALINDEX_LOCK_OFFSET value.
** For that matter, if the lock offset ever changes from its initial design
** value of 120, we need to know that so there is an assert() to check it.
*/
- assert( 120==WALINDEX_LOCK_OFFSET );
- assert( 136==WALINDEX_HDR_SIZE );
#ifdef WIN_SHM_BASE
assert( WIN_SHM_BASE==WALINDEX_LOCK_OFFSET );
#endif
@@ -62074,7 +62197,6 @@ static int walIteratorInit(Wal *pWal, u32 nBackfill, WalIterator **pp){
int nEntry; /* Number of entries in this segment */
ht_slot *aIndex; /* Sorted index for this segment */
- sLoc.aPgno++;
if( (i+1)==nSegment ){
nEntry = (int)(iLast - sLoc.iZero);
}else{
@@ -63213,7 +63335,8 @@ SQLITE_PRIVATE int sqlite3WalSnapshotRecover(Wal *pWal){
rc = walHashGet(pWal, walFramePage(i), &sLoc);
if( rc!=SQLITE_OK ) break;
- pgno = sLoc.aPgno[i-sLoc.iZero];
+ assert( i - sLoc.iZero - 1 >=0 );
+ pgno = sLoc.aPgno[i-sLoc.iZero-1];
iDbOff = (i64)(pgno-1) * szPage;
if( iDbOff+szPage<=szDb ){
@@ -63446,7 +63569,7 @@ SQLITE_PRIVATE int sqlite3WalFindFrame(
iKey = walHash(pgno);
while( (iH = AtomicLoad(&sLoc.aHash[iKey]))!=0 ){
u32 iFrame = iH + sLoc.iZero;
- if( iFrame<=iLast && iFrame>=pWal->minFrame && sLoc.aPgno[iH]==pgno ){
+ if( iFrame<=iLast && iFrame>=pWal->minFrame && sLoc.aPgno[iH-1]==pgno ){
assert( iFrame>iRead || CORRUPT_DB );
iRead = iFrame;
}
@@ -64698,7 +64821,6 @@ typedef struct CellInfo CellInfo;
*/
struct MemPage {
u8 isInit; /* True if previously initialized. MUST BE FIRST! */
- u8 bBusy; /* Prevent endless loops on corrupt database files */
u8 intKey; /* True if table b-trees. False for index b-trees */
u8 intKeyLeaf; /* True if the leaf of an intKey table */
Pgno pgno; /* Page number for this page */
@@ -66279,15 +66401,13 @@ static int btreeMoveto(
sqlite3VdbeRecordUnpack(pKeyInfo, (int)nKey, pKey, pIdxKey);
if( pIdxKey->nField==0 || pIdxKey->nField>pKeyInfo->nAllField ){
rc = SQLITE_CORRUPT_BKPT;
- goto moveto_done;
+ }else{
+ rc = sqlite3BtreeIndexMoveto(pCur, pIdxKey, pRes);
}
+ sqlite3DbFree(pCur->pKeyInfo->db, pIdxKey);
}else{
pIdxKey = 0;
- }
- rc = sqlite3BtreeMovetoUnpacked(pCur, pIdxKey, nKey, bias, pRes);
-moveto_done:
- if( pIdxKey ){
- sqlite3DbFree(pCur->pKeyInfo->db, pIdxKey);
+ rc = sqlite3BtreeTableMoveto(pCur, nKey, bias, pRes);
}
return rc;
}
@@ -66700,7 +66820,7 @@ static void btreeParseCellPtr(
pInfo->nPayload = nPayload;
pInfo->pPayload = pIter;
testcase( nPayload==pPage->maxLocal );
- testcase( nPayload==pPage->maxLocal+1 );
+ testcase( nPayload==(u32)pPage->maxLocal+1 );
if( nPayload<=pPage->maxLocal ){
/* This is the (easy) common case where the entire payload fits
** on the local page. No overflow is required.
@@ -66737,7 +66857,7 @@ static void btreeParseCellPtrIndex(
pInfo->nPayload = nPayload;
pInfo->pPayload = pIter;
testcase( nPayload==pPage->maxLocal );
- testcase( nPayload==pPage->maxLocal+1 );
+ testcase( nPayload==(u32)pPage->maxLocal+1 );
if( nPayload<=pPage->maxLocal ){
/* This is the (easy) common case where the entire payload fits
** on the local page. No overflow is required.
@@ -66800,7 +66920,7 @@ static u16 cellSizePtr(MemPage *pPage, u8 *pCell){
while( (*pIter++)&0x80 && pIter<pEnd );
}
testcase( nSize==pPage->maxLocal );
- testcase( nSize==pPage->maxLocal+1 );
+ testcase( nSize==(u32)pPage->maxLocal+1 );
if( nSize<=pPage->maxLocal ){
nSize += (u32)(pIter - pCell);
if( nSize<4 ) nSize = 4;
@@ -66808,7 +66928,7 @@ static u16 cellSizePtr(MemPage *pPage, u8 *pCell){
int minLocal = pPage->minLocal;
nSize = minLocal + (nSize - minLocal) % (pPage->pBt->usableSize - 4);
testcase( nSize==pPage->maxLocal );
- testcase( nSize==pPage->maxLocal+1 );
+ testcase( nSize==(u32)pPage->maxLocal+1 );
if( nSize>pPage->maxLocal ){
nSize = minLocal;
}
@@ -66942,7 +67062,7 @@ static int defragmentPage(MemPage *pPage, int nMaxFrag){
if( iFree2+sz2 > usableSize ) return SQLITE_CORRUPT_PAGE(pPage);
memmove(&data[iFree+sz+sz2], &data[iFree+sz], iFree2-(iFree+sz));
sz += sz2;
- }else if( iFree+sz>usableSize ){
+ }else if( NEVER(iFree+sz>usableSize) ){
return SQLITE_CORRUPT_PAGE(pPage);
}
@@ -67136,7 +67256,7 @@ static int allocateSpace(MemPage *pPage, int nByte, int *pIdx){
int g2;
assert( pSpace+nByte<=data+pPage->pBt->usableSize );
*pIdx = g2 = (int)(pSpace-data);
- if( NEVER(g2<=gap) ){
+ if( g2<=gap ){
return SQLITE_CORRUPT_PAGE(pPage);
}else{
return SQLITE_OK;
@@ -68549,7 +68669,6 @@ static int lockBtree(BtShared *pBt){
MemPage *pPage1; /* Page 1 of the database file */
u32 nPage; /* Number of pages in the database */
u32 nPageFile = 0; /* Number of pages in the database file */
- u32 nPageHeader; /* Number of pages in the database according to hdr */
assert( sqlite3_mutex_held(pBt->mutex) );
assert( pBt->pPage1==0 );
@@ -68561,7 +68680,7 @@ static int lockBtree(BtShared *pBt){
/* Do some checking to help insure the file we opened really is
** a valid database file.
*/
- nPage = nPageHeader = get4byte(28+(u8*)pPage1->aData);
+ nPage = get4byte(28+(u8*)pPage1->aData);
sqlite3PagerPagecount(pBt->pPager, (int*)&nPageFile);
if( nPage==0 || memcmp(24+(u8*)pPage1->aData, 92+(u8*)pPage1->aData,4)!=0 ){
nPage = nPageFile;
@@ -68596,7 +68715,7 @@ static int lockBtree(BtShared *pBt){
goto page1_init_failed;
}
- /* If the write version is set to 2, this database should be accessed
+ /* If the read version is set to 2, this database should be accessed
** in WAL mode. If the log is not already open, open it now. Then
** return SQLITE_OK and return without populating BtShared.pPage1.
** The caller detects this and calls this function again. This is
@@ -69394,16 +69513,18 @@ SQLITE_PRIVATE int sqlite3BtreeIncrVacuum(Btree *p){
/*
** This routine is called prior to sqlite3PagerCommit when a transaction
** is committed for an auto-vacuum database.
-**
-** If SQLITE_OK is returned, then *pnTrunc is set to the number of pages
-** the database file should be truncated to during the commit process.
-** i.e. the database has been reorganized so that only the first *pnTrunc
-** pages are in use.
*/
-static int autoVacuumCommit(BtShared *pBt){
+static int autoVacuumCommit(Btree *p){
int rc = SQLITE_OK;
- Pager *pPager = pBt->pPager;
- VVA_ONLY( int nRef = sqlite3PagerRefcount(pPager); )
+ Pager *pPager;
+ BtShared *pBt;
+ sqlite3 *db;
+ VVA_ONLY( int nRef );
+
+ assert( p!=0 );
+ pBt = p->pBt;
+ pPager = pBt->pPager;
+ VVA_ONLY( nRef = sqlite3PagerRefcount(pPager); )
assert( sqlite3_mutex_held(pBt->mutex) );
invalidateAllOverflowCache(pBt);
@@ -69411,6 +69532,7 @@ static int autoVacuumCommit(BtShared *pBt){
if( !pBt->incrVacuum ){
Pgno nFin; /* Number of pages in database after autovacuuming */
Pgno nFree; /* Number of pages on the freelist initially */
+ Pgno nVac; /* Number of pages to vacuum */
Pgno iFree; /* The next page to be freed */
Pgno nOrig; /* Database size before freeing */
@@ -69424,18 +69546,42 @@ static int autoVacuumCommit(BtShared *pBt){
}
nFree = get4byte(&pBt->pPage1->aData[36]);
- nFin = finalDbSize(pBt, nOrig, nFree);
+ db = p->db;
+ if( db->xAutovacPages ){
+ int iDb;
+ for(iDb=0; ALWAYS(iDb<db->nDb); iDb++){
+ if( db->aDb[iDb].pBt==p ) break;
+ }
+ nVac = db->xAutovacPages(
+ db->pAutovacPagesArg,
+ db->aDb[iDb].zDbSName,
+ nOrig,
+ nFree,
+ pBt->pageSize
+ );
+ if( nVac>nFree ){
+ nVac = nFree;
+ }
+ if( nVac==0 ){
+ return SQLITE_OK;
+ }
+ }else{
+ nVac = nFree;
+ }
+ nFin = finalDbSize(pBt, nOrig, nVac);
if( nFin>nOrig ) return SQLITE_CORRUPT_BKPT;
if( nFin<nOrig ){
rc = saveAllCursors(pBt, 0, 0);
}
for(iFree=nOrig; iFree>nFin && rc==SQLITE_OK; iFree--){
- rc = incrVacuumStep(pBt, nFin, iFree, 1);
+ rc = incrVacuumStep(pBt, nFin, iFree, nVac==nFree);
}
if( (rc==SQLITE_DONE || rc==SQLITE_OK) && nFree>0 ){
rc = sqlite3PagerWrite(pBt->pPage1->pDbPage);
- put4byte(&pBt->pPage1->aData[32], 0);
- put4byte(&pBt->pPage1->aData[36], 0);
+ if( nVac==nFree ){
+ put4byte(&pBt->pPage1->aData[32], 0);
+ put4byte(&pBt->pPage1->aData[36], 0);
+ }
put4byte(&pBt->pPage1->aData[28], nFin);
pBt->bDoTruncate = 1;
pBt->nPage = nFin;
@@ -69486,7 +69632,7 @@ SQLITE_PRIVATE int sqlite3BtreeCommitPhaseOne(Btree *p, const char *zSuperJrnl){
sqlite3BtreeEnter(p);
#ifndef SQLITE_OMIT_AUTOVACUUM
if( pBt->autoVacuum ){
- rc = autoVacuumCommit(pBt);
+ rc = autoVacuumCommit(p);
if( rc!=SQLITE_OK ){
sqlite3BtreeLeave(p);
return rc;
@@ -69673,7 +69819,7 @@ static void btreeSetNPage(BtShared *pBt, MemPage *pPage1){
int nPage = get4byte(&pPage1->aData[28]);
testcase( nPage==0 );
if( nPage==0 ) sqlite3PagerPagecount(pBt->pPager, &nPage);
- testcase( pBt->nPage!=nPage );
+ testcase( pBt->nPage!=(u32)nPage );
pBt->nPage = nPage;
}
@@ -70291,7 +70437,9 @@ static int accessPayload(
assert( pPage );
assert( eOp==0 || eOp==1 );
assert( pCur->eState==CURSOR_VALID );
- assert( pCur->ix<pPage->nCell );
+ if( pCur->ix>=pPage->nCell ){
+ return SQLITE_CORRUPT_PAGE(pPage);
+ }
assert( cursorHoldsMutex(pCur) );
getCellInfo(pCur);
@@ -70478,7 +70626,6 @@ SQLITE_PRIVATE int sqlite3BtreePayload(BtCursor *pCur, u32 offset, u32 amt, void
assert( cursorHoldsMutex(pCur) );
assert( pCur->eState==CURSOR_VALID );
assert( pCur->iPage>=0 && pCur->pPage );
- assert( pCur->ix<pCur->pPage->nCell );
return accessPayload(pCur, offset, amt, (unsigned char*)pBuf, 0);
}
@@ -70540,7 +70687,7 @@ static const void *fetchPayload(
assert( pCur->eState==CURSOR_VALID );
assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
assert( cursorOwnsBtShared(pCur) );
- assert( pCur->ix<pCur->pPage->nCell );
+ assert( pCur->ix<pCur->pPage->nCell || CORRUPT_DB );
assert( pCur->info.nSize>0 );
assert( pCur->info.pPayload>pCur->pPage->aData || CORRUPT_DB );
assert( pCur->info.pPayload<pCur->pPage->aDataEnd ||CORRUPT_DB);
@@ -70873,12 +71020,8 @@ SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor *pCur, int *pRes){
return rc;
}
-/* Move the cursor so that it points to an entry near the key
-** specified by pIdxKey or intKey. Return a success code.
-**
-** For INTKEY tables, the intKey parameter is used. pIdxKey
-** must be NULL. For index tables, pIdxKey is used and intKey
-** is ignored.
+/* Move the cursor so that it points to an entry in a table (a.k.a INTKEY)
+** table near the key intKey. Return a success code.
**
** If an exact match is not found, then the cursor is always
** left pointing at a leaf page which would hold the entry if it
@@ -70891,39 +71034,32 @@ SQLITE_PRIVATE int sqlite3BtreeLast(BtCursor *pCur, int *pRes){
** *pRes is as follows:
**
** *pRes<0 The cursor is left pointing at an entry that
-** is smaller than intKey/pIdxKey or if the table is empty
+** is smaller than intKey or if the table is empty
** and the cursor is therefore left point to nothing.
**
** *pRes==0 The cursor is left pointing at an entry that
-** exactly matches intKey/pIdxKey.
+** exactly matches intKey.
**
** *pRes>0 The cursor is left pointing at an entry that
-** is larger than intKey/pIdxKey.
-**
-** For index tables, the pIdxKey->eqSeen field is set to 1 if there
-** exists an entry in the table that exactly matches pIdxKey.
+** is larger than intKey.
*/
-SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
+SQLITE_PRIVATE int sqlite3BtreeTableMoveto(
BtCursor *pCur, /* The cursor to be moved */
- UnpackedRecord *pIdxKey, /* Unpacked index key */
i64 intKey, /* The table key */
int biasRight, /* If true, bias the search to the high end */
int *pRes /* Write search results here */
){
int rc;
- RecordCompare xRecordCompare;
assert( cursorOwnsBtShared(pCur) );
assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
assert( pRes );
- assert( (pIdxKey==0)==(pCur->pKeyInfo==0) );
- assert( pCur->eState!=CURSOR_VALID || (pIdxKey==0)==(pCur->curIntKey!=0) );
+ assert( pCur->pKeyInfo==0 );
+ assert( pCur->eState!=CURSOR_VALID || pCur->curIntKey!=0 );
/* If the cursor is already positioned at the point we are trying
** to move to, then just return without doing any work */
- if( pIdxKey==0
- && pCur->eState==CURSOR_VALID && (pCur->curFlags & BTCF_ValidNKey)!=0
- ){
+ if( pCur->eState==CURSOR_VALID && (pCur->curFlags & BTCF_ValidNKey)!=0 ){
if( pCur->info.nKey==intKey ){
*pRes = 0;
return SQLITE_OK;
@@ -70945,9 +71081,7 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
if( pCur->info.nKey==intKey ){
return SQLITE_OK;
}
- }else if( rc==SQLITE_DONE ){
- rc = SQLITE_OK;
- }else{
+ }else if( rc!=SQLITE_DONE ){
return rc;
}
}
@@ -70958,17 +71092,6 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
pCur->pBtree->nSeek++; /* Performance measurement during testing */
#endif
- if( pIdxKey ){
- xRecordCompare = sqlite3VdbeFindCompare(pIdxKey);
- pIdxKey->errCode = 0;
- assert( pIdxKey->default_rc==1
- || pIdxKey->default_rc==0
- || pIdxKey->default_rc==-1
- );
- }else{
- xRecordCompare = 0; /* All keys are integers */
- }
-
rc = moveToRoot(pCur);
if( rc ){
if( rc==SQLITE_EMPTY ){
@@ -70983,7 +71106,8 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
assert( pCur->eState==CURSOR_VALID );
assert( pCur->pPage->nCell > 0 );
assert( pCur->iPage==0 || pCur->apPage[0]->intKey==pCur->curIntKey );
- assert( pCur->curIntKey || pIdxKey );
+ assert( pCur->curIntKey );
+
for(;;){
int lwr, upr, idx, c;
Pgno chldPg;
@@ -70997,133 +71121,238 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
** be the right kind (index or table) of b-tree page. Otherwise
** a moveToChild() or moveToRoot() call would have detected corruption. */
assert( pPage->nCell>0 );
- assert( pPage->intKey==(pIdxKey==0) );
+ assert( pPage->intKey );
lwr = 0;
upr = pPage->nCell-1;
assert( biasRight==0 || biasRight==1 );
idx = upr>>(1-biasRight); /* idx = biasRight ? upr : (lwr+upr)/2; */
pCur->ix = (u16)idx;
- if( xRecordCompare==0 ){
- for(;;){
- i64 nCellKey;
- pCell = findCellPastPtr(pPage, idx);
- if( pPage->intKeyLeaf ){
- while( 0x80 <= *(pCell++) ){
- if( pCell>=pPage->aDataEnd ){
- return SQLITE_CORRUPT_PAGE(pPage);
- }
+ for(;;){
+ i64 nCellKey;
+ pCell = findCellPastPtr(pPage, idx);
+ if( pPage->intKeyLeaf ){
+ while( 0x80 <= *(pCell++) ){
+ if( pCell>=pPage->aDataEnd ){
+ return SQLITE_CORRUPT_PAGE(pPage);
}
}
- getVarint(pCell, (u64*)&nCellKey);
- if( nCellKey<intKey ){
- lwr = idx+1;
- if( lwr>upr ){ c = -1; break; }
- }else if( nCellKey>intKey ){
- upr = idx-1;
- if( lwr>upr ){ c = +1; break; }
+ }
+ getVarint(pCell, (u64*)&nCellKey);
+ if( nCellKey<intKey ){
+ lwr = idx+1;
+ if( lwr>upr ){ c = -1; break; }
+ }else if( nCellKey>intKey ){
+ upr = idx-1;
+ if( lwr>upr ){ c = +1; break; }
+ }else{
+ assert( nCellKey==intKey );
+ pCur->ix = (u16)idx;
+ if( !pPage->leaf ){
+ lwr = idx;
+ goto moveto_table_next_layer;
}else{
- assert( nCellKey==intKey );
- pCur->ix = (u16)idx;
- if( !pPage->leaf ){
- lwr = idx;
- goto moveto_next_layer;
- }else{
- pCur->curFlags |= BTCF_ValidNKey;
- pCur->info.nKey = nCellKey;
- pCur->info.nSize = 0;
- *pRes = 0;
- return SQLITE_OK;
- }
+ pCur->curFlags |= BTCF_ValidNKey;
+ pCur->info.nKey = nCellKey;
+ pCur->info.nSize = 0;
+ *pRes = 0;
+ return SQLITE_OK;
}
- assert( lwr+upr>=0 );
- idx = (lwr+upr)>>1; /* idx = (lwr+upr)/2; */
}
+ assert( lwr+upr>=0 );
+ idx = (lwr+upr)>>1; /* idx = (lwr+upr)/2; */
+ }
+ assert( lwr==upr+1 || !pPage->leaf );
+ assert( pPage->isInit );
+ if( pPage->leaf ){
+ assert( pCur->ix<pCur->pPage->nCell );
+ pCur->ix = (u16)idx;
+ *pRes = c;
+ rc = SQLITE_OK;
+ goto moveto_table_finish;
+ }
+moveto_table_next_layer:
+ if( lwr>=pPage->nCell ){
+ chldPg = get4byte(&pPage->aData[pPage->hdrOffset+8]);
}else{
- for(;;){
- int nCell; /* Size of the pCell cell in bytes */
- pCell = findCellPastPtr(pPage, idx);
-
- /* The maximum supported page-size is 65536 bytes. This means that
- ** the maximum number of record bytes stored on an index B-Tree
- ** page is less than 16384 bytes and may be stored as a 2-byte
- ** varint. This information is used to attempt to avoid parsing
- ** the entire cell by checking for the cases where the record is
- ** stored entirely within the b-tree page by inspecting the first
- ** 2 bytes of the cell.
- */
- nCell = pCell[0];
- if( nCell<=pPage->max1bytePayload ){
- /* This branch runs if the record-size field of the cell is a
- ** single byte varint and the record fits entirely on the main
- ** b-tree page. */
- testcase( pCell+nCell+1==pPage->aDataEnd );
- c = xRecordCompare(nCell, (void*)&pCell[1], pIdxKey);
- }else if( !(pCell[1] & 0x80)
- && (nCell = ((nCell&0x7f)<<7) + pCell[1])<=pPage->maxLocal
- ){
- /* The record-size field is a 2 byte varint and the record
- ** fits entirely on the main b-tree page. */
- testcase( pCell+nCell+2==pPage->aDataEnd );
- c = xRecordCompare(nCell, (void*)&pCell[2], pIdxKey);
- }else{
- /* The record flows over onto one or more overflow pages. In
- ** this case the whole cell needs to be parsed, a buffer allocated
- ** and accessPayload() used to retrieve the record into the
- ** buffer before VdbeRecordCompare() can be called.
- **
- ** If the record is corrupt, the xRecordCompare routine may read
- ** up to two varints past the end of the buffer. An extra 18
- ** bytes of padding is allocated at the end of the buffer in
- ** case this happens. */
- void *pCellKey;
- u8 * const pCellBody = pCell - pPage->childPtrSize;
- const int nOverrun = 18; /* Size of the overrun padding */
- pPage->xParseCell(pPage, pCellBody, &pCur->info);
- nCell = (int)pCur->info.nKey;
- testcase( nCell<0 ); /* True if key size is 2^32 or more */
- testcase( nCell==0 ); /* Invalid key size: 0x80 0x80 0x00 */
- testcase( nCell==1 ); /* Invalid key size: 0x80 0x80 0x01 */
- testcase( nCell==2 ); /* Minimum legal index key size */
- if( nCell<2 || nCell/pCur->pBt->usableSize>pCur->pBt->nPage ){
- rc = SQLITE_CORRUPT_PAGE(pPage);
- goto moveto_finish;
- }
- pCellKey = sqlite3Malloc( nCell+nOverrun );
- if( pCellKey==0 ){
- rc = SQLITE_NOMEM_BKPT;
- goto moveto_finish;
- }
- pCur->ix = (u16)idx;
- rc = accessPayload(pCur, 0, nCell, (unsigned char*)pCellKey, 0);
- memset(((u8*)pCellKey)+nCell,0,nOverrun); /* Fix uninit warnings */
- pCur->curFlags &= ~BTCF_ValidOvfl;
- if( rc ){
- sqlite3_free(pCellKey);
- goto moveto_finish;
- }
- c = sqlite3VdbeRecordCompare(nCell, pCellKey, pIdxKey);
- sqlite3_free(pCellKey);
+ chldPg = get4byte(findCell(pPage, lwr));
+ }
+ pCur->ix = (u16)lwr;
+ rc = moveToChild(pCur, chldPg);
+ if( rc ) break;
+ }
+moveto_table_finish:
+ pCur->info.nSize = 0;
+ assert( (pCur->curFlags & BTCF_ValidOvfl)==0 );
+ return rc;
+}
+
+/* Move the cursor so that it points to an entry in an index table
+** near the key pIdxKey. Return a success code.
+**
+** If an exact match is not found, then the cursor is always
+** left pointing at a leaf page which would hold the entry if it
+** were present. The cursor might point to an entry that comes
+** before or after the key.
+**
+** An integer is written into *pRes which is the result of
+** comparing the key with the entry to which the cursor is
+** pointing. The meaning of the integer written into
+** *pRes is as follows:
+**
+** *pRes<0 The cursor is left pointing at an entry that
+** is smaller than pIdxKey or if the table is empty
+** and the cursor is therefore left point to nothing.
+**
+** *pRes==0 The cursor is left pointing at an entry that
+** exactly matches pIdxKey.
+**
+** *pRes>0 The cursor is left pointing at an entry that
+** is larger than pIdxKey.
+**
+** The pIdxKey->eqSeen field is set to 1 if there
+** exists an entry in the table that exactly matches pIdxKey.
+*/
+SQLITE_PRIVATE int sqlite3BtreeIndexMoveto(
+ BtCursor *pCur, /* The cursor to be moved */
+ UnpackedRecord *pIdxKey, /* Unpacked index key */
+ int *pRes /* Write search results here */
+){
+ int rc;
+ RecordCompare xRecordCompare;
+
+ assert( cursorOwnsBtShared(pCur) );
+ assert( sqlite3_mutex_held(pCur->pBtree->db->mutex) );
+ assert( pRes );
+ assert( pCur->pKeyInfo!=0 );
+
+#ifdef SQLITE_DEBUG
+ pCur->pBtree->nSeek++; /* Performance measurement during testing */
+#endif
+
+ xRecordCompare = sqlite3VdbeFindCompare(pIdxKey);
+ pIdxKey->errCode = 0;
+ assert( pIdxKey->default_rc==1
+ || pIdxKey->default_rc==0
+ || pIdxKey->default_rc==-1
+ );
+
+ rc = moveToRoot(pCur);
+ if( rc ){
+ if( rc==SQLITE_EMPTY ){
+ assert( pCur->pgnoRoot==0 || pCur->pPage->nCell==0 );
+ *pRes = -1;
+ return SQLITE_OK;
+ }
+ return rc;
+ }
+ assert( pCur->pPage );
+ assert( pCur->pPage->isInit );
+ assert( pCur->eState==CURSOR_VALID );
+ assert( pCur->pPage->nCell > 0 );
+ assert( pCur->iPage==0 || pCur->apPage[0]->intKey==pCur->curIntKey );
+ assert( pCur->curIntKey || pIdxKey );
+ for(;;){
+ int lwr, upr, idx, c;
+ Pgno chldPg;
+ MemPage *pPage = pCur->pPage;
+ u8 *pCell; /* Pointer to current cell in pPage */
+
+ /* pPage->nCell must be greater than zero. If this is the root-page
+ ** the cursor would have been INVALID above and this for(;;) loop
+ ** not run. If this is not the root-page, then the moveToChild() routine
+ ** would have already detected db corruption. Similarly, pPage must
+ ** be the right kind (index or table) of b-tree page. Otherwise
+ ** a moveToChild() or moveToRoot() call would have detected corruption. */
+ assert( pPage->nCell>0 );
+ assert( pPage->intKey==(pIdxKey==0) );
+ lwr = 0;
+ upr = pPage->nCell-1;
+ idx = upr>>1; /* idx = (lwr+upr)/2; */
+ pCur->ix = (u16)idx;
+ for(;;){
+ int nCell; /* Size of the pCell cell in bytes */
+ pCell = findCellPastPtr(pPage, idx);
+
+ /* The maximum supported page-size is 65536 bytes. This means that
+ ** the maximum number of record bytes stored on an index B-Tree
+ ** page is less than 16384 bytes and may be stored as a 2-byte
+ ** varint. This information is used to attempt to avoid parsing
+ ** the entire cell by checking for the cases where the record is
+ ** stored entirely within the b-tree page by inspecting the first
+ ** 2 bytes of the cell.
+ */
+ nCell = pCell[0];
+ if( nCell<=pPage->max1bytePayload ){
+ /* This branch runs if the record-size field of the cell is a
+ ** single byte varint and the record fits entirely on the main
+ ** b-tree page. */
+ testcase( pCell+nCell+1==pPage->aDataEnd );
+ c = xRecordCompare(nCell, (void*)&pCell[1], pIdxKey);
+ }else if( !(pCell[1] & 0x80)
+ && (nCell = ((nCell&0x7f)<<7) + pCell[1])<=pPage->maxLocal
+ ){
+ /* The record-size field is a 2 byte varint and the record
+ ** fits entirely on the main b-tree page. */
+ testcase( pCell+nCell+2==pPage->aDataEnd );
+ c = xRecordCompare(nCell, (void*)&pCell[2], pIdxKey);
+ }else{
+ /* The record flows over onto one or more overflow pages. In
+ ** this case the whole cell needs to be parsed, a buffer allocated
+ ** and accessPayload() used to retrieve the record into the
+ ** buffer before VdbeRecordCompare() can be called.
+ **
+ ** If the record is corrupt, the xRecordCompare routine may read
+ ** up to two varints past the end of the buffer. An extra 18
+ ** bytes of padding is allocated at the end of the buffer in
+ ** case this happens. */
+ void *pCellKey;
+ u8 * const pCellBody = pCell - pPage->childPtrSize;
+ const int nOverrun = 18; /* Size of the overrun padding */
+ pPage->xParseCell(pPage, pCellBody, &pCur->info);
+ nCell = (int)pCur->info.nKey;
+ testcase( nCell<0 ); /* True if key size is 2^32 or more */
+ testcase( nCell==0 ); /* Invalid key size: 0x80 0x80 0x00 */
+ testcase( nCell==1 ); /* Invalid key size: 0x80 0x80 0x01 */
+ testcase( nCell==2 ); /* Minimum legal index key size */
+ if( nCell<2 || nCell/pCur->pBt->usableSize>pCur->pBt->nPage ){
+ rc = SQLITE_CORRUPT_PAGE(pPage);
+ goto moveto_index_finish;
+ }
+ pCellKey = sqlite3Malloc( nCell+nOverrun );
+ if( pCellKey==0 ){
+ rc = SQLITE_NOMEM_BKPT;
+ goto moveto_index_finish;
}
- assert(
- (pIdxKey->errCode!=SQLITE_CORRUPT || c==0)
- && (pIdxKey->errCode!=SQLITE_NOMEM || pCur->pBtree->db->mallocFailed)
- );
- if( c<0 ){
- lwr = idx+1;
- }else if( c>0 ){
- upr = idx-1;
- }else{
- assert( c==0 );
- *pRes = 0;
- rc = SQLITE_OK;
- pCur->ix = (u16)idx;
- if( pIdxKey->errCode ) rc = SQLITE_CORRUPT_BKPT;
- goto moveto_finish;
+ pCur->ix = (u16)idx;
+ rc = accessPayload(pCur, 0, nCell, (unsigned char*)pCellKey, 0);
+ memset(((u8*)pCellKey)+nCell,0,nOverrun); /* Fix uninit warnings */
+ pCur->curFlags &= ~BTCF_ValidOvfl;
+ if( rc ){
+ sqlite3_free(pCellKey);
+ goto moveto_index_finish;
}
- if( lwr>upr ) break;
- assert( lwr+upr>=0 );
- idx = (lwr+upr)>>1; /* idx = (lwr+upr)/2 */
+ c = sqlite3VdbeRecordCompare(nCell, pCellKey, pIdxKey);
+ sqlite3_free(pCellKey);
}
+ assert(
+ (pIdxKey->errCode!=SQLITE_CORRUPT || c==0)
+ && (pIdxKey->errCode!=SQLITE_NOMEM || pCur->pBtree->db->mallocFailed)
+ );
+ if( c<0 ){
+ lwr = idx+1;
+ }else if( c>0 ){
+ upr = idx-1;
+ }else{
+ assert( c==0 );
+ *pRes = 0;
+ rc = SQLITE_OK;
+ pCur->ix = (u16)idx;
+ if( pIdxKey->errCode ) rc = SQLITE_CORRUPT_BKPT;
+ goto moveto_index_finish;
+ }
+ if( lwr>upr ) break;
+ assert( lwr+upr>=0 );
+ idx = (lwr+upr)>>1; /* idx = (lwr+upr)/2 */
}
assert( lwr==upr+1 || (pPage->intKey && !pPage->leaf) );
assert( pPage->isInit );
@@ -71132,9 +71361,8 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
pCur->ix = (u16)idx;
*pRes = c;
rc = SQLITE_OK;
- goto moveto_finish;
+ goto moveto_index_finish;
}
-moveto_next_layer:
if( lwr>=pPage->nCell ){
chldPg = get4byte(&pPage->aData[pPage->hdrOffset+8]);
}else{
@@ -71144,7 +71372,7 @@ moveto_next_layer:
rc = moveToChild(pCur, chldPg);
if( rc ) break;
}
-moveto_finish:
+moveto_index_finish:
pCur->info.nSize = 0;
assert( (pCur->curFlags & BTCF_ValidOvfl)==0 );
return rc;
@@ -71245,16 +71473,6 @@ static SQLITE_NOINLINE int btreeNext(BtCursor *pCur){
return SQLITE_CORRUPT_BKPT;
}
- /* If the database file is corrupt, it is possible for the value of idx
- ** to be invalid here. This can only occur if a second cursor modifies
- ** the page while cursor pCur is holding a reference to it. Which can
- ** only happen if the database is corrupt in such a way as to link the
- ** page into more than one b-tree structure.
- **
- ** Update 2019-12-23: appears to long longer be possible after the
- ** addition of anotherValidCursor() condition on balance_deeper(). */
- harmless( idx>pPage->nCell );
-
if( idx>=pPage->nCell ){
if( !pPage->leaf ){
rc = moveToChild(pCur, get4byte(&pPage->aData[pPage->hdrOffset+8]));
@@ -71742,7 +71960,7 @@ static int freePage2(BtShared *pBt, MemPage *pMemPage, Pgno iPage){
assert( CORRUPT_DB || iPage>1 );
assert( !pMemPage || pMemPage->pgno==iPage );
- if( iPage<2 || iPage>pBt->nPage ){
+ if( NEVER(iPage<2) || iPage>pBt->nPage ){
return SQLITE_CORRUPT_BKPT;
}
if( pMemPage ){
@@ -72166,16 +72384,18 @@ static void dropCell(MemPage *pPage, int idx, int sz, int *pRC){
int hdr; /* Beginning of the header. 0 most pages. 100 page 1 */
if( *pRC ) return;
- assert( idx>=0 && idx<pPage->nCell );
+ assert( idx>=0 );
+ assert( idx<pPage->nCell );
assert( CORRUPT_DB || sz==cellSize(pPage, idx) );
assert( sqlite3PagerIswriteable(pPage->pDbPage) );
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
assert( pPage->nFree>=0 );
data = pPage->aData;
ptr = &pPage->aCellIdx[2*idx];
+ assert( pPage->pBt->usableSize > (int)(ptr-data) );
pc = get2byte(ptr);
hdr = pPage->hdrOffset;
- testcase( pc==get2byte(&data[hdr+5]) );
+ testcase( pc==(u32)get2byte(&data[hdr+5]) );
testcase( pc+sz==pPage->pBt->usableSize );
if( pc+sz > pPage->pBt->usableSize ){
*pRC = SQLITE_CORRUPT_BKPT;
@@ -72467,7 +72687,7 @@ static int rebuildPage(
assert( i<iEnd );
j = get2byte(&aData[hdr+5]);
- if( NEVER(j>(u32)usableSize) ){ j = 0; }
+ if( j>(u32)usableSize ){ j = 0; }
memcpy(&pTmp[j], &aData[j], usableSize - j);
for(k=0; pCArray->ixNx[k]<=i && ALWAYS(k<NB*2); k++){}
@@ -72698,6 +72918,7 @@ static int editPage(
pData = &aData[get2byteNotZero(&aData[hdr+5])];
if( pData<pBegin ) goto editpage_fail;
+ if( pData>pPg->aDataEnd ) goto editpage_fail;
/* Add cells to the start of the page */
if( iNew<iOld ){
@@ -73059,11 +73280,10 @@ static int balance_nonroot(
Pgno aPgno[NB+2]; /* Page numbers of new pages before shuffling */
Pgno aPgOrder[NB+2]; /* Copy of aPgno[] used for sorting pages */
u16 aPgFlags[NB+2]; /* flags field of new pages before shuffling */
- CellArray b; /* Parsed information on cells being balanced */
+ CellArray b; /* Parsed information on cells being balanced */
memset(abDone, 0, sizeof(abDone));
- b.nCell = 0;
- b.apCell = 0;
+ memset(&b, 0, sizeof(b));
pBt = pParent->pBt;
assert( sqlite3_mutex_held(pBt->mutex) );
assert( sqlite3PagerIswriteable(pParent->pDbPage) );
@@ -73128,6 +73348,7 @@ static int balance_nonroot(
goto balance_cleanup;
}
}
+ nMaxCells += apOld[i]->nCell + ArraySize(pParent->apOvfl);
if( (i--)==0 ) break;
if( pParent->nOverflow && i+nxDiv==pParent->aiOvfl[0] ){
@@ -73169,7 +73390,6 @@ static int balance_nonroot(
/* Make nMaxCells a multiple of 4 in order to preserve 8-byte
** alignment */
- nMaxCells = nOld*(MX_CELL(pBt) + ArraySize(pParent->apOvfl));
nMaxCells = (nMaxCells + 3)&~3;
/*
@@ -73452,7 +73672,9 @@ static int balance_nonroot(
apOld[i] = 0;
rc = sqlite3PagerWrite(pNew->pDbPage);
nNew++;
- if( sqlite3PagerPageRefcount(pNew->pDbPage)!=1+(i==(iParentIdx-nxDiv)) ){
+ if( sqlite3PagerPageRefcount(pNew->pDbPage)!=1+(i==(iParentIdx-nxDiv))
+ && rc==SQLITE_OK
+ ){
rc = SQLITE_CORRUPT_BKPT;
}
if( rc ) goto balance_cleanup;
@@ -73872,7 +74094,7 @@ static int balance_deeper(MemPage *pRoot, MemPage **ppChild){
** Return SQLITE_CORRUPT if any cursor other than pCur is currently valid
** on the same B-tree as pCur.
**
-** This can if a database is corrupt with two or more SQL tables
+** This can occur if a database is corrupt with two or more SQL tables
** pointing to the same b-tree. If an insert occurs on one SQL table
** and causes a BEFORE TRIGGER to do a secondary insert on the other SQL
** table linked to the same b-tree. If the secondary insert causes a
@@ -74101,7 +74323,7 @@ static int btreeOverwriteCell(BtCursor *pCur, const BtreePayload *pX){
do{
rc = btreeGetPage(pBt, ovflPgno, &pPage, 0);
if( rc ) return rc;
- if( sqlite3PagerPageRefcount(pPage->pDbPage)!=1 ){
+ if( sqlite3PagerPageRefcount(pPage->pDbPage)!=1 || pPage->isInit ){
rc = SQLITE_CORRUPT_BKPT;
}else{
if( iOffset+ovflPageSize<(u32)nTotal ){
@@ -74250,7 +74472,8 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
** to an adjacent cell. Move the cursor so that it is pointing either
** to the cell to be overwritten or an adjacent cell.
*/
- rc = sqlite3BtreeMovetoUnpacked(pCur, 0, pX->nKey, flags!=0, &loc);
+ rc = sqlite3BtreeTableMoveto(pCur, pX->nKey,
+ (flags & BTREE_APPEND)!=0, &loc);
if( rc ) return rc;
}
}else{
@@ -74273,13 +74496,11 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
r.aMem = pX->aMem;
r.nField = pX->nMem;
r.default_rc = 0;
- r.errCode = 0;
- r.r1 = 0;
- r.r2 = 0;
r.eqSeen = 0;
- rc = sqlite3BtreeMovetoUnpacked(pCur, &r, 0, flags!=0, &loc);
+ rc = sqlite3BtreeIndexMoveto(pCur, &r, &loc);
}else{
- rc = btreeMoveto(pCur, pX->pKey, pX->nKey, flags!=0, &loc);
+ rc = btreeMoveto(pCur, pX->pKey, pX->nKey,
+ (flags & BTREE_APPEND)!=0, &loc);
}
if( rc ) return rc;
}
@@ -74342,7 +74563,10 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
idx = pCur->ix;
if( loc==0 ){
CellInfo info;
- assert( idx<pPage->nCell );
+ assert( idx>=0 );
+ if( idx>=pPage->nCell ){
+ return SQLITE_CORRUPT_BKPT;
+ }
rc = sqlite3PagerWrite(pPage->pDbPage);
if( rc ){
goto end_insert;
@@ -74524,7 +74748,7 @@ SQLITE_PRIVATE int sqlite3BtreeTransferRow(BtCursor *pDest, BtCursor *pSrc, i64
}
}while( rc==SQLITE_OK && nOut>0 );
- if( rc==SQLITE_OK && nRem>0 ){
+ if( rc==SQLITE_OK && nRem>0 && ALWAYS(pPgnoOut) ){
Pgno pgnoNew;
MemPage *pNew = 0;
rc = allocateBtreePage(pBt, &pNew, &pgnoNew, 0, 0);
@@ -74597,7 +74821,12 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur, u8 flags){
iCellIdx = pCur->ix;
pPage = pCur->pPage;
pCell = findCell(pPage, iCellIdx);
- if( pPage->nFree<0 && btreeComputeFreeSpace(pPage) ) return SQLITE_CORRUPT;
+ if( pPage->nFree<0 && btreeComputeFreeSpace(pPage) ){
+ return SQLITE_CORRUPT_BKPT;
+ }
+ if( pPage->nCell<=iCellIdx ){
+ return SQLITE_CORRUPT_BKPT;
+ }
/* If the bPreserve flag is set to true, then the cursor position must
** be preserved following this delete operation. If the current delete
@@ -74913,7 +75142,7 @@ static int clearDatabasePage(
BtShared *pBt, /* The BTree that contains the table */
Pgno pgno, /* Page number to clear */
int freePageFlag, /* Deallocate page if true */
- int *pnChange /* Add number of Cells freed to this counter */
+ i64 *pnChange /* Add number of Cells freed to this counter */
){
MemPage *pPage;
int rc;
@@ -74928,11 +75157,12 @@ static int clearDatabasePage(
}
rc = getAndInitPage(pBt, pgno, &pPage, 0, 0);
if( rc ) return rc;
- if( pPage->bBusy ){
+ if( (pBt->openFlags & BTREE_SINGLE)==0
+ && sqlite3PagerPageRefcount(pPage->pDbPage)!=1
+ ){
rc = SQLITE_CORRUPT_BKPT;
goto cleardatabasepage_out;
}
- pPage->bBusy = 1;
hdr = pPage->hdrOffset;
for(i=0; i<pPage->nCell; i++){
pCell = findCell(pPage, i);
@@ -74946,6 +75176,7 @@ static int clearDatabasePage(
if( !pPage->leaf ){
rc = clearDatabasePage(pBt, get4byte(&pPage->aData[hdr+8]), 1, pnChange);
if( rc ) goto cleardatabasepage_out;
+ if( pPage->intKey ) pnChange = 0;
}
if( pnChange ){
testcase( !pPage->intKey );
@@ -74958,7 +75189,6 @@ static int clearDatabasePage(
}
cleardatabasepage_out:
- pPage->bBusy = 0;
releasePage(pPage);
return rc;
}
@@ -74975,7 +75205,7 @@ cleardatabasepage_out:
** If pnChange is not NULL, then the integer value pointed to by pnChange
** is incremented by the number of entries in the table.
*/
-SQLITE_PRIVATE int sqlite3BtreeClearTable(Btree *p, int iTable, int *pnChange){
+SQLITE_PRIVATE int sqlite3BtreeClearTable(Btree *p, int iTable, i64 *pnChange){
int rc;
BtShared *pBt = p->pBt;
sqlite3BtreeEnter(p);
@@ -75037,10 +75267,10 @@ static int btreeDropTable(Btree *p, Pgno iTable, int *piMoved){
return SQLITE_CORRUPT_BKPT;
}
- rc = btreeGetPage(pBt, (Pgno)iTable, &pPage, 0);
- if( rc ) return rc;
rc = sqlite3BtreeClearTable(p, iTable, 0);
- if( rc ){
+ if( rc ) return rc;
+ rc = btreeGetPage(pBt, (Pgno)iTable, &pPage, 0);
+ if( NEVER(rc) ){
releasePage(pPage);
return rc;
}
@@ -77197,6 +77427,7 @@ SQLITE_PRIVATE int sqlite3VdbeChangeEncoding(Mem *pMem, int desiredEnc){
#ifndef SQLITE_OMIT_UTF16
int rc;
#endif
+ assert( pMem!=0 );
assert( !sqlite3VdbeMemIsRowSet(pMem) );
assert( desiredEnc==SQLITE_UTF8 || desiredEnc==SQLITE_UTF16LE
|| desiredEnc==SQLITE_UTF16BE );
@@ -77329,6 +77560,7 @@ static SQLITE_NOINLINE int vdbeMemAddTerminator(Mem *pMem){
** Return SQLITE_OK on success or SQLITE_NOMEM if malloc fails.
*/
SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem *pMem){
+ assert( pMem!=0 );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
assert( !sqlite3VdbeMemIsRowSet(pMem) );
if( (pMem->flags & (MEM_Str|MEM_Blob))!=0 ){
@@ -77353,6 +77585,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem *pMem){
#ifndef SQLITE_OMIT_INCRBLOB
SQLITE_PRIVATE int sqlite3VdbeMemExpandBlob(Mem *pMem){
int nByte;
+ assert( pMem!=0 );
assert( pMem->flags & MEM_Zero );
assert( (pMem->flags&MEM_Blob)!=0 || MemNullNochng(pMem) );
testcase( sqlite3_value_nochange(pMem) );
@@ -77368,6 +77601,8 @@ SQLITE_PRIVATE int sqlite3VdbeMemExpandBlob(Mem *pMem){
if( sqlite3VdbeMemGrow(pMem, nByte, 1) ){
return SQLITE_NOMEM_BKPT;
}
+ assert( pMem->z!=0 );
+ assert( sqlite3DbMallocSize(pMem->db,pMem->z) >= nByte );
memset(&pMem->z[pMem->n], 0, pMem->u.nZero);
pMem->n += pMem->u.nZero;
@@ -77380,6 +77615,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemExpandBlob(Mem *pMem){
** Make sure the given Mem is \u0000 terminated.
*/
SQLITE_PRIVATE int sqlite3VdbeMemNulTerminate(Mem *pMem){
+ assert( pMem!=0 );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
testcase( (pMem->flags & (MEM_Term|MEM_Str))==(MEM_Term|MEM_Str) );
testcase( (pMem->flags & (MEM_Term|MEM_Str))==0 );
@@ -77407,6 +77643,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemNulTerminate(Mem *pMem){
SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem *pMem, u8 enc, u8 bForce){
const int nByte = 32;
+ assert( pMem!=0 );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
assert( !(pMem->flags&MEM_Zero) );
assert( !(pMem->flags&(MEM_Str|MEM_Blob)) );
@@ -77442,6 +77679,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemFinalize(Mem *pMem, FuncDef *pFunc){
sqlite3_context ctx;
Mem t;
assert( pFunc!=0 );
+ assert( pMem!=0 );
assert( pFunc->xFinalize!=0 );
assert( (pMem->flags & MEM_Null)!=0 || pFunc==pMem->u.pDef );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
@@ -77592,6 +77830,7 @@ static SQLITE_NOINLINE i64 memIntValue(Mem *pMem){
}
SQLITE_PRIVATE i64 sqlite3VdbeIntValue(Mem *pMem){
int flags;
+ assert( pMem!=0 );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
assert( EIGHT_BYTE_ALIGNMENT(pMem) );
flags = pMem->flags;
@@ -77620,6 +77859,7 @@ static SQLITE_NOINLINE double memRealValue(Mem *pMem){
return val;
}
SQLITE_PRIVATE double sqlite3VdbeRealValue(Mem *pMem){
+ assert( pMem!=0 );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
assert( EIGHT_BYTE_ALIGNMENT(pMem) );
if( pMem->flags & MEM_Real ){
@@ -77652,6 +77892,7 @@ SQLITE_PRIVATE int sqlite3VdbeBooleanValue(Mem *pMem, int ifNull){
*/
SQLITE_PRIVATE void sqlite3VdbeIntegerAffinity(Mem *pMem){
i64 ix;
+ assert( pMem!=0 );
assert( pMem->flags & MEM_Real );
assert( !sqlite3VdbeMemIsRowSet(pMem) );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
@@ -77679,6 +77920,7 @@ SQLITE_PRIVATE void sqlite3VdbeIntegerAffinity(Mem *pMem){
** Convert pMem to type integer. Invalidate any prior representations.
*/
SQLITE_PRIVATE int sqlite3VdbeMemIntegerify(Mem *pMem){
+ assert( pMem!=0 );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
assert( !sqlite3VdbeMemIsRowSet(pMem) );
assert( EIGHT_BYTE_ALIGNMENT(pMem) );
@@ -77693,6 +77935,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemIntegerify(Mem *pMem){
** Invalidate any prior representations.
*/
SQLITE_PRIVATE int sqlite3VdbeMemRealify(Mem *pMem){
+ assert( pMem!=0 );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
assert( EIGHT_BYTE_ALIGNMENT(pMem) );
@@ -77726,6 +77969,7 @@ SQLITE_PRIVATE int sqlite3RealSameAsInt(double r1, sqlite3_int64 i){
** as much of the string as we can and ignore the rest.
*/
SQLITE_PRIVATE int sqlite3VdbeMemNumerify(Mem *pMem){
+ assert( pMem!=0 );
testcase( pMem->flags & MEM_Int );
testcase( pMem->flags & MEM_Real );
testcase( pMem->flags & MEM_IntReal );
@@ -77835,6 +78079,7 @@ SQLITE_PRIVATE void sqlite3ValueSetNull(sqlite3_value *p){
** Delete any previous value and set the value to be a BLOB of length
** n containing all zeros.
*/
+#ifndef SQLITE_OMIT_INCRBLOB
SQLITE_PRIVATE void sqlite3VdbeMemSetZeroBlob(Mem *pMem, int n){
sqlite3VdbeMemRelease(pMem);
pMem->flags = MEM_Blob|MEM_Zero;
@@ -77844,6 +78089,21 @@ SQLITE_PRIVATE void sqlite3VdbeMemSetZeroBlob(Mem *pMem, int n){
pMem->enc = SQLITE_UTF8;
pMem->z = 0;
}
+#else
+SQLITE_PRIVATE int sqlite3VdbeMemSetZeroBlob(Mem *pMem, int n){
+ int nByte = n>0?n:1;
+ if( sqlite3VdbeMemGrow(pMem, nByte, 0) ){
+ return SQLITE_NOMEM_BKPT;
+ }
+ assert( pMem->z!=0 );
+ assert( sqlite3DbMallocSize(pMem->db, pMem->z)>=nByte );
+ memset(pMem->z, 0, nByte);
+ pMem->n = n>0?n:0;
+ pMem->flags = MEM_Blob;
+ pMem->enc = SQLITE_UTF8;
+ return SQLITE_OK;
+}
+#endif
/*
** The pMem is known to contain content that needs to be destroyed prior
@@ -78077,6 +78337,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemSetStr(
int iLimit; /* Maximum allowed string or blob size */
u16 flags = 0; /* New value for pMem->flags */
+ assert( pMem!=0 );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
assert( !sqlite3VdbeMemIsRowSet(pMem) );
@@ -78385,7 +78646,7 @@ static sqlite3_value *valueNew(sqlite3 *db, struct ValueNewStat4Ctx *p){
#ifdef SQLITE_ENABLE_STAT4
static int valueFromFunction(
sqlite3 *db, /* The database connection */
- Expr *p, /* The expression to evaluate */
+ const Expr *p, /* The expression to evaluate */
u8 enc, /* Encoding to use */
u8 aff, /* Affinity to use */
sqlite3_value **ppVal, /* Write the new value here */
@@ -78402,8 +78663,10 @@ static int valueFromFunction(
assert( pCtx!=0 );
assert( (p->flags & EP_TokenOnly)==0 );
+ assert( ExprUseXList(p) );
pList = p->x.pList;
if( pList ) nVal = pList->nExpr;
+ assert( !ExprHasProperty(p, EP_IntValue) );
pFunc = sqlite3FindFunction(db, p->u.zToken, nVal, enc, 0);
assert( pFunc );
if( (pFunc->funcFlags & (SQLITE_FUNC_CONSTANT|SQLITE_FUNC_SLOCHNG))==0
@@ -78479,7 +78742,7 @@ static int valueFromFunction(
*/
static int valueFromExpr(
sqlite3 *db, /* The database connection */
- Expr *pExpr, /* The expression to evaluate */
+ const Expr *pExpr, /* The expression to evaluate */
u8 enc, /* Encoding to use */
u8 affinity, /* Affinity to use */
sqlite3_value **ppVal, /* Write the new value here */
@@ -78507,7 +78770,9 @@ static int valueFromExpr(
assert( (pExpr->flags & EP_TokenOnly)==0 || pCtx==0 );
if( op==TK_CAST ){
- u8 aff = sqlite3AffinityType(pExpr->u.zToken,0);
+ u8 aff;
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
+ aff = sqlite3AffinityType(pExpr->u.zToken,0);
rc = valueFromExpr(db, pExpr->pLeft, enc, aff, ppVal, pCtx);
testcase( rc!=SQLITE_OK );
if( *ppVal ){
@@ -78580,6 +78845,7 @@ static int valueFromExpr(
#ifndef SQLITE_OMIT_BLOB_LITERAL
else if( op==TK_BLOB ){
int nVal;
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
assert( pExpr->u.zToken[0]=='x' || pExpr->u.zToken[0]=='X' );
assert( pExpr->u.zToken[1]=='\'' );
pVal = valueNew(db, pCtx);
@@ -78597,6 +78863,7 @@ static int valueFromExpr(
}
#endif
else if( op==TK_TRUEFALSE ){
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
pVal = valueNew(db, pCtx);
if( pVal ){
pVal->flags = MEM_Int;
@@ -78634,7 +78901,7 @@ no_mem:
*/
SQLITE_PRIVATE int sqlite3ValueFromExpr(
sqlite3 *db, /* The database connection */
- Expr *pExpr, /* The expression to evaluate */
+ const Expr *pExpr, /* The expression to evaluate */
u8 enc, /* Encoding to use */
u8 affinity, /* Affinity to use */
sqlite3_value **ppVal /* Write the new value here */
@@ -79150,8 +79417,10 @@ SQLITE_PRIVATE int sqlite3VdbeAddOp3(Vdbe *p, int op, int p1, int p2, int p3){
if( p->nOpAlloc<=i ){
return growOp3(p, op, p1, p2, p3);
}
+ assert( p->aOp!=0 );
p->nOp++;
pOp = &p->aOp[i];
+ assert( pOp!=0 );
pOp->opcode = (u8)op;
pOp->p5 = 0;
pOp->p1 = p1;
@@ -80394,7 +80663,7 @@ SQLITE_PRIVATE char *sqlite3VdbeDisplayComment(
if( zOpName[nOpName+1] ){
int seenCom = 0;
char c;
- zSynopsis = zOpName += nOpName + 1;
+ zSynopsis = zOpName + nOpName + 1;
if( strncmp(zSynopsis,"IF ",3)==0 ){
sqlite3_snprintf(sizeof(zAlt), zAlt, "if %s goto P2", zSynopsis+3);
zSynopsis = zAlt;
@@ -80467,6 +80736,7 @@ static void displayP4Expr(StrAccum *p, Expr *pExpr){
const char *zOp = 0;
switch( pExpr->op ){
case TK_STRING:
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
sqlite3_str_appendf(p, "%Q", pExpr->u.zToken);
break;
case TK_INTEGER:
@@ -80569,7 +80839,7 @@ SQLITE_PRIVATE char *sqlite3VdbeDisplayP4(sqlite3 *db, Op *pOp){
case P4_COLLSEQ: {
static const char *const encnames[] = {"?", "8", "16LE", "16BE"};
CollSeq *pColl = pOp->p4.pColl;
- assert( pColl->enc>=0 && pColl->enc<4 );
+ assert( pColl->enc<4 );
sqlite3_str_appendf(&x, "%.18s-%s", pColl->zName,
encnames[pColl->enc]);
break;
@@ -80813,8 +81083,8 @@ static void releaseMemArray(Mem *p, int N){
*/
testcase( p->flags & MEM_Agg );
testcase( p->flags & MEM_Dyn );
- testcase( p->xDel==sqlite3VdbeFrameMemDel );
if( p->flags&(MEM_Agg|MEM_Dyn) ){
+ testcase( (p->flags & MEM_Dyn)!=0 && p->xDel==sqlite3VdbeFrameMemDel );
sqlite3VdbeMemRelease(p);
}else if( p->szMalloc ){
sqlite3DbFreeNN(db, p->zMalloc);
@@ -81914,9 +82184,9 @@ SQLITE_PRIVATE int sqlite3VdbeCheckFk(Vdbe *p, int deferred){
** has made changes and is in autocommit mode, then commit those
** changes. If a rollback is needed, then do the rollback.
**
-** This routine is the only way to move the state of a VM from
-** SQLITE_MAGIC_RUN to SQLITE_MAGIC_HALT. It is harmless to
-** call this on a VM that is in the SQLITE_MAGIC_HALT state.
+** This routine is the only way to move the sqlite3eOpenState of a VM from
+** SQLITE_STATE_RUN to SQLITE_STATE_HALT. It is harmless to
+** call this on a VM that is in the SQLITE_STATE_HALT state.
**
** Return an error code. If the commit could not complete because of
** lock contention, return SQLITE_BUSY. If SQLITE_BUSY is returned, it
@@ -81962,9 +82232,15 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
sqlite3VdbeEnter(p);
/* Check for one of the special errors */
- mrc = p->rc & 0xff;
- isSpecialError = mrc==SQLITE_NOMEM || mrc==SQLITE_IOERR
- || mrc==SQLITE_INTERRUPT || mrc==SQLITE_FULL;
+ if( p->rc ){
+ mrc = p->rc & 0xff;
+ isSpecialError = mrc==SQLITE_NOMEM
+ || mrc==SQLITE_IOERR
+ || mrc==SQLITE_INTERRUPT
+ || mrc==SQLITE_FULL;
+ }else{
+ mrc = isSpecialError = 0;
+ }
if( isSpecialError ){
/* If the query was read-only and the error code is SQLITE_INTERRUPT,
** no rollback is necessary. Otherwise, at least a savepoint
@@ -82016,6 +82292,9 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
return SQLITE_ERROR;
}
rc = SQLITE_CONSTRAINT_FOREIGNKEY;
+ }else if( db->flags & SQLITE_CorruptRdOnly ){
+ rc = SQLITE_CORRUPT;
+ db->flags &= ~SQLITE_CorruptRdOnly;
}else{
/* The auto-commit flag is true, the vdbe program was successful
** or hit an 'OR FAIL' constraint and there are no deferred foreign
@@ -82410,7 +82689,7 @@ SQLITE_PRIVATE int SQLITE_NOINLINE sqlite3VdbeFinishMoveto(VdbeCursor *p){
assert( p->deferredMoveto );
assert( p->isTable );
assert( p->eCurType==CURTYPE_BTREE );
- rc = sqlite3BtreeMovetoUnpacked(p->uc.pCursor, 0, p->movetoTarget, 0, &res);
+ rc = sqlite3BtreeTableMoveto(p->uc.pCursor, p->movetoTarget, 0, &res);
if( rc ) return rc;
if( res!=0 ) return SQLITE_CORRUPT_BKPT;
#ifdef SQLITE_TEST
@@ -83194,7 +83473,7 @@ SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3BlobCompare(const Mem *pB1, const Mem
** number. Return negative, zero, or positive if the first (i64) is less than,
** equal to, or greater than the second (double).
*/
-static int sqlite3IntFloatCompare(i64 i, double r){
+SQLITE_PRIVATE int sqlite3IntFloatCompare(i64 i, double r){
if( sizeof(LONGDOUBLE_TYPE)>8 ){
LONGDOUBLE_TYPE x = (LONGDOUBLE_TYPE)i;
testcase( x<r );
@@ -83831,7 +84110,7 @@ SQLITE_PRIVATE int sqlite3VdbeIdxRowid(sqlite3 *db, BtCursor *pCur, i64 *rowid){
/* The index entry must begin with a header size */
getVarint32NR((u8*)m.z, szHdr);
testcase( szHdr==3 );
- testcase( szHdr==m.n );
+ testcase( szHdr==(u32)m.n );
testcase( szHdr>0x7fffffff );
assert( m.n>=0 );
if( unlikely(szHdr<3 || szHdr>(unsigned)m.n) ){
@@ -83918,7 +84197,7 @@ SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(
** This routine sets the value to be returned by subsequent calls to
** sqlite3_changes() on the database handle 'db'.
*/
-SQLITE_PRIVATE void sqlite3VdbeSetChanges(sqlite3 *db, int nChange){
+SQLITE_PRIVATE void sqlite3VdbeSetChanges(sqlite3 *db, i64 nChange){
assert( sqlite3_mutex_held(db->mutex) );
db->nChange = nChange;
db->nTotalChange += nChange;
@@ -84120,6 +84399,8 @@ SQLITE_PRIVATE void sqlite3VdbePreUpdateHook(
}
}
+ assert( pCsr!=0 );
+ assert( pCsr->eCurType==CURTYPE_BTREE );
assert( pCsr->nField==pTab->nCol
|| (pCsr->nField==pTab->nCol+1 && op==SQLITE_DELETE && iReg==-1)
);
@@ -84519,8 +84800,8 @@ SQLITE_API void sqlite3_value_free(sqlite3_value *pOld){
** the function result.
**
** The setStrOrError() function calls sqlite3VdbeMemSetStr() to store the
-** result as a string or blob but if the string or blob is too large, it
-** then sets the error code to SQLITE_TOOBIG
+** result as a string or blob. Appropriate errors are set if the string/blob
+** is too big or if an OOM occurs.
**
** The invokeValueDestructor(P,X) routine invokes destructor function X()
** on value P is not going to be used and need to be destroyed.
@@ -84532,8 +84813,16 @@ static void setResultStrOrError(
u8 enc, /* Encoding of z. 0 for BLOBs */
void (*xDel)(void*) /* Destructor function */
){
- if( sqlite3VdbeMemSetStr(pCtx->pOut, z, n, enc, xDel)==SQLITE_TOOBIG ){
- sqlite3_result_error_toobig(pCtx);
+ int rc = sqlite3VdbeMemSetStr(pCtx->pOut, z, n, enc, xDel);
+ if( rc ){
+ if( rc==SQLITE_TOOBIG ){
+ sqlite3_result_error_toobig(pCtx);
+ }else{
+ /* The only errors possible from sqlite3VdbeMemSetStr are
+ ** SQLITE_TOOBIG and SQLITE_NOMEM */
+ assert( rc==SQLITE_NOMEM );
+ sqlite3_result_error_nomem(pCtx);
+ }
}
}
static int invokeValueDestructor(
@@ -84690,8 +84979,12 @@ SQLITE_API int sqlite3_result_zeroblob64(sqlite3_context *pCtx, u64 n){
if( n>(u64)pOut->db->aLimit[SQLITE_LIMIT_LENGTH] ){
return SQLITE_TOOBIG;
}
+#ifndef SQLITE_OMIT_INCRBLOB
sqlite3VdbeMemSetZeroBlob(pCtx->pOut, (int)n);
return SQLITE_OK;
+#else
+ return sqlite3VdbeMemSetZeroBlob(pCtx->pOut, (int)n);
+#endif
}
SQLITE_API void sqlite3_result_error_code(sqlite3_context *pCtx, int errCode){
pCtx->isError = errCode ? errCode : -1;
@@ -85703,7 +85996,11 @@ SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i, int n){
Vdbe *p = (Vdbe *)pStmt;
rc = vdbeUnbind(p, i);
if( rc==SQLITE_OK ){
+#ifndef SQLITE_OMIT_INCRBLOB
sqlite3VdbeMemSetZeroBlob(&p->aVar[i-1], n);
+#else
+ rc = sqlite3VdbeMemSetZeroBlob(&p->aVar[i-1], n);
+#endif
sqlite3_mutex_leave(p->db->mutex);
}
return rc;
@@ -85991,6 +86288,7 @@ SQLITE_API int sqlite3_preupdate_old(sqlite3 *db, int iIdx, sqlite3_value **ppVa
u32 nRec;
u8 *aRec;
+ assert( p->pCsr->eCurType==CURTYPE_BTREE );
nRec = sqlite3BtreePayloadSize(p->pCsr->uc.pCursor);
aRec = sqlite3DbMallocRaw(db, nRec);
if( !aRec ) goto preupdate_old_out;
@@ -86298,11 +86596,9 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
#ifndef SQLITE_OMIT_UTF16
Mem utf8; /* Used to convert UTF16 into UTF8 for display */
#endif
- char zBase[100]; /* Initial working space */
db = p->db;
- sqlite3StrAccumInit(&out, 0, zBase, sizeof(zBase),
- db->aLimit[SQLITE_LIMIT_LENGTH]);
+ sqlite3StrAccumInit(&out, 0, 0, 0, db->aLimit[SQLITE_LIMIT_LENGTH]);
if( db->nVdbeExec>1 ){
while( *zRawSql ){
const char *zStart = zRawSql;
@@ -87035,96 +87331,7 @@ SQLITE_PRIVATE void sqlite3VdbeRegisterDump(Vdbe *v){
** hwtime.h contains inline assembler code for implementing
** high-performance timing routines.
*/
-/************** Include hwtime.h in the middle of vdbe.c *********************/
-/************** Begin file hwtime.h ******************************************/
-/*
-** 2008 May 27
-**
-** The author disclaims copyright to this source code. In place of
-** a legal notice, here is a blessing:
-**
-** May you do good and not evil.
-** May you find forgiveness for yourself and forgive others.
-** May you share freely, never taking more than you give.
-**
-******************************************************************************
-**
-** This file contains inline asm code for retrieving "high-performance"
-** counters for x86 and x86_64 class CPUs.
-*/
-#ifndef SQLITE_HWTIME_H
-#define SQLITE_HWTIME_H
-
-/*
-** The following routine only works on pentium-class (or newer) processors.
-** It uses the RDTSC opcode to read the cycle count value out of the
-** processor and returns that value. This can be used for high-res
-** profiling.
-*/
-#if !defined(__STRICT_ANSI__) && \
- (defined(__GNUC__) || defined(_MSC_VER)) && \
- (defined(i386) || defined(__i386__) || defined(_M_IX86))
-
- #if defined(__GNUC__)
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned int lo, hi;
- __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
- return (sqlite_uint64)hi << 32 | lo;
- }
-
- #elif defined(_MSC_VER)
-
- __declspec(naked) __inline sqlite_uint64 __cdecl sqlite3Hwtime(void){
- __asm {
- rdtsc
- ret ; return value at EDX:EAX
- }
- }
-
- #endif
-
-#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__x86_64__))
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned long val;
- __asm__ __volatile__ ("rdtsc" : "=A" (val));
- return val;
- }
-
-#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__ppc__))
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned long long retval;
- unsigned long junk;
- __asm__ __volatile__ ("\n\
- 1: mftbu %1\n\
- mftb %L0\n\
- mftbu %0\n\
- cmpw %0,%1\n\
- bne 1b"
- : "=r" (retval), "=r" (junk));
- return retval;
- }
-
-#else
-
- /*
- ** asm() is needed for hardware timing support. Without asm(),
- ** disable the sqlite3Hwtime() routine.
- **
- ** sqlite3Hwtime() is only used for some obscure debugging
- ** and analysis configurations, not in any deliverable, so this
- ** should not be a great loss.
- */
-SQLITE_PRIVATE sqlite_uint64 sqlite3Hwtime(void){ return ((sqlite_uint64)0); }
-
-#endif
-
-#endif /* !defined(SQLITE_HWTIME_H) */
-
-/************** End of hwtime.h **********************************************/
-/************** Continuing where we left off in vdbe.c ***********************/
+/* #include "hwtime.h" */
#endif
@@ -87171,6 +87378,19 @@ static Mem *out2Prerelease(Vdbe *p, VdbeOp *pOp){
}
}
+/*
+** Return the symbolic name for the data type of a pMem
+*/
+static const char *vdbeMemTypeName(Mem *pMem){
+ static const char *azTypes[] = {
+ /* SQLITE_INTEGER */ "INT",
+ /* SQLITE_FLOAT */ "REAL",
+ /* SQLITE_TEXT */ "TEXT",
+ /* SQLITE_BLOB */ "BLOB",
+ /* SQLITE_NULL */ "NULL"
+ };
+ return azTypes[sqlite3_value_type(pMem)-1];
+}
/*
** Execute as much of a VDBE program as we can.
@@ -89002,6 +89222,22 @@ case OP_IsNull: { /* same as TK_ISNULL, jump, in1 */
break;
}
+/* Opcode: IsNullOrType P1 P2 P3 * *
+** Synopsis: if typeof(r[P1]) IN (P3,5) goto P2
+**
+** Jump to P2 if the value in register P1 is NULL or has a datatype P3.
+** P3 is an integer which should be one of SQLITE_INTEGER, SQLITE_FLOAT,
+** SQLITE_BLOB, SQLITE_NULL, or SQLITE_TEXT.
+*/
+case OP_IsNullOrType: { /* jump, in1 */
+ int doTheJump;
+ pIn1 = &aMem[pOp->p1];
+ doTheJump = (pIn1->flags & MEM_Null)!=0 || sqlite3_value_type(pIn1)==pOp->p3;
+ VdbeBranchTaken( doTheJump, 2);
+ if( doTheJump ) goto jump_to_p2;
+ break;
+}
+
/* Opcode: ZeroOrNull P1 P2 P3 * *
** Synopsis: r[P2] = 0 OR NULL
**
@@ -89370,6 +89606,108 @@ op_column_corrupt:
}
}
+/* Opcode: TypeCheck P1 P2 P3 P4 *
+** Synopsis: typecheck(r[P1@P2])
+**
+** Apply affinities to the range of P2 registers beginning with P1.
+** Take the affinities from the Table object in P4. If any value
+** cannot be coerced into the correct type, then raise an error.
+**
+** This opcode is similar to OP_Affinity except that this opcode
+** forces the register type to the Table column type. This is used
+** to implement "strict affinity".
+**
+** GENERATED ALWAYS AS ... STATIC columns are only checked if P3
+** is zero. When P3 is non-zero, no type checking occurs for
+** static generated columns. Virtual columns are computed at query time
+** and so they are never checked.
+**
+** Preconditions:
+**
+** <ul>
+** <li> P2 should be the number of non-virtual columns in the
+** table of P4.
+** <li> Table P4 should be a STRICT table.
+** </ul>
+**
+** If any precondition is false, an assertion fault occurs.
+*/
+case OP_TypeCheck: {
+ Table *pTab;
+ Column *aCol;
+ int i;
+
+ assert( pOp->p4type==P4_TABLE );
+ pTab = pOp->p4.pTab;
+ assert( pTab->tabFlags & TF_Strict );
+ assert( pTab->nNVCol==pOp->p2 );
+ aCol = pTab->aCol;
+ pIn1 = &aMem[pOp->p1];
+ for(i=0; i<pTab->nCol; i++){
+ if( aCol[i].colFlags & COLFLAG_GENERATED ){
+ if( aCol[i].colFlags & COLFLAG_VIRTUAL ) continue;
+ if( pOp->p3 ){ pIn1++; continue; }
+ }
+ assert( pIn1 < &aMem[pOp->p1+pOp->p2] );
+ applyAffinity(pIn1, aCol[i].affinity, encoding);
+ if( (pIn1->flags & MEM_Null)==0 ){
+ switch( aCol[i].eCType ){
+ case COLTYPE_BLOB: {
+ if( (pIn1->flags & MEM_Blob)==0 ) goto vdbe_type_error;
+ break;
+ }
+ case COLTYPE_INTEGER:
+ case COLTYPE_INT: {
+ if( (pIn1->flags & MEM_Int)==0 ) goto vdbe_type_error;
+ break;
+ }
+ case COLTYPE_TEXT: {
+ if( (pIn1->flags & MEM_Str)==0 ) goto vdbe_type_error;
+ break;
+ }
+ case COLTYPE_REAL: {
+ if( pIn1->flags & MEM_Int ){
+ /* When applying REAL affinity, if the result is still an MEM_Int
+ ** that will fit in 6 bytes, then change the type to MEM_IntReal
+ ** so that we keep the high-resolution integer value but know that
+ ** the type really wants to be REAL. */
+ testcase( pIn1->u.i==140737488355328LL );
+ testcase( pIn1->u.i==140737488355327LL );
+ testcase( pIn1->u.i==-140737488355328LL );
+ testcase( pIn1->u.i==-140737488355329LL );
+ if( pIn1->u.i<=140737488355327LL && pIn1->u.i>=-140737488355328LL){
+ pIn1->flags |= MEM_IntReal;
+ pIn1->flags &= ~MEM_Int;
+ }else{
+ pIn1->u.r = (double)pIn1->u.i;
+ pIn1->flags |= MEM_Real;
+ pIn1->flags &= ~MEM_Int;
+ }
+ }else if( (pIn1->flags & MEM_Real)==0 ){
+ goto vdbe_type_error;
+ }
+ break;
+ }
+ default: {
+ /* COLTYPE_ANY. Accept anything. */
+ break;
+ }
+ }
+ }
+ REGISTER_TRACE((int)(pIn1-aMem), pIn1);
+ pIn1++;
+ }
+ assert( pIn1 == &aMem[pOp->p1+pOp->p2] );
+ break;
+
+vdbe_type_error:
+ sqlite3VdbeError(p, "cannot store %s value in %s column %s.%s",
+ vdbeMemTypeName(pIn1), sqlite3StdType[aCol[i].eCType-1],
+ pTab->zName, aCol[i].zCnName);
+ rc = SQLITE_CONSTRAINT_DATATYPE;
+ goto abort_due_to_error;
+}
+
/* Opcode: Affinity P1 P2 * P4 *
** Synopsis: affinity(r[P1@P2])
**
@@ -90033,8 +90371,16 @@ case OP_Transaction: {
assert( pOp->p2>=0 && pOp->p2<=2 );
assert( pOp->p1>=0 && pOp->p1<db->nDb );
assert( DbMaskTest(p->btreeMask, pOp->p1) );
- if( pOp->p2 && (db->flags & SQLITE_QueryOnly)!=0 ){
- rc = SQLITE_READONLY;
+ assert( rc==SQLITE_OK );
+ if( pOp->p2 && (db->flags & (SQLITE_QueryOnly|SQLITE_CorruptRdOnly))!=0 ){
+ if( db->flags & SQLITE_QueryOnly ){
+ /* Writes prohibited by the "PRAGMA query_only=TRUE" statement */
+ rc = SQLITE_READONLY;
+ }else{
+ /* Writes prohibited due to a prior SQLITE_CORRUPT in the current
+ ** transaction */
+ rc = SQLITE_CORRUPT;
+ }
goto abort_due_to_error;
}
pBt = db->aDb[pOp->p1].pBt;
@@ -90076,7 +90422,8 @@ case OP_Transaction: {
}
}
assert( pOp->p5==0 || pOp->p4type==P4_INT32 );
- if( pOp->p5
+ if( rc==SQLITE_OK
+ && pOp->p5
&& (iMeta!=pOp->p3
|| db->aDb[pOp->p1].pSchema->iGeneration!=pOp->p4.i)
){
@@ -90173,6 +90520,7 @@ case OP_SetCookie: {
/* When the schema cookie changes, record the new cookie internally */
pDb->pSchema->schema_cookie = pOp->p3 - pOp->p5;
db->mDbFlags |= DBFLAG_SchemaChange;
+ sqlite3FkClearTriggerCache(db, pOp->p1);
}else if( pOp->p2==BTREE_FILE_FORMAT ){
/* Record changes in the file format */
pDb->pSchema->file_format = pOp->p3;
@@ -90286,6 +90634,8 @@ case OP_ReopenIdx: {
pCur = p->apCsr[pOp->p1];
if( pCur && pCur->pgnoRoot==(u32)pOp->p2 ){
assert( pCur->iDb==pOp->p3 ); /* Guaranteed by the code generator */
+ assert( pCur->eCurType==CURTYPE_BTREE );
+ sqlite3BtreeClearCursor(pCur->uc.pCursor);
goto open_cursor_set_hints;
}
/* If the cursor is not currently open or is open on a different
@@ -90468,7 +90818,7 @@ case OP_OpenEphemeral: {
aMem[pOp->p3].z = "";
}
pCx = p->apCsr[pOp->p1];
- if( pCx && !pCx->hasBeenDuped ){
+ if( pCx && !pCx->hasBeenDuped && ALWAYS(pOp->p2<=pCx->nField) ){
/* If the ephermeral table is already open and has no duplicates from
** OP_OpenDup, then erase all existing content so that the table is
** empty again, rather than creating a new table. */
@@ -90773,6 +91123,7 @@ case OP_SeekGT: { /* jump, in3, group */
/* If the P3 value could not be converted into an integer without
** loss of information, then special processing is required... */
if( (newType & (MEM_Int|MEM_IntReal))==0 ){
+ int c;
if( (newType & MEM_Real)==0 ){
if( (newType & MEM_Null) || oc>=OP_SeekGE ){
VdbeBranchTaken(1,2);
@@ -90782,7 +91133,8 @@ case OP_SeekGT: { /* jump, in3, group */
if( rc!=SQLITE_OK ) goto abort_due_to_error;
goto seek_not_found;
}
- }else
+ }
+ c = sqlite3IntFloatCompare(iKey, pIn3->u.r);
/* If the approximation iKey is larger than the actual real search
** term, substitute >= for > and < for <=. e.g. if the search term
@@ -90791,7 +91143,7 @@ case OP_SeekGT: { /* jump, in3, group */
** (x > 4.9) -> (x >= 5)
** (x <= 4.9) -> (x < 5)
*/
- if( pIn3->u.r<(double)iKey ){
+ if( c>0 ){
assert( OP_SeekGE==(OP_SeekGT-1) );
assert( OP_SeekLT==(OP_SeekLE-1) );
assert( (OP_SeekLE & 0x0001)==(OP_SeekGT & 0x0001) );
@@ -90800,14 +91152,14 @@ case OP_SeekGT: { /* jump, in3, group */
/* If the approximation iKey is smaller than the actual real search
** term, substitute <= for < and > for >=. */
- else if( pIn3->u.r>(double)iKey ){
+ else if( c<0 ){
assert( OP_SeekLE==(OP_SeekLT+1) );
assert( OP_SeekGT==(OP_SeekGE+1) );
assert( (OP_SeekLT & 0x0001)==(OP_SeekGE & 0x0001) );
if( (oc & 0x0001)==(OP_SeekLT & 0x0001) ) oc++;
}
}
- rc = sqlite3BtreeMovetoUnpacked(pC->uc.pCursor, 0, (u64)iKey, 0, &res);
+ rc = sqlite3BtreeTableMoveto(pC->uc.pCursor, (u64)iKey, 0, &res);
pC->movetoTarget = iKey; /* Used by OP_Delete */
if( rc!=SQLITE_OK ){
goto abort_due_to_error;
@@ -90854,7 +91206,7 @@ case OP_SeekGT: { /* jump, in3, group */
{ int i; for(i=0; i<r.nField; i++) assert( memIsValid(&r.aMem[i]) ); }
#endif
r.eqSeen = 0;
- rc = sqlite3BtreeMovetoUnpacked(pC->uc.pCursor, &r, 0, 0, &res);
+ rc = sqlite3BtreeIndexMoveto(pC->uc.pCursor, &r, &res);
if( rc!=SQLITE_OK ){
goto abort_due_to_error;
}
@@ -91273,7 +91625,7 @@ case OP_Found: { /* jump, in3 */
}
}
}
- rc = sqlite3BtreeMovetoUnpacked(pC->uc.pCursor, pIdxKey, 0, 0, &res);
+ rc = sqlite3BtreeIndexMoveto(pC->uc.pCursor, pIdxKey, &res);
if( pFree ) sqlite3DbFreeNN(db, pFree);
if( rc!=SQLITE_OK ){
goto abort_due_to_error;
@@ -91382,7 +91734,7 @@ notExistsWithKey:
pCrsr = pC->uc.pCursor;
assert( pCrsr!=0 );
res = 0;
- rc = sqlite3BtreeMovetoUnpacked(pCrsr, 0, iKey, 0, &res);
+ rc = sqlite3BtreeTableMoveto(pCrsr, iKey, 0, &res);
assert( rc==SQLITE_OK || res==0 );
pC->movetoTarget = iKey; /* Used by OP_Delete */
pC->nullRow = 0;
@@ -91539,7 +91891,7 @@ case OP_NewRowid: { /* out2 */
do{
sqlite3_randomness(sizeof(v), &v);
v &= (MAX_ROWID>>1); v++; /* Ensure that v is greater than zero */
- }while( ((rc = sqlite3BtreeMovetoUnpacked(pC->uc.pCursor, 0, (u64)v,
+ }while( ((rc = sqlite3BtreeTableMoveto(pC->uc.pCursor, (u64)v,
0, &res))==SQLITE_OK)
&& (res==0)
&& (++cnt<100));
@@ -91629,7 +91981,7 @@ case OP_Insert: {
assert( (pOp->p5 & OPFLAG_ISNOOP) || HasRowid(pTab) );
}else{
pTab = 0;
- zDb = 0; /* Not needed. Silence a compiler warning. */
+ zDb = 0;
}
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
@@ -91782,13 +92134,14 @@ case OP_Delete: {
pC->movetoTarget = sqlite3BtreeIntegerKey(pC->uc.pCursor);
}
}else{
- zDb = 0; /* Not needed. Silence a compiler warning. */
- pTab = 0; /* Not needed. Silence a compiler warning. */
+ zDb = 0;
+ pTab = 0;
}
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
/* Invoke the pre-update-hook if required. */
- if( db->xPreUpdateCallback && pOp->p4.pTab ){
+ assert( db->xPreUpdateCallback==0 || pTab==pOp->p4.pTab );
+ if( db->xPreUpdateCallback && pTab ){
assert( !(opflags & OPFLAG_ISUPDATE)
|| HasRowid(pTab)==0
|| (aMem[pOp->p3].flags & MEM_Int)
@@ -91829,7 +92182,7 @@ case OP_Delete: {
/* Invoke the update-hook if required. */
if( opflags & OPFLAG_NCHANGE ){
p->nChange++;
- if( db->xUpdateCallback && HasRowid(pTab) ){
+ if( db->xUpdateCallback && ALWAYS(pTab!=0) && HasRowid(pTab) ){
db->xUpdateCallback(db->pUpdateArg, SQLITE_DELETE, zDb, pTab->zName,
pC->movetoTarget);
assert( pC->iDb>=0 );
@@ -92416,7 +92769,8 @@ case OP_SorterInsert: { /* in2 */
** an UPDATE or DELETE statement and the index entry to be updated
** or deleted is not found. For some uses of IdxDelete
** (example: the EXCEPT operator) it does not matter that no matching
-** entry is found. For those cases, P5 is zero.
+** entry is found. For those cases, P5 is zero. Also, do not raise
+** this (self-correcting and non-critical) error if in writable_schema mode.
*/
case OP_IdxDelete: {
VdbeCursor *pC;
@@ -92437,12 +92791,12 @@ case OP_IdxDelete: {
r.nField = (u16)pOp->p3;
r.default_rc = 0;
r.aMem = &aMem[pOp->p2];
- rc = sqlite3BtreeMovetoUnpacked(pCrsr, &r, 0, 0, &res);
+ rc = sqlite3BtreeIndexMoveto(pCrsr, &r, &res);
if( rc ) goto abort_due_to_error;
if( res==0 ){
rc = sqlite3BtreeDelete(pCrsr, BTREE_AUXDELETE);
if( rc ) goto abort_due_to_error;
- }else if( pOp->p5 ){
+ }else if( pOp->p5 && !sqlite3WritableSchema(db) ){
rc = sqlite3ReportError(SQLITE_CORRUPT_INDEX, __LINE__, "index corruption");
goto abort_due_to_error;
}
@@ -92750,7 +93104,7 @@ case OP_Destroy: { /* out2 */
** See also: Destroy
*/
case OP_Clear: {
- int nChange;
+ i64 nChange;
sqlite3VdbeIncrWriteCounter(p, 0);
nChange = 0;
@@ -92876,7 +93230,7 @@ case OP_ParseSchema: {
}else
#endif
{
- zSchema = DFLT_SCHEMA_TABLE;
+ zSchema = LEGACY_SCHEMA_TABLE;
initData.db = db;
initData.iDb = iDb;
initData.pzErrMsg = &p->zErrMsg;
@@ -94096,6 +94450,7 @@ case OP_VFilter: { /* jump */
pCur = p->apCsr[pOp->p1];
assert( memIsValid(pQuery) );
REGISTER_TRACE(pOp->p3, pQuery);
+ assert( pCur!=0 );
assert( pCur->eCurType==CURTYPE_VTAB );
pVCur = pCur->uc.pVCur;
pVtab = pVCur->pVtab;
@@ -94107,7 +94462,6 @@ case OP_VFilter: { /* jump */
iQuery = (int)pQuery->u.i;
/* Invoke the xFilter method */
- res = 0;
apArg = p->apArg;
for(i = 0; i<nArg; i++){
apArg[i] = &pArgc[i+1];
@@ -94145,6 +94499,7 @@ case OP_VColumn: {
sqlite3_context sContext;
VdbeCursor *pCur = p->apCsr[pOp->p1];
+ assert( pCur!=0 );
assert( pCur->eCurType==CURTYPE_VTAB );
assert( pOp->p3>0 && pOp->p3<=(p->nMem+1 - p->nCursor) );
pDest = &aMem[pOp->p3];
@@ -94197,8 +94552,8 @@ case OP_VNext: { /* jump */
int res;
VdbeCursor *pCur;
- res = 0;
pCur = p->apCsr[pOp->p1];
+ assert( pCur!=0 );
assert( pCur->eCurType==CURTYPE_VTAB );
if( pCur->nullRow ){
break;
@@ -94294,7 +94649,7 @@ case OP_VUpdate: {
const sqlite3_module *pModule;
int nArg;
int i;
- sqlite_int64 rowid;
+ sqlite_int64 rowid = 0;
Mem **apArg;
Mem *pX;
@@ -94739,6 +95094,18 @@ abort_due_to_error:
rc = SQLITE_CORRUPT_BKPT;
}
assert( rc );
+#ifdef SQLITE_DEBUG
+ if( db->flags & SQLITE_VdbeTrace ){
+ const char *zTrace = p->zSql;
+ if( zTrace==0 ){
+ if( aOp[0].opcode==OP_Trace ){
+ zTrace = aOp[0].p4.z;
+ }
+ if( zTrace==0 ) zTrace = "???";
+ }
+ printf("ABORT-due-to-error (rc=%d): %s\n", rc, zTrace);
+ }
+#endif
if( p->zErrMsg==0 && rc!=SQLITE_IOERR_NOMEM ){
sqlite3VdbeError(p, "%s", sqlite3ErrStr(rc));
}
@@ -94749,6 +95116,9 @@ abort_due_to_error:
(int)(pOp - aOp), p->zSql, p->zErrMsg);
sqlite3VdbeHalt(p);
if( rc==SQLITE_IOERR_NOMEM ) sqlite3OomFault(db);
+ if( rc==SQLITE_CORRUPT && db->autoCommit==0 ){
+ db->flags |= SQLITE_CorruptRdOnly;
+ }
rc = SQLITE_ERROR;
if( resetSchemaOnFault>0 ){
sqlite3ResetOneSchema(db, resetSchemaOnFault-1);
@@ -94880,7 +95250,10 @@ static int blobSeekToRow(Incrblob *p, sqlite3_int64 iRow, char **pzErr){
}
if( rc==SQLITE_ROW ){
VdbeCursor *pC = v->apCsr[0];
- u32 type = pC->nHdrParsed>p->iCol ? pC->aType[p->iCol] : 0;
+ u32 type;
+ assert( pC!=0 );
+ assert( pC->eCurType==CURTYPE_BTREE );
+ type = pC->nHdrParsed>p->iCol ? pC->aType[p->iCol] : 0;
testcase( pC->nHdrParsed==p->iCol );
testcase( pC->nHdrParsed==p->iCol+1 );
if( type<12 ){
@@ -94972,7 +95345,7 @@ SQLITE_API int sqlite3_blob_open(
sqlite3ErrorMsg(&sParse, "cannot open table without rowid: %s", zTable);
}
#ifndef SQLITE_OMIT_VIEW
- if( pTab && pTab->pSelect ){
+ if( pTab && IsView(pTab) ){
pTab = 0;
sqlite3ErrorMsg(&sParse, "cannot open view: %s", zTable);
}
@@ -94992,7 +95365,7 @@ SQLITE_API int sqlite3_blob_open(
/* Now search pTab for the exact column. */
for(iCol=0; iCol<pTab->nCol; iCol++) {
- if( sqlite3StrICmp(pTab->aCol[iCol].zName, zColumn)==0 ){
+ if( sqlite3StrICmp(pTab->aCol[iCol].zCnName, zColumn)==0 ){
break;
}
}
@@ -95017,7 +95390,8 @@ SQLITE_API int sqlite3_blob_open(
** key columns must be indexed. The check below will pick up this
** case. */
FKey *pFKey;
- for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){
+ assert( IsOrdinaryTable(pTab) );
+ for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
int j;
for(j=0; j<pFKey->nCol; j++){
if( pFKey->aCol[j].iFrom==iCol ){
@@ -95224,6 +95598,8 @@ static int blobReadWrite(
*/
sqlite3_int64 iKey;
iKey = sqlite3BtreeIntegerKey(p->pCsr);
+ assert( v->apCsr[0]!=0 );
+ assert( v->apCsr[0]->eCurType==CURTYPE_BTREE );
sqlite3VdbePreUpdateHook(
v, v->apCsr[0], SQLITE_DELETE, p->zDb, p->pTab, iKey, -1, p->iCol
);
@@ -96606,7 +96982,7 @@ static void vdbeSorterExtendFile(sqlite3 *db, sqlite3_file *pFd, i64 nByte){
sqlite3OsFileControlHint(pFd, SQLITE_FCNTL_CHUNK_SIZE, &chunksize);
sqlite3OsFileControlHint(pFd, SQLITE_FCNTL_SIZE_HINT, &nByte);
sqlite3OsFetch(pFd, 0, (int)nByte, &p);
- sqlite3OsUnfetch(pFd, 0, p);
+ if( p ) sqlite3OsUnfetch(pFd, 0, p);
}
}
#else
@@ -97324,6 +97700,7 @@ static int vdbeIncrMergerNew(
vdbeMergeEngineFree(pMerger);
rc = SQLITE_NOMEM_BKPT;
}
+ assert( *ppOut!=0 || rc!=SQLITE_OK );
return rc;
}
@@ -98776,7 +99153,7 @@ static int memjrnlTruncate(sqlite3_file *pJfd, sqlite_int64 size){
p->pFirst = 0;
}else{
i64 iOff = p->nChunkSize;
- for(pIter=p->pFirst; ALWAYS(pIter) && iOff<=size; pIter=pIter->pNext){
+ for(pIter=p->pFirst; ALWAYS(pIter) && iOff<size; pIter=pIter->pNext){
iOff += p->nChunkSize;
}
if( ALWAYS(pIter) ){
@@ -99025,7 +99402,7 @@ static SQLITE_NOINLINE int walkExpr(Walker *pWalker, Expr *pExpr){
assert( !ExprHasProperty(pExpr, EP_WinFunc) );
pExpr = pExpr->pRight;
continue;
- }else if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ }else if( ExprUseXSelect(pExpr) ){
assert( !ExprHasProperty(pExpr, EP_WinFunc) );
if( sqlite3WalkSelect(pWalker, pExpr->x.pSelect) ) return WRC_Abort;
}else{
@@ -99297,6 +99674,7 @@ static void resolveAlias(
}else{
incrAggFunctionDepth(pDup, nSubquery);
if( pExpr->op==TK_COLLATE ){
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
pDup = sqlite3ExprAddCollateString(pParse, pDup, pExpr->u.zToken);
}
@@ -99400,6 +99778,7 @@ SQLITE_PRIVATE Bitmask sqlite3ExprColUsed(Expr *pExpr){
Table *pExTab;
n = pExpr->iColumn;
+ assert( ExprUseYTab(pExpr) );
pExTab = pExpr->y.pTab;
assert( pExTab!=0 );
if( (pExTab->tabFlags & TF_HasGenerated)!=0
@@ -99513,7 +99892,7 @@ static int lookupName(
u8 hCol;
pTab = pItem->pTab;
assert( pTab!=0 && pTab->zName!=0 );
- assert( pTab->nCol>0 );
+ assert( pTab->nCol>0 || pParse->nErr );
if( pItem->pSelect && (pItem->pSelect->selFlags & SF_NestedFrom)!=0 ){
int hit = 0;
pEList = pItem->pSelect->pEList;
@@ -99537,16 +99916,16 @@ static int lookupName(
if( sqlite3StrICmp(zTabName, zTab)!=0 ){
continue;
}
+ assert( ExprUseYTab(pExpr) );
if( IN_RENAME_OBJECT && pItem->zAlias ){
sqlite3RenameTokenRemap(pParse, 0, (void*)&pExpr->y.pTab);
}
}
- if( 0==(cntTab++) ){
- pMatch = pItem;
- }
hCol = sqlite3StrIHash(zCol);
for(j=0, pCol=pTab->aCol; j<pTab->nCol; j++, pCol++){
- if( pCol->hName==hCol && sqlite3StrICmp(pCol->zName, zCol)==0 ){
+ if( pCol->hName==hCol
+ && sqlite3StrICmp(pCol->zCnName, zCol)==0
+ ){
/* If there has been exactly one prior match and this match
** is for the right-hand table of a NATURAL JOIN or is in a
** USING clause, then skip this match.
@@ -99562,9 +99941,14 @@ static int lookupName(
break;
}
}
+ if( 0==cnt && VisibleRowid(pTab) ){
+ cntTab++;
+ pMatch = pItem;
+ }
}
if( pMatch ){
pExpr->iTable = pMatch->iCursor;
+ assert( ExprUseYTab(pExpr) );
pExpr->y.pTab = pMatch->pTab;
/* RIGHT JOIN not (yet) supported */
assert( (pMatch->fg.jointype & JT_RIGHT)==0 );
@@ -99619,7 +100003,9 @@ static int lookupName(
pSchema = pTab->pSchema;
cntTab++;
for(iCol=0, pCol=pTab->aCol; iCol<pTab->nCol; iCol++, pCol++){
- if( pCol->hName==hCol && sqlite3StrICmp(pCol->zName, zCol)==0 ){
+ if( pCol->hName==hCol
+ && sqlite3StrICmp(pCol->zCnName, zCol)==0
+ ){
if( iCol==pTab->iPKey ){
iCol = -1;
}
@@ -99636,6 +100022,7 @@ static int lookupName(
#ifndef SQLITE_OMIT_UPSERT
if( pExpr->iTable==EXCLUDED_TABLE_NUMBER ){
testcase( iCol==(-1) );
+ assert( ExprUseYTab(pExpr) );
if( IN_RENAME_OBJECT ){
pExpr->iColumn = iCol;
pExpr->y.pTab = pTab;
@@ -99648,6 +100035,7 @@ static int lookupName(
}else
#endif /* SQLITE_OMIT_UPSERT */
{
+ assert( ExprUseYTab(pExpr) );
pExpr->y.pTab = pTab;
if( pParse->bReturning ){
eNewExprOp = TK_REGISTER;
@@ -99684,7 +100072,7 @@ static int lookupName(
&& pMatch
&& (pNC->ncFlags & (NC_IdxExpr|NC_GenCol))==0
&& sqlite3IsRowid(zCol)
- && VisibleRowid(pMatch->pTab)
+ && ALWAYS(VisibleRowid(pMatch->pTab))
){
cnt = 1;
pExpr->iColumn = -1;
@@ -99722,8 +100110,8 @@ static int lookupName(
){
Expr *pOrig;
assert( pExpr->pLeft==0 && pExpr->pRight==0 );
- assert( pExpr->x.pList==0 );
- assert( pExpr->x.pSelect==0 );
+ assert( ExprUseXList(pExpr)==0 || pExpr->x.pList==0 );
+ assert( ExprUseXSelect(pExpr)==0 || pExpr->x.pSelect==0 );
pOrig = pEList->a[j].pExpr;
if( (pNC->ncFlags&NC_AllowAgg)==0 && ExprHasProperty(pOrig, EP_Agg) ){
sqlite3ErrorMsg(pParse, "misuse of aliased aggregate %s", zAs);
@@ -99795,7 +100183,7 @@ static int lookupName(
sqlite3VdbeAddDblquoteStr(db, pParse->pVdbe, zCol);
#endif
pExpr->op = TK_STRING;
- pExpr->y.pTab = 0;
+ memset(&pExpr->y, 0, sizeof(pExpr->y));
return WRC_Prune;
}
if( sqlite3ExprIdToTrueFalse(pExpr) ){
@@ -99881,7 +100269,9 @@ SQLITE_PRIVATE Expr *sqlite3CreateColumnExpr(sqlite3 *db, SrcList *pSrc, int iSr
Expr *p = sqlite3ExprAlloc(db, TK_COLUMN, 0, 0);
if( p ){
SrcItem *pItem = &pSrc->a[iSrc];
- Table *pTab = p->y.pTab = pItem->pTab;
+ Table *pTab;
+ assert( ExprUseYTab(p) );
+ pTab = p->y.pTab = pItem->pTab;
p->iTable = pItem->iCursor;
if( p->y.pTab->iPKey==iCol ){
p->iColumn = -1;
@@ -99948,6 +100338,7 @@ static void notValidImpl(
static int exprProbability(Expr *p){
double r = -1.0;
if( p->op!=TK_FLOAT ) return -1;
+ assert( !ExprHasProperty(p, EP_IntValue) );
sqlite3AtoF(p->u.zToken, &r, sqlite3Strlen30(p->u.zToken), SQLITE_UTF8);
assert( r>=0.0 );
if( r>1.0 ) return -1;
@@ -99996,6 +100387,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
assert( pSrcList && pSrcList->nSrc>=1 );
pItem = pSrcList->a;
pExpr->op = TK_COLUMN;
+ assert( ExprUseYTab(pExpr) );
pExpr->y.pTab = pItem->pTab;
pExpr->iTable = pItem->iCursor;
pExpr->iColumn--;
@@ -100027,6 +100419,8 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
}
sqlite3WalkExpr(pWalker, pExpr->pLeft);
if( 0==sqlite3ExprCanBeNull(pExpr->pLeft) && !IN_RENAME_OBJECT ){
+ testcase( ExprHasProperty(pExpr, EP_FromJoin) );
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
if( pExpr->op==TK_NOTNULL ){
pExpr->u.zToken = "true";
ExprSetProperty(pExpr, EP_IsTrue);
@@ -100062,6 +100456,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
if( pExpr->op==TK_ID ){
zDb = 0;
zTable = 0;
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
zColumn = pExpr->u.zToken;
}else{
Expr *pLeft = pExpr->pLeft;
@@ -100074,12 +100469,15 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
zDb = 0;
}else{
assert( pRight->op==TK_DOT );
+ assert( !ExprHasProperty(pRight, EP_IntValue) );
zDb = pLeft->u.zToken;
pLeft = pRight->pLeft;
pRight = pRight->pRight;
}
+ assert( ExprUseUToken(pLeft) && ExprUseUToken(pRight) );
zTable = pLeft->u.zToken;
zColumn = pRight->u.zToken;
+ assert( ExprUseYTab(pExpr) );
if( IN_RENAME_OBJECT ){
sqlite3RenameTokenRemap(pParse, (void*)pExpr, (void*)pRight);
sqlite3RenameTokenRemap(pParse, (void*)&pExpr->y.pTab, (void*)pLeft);
@@ -100104,7 +100502,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
#ifndef SQLITE_OMIT_WINDOWFUNC
Window *pWin = (IsWindowFunc(pExpr) ? pExpr->y.pWin : 0);
#endif
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
+ assert( !ExprHasProperty(pExpr, EP_xIsSelect|EP_IntValue) );
zId = pExpr->u.zToken;
nId = sqlite3Strlen30(zId);
pDef = sqlite3FindFunction(pParse->db, zId, n, enc, 0);
@@ -100268,7 +100666,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
#ifndef SQLITE_OMIT_WINDOWFUNC
if( pWin ){
Select *pSel = pNC->pWinSelect;
- assert( pWin==pExpr->y.pWin );
+ assert( pWin==0 || (ExprUseYWin(pExpr) && pWin==pExpr->y.pWin) );
if( IN_RENAME_OBJECT==0 ){
sqlite3WindowUpdate(pParse, pSel ? pSel->pWinDefn : 0, pWin, pDef);
if( pParse->db->mallocFailed ) break;
@@ -100281,7 +100679,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
}else
#endif /* SQLITE_OMIT_WINDOWFUNC */
{
- NameContext *pNC2 = pNC;
+ NameContext *pNC2; /* For looping up thru outer contexts */
pExpr->op = TK_AGG_FUNCTION;
pExpr->op2 = 0;
#ifndef SQLITE_OMIT_WINDOWFUNC
@@ -100289,16 +100687,22 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
sqlite3WalkExpr(pWalker, pExpr->y.pWin->pFilter);
}
#endif
- while( pNC2 && !sqlite3FunctionUsesThisSrc(pExpr, pNC2->pSrcList) ){
+ pNC2 = pNC;
+ while( pNC2
+ && sqlite3ReferencesSrcList(pParse, pExpr, pNC2->pSrcList)==0
+ ){
pExpr->op2++;
pNC2 = pNC2->pNext;
}
assert( pDef!=0 || IN_RENAME_OBJECT );
if( pNC2 && pDef ){
assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg );
+ assert( SQLITE_FUNC_ANYORDER==NC_OrderAgg );
testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 );
- pNC2->ncFlags |= NC_HasAgg | (pDef->funcFlags & SQLITE_FUNC_MINMAX);
-
+ testcase( (pDef->funcFlags & SQLITE_FUNC_ANYORDER)!=0 );
+ pNC2->ncFlags |= NC_HasAgg
+ | ((pDef->funcFlags^SQLITE_FUNC_ANYORDER)
+ & (SQLITE_FUNC_MINMAX|SQLITE_FUNC_ANYORDER));
}
}
pNC->ncFlags |= savedAllowFlags;
@@ -100314,15 +100718,17 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
#endif
case TK_IN: {
testcase( pExpr->op==TK_IN );
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ if( ExprUseXSelect(pExpr) ){
int nRef = pNC->nRef;
testcase( pNC->ncFlags & NC_IsCheck );
testcase( pNC->ncFlags & NC_PartIdx );
testcase( pNC->ncFlags & NC_IdxExpr );
testcase( pNC->ncFlags & NC_GenCol );
- sqlite3ResolveNotValid(pParse, pNC, "subqueries",
- NC_IsCheck|NC_PartIdx|NC_IdxExpr|NC_GenCol, pExpr);
- sqlite3WalkSelect(pWalker, pExpr->x.pSelect);
+ if( pNC->ncFlags & NC_SelfRef ){
+ notValidImpl(pParse, pNC, "subqueries", pExpr);
+ }else{
+ sqlite3WalkSelect(pWalker, pExpr->x.pSelect);
+ }
assert( pNC->nRef>=nRef );
if( nRef!=pNC->nRef ){
ExprSetProperty(pExpr, EP_VarSelect);
@@ -100369,6 +100775,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
assert( pExpr->pLeft!=0 );
nLeft = sqlite3ExprVectorSize(pExpr->pLeft);
if( pExpr->op==TK_BETWEEN ){
+ assert( ExprUseXList(pExpr) );
nRight = sqlite3ExprVectorSize(pExpr->x.pList->a[0].pExpr);
if( nRight==nLeft ){
nRight = sqlite3ExprVectorSize(pExpr->x.pList->a[1].pExpr);
@@ -100417,7 +100824,9 @@ static int resolveAsName(
UNUSED_PARAMETER(pParse);
if( pE->op==TK_ID ){
- char *zCol = pE->u.zToken;
+ const char *zCol;
+ assert( !ExprHasProperty(pE, EP_IntValue) );
+ zCol = pE->u.zToken;
for(i=0; i<pEList->nExpr; i++){
if( pEList->a[i].eEName==ENAME_NAME
&& sqlite3_stricmp(pEList->a[i].zEName, zCol)==0
@@ -100841,7 +101250,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
p->pOrderBy = 0;
}
- /* Recursively resolve names in all subqueries
+ /* Recursively resolve names in all subqueries in the FROM clause
*/
for(i=0; i<p->pSrc->nSrc; i++){
SrcItem *pItem = &p->pSrc->a[i];
@@ -100885,7 +101294,8 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
pGroupBy = p->pGroupBy;
if( pGroupBy || (sNC.ncFlags & NC_HasAgg)!=0 ){
assert( NC_MinMaxAgg==SF_MinMaxAgg );
- p->selFlags |= SF_Aggregate | (sNC.ncFlags&NC_MinMaxAgg);
+ assert( NC_OrderAgg==SF_OrderByReqd );
+ p->selFlags |= SF_Aggregate | (sNC.ncFlags&(NC_MinMaxAgg|NC_OrderAgg));
}else{
sNC.ncFlags &= ~NC_AllowAgg;
}
@@ -101068,8 +101478,8 @@ SQLITE_PRIVATE int sqlite3ResolveExprNames(
Walker w;
if( pExpr==0 ) return SQLITE_OK;
- savedHasAgg = pNC->ncFlags & (NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
- pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
+ savedHasAgg = pNC->ncFlags & (NC_HasAgg|NC_MinMaxAgg|NC_HasWin|NC_OrderAgg);
+ pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg|NC_HasWin|NC_OrderAgg);
w.pParse = pNC->pParse;
w.xExprCallback = resolveExprStep;
w.xSelectCallback = (pNC->ncFlags & NC_NoSelect) ? 0 : resolveSelectStep;
@@ -101112,8 +101522,8 @@ SQLITE_PRIVATE int sqlite3ResolveExprListNames(
w.xSelectCallback = resolveSelectStep;
w.xSelectCallback2 = 0;
w.u.pNC = pNC;
- savedHasAgg = pNC->ncFlags & (NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
- pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
+ savedHasAgg = pNC->ncFlags & (NC_HasAgg|NC_MinMaxAgg|NC_HasWin|NC_OrderAgg);
+ pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg|NC_HasWin|NC_OrderAgg);
for(i=0; i<pList->nExpr; i++){
Expr *pExpr = pList->a[i].pExpr;
if( pExpr==0 ) continue;
@@ -101131,10 +101541,11 @@ SQLITE_PRIVATE int sqlite3ResolveExprListNames(
assert( EP_Win==NC_HasWin );
testcase( pNC->ncFlags & NC_HasAgg );
testcase( pNC->ncFlags & NC_HasWin );
- if( pNC->ncFlags & (NC_HasAgg|NC_MinMaxAgg|NC_HasWin) ){
+ if( pNC->ncFlags & (NC_HasAgg|NC_MinMaxAgg|NC_HasWin|NC_OrderAgg) ){
ExprSetProperty(pExpr, pNC->ncFlags & (NC_HasAgg|NC_HasWin) );
- savedHasAgg |= pNC->ncFlags & (NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
- pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg|NC_HasWin);
+ savedHasAgg |= pNC->ncFlags &
+ (NC_HasAgg|NC_MinMaxAgg|NC_HasWin|NC_OrderAgg);
+ pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg|NC_HasWin|NC_OrderAgg);
}
if( w.pParse->nErr>0 ) return WRC_Abort;
}
@@ -101248,9 +101659,9 @@ static int exprCodeVector(Parse *pParse, Expr *p, int *piToFree);
/*
** Return the affinity character for a single column of a table.
*/
-SQLITE_PRIVATE char sqlite3TableColumnAffinity(Table *pTab, int iCol){
- assert( iCol<pTab->nCol );
- return iCol>=0 ? pTab->aCol[iCol].affinity : SQLITE_AFF_INTEGER;
+SQLITE_PRIVATE char sqlite3TableColumnAffinity(const Table *pTab, int iCol){
+ if( iCol<0 || NEVER(iCol>=pTab->nCol) ) return SQLITE_AFF_INTEGER;
+ return pTab->aCol[iCol].affinity;
}
/*
@@ -101280,11 +101691,14 @@ SQLITE_PRIVATE char sqlite3ExprAffinity(const Expr *pExpr){
}
op = pExpr->op;
if( op==TK_REGISTER ) op = pExpr->op2;
- if( (op==TK_COLUMN || op==TK_AGG_COLUMN) && pExpr->y.pTab ){
- return sqlite3TableColumnAffinity(pExpr->y.pTab, pExpr->iColumn);
+ if( op==TK_COLUMN || op==TK_AGG_COLUMN ){
+ assert( ExprUseYTab(pExpr) );
+ if( pExpr->y.pTab ){
+ return sqlite3TableColumnAffinity(pExpr->y.pTab, pExpr->iColumn);
+ }
}
if( op==TK_SELECT ){
- assert( pExpr->flags&EP_xIsSelect );
+ assert( ExprUseXSelect(pExpr) );
assert( pExpr->x.pSelect!=0 );
assert( pExpr->x.pSelect->pEList!=0 );
assert( pExpr->x.pSelect->pEList->a[0].pExpr!=0 );
@@ -101297,12 +101711,15 @@ SQLITE_PRIVATE char sqlite3ExprAffinity(const Expr *pExpr){
}
#endif
if( op==TK_SELECT_COLUMN ){
- assert( pExpr->pLeft->flags&EP_xIsSelect );
+ assert( pExpr->pLeft!=0 && ExprUseXSelect(pExpr->pLeft) );
+ assert( pExpr->iColumn < pExpr->iTable );
+ assert( pExpr->iTable==pExpr->pLeft->x.pSelect->pEList->nExpr );
return sqlite3ExprAffinity(
pExpr->pLeft->x.pSelect->pEList->a[pExpr->iColumn].pExpr
);
}
if( op==TK_VECTOR ){
+ assert( ExprUseXList(pExpr) );
return sqlite3ExprAffinity(pExpr->x.pList->a[0].pExpr);
}
return pExpr->affExpr;
@@ -101317,7 +101734,7 @@ SQLITE_PRIVATE char sqlite3ExprAffinity(const Expr *pExpr){
** and the pExpr parameter is returned unchanged.
*/
SQLITE_PRIVATE Expr *sqlite3ExprAddCollateToken(
- Parse *pParse, /* Parsing context */
+ const Parse *pParse, /* Parsing context */
Expr *pExpr, /* Add the "COLLATE" clause to this expression */
const Token *pCollName, /* Name of collating sequence */
int dequote /* True to dequote pCollName */
@@ -101332,7 +101749,11 @@ SQLITE_PRIVATE Expr *sqlite3ExprAddCollateToken(
}
return pExpr;
}
-SQLITE_PRIVATE Expr *sqlite3ExprAddCollateString(Parse *pParse, Expr *pExpr, const char *zC){
+SQLITE_PRIVATE Expr *sqlite3ExprAddCollateString(
+ const Parse *pParse, /* Parsing context */
+ Expr *pExpr, /* Add the "COLLATE" clause to this expression */
+ const char *zC /* The collating sequence name */
+){
Token s;
assert( zC!=0 );
sqlite3TokenInit(&s, (char*)zC);
@@ -101358,7 +101779,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprSkipCollate(Expr *pExpr){
SQLITE_PRIVATE Expr *sqlite3ExprSkipCollateAndLikely(Expr *pExpr){
while( pExpr && ExprHasProperty(pExpr, EP_Skip|EP_Unlikely) ){
if( ExprHasProperty(pExpr, EP_Unlikely) ){
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
+ assert( ExprUseXList(pExpr) );
assert( pExpr->x.pList->nExpr>0 );
assert( pExpr->op==TK_FUNCTION );
pExpr = pExpr->x.pList->a[0].pExpr;
@@ -101391,27 +101812,30 @@ SQLITE_PRIVATE CollSeq *sqlite3ExprCollSeq(Parse *pParse, const Expr *pExpr){
while( p ){
int op = p->op;
if( op==TK_REGISTER ) op = p->op2;
- if( (op==TK_AGG_COLUMN || op==TK_COLUMN || op==TK_TRIGGER)
- && p->y.pTab!=0
- ){
- /* op==TK_REGISTER && p->y.pTab!=0 happens when pExpr was originally
- ** a TK_COLUMN but was previously evaluated and cached in a register */
- int j = p->iColumn;
- if( j>=0 ){
- const char *zColl = p->y.pTab->aCol[j].zColl;
- pColl = sqlite3FindCollSeq(db, ENC(db), zColl, 0);
+ if( op==TK_AGG_COLUMN || op==TK_COLUMN || op==TK_TRIGGER ){
+ assert( ExprUseYTab(p) );
+ if( p->y.pTab!=0 ){
+ /* op==TK_REGISTER && p->y.pTab!=0 happens when pExpr was originally
+ ** a TK_COLUMN but was previously evaluated and cached in a register */
+ int j = p->iColumn;
+ if( j>=0 ){
+ const char *zColl = sqlite3ColumnColl(&p->y.pTab->aCol[j]);
+ pColl = sqlite3FindCollSeq(db, ENC(db), zColl, 0);
+ }
+ break;
}
- break;
}
if( op==TK_CAST || op==TK_UPLUS ){
p = p->pLeft;
continue;
}
if( op==TK_VECTOR ){
+ assert( ExprUseXList(p) );
p = p->x.pList->a[0].pExpr;
continue;
}
if( op==TK_COLLATE ){
+ assert( !ExprHasProperty(p, EP_IntValue) );
pColl = sqlite3GetCollSeq(pParse, ENC(db), 0, p->u.zToken);
break;
}
@@ -101421,11 +101845,9 @@ SQLITE_PRIVATE CollSeq *sqlite3ExprCollSeq(Parse *pParse, const Expr *pExpr){
}else{
Expr *pNext = p->pRight;
/* The Expr.x union is never used at the same time as Expr.pRight */
+ assert( ExprUseXList(p) );
assert( p->x.pList==0 || p->pRight==0 );
- if( p->x.pList!=0
- && !db->mallocFailed
- && ALWAYS(!ExprHasProperty(p, EP_xIsSelect))
- ){
+ if( p->x.pList!=0 && !db->mallocFailed ){
int i;
for(i=0; ALWAYS(i<p->x.pList->nExpr); i++){
if( ExprHasProperty(p->x.pList->a[i].pExpr, EP_Collate) ){
@@ -101508,7 +101930,7 @@ static char comparisonAffinity(const Expr *pExpr){
aff = sqlite3ExprAffinity(pExpr->pLeft);
if( pExpr->pRight ){
aff = sqlite3CompareAffinity(pExpr->pRight, aff);
- }else if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ }else if( ExprUseXSelect(pExpr) ){
aff = sqlite3CompareAffinity(pExpr->x.pSelect->pEList->a[0].pExpr, aff);
}else if( aff==0 ){
aff = SQLITE_AFF_BLOB;
@@ -101634,7 +102056,7 @@ static int codeCompare(
** But a TK_SELECT might be either a vector or a scalar. It is only
** considered a vector if it has two or more result columns.
*/
-SQLITE_PRIVATE int sqlite3ExprIsVector(Expr *pExpr){
+SQLITE_PRIVATE int sqlite3ExprIsVector(const Expr *pExpr){
return sqlite3ExprVectorSize(pExpr)>1;
}
@@ -101644,12 +102066,14 @@ SQLITE_PRIVATE int sqlite3ExprIsVector(Expr *pExpr){
** is a sub-select, return the number of columns in the sub-select. For
** any other type of expression, return 1.
*/
-SQLITE_PRIVATE int sqlite3ExprVectorSize(Expr *pExpr){
+SQLITE_PRIVATE int sqlite3ExprVectorSize(const Expr *pExpr){
u8 op = pExpr->op;
if( op==TK_REGISTER ) op = pExpr->op2;
if( op==TK_VECTOR ){
+ assert( ExprUseXList(pExpr) );
return pExpr->x.pList->nExpr;
}else if( op==TK_SELECT ){
+ assert( ExprUseXSelect(pExpr) );
return pExpr->x.pSelect->pEList->nExpr;
}else{
return 1;
@@ -101676,8 +102100,10 @@ SQLITE_PRIVATE Expr *sqlite3VectorFieldSubexpr(Expr *pVector, int i){
if( sqlite3ExprIsVector(pVector) ){
assert( pVector->op2==0 || pVector->op==TK_REGISTER );
if( pVector->op==TK_SELECT || pVector->op2==TK_SELECT ){
+ assert( ExprUseXSelect(pVector) );
return pVector->x.pSelect->pEList->a[i].pExpr;
}else{
+ assert( ExprUseXList(pVector) );
return pVector->x.pList->a[i].pExpr;
}
}
@@ -101708,11 +102134,12 @@ SQLITE_PRIVATE Expr *sqlite3VectorFieldSubexpr(Expr *pVector, int i){
SQLITE_PRIVATE Expr *sqlite3ExprForVectorField(
Parse *pParse, /* Parsing context */
Expr *pVector, /* The vector. List of expressions or a sub-SELECT */
- int iField /* Which column of the vector to return */
+ int iField, /* Which column of the vector to return */
+ int nField /* Total number of columns in the vector */
){
Expr *pRet;
if( pVector->op==TK_SELECT ){
- assert( pVector->flags & EP_xIsSelect );
+ assert( ExprUseXSelect(pVector) );
/* The TK_SELECT_COLUMN Expr node:
**
** pLeft: pVector containing TK_SELECT. Not deleted.
@@ -101731,14 +102158,23 @@ SQLITE_PRIVATE Expr *sqlite3ExprForVectorField(
*/
pRet = sqlite3PExpr(pParse, TK_SELECT_COLUMN, 0, 0);
if( pRet ){
+ pRet->iTable = nField;
pRet->iColumn = iField;
pRet->pLeft = pVector;
}
- assert( pRet==0 || pRet->iTable==0 );
}else{
- if( pVector->op==TK_VECTOR ) pVector = pVector->x.pList->a[iField].pExpr;
+ if( pVector->op==TK_VECTOR ){
+ Expr **ppVector;
+ assert( ExprUseXList(pVector) );
+ ppVector = &pVector->x.pList->a[iField].pExpr;
+ pVector = *ppVector;
+ if( IN_RENAME_OBJECT ){
+ /* This must be a vector UPDATE inside a trigger */
+ *ppVector = 0;
+ return pVector;
+ }
+ }
pRet = sqlite3ExprDup(pParse->db, pVector, 0);
- sqlite3RenameTokenRemap(pParse, pRet, pVector);
}
return pRet;
}
@@ -101794,10 +102230,12 @@ static int exprVectorRegister(
return pVector->iTable+iField;
}
if( op==TK_SELECT ){
+ assert( ExprUseXSelect(pVector) );
*ppExpr = pVector->x.pSelect->pEList->a[iField].pExpr;
return regSelect+iField;
}
if( op==TK_VECTOR ){
+ assert( ExprUseXList(pVector) );
*ppExpr = pVector->x.pList->a[iField].pExpr;
return sqlite3ExprCodeTemp(pParse, *ppExpr, pRegFree);
}
@@ -101931,14 +102369,14 @@ SQLITE_PRIVATE int sqlite3ExprCheckHeight(Parse *pParse, int nHeight){
** to by pnHeight, the second parameter, then set *pnHeight to that
** value.
*/
-static void heightOfExpr(Expr *p, int *pnHeight){
+static void heightOfExpr(const Expr *p, int *pnHeight){
if( p ){
if( p->nHeight>*pnHeight ){
*pnHeight = p->nHeight;
}
}
}
-static void heightOfExprList(ExprList *p, int *pnHeight){
+static void heightOfExprList(const ExprList *p, int *pnHeight){
if( p ){
int i;
for(i=0; i<p->nExpr; i++){
@@ -101946,8 +102384,8 @@ static void heightOfExprList(ExprList *p, int *pnHeight){
}
}
}
-static void heightOfSelect(Select *pSelect, int *pnHeight){
- Select *p;
+static void heightOfSelect(const Select *pSelect, int *pnHeight){
+ const Select *p;
for(p=pSelect; p; p=p->pPrior){
heightOfExpr(p->pWhere, pnHeight);
heightOfExpr(p->pHaving, pnHeight);
@@ -101972,7 +102410,7 @@ static void exprSetHeight(Expr *p){
int nHeight = 0;
heightOfExpr(p->pLeft, &nHeight);
heightOfExpr(p->pRight, &nHeight);
- if( ExprHasProperty(p, EP_xIsSelect) ){
+ if( ExprUseXSelect(p) ){
heightOfSelect(p->x.pSelect, &nHeight);
}else if( p->x.pList ){
heightOfExprList(p->x.pList, &nHeight);
@@ -101999,7 +102437,7 @@ SQLITE_PRIVATE void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p){
** Return the maximum height of any expression tree referenced
** by the select statement passed as an argument.
*/
-SQLITE_PRIVATE int sqlite3SelectExprHeight(Select *p){
+SQLITE_PRIVATE int sqlite3SelectExprHeight(const Select *p){
int nHeight = 0;
heightOfSelect(p, &nHeight);
return nHeight;
@@ -102011,7 +102449,7 @@ SQLITE_PRIVATE int sqlite3SelectExprHeight(Select *p){
*/
SQLITE_PRIVATE void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p){
if( pParse->nErr ) return;
- if( p && p->x.pList && !ExprHasProperty(p, EP_xIsSelect) ){
+ if( p && ExprUseXList(p) && p->x.pList ){
p->flags |= EP_Propagate & sqlite3ExprListFlags(p->x.pList);
}
}
@@ -102169,6 +102607,63 @@ SQLITE_PRIVATE void sqlite3PExprAddSelect(Parse *pParse, Expr *pExpr, Select *pS
}
}
+/*
+** Expression list pEList is a list of vector values. This function
+** converts the contents of pEList to a VALUES(...) Select statement
+** returning 1 row for each element of the list. For example, the
+** expression list:
+**
+** ( (1,2), (3,4) (5,6) )
+**
+** is translated to the equivalent of:
+**
+** VALUES(1,2), (3,4), (5,6)
+**
+** Each of the vector values in pEList must contain exactly nElem terms.
+** If a list element that is not a vector or does not contain nElem terms,
+** an error message is left in pParse.
+**
+** This is used as part of processing IN(...) expressions with a list
+** of vectors on the RHS. e.g. "... IN ((1,2), (3,4), (5,6))".
+*/
+SQLITE_PRIVATE Select *sqlite3ExprListToValues(Parse *pParse, int nElem, ExprList *pEList){
+ int ii;
+ Select *pRet = 0;
+ assert( nElem>1 );
+ for(ii=0; ii<pEList->nExpr; ii++){
+ Select *pSel;
+ Expr *pExpr = pEList->a[ii].pExpr;
+ int nExprElem;
+ if( pExpr->op==TK_VECTOR ){
+ assert( ExprUseXList(pExpr) );
+ nExprElem = pExpr->x.pList->nExpr;
+ }else{
+ nExprElem = 1;
+ }
+ if( nExprElem!=nElem ){
+ sqlite3ErrorMsg(pParse, "IN(...) element has %d term%s - expected %d",
+ nExprElem, nExprElem>1?"s":"", nElem
+ );
+ break;
+ }
+ assert( ExprUseXList(pExpr) );
+ pSel = sqlite3SelectNew(pParse, pExpr->x.pList, 0, 0, 0, 0, 0, SF_Values,0);
+ pExpr->x.pList = 0;
+ if( pSel ){
+ if( pRet ){
+ pSel->op = TK_ALL;
+ pSel->pPrior = pRet;
+ }
+ pRet = pSel;
+ }
+ }
+
+ if( pRet && pRet->pPrior ){
+ pRet->selFlags |= SF_MultiValue;
+ }
+ sqlite3ExprListDelete(pParse->db, pEList);
+ return pRet;
+}
/*
** Join two expressions using an AND operator. If either expression is
@@ -102202,7 +102697,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprAnd(Parse *pParse, Expr *pLeft, Expr *pRight){
SQLITE_PRIVATE Expr *sqlite3ExprFunction(
Parse *pParse, /* Parsing context */
ExprList *pList, /* Argument list */
- Token *pToken, /* Name of the function */
+ const Token *pToken, /* Name of the function */
int eDistinct /* SF_Distinct or SF_ALL or 0 */
){
Expr *pNew;
@@ -102213,12 +102708,15 @@ SQLITE_PRIVATE Expr *sqlite3ExprFunction(
sqlite3ExprListDelete(db, pList); /* Avoid memory leak when malloc fails */
return 0;
}
- if( pList && pList->nExpr > pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG] ){
+ if( pList
+ && pList->nExpr > pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG]
+ && !pParse->nested
+ ){
sqlite3ErrorMsg(pParse, "too many arguments on function %T", pToken);
}
pNew->x.pList = pList;
ExprSetProperty(pNew, EP_HasFunc);
- assert( !ExprHasProperty(pNew, EP_xIsSelect) );
+ assert( ExprUseXList(pNew) );
sqlite3ExprSetHeightAndFlags(pParse, pNew);
if( eDistinct==SF_Distinct ) ExprSetProperty(pNew, EP_Distinct);
return pNew;
@@ -102237,8 +102735,8 @@ SQLITE_PRIVATE Expr *sqlite3ExprFunction(
*/
SQLITE_PRIVATE void sqlite3ExprFunctionUsable(
Parse *pParse, /* Parsing and code generating context */
- Expr *pExpr, /* The function invocation */
- FuncDef *pDef /* The function being invoked */
+ const Expr *pExpr, /* The function invocation */
+ const FuncDef *pDef /* The function being invoked */
){
assert( !IN_RENAME_OBJECT );
assert( (pDef->funcFlags & (SQLITE_FUNC_DIRECT|SQLITE_FUNC_UNSAFE))!=0 );
@@ -102344,27 +102842,26 @@ SQLITE_PRIVATE void sqlite3ExprAssignVarNumber(Parse *pParse, Expr *pExpr, u32 n
*/
static SQLITE_NOINLINE void sqlite3ExprDeleteNN(sqlite3 *db, Expr *p){
assert( p!=0 );
- /* Sanity check: Assert that the IntValue is non-negative if it exists */
- assert( !ExprHasProperty(p, EP_IntValue) || p->u.iValue>=0 );
-
- assert( !ExprHasProperty(p, EP_WinFunc) || p->y.pWin!=0 || db->mallocFailed );
- assert( p->op!=TK_FUNCTION || ExprHasProperty(p, EP_TokenOnly|EP_Reduced)
- || p->y.pWin==0 || ExprHasProperty(p, EP_WinFunc) );
+ assert( !ExprUseUValue(p) || p->u.iValue>=0 );
+ assert( !ExprUseYWin(p) || !ExprUseYSub(p) );
+ assert( !ExprUseYWin(p) || p->y.pWin!=0 || db->mallocFailed );
+ assert( p->op!=TK_FUNCTION || !ExprUseYSub(p) );
#ifdef SQLITE_DEBUG
if( ExprHasProperty(p, EP_Leaf) && !ExprHasProperty(p, EP_TokenOnly) ){
assert( p->pLeft==0 );
assert( p->pRight==0 );
- assert( p->x.pSelect==0 );
+ assert( !ExprUseXSelect(p) || p->x.pSelect==0 );
+ assert( !ExprUseXList(p) || p->x.pList==0 );
}
#endif
if( !ExprHasProperty(p, (EP_TokenOnly|EP_Leaf)) ){
/* The Expr.x union is never used at the same time as Expr.pRight */
- assert( p->x.pList==0 || p->pRight==0 );
+ assert( (ExprUseXList(p) && p->x.pList==0) || p->pRight==0 );
if( p->pLeft && p->op!=TK_SELECT_COLUMN ) sqlite3ExprDeleteNN(db, p->pLeft);
if( p->pRight ){
assert( !ExprHasProperty(p, EP_WinFunc) );
sqlite3ExprDeleteNN(db, p->pRight);
- }else if( ExprHasProperty(p, EP_xIsSelect) ){
+ }else if( ExprUseXSelect(p) ){
assert( !ExprHasProperty(p, EP_WinFunc) );
sqlite3SelectDelete(db, p->x.pSelect);
}else{
@@ -102376,7 +102873,10 @@ static SQLITE_NOINLINE void sqlite3ExprDeleteNN(sqlite3 *db, Expr *p){
#endif
}
}
- if( ExprHasProperty(p, EP_MemToken) ) sqlite3DbFree(db, p->u.zToken);
+ if( ExprHasProperty(p, EP_MemToken) ){
+ assert( !ExprHasProperty(p, EP_IntValue) );
+ sqlite3DbFree(db, p->u.zToken);
+ }
if( !ExprHasProperty(p, EP_Static) ){
sqlite3DbFreeNN(db, p);
}
@@ -102418,7 +102918,7 @@ SQLITE_PRIVATE void sqlite3ExprUnmapAndDelete(Parse *pParse, Expr *p){
** passed as the first argument. This is always one of EXPR_FULLSIZE,
** EXPR_REDUCEDSIZE or EXPR_TOKENONLYSIZE.
*/
-static int exprStructSize(Expr *p){
+static int exprStructSize(const Expr *p){
if( ExprHasProperty(p, EP_TokenOnly) ) return EXPR_TOKENONLYSIZE;
if( ExprHasProperty(p, EP_Reduced) ) return EXPR_REDUCEDSIZE;
return EXPR_FULLSIZE;
@@ -102458,7 +102958,7 @@ static int exprStructSize(Expr *p){
** of dupedExprStructSize() contain multiple assert() statements that attempt
** to enforce this constraint.
*/
-static int dupedExprStructSize(Expr *p, int flags){
+static int dupedExprStructSize(const Expr *p, int flags){
int nSize;
assert( flags==EXPRDUP_REDUCE || flags==0 ); /* Only one flag value allowed */
assert( EXPR_FULLSIZE<=0xfff );
@@ -102489,7 +102989,7 @@ static int dupedExprStructSize(Expr *p, int flags){
** of the Expr structure and a copy of the Expr.u.zToken string (if that
** string is defined.)
*/
-static int dupedExprNodeSize(Expr *p, int flags){
+static int dupedExprNodeSize(const Expr *p, int flags){
int nByte = dupedExprStructSize(p, flags) & 0xfff;
if( !ExprHasProperty(p, EP_IntValue) && p->u.zToken ){
nByte += sqlite3Strlen30NN(p->u.zToken)+1;
@@ -102510,7 +103010,7 @@ static int dupedExprNodeSize(Expr *p, int flags){
** and Expr.pRight variables (but not for any structures pointed to or
** descended from the Expr.x.pList or Expr.x.pSelect variables).
*/
-static int dupedExprSize(Expr *p, int flags){
+static int dupedExprSize(const Expr *p, int flags){
int nByte = 0;
if( p ){
nByte = dupedExprNodeSize(p, flags);
@@ -102529,7 +103029,7 @@ static int dupedExprSize(Expr *p, int flags){
** if any. Before returning, *pzBuffer is set to the first byte past the
** portion of the buffer copied into by this function.
*/
-static Expr *exprDup(sqlite3 *db, Expr *p, int dupFlags, u8 **pzBuffer){
+static Expr *exprDup(sqlite3 *db, const Expr *p, int dupFlags, u8 **pzBuffer){
Expr *pNew; /* Value to return */
u8 *zAlloc; /* Memory space from which to build Expr object */
u32 staticFlag; /* EP_Static if space not obtained from malloc */
@@ -102592,7 +103092,7 @@ static Expr *exprDup(sqlite3 *db, Expr *p, int dupFlags, u8 **pzBuffer){
if( 0==((p->flags|pNew->flags) & (EP_TokenOnly|EP_Leaf)) ){
/* Fill in the pNew->x.pSelect or pNew->x.pList member. */
- if( ExprHasProperty(p, EP_xIsSelect) ){
+ if( ExprUseXSelect(p) ){
pNew->x.pSelect = sqlite3SelectDup(db, p->x.pSelect, dupFlags);
}else{
pNew->x.pList = sqlite3ExprListDup(db, p->x.pList, dupFlags);
@@ -102621,7 +103121,6 @@ static Expr *exprDup(sqlite3 *db, Expr *p, int dupFlags, u8 **pzBuffer){
if( !ExprHasProperty(p, EP_TokenOnly|EP_Leaf) ){
if( pNew->op==TK_SELECT_COLUMN ){
pNew->pLeft = p->pLeft;
- assert( p->iColumn==0 || p->pRight==0 );
assert( p->pRight==0 || p->pRight==p->pLeft
|| ExprHasProperty(p->pLeft, EP_Subquery) );
}else{
@@ -102711,15 +103210,17 @@ static void gatherSelectWindows(Select *p){
** truncated version of the usual Expr structure that will be stored as
** part of the in-memory representation of the database schema.
*/
-SQLITE_PRIVATE Expr *sqlite3ExprDup(sqlite3 *db, Expr *p, int flags){
+SQLITE_PRIVATE Expr *sqlite3ExprDup(sqlite3 *db, const Expr *p, int flags){
assert( flags==0 || flags==EXPRDUP_REDUCE );
return p ? exprDup(db, p, flags, 0) : 0;
}
-SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3 *db, ExprList *p, int flags){
+SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3 *db, const ExprList *p, int flags){
ExprList *pNew;
- struct ExprList_item *pItem, *pOldItem;
+ struct ExprList_item *pItem;
+ const struct ExprList_item *pOldItem;
int i;
- Expr *pPriorSelectCol = 0;
+ Expr *pPriorSelectColOld = 0;
+ Expr *pPriorSelectColNew = 0;
assert( db!=0 );
if( p==0 ) return 0;
pNew = sqlite3DbMallocRawNN(db, sqlite3DbMallocSize(db, p));
@@ -102736,17 +103237,17 @@ SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3 *db, ExprList *p, int flags)
&& pOldExpr->op==TK_SELECT_COLUMN
&& (pNewExpr = pItem->pExpr)!=0
){
- assert( pNewExpr->iColumn==0 || i>0 );
- if( pNewExpr->iColumn==0 ){
- assert( pOldExpr->pLeft==pOldExpr->pRight
- || ExprHasProperty(pOldExpr->pLeft, EP_Subquery) );
- pPriorSelectCol = pNewExpr->pLeft = pNewExpr->pRight;
+ if( pNewExpr->pRight ){
+ pPriorSelectColOld = pOldExpr->pRight;
+ pPriorSelectColNew = pNewExpr->pRight;
+ pNewExpr->pLeft = pNewExpr->pRight;
}else{
- assert( i>0 );
- assert( pItem[-1].pExpr!=0 );
- assert( pNewExpr->iColumn==pItem[-1].pExpr->iColumn+1 );
- assert( pPriorSelectCol==pItem[-1].pExpr->pLeft );
- pNewExpr->pLeft = pPriorSelectCol;
+ if( pOldExpr->pLeft!=pPriorSelectColOld ){
+ pPriorSelectColOld = pOldExpr->pLeft;
+ pPriorSelectColNew = sqlite3ExprDup(db, pPriorSelectColOld, flags);
+ pNewExpr->pRight = pPriorSelectColNew;
+ }
+ pNewExpr->pLeft = pPriorSelectColNew;
}
}
pItem->zEName = sqlite3DbStrDup(db, pOldItem->zEName);
@@ -102768,7 +103269,7 @@ SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3 *db, ExprList *p, int flags)
*/
#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_TRIGGER) \
|| !defined(SQLITE_OMIT_SUBQUERY)
-SQLITE_PRIVATE SrcList *sqlite3SrcListDup(sqlite3 *db, SrcList *p, int flags){
+SQLITE_PRIVATE SrcList *sqlite3SrcListDup(sqlite3 *db, const SrcList *p, int flags){
SrcList *pNew;
int i;
int nByte;
@@ -102780,7 +103281,7 @@ SQLITE_PRIVATE SrcList *sqlite3SrcListDup(sqlite3 *db, SrcList *p, int flags){
pNew->nSrc = pNew->nAlloc = p->nSrc;
for(i=0; i<p->nSrc; i++){
SrcItem *pNewItem = &pNew->a[i];
- SrcItem *pOldItem = &p->a[i];
+ const SrcItem *pOldItem = &p->a[i];
Table *pTab;
pNewItem->pSchema = pOldItem->pSchema;
pNewItem->zDatabase = sqlite3DbStrDup(db, pOldItem->zDatabase);
@@ -102812,7 +103313,7 @@ SQLITE_PRIVATE SrcList *sqlite3SrcListDup(sqlite3 *db, SrcList *p, int flags){
}
return pNew;
}
-SQLITE_PRIVATE IdList *sqlite3IdListDup(sqlite3 *db, IdList *p){
+SQLITE_PRIVATE IdList *sqlite3IdListDup(sqlite3 *db, const IdList *p){
IdList *pNew;
int i;
assert( db!=0 );
@@ -102836,11 +103337,11 @@ SQLITE_PRIVATE IdList *sqlite3IdListDup(sqlite3 *db, IdList *p){
}
return pNew;
}
-SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3 *db, Select *pDup, int flags){
+SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3 *db, const Select *pDup, int flags){
Select *pRet = 0;
Select *pNext = 0;
Select **pp = &pRet;
- Select *p;
+ const Select *p;
assert( db!=0 );
for(p=pDup; p; p=p->pPrior){
@@ -102885,7 +103386,7 @@ SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3 *db, Select *pDup, int flags){
return pRet;
}
#else
-SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3 *db, Select *p, int flags){
+SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3 *db, const Select *p, int flags){
assert( p==0 );
return 0;
}
@@ -103005,11 +103506,9 @@ SQLITE_PRIVATE ExprList *sqlite3ExprListAppendVector(
}
for(i=0; i<pColumns->nId; i++){
- Expr *pSubExpr = sqlite3ExprForVectorField(pParse, pExpr, i);
+ Expr *pSubExpr = sqlite3ExprForVectorField(pParse, pExpr, i, pColumns->nId);
assert( pSubExpr!=0 || db->mallocFailed );
- assert( pSubExpr==0 || pSubExpr->iTable==0 );
if( pSubExpr==0 ) continue;
- pSubExpr->iTable = pColumns->nId;
pList = sqlite3ExprListAppend(pParse, pList, pSubExpr);
if( pList ){
assert( pList->nExpr==iFirst+i+1 );
@@ -103083,7 +103582,7 @@ SQLITE_PRIVATE void sqlite3ExprListSetSortOrder(ExprList *p, int iSortOrder, int
SQLITE_PRIVATE void sqlite3ExprListSetName(
Parse *pParse, /* Parsing context */
ExprList *pList, /* List to which to add the span. */
- Token *pName, /* Name to be added */
+ const Token *pName, /* Name to be added */
int dequote /* True to cause the name to be dequoted */
){
assert( pList!=0 || pParse->db->mallocFailed!=0 );
@@ -103101,7 +103600,7 @@ SQLITE_PRIVATE void sqlite3ExprListSetName(
** to the token-map. */
sqlite3Dequote(pItem->zEName);
if( IN_RENAME_OBJECT ){
- sqlite3RenameTokenMap(pParse, (void*)pItem->zEName, pName);
+ sqlite3RenameTokenMap(pParse, (const void*)pItem->zEName, pName);
}
}
}
@@ -103220,7 +103719,7 @@ SQLITE_PRIVATE u32 sqlite3IsTrueOrFalse(const char *zIn){
SQLITE_PRIVATE int sqlite3ExprIdToTrueFalse(Expr *pExpr){
u32 v;
assert( pExpr->op==TK_ID || pExpr->op==TK_STRING );
- if( !ExprHasProperty(pExpr, EP_Quoted)
+ if( !ExprHasProperty(pExpr, EP_Quoted|EP_IntValue)
&& (v = sqlite3IsTrueOrFalse(pExpr->u.zToken))!=0
){
pExpr->op = TK_TRUEFALSE;
@@ -103237,6 +103736,7 @@ SQLITE_PRIVATE int sqlite3ExprIdToTrueFalse(Expr *pExpr){
SQLITE_PRIVATE int sqlite3ExprTruthValue(const Expr *pExpr){
pExpr = sqlite3ExprSkipCollate((Expr*)pExpr);
assert( pExpr->op==TK_TRUEFALSE );
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
assert( sqlite3StrICmp(pExpr->u.zToken,"true")==0
|| sqlite3StrICmp(pExpr->u.zToken,"false")==0 );
return pExpr->u.zToken[4]==0;
@@ -103441,7 +103941,7 @@ static int exprNodeIsConstantOrGroupBy(Walker *pWalker, Expr *pExpr){
}
/* Check if pExpr is a sub-select. If so, consider it variable. */
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ if( ExprUseXSelect(pExpr) ){
pWalker->eCode = 0;
return WRC_Abort;
}
@@ -103529,7 +104029,7 @@ SQLITE_PRIVATE int sqlite3ExprContainsSubquery(Expr *p){
** in *pValue. If the expression is not an integer or if it is too big
** to fit in a signed 32-bit integer, return 0 and leave *pValue unchanged.
*/
-SQLITE_PRIVATE int sqlite3ExprIsInteger(Expr *p, int *pValue){
+SQLITE_PRIVATE int sqlite3ExprIsInteger(const Expr *p, int *pValue){
int rc = 0;
if( NEVER(p==0) ) return 0; /* Used to only happen following on OOM */
@@ -103548,9 +104048,9 @@ SQLITE_PRIVATE int sqlite3ExprIsInteger(Expr *p, int *pValue){
break;
}
case TK_UMINUS: {
- int v;
+ int v = 0;
if( sqlite3ExprIsInteger(p->pLeft, &v) ){
- assert( v!=(-2147483647-1) );
+ assert( ((unsigned int)v)!=0x80000000 );
*pValue = -v;
rc = 1;
}
@@ -103591,10 +104091,11 @@ SQLITE_PRIVATE int sqlite3ExprCanBeNull(const Expr *p){
case TK_BLOB:
return 0;
case TK_COLUMN:
+ assert( ExprUseYTab(p) );
return ExprHasProperty(p, EP_CanBeNull) ||
p->y.pTab==0 || /* Reference to column of index on expression */
(p->iColumn>=0
- && ALWAYS(p->y.pTab->aCol!=0) /* Defense against OOM problems */
+ && p->y.pTab->aCol!=0 /* Possible due to prior error */
&& p->y.pTab->aCol[p->iColumn].notNull==0);
default:
return 1;
@@ -103662,13 +104163,13 @@ SQLITE_PRIVATE int sqlite3IsRowid(const char *z){
** table, then return NULL.
*/
#ifndef SQLITE_OMIT_SUBQUERY
-static Select *isCandidateForInOpt(Expr *pX){
+static Select *isCandidateForInOpt(const Expr *pX){
Select *p;
SrcList *pSrc;
ExprList *pEList;
Table *pTab;
int i;
- if( !ExprHasProperty(pX, EP_xIsSelect) ) return 0; /* Not a subquery */
+ if( !ExprUseXSelect(pX) ) return 0; /* Not a subquery */
if( ExprHasProperty(pX, EP_VarSelect) ) return 0; /* Correlated subq */
p = pX->x.pSelect;
if( p->pPrior ) return 0; /* Not a compound SELECT */
@@ -103686,7 +104187,7 @@ static Select *isCandidateForInOpt(Expr *pX){
if( pSrc->a[0].pSelect ) return 0; /* FROM is not a subquery or view */
pTab = pSrc->a[0].pTab;
assert( pTab!=0 );
- assert( pTab->pSelect==0 ); /* FROM clause is not a view */
+ assert( !IsView(pTab) ); /* FROM clause is not a view */
if( IsVirtual(pTab) ) return 0; /* FROM clause not a virtual table */
pEList = p->pEList;
assert( pEList!=0 );
@@ -103839,7 +104340,7 @@ SQLITE_PRIVATE int sqlite3FindInIndex(
** or not NULL is actually possible (it may not be, for example, due
** to NOT NULL constraints in the schema). If no NULL values are possible,
** set prRhsHasNull to 0 before continuing. */
- if( prRhsHasNull && (pX->flags & EP_xIsSelect) ){
+ if( prRhsHasNull && ExprUseXSelect(pX) ){
int i;
ExprList *pEList = pX->x.pSelect->pEList;
for(i=0; i<pEList->nExpr; i++){
@@ -103940,7 +104441,8 @@ SQLITE_PRIVATE int sqlite3FindInIndex(
CollSeq *pReq = sqlite3BinaryCompareCollSeq(pParse, pLhs, pRhs);
int j;
- assert( pReq!=0 || pRhs->iColumn==XN_ROWID || pParse->nErr );
+ assert( pReq!=0 || pRhs->iColumn==XN_ROWID
+ || pParse->nErr || db->mallocFailed );
for(j=0; j<nExpr; j++){
if( pIdx->aiColumn[j]!=pRhs->iColumn ) continue;
assert( pIdx->azColl[j] );
@@ -103995,7 +104497,7 @@ SQLITE_PRIVATE int sqlite3FindInIndex(
*/
if( eType==0
&& (inFlags & IN_INDEX_NOOP_OK)
- && !ExprHasProperty(pX, EP_xIsSelect)
+ && ExprUseXList(pX)
&& (!sqlite3InRhsIsConstant(pX) || pX->x.pList->nExpr<=2)
){
eType = IN_INDEX_NOOP;
@@ -104040,10 +104542,10 @@ SQLITE_PRIVATE int sqlite3FindInIndex(
** It is the responsibility of the caller to ensure that the returned
** string is eventually freed using sqlite3DbFree().
*/
-static char *exprINAffinity(Parse *pParse, Expr *pExpr){
+static char *exprINAffinity(Parse *pParse, const Expr *pExpr){
Expr *pLeft = pExpr->pLeft;
int nVal = sqlite3ExprVectorSize(pLeft);
- Select *pSelect = (pExpr->flags & EP_xIsSelect) ? pExpr->x.pSelect : 0;
+ Select *pSelect = ExprUseXSelect(pExpr) ? pExpr->x.pSelect : 0;
char *zRet;
assert( pExpr->op==TK_IN );
@@ -104093,7 +104595,7 @@ SQLITE_PRIVATE void sqlite3SubselectError(Parse *pParse, int nActual, int nExpec
*/
SQLITE_PRIVATE void sqlite3VectorErrorMsg(Parse *pParse, Expr *pExpr){
#ifndef SQLITE_OMIT_SUBQUERY
- if( pExpr->flags & EP_xIsSelect ){
+ if( ExprUseXSelect(pExpr) ){
sqlite3SubselectError(pParse, pExpr->x.pSelect->pEList->nExpr, 1);
}else
#endif
@@ -104157,10 +104659,11 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
*/
if( ExprHasProperty(pExpr, EP_Subrtn) ){
addrOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v);
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ if( ExprUseXSelect(pExpr) ){
ExplainQueryPlan((pParse, 0, "REUSE LIST SUBQUERY %d",
pExpr->x.pSelect->selId));
}
+ assert( ExprUseYSub(pExpr) );
sqlite3VdbeAddOp2(v, OP_Gosub, pExpr->y.sub.regReturn,
pExpr->y.sub.iAddr);
sqlite3VdbeAddOp2(v, OP_OpenDup, iTab, pExpr->iTable);
@@ -104169,6 +104672,7 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
}
/* Begin coding the subroutine */
+ assert( !ExprUseYWin(pExpr) );
ExprSetProperty(pExpr, EP_Subrtn);
assert( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) );
pExpr->y.sub.regReturn = ++pParse->nMem;
@@ -104189,7 +104693,7 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
pExpr->iTable = iTab;
addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pExpr->iTable, nVal);
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ if( ExprUseXSelect(pExpr) ){
VdbeComment((v, "Result of SELECT %u", pExpr->x.pSelect->selId));
}else{
VdbeComment((v, "RHS of IN operator"));
@@ -104197,7 +104701,7 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
#endif
pKeyInfo = sqlite3KeyInfoAlloc(pParse->db, nVal, 1);
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ if( ExprUseXSelect(pExpr) ){
/* Case 1: expr IN (SELECT ...)
**
** Generate code to write the results of the select into the temporary
@@ -104295,6 +104799,7 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
if( addrOnce ){
sqlite3VdbeJumpHere(v, addrOnce);
/* Subroutine return */
+ assert( ExprUseYSub(pExpr) );
sqlite3VdbeAddOp1(v, OP_Return, pExpr->y.sub.regReturn);
sqlite3VdbeChangeP1(v, pExpr->y.sub.iAddr-1, sqlite3VdbeCurrentAddr(v)-1);
sqlite3ClearTempRegCache(pParse);
@@ -104331,19 +104836,22 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(Parse *pParse, Expr *pExpr){
testcase( pExpr->op==TK_EXISTS );
testcase( pExpr->op==TK_SELECT );
assert( pExpr->op==TK_EXISTS || pExpr->op==TK_SELECT );
- assert( ExprHasProperty(pExpr, EP_xIsSelect) );
+ assert( ExprUseXSelect(pExpr) );
pSel = pExpr->x.pSelect;
/* If this routine has already been coded, then invoke it as a
** subroutine. */
if( ExprHasProperty(pExpr, EP_Subrtn) ){
ExplainQueryPlan((pParse, 0, "REUSE SUBQUERY %d", pSel->selId));
+ assert( ExprUseYSub(pExpr) );
sqlite3VdbeAddOp2(v, OP_Gosub, pExpr->y.sub.regReturn,
pExpr->y.sub.iAddr);
return pExpr->iTable;
}
/* Begin coding the subroutine */
+ assert( !ExprUseYWin(pExpr) );
+ assert( !ExprHasProperty(pExpr, EP_Reduced|EP_TokenOnly) );
ExprSetProperty(pExpr, EP_Subrtn);
pExpr->y.sub.regReturn = ++pParse->nMem;
pExpr->y.sub.iAddr =
@@ -104423,6 +104931,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(Parse *pParse, Expr *pExpr){
}
/* Subroutine return */
+ assert( ExprUseYSub(pExpr) );
sqlite3VdbeAddOp1(v, OP_Return, pExpr->y.sub.regReturn);
sqlite3VdbeChangeP1(v, pExpr->y.sub.iAddr-1, sqlite3VdbeCurrentAddr(v)-1);
sqlite3ClearTempRegCache(pParse);
@@ -104439,7 +104948,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(Parse *pParse, Expr *pExpr){
*/
SQLITE_PRIVATE int sqlite3ExprCheckIN(Parse *pParse, Expr *pIn){
int nVector = sqlite3ExprVectorSize(pIn->pLeft);
- if( (pIn->flags & EP_xIsSelect)!=0 && !pParse->db->mallocFailed ){
+ if( ExprUseXSelect(pIn) && !pParse->db->mallocFailed ){
if( nVector!=pIn->x.pSelect->pEList->nExpr ){
sqlite3SubselectError(pParse, pIn->x.pSelect->pEList->nExpr, nVector);
return 1;
@@ -104573,13 +105082,15 @@ static void sqlite3ExprCodeIN(
** This is step (1) in the in-operator.md optimized algorithm.
*/
if( eType==IN_INDEX_NOOP ){
- ExprList *pList = pExpr->x.pList;
- CollSeq *pColl = sqlite3ExprCollSeq(pParse, pExpr->pLeft);
+ ExprList *pList;
+ CollSeq *pColl;
int labelOk = sqlite3VdbeMakeLabel(pParse);
int r2, regToFree;
int regCkNull = 0;
int ii;
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
+ assert( ExprUseXList(pExpr) );
+ pList = pExpr->x.pList;
+ pColl = sqlite3ExprCollSeq(pParse, pExpr->pLeft);
if( destIfNull!=destIfFalse ){
regCkNull = sqlite3GetTempReg(pParse);
sqlite3VdbeAddOp3(v, OP_BitAnd, rLhs, rLhs, regCkNull);
@@ -104816,9 +105327,10 @@ SQLITE_PRIVATE void sqlite3ExprCodeLoadIndexColumn(
** and store the result in register regOut
*/
SQLITE_PRIVATE void sqlite3ExprCodeGeneratedColumn(
- Parse *pParse,
- Column *pCol,
- int regOut
+ Parse *pParse, /* Parsing context */
+ Table *pTab, /* Table containing the generated column */
+ Column *pCol, /* The generated column */
+ int regOut /* Put the result in this register */
){
int iAddr;
Vdbe *v = pParse->pVdbe;
@@ -104829,7 +105341,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeGeneratedColumn(
}else{
iAddr = 0;
}
- sqlite3ExprCodeCopy(pParse, pCol->pDflt, regOut);
+ sqlite3ExprCodeCopy(pParse, sqlite3ColumnExpr(pTab,pCol), regOut);
if( pCol->affinity>=SQLITE_AFF_TEXT ){
sqlite3VdbeAddOp4(v, OP_Affinity, regOut, 1, 0, &pCol->affinity, 1);
}
@@ -104865,12 +105377,13 @@ SQLITE_PRIVATE void sqlite3ExprCodeGetColumnOfTable(
}else if( (pCol = &pTab->aCol[iCol])->colFlags & COLFLAG_VIRTUAL ){
Parse *pParse = sqlite3VdbeParser(v);
if( pCol->colFlags & COLFLAG_BUSY ){
- sqlite3ErrorMsg(pParse, "generated column loop on \"%s\"", pCol->zName);
+ sqlite3ErrorMsg(pParse, "generated column loop on \"%s\"",
+ pCol->zCnName);
}else{
int savedSelfTab = pParse->iSelfTab;
pCol->colFlags |= COLFLAG_BUSY;
pParse->iSelfTab = iTabCur+1;
- sqlite3ExprCodeGeneratedColumn(pParse, pCol, regOut);
+ sqlite3ExprCodeGeneratedColumn(pParse, pTab, pCol, regOut);
pParse->iSelfTab = savedSelfTab;
pCol->colFlags &= ~COLFLAG_BUSY;
}
@@ -104963,6 +105476,7 @@ static int exprCodeVector(Parse *pParse, Expr *p, int *piFreeable){
int i;
iResult = pParse->nMem+1;
pParse->nMem += nResult;
+ assert( ExprUseXList(p) );
for(i=0; i<nResult; i++){
sqlite3ExprCodeFactorable(pParse, p->x.pList->a[i].pExpr, i+iResult);
}
@@ -105037,6 +105551,7 @@ static int exprCodeInlineFunction(
** Test-only SQL functions that are only usable if enabled
** via SQLITE_TESTCTRL_INTERNAL_FUNCTIONS
*/
+#if !defined(SQLITE_UNTESTABLE)
case INLINEFUNC_expr_compare: {
/* Compare two expressions using sqlite3ExprCompare() */
assert( nFarg==2 );
@@ -105070,7 +105585,6 @@ static int exprCodeInlineFunction(
break;
}
-#ifdef SQLITE_DEBUG
case INLINEFUNC_affinity: {
/* The AFFINITY() function evaluates to a string that describes
** the type affinity of the argument. This is used for testing of
@@ -105084,7 +105598,7 @@ static int exprCodeInlineFunction(
(aff<=SQLITE_AFF_NONE) ? "none" : azAff[aff-SQLITE_AFF_BLOB]);
break;
}
-#endif
+#endif /* !defined(SQLITE_UNTESTABLE) */
}
return target;
}
@@ -105138,7 +105652,8 @@ expr_code_doover:
if( pCol->iColumn<0 ){
VdbeComment((v,"%s.rowid",pTab->zName));
}else{
- VdbeComment((v,"%s.%s",pTab->zName,pTab->aCol[pCol->iColumn].zName));
+ VdbeComment((v,"%s.%s",
+ pTab->zName, pTab->aCol[pCol->iColumn].zCnName));
if( pTab->aCol[pCol->iColumn].affinity==SQLITE_AFF_REAL ){
sqlite3VdbeAddOp1(v, OP_RealAffinity, target);
}
@@ -105160,6 +105675,7 @@ expr_code_doover:
*/
int aff;
iReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft,target);
+ assert( ExprUseYTab(pExpr) );
if( pExpr->y.pTab ){
aff = sqlite3TableColumnAffinity(pExpr->y.pTab, pExpr->iColumn);
}else{
@@ -105183,9 +105699,11 @@ expr_code_doover:
** immediately prior to the first column.
*/
Column *pCol;
- Table *pTab = pExpr->y.pTab;
+ Table *pTab;
int iSrc;
int iCol = pExpr->iColumn;
+ assert( ExprUseYTab(pExpr) );
+ pTab = pExpr->y.pTab;
assert( pTab!=0 );
assert( iCol>=XN_ROWID );
assert( iCol<pTab->nCol );
@@ -105199,12 +105717,12 @@ expr_code_doover:
if( pCol->colFlags & COLFLAG_GENERATED ){
if( pCol->colFlags & COLFLAG_BUSY ){
sqlite3ErrorMsg(pParse, "generated column loop on \"%s\"",
- pCol->zName);
+ pCol->zCnName);
return 0;
}
pCol->colFlags |= COLFLAG_BUSY;
if( pCol->colFlags & COLFLAG_NOTAVAIL ){
- sqlite3ExprCodeGeneratedColumn(pParse, pCol, iSrc);
+ sqlite3ExprCodeGeneratedColumn(pParse, pTab, pCol, iSrc);
}
pCol->colFlags &= ~(COLFLAG_BUSY|COLFLAG_NOTAVAIL);
return iSrc;
@@ -105223,6 +105741,7 @@ expr_code_doover:
iTab = pParse->iSelfTab - 1;
}
}
+ assert( ExprUseYTab(pExpr) );
iReg = sqlite3ExprCodeGetColumn(pParse, pExpr->y.pTab,
pExpr->iColumn, iTab, target,
pExpr->op2);
@@ -105300,6 +105819,7 @@ expr_code_doover:
sqlite3VdbeAddOp2(v, OP_SCopy, inReg, target);
inReg = target;
}
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
sqlite3VdbeAddOp2(v, OP_Cast, target,
sqlite3AffinityType(pExpr->u.zToken, 0));
return inReg;
@@ -105467,8 +105987,8 @@ expr_code_doover:
** multiple times if we know they always give the same result */
return sqlite3ExprCodeRunJustOnce(pParse, pExpr, -1);
}
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
assert( !ExprHasProperty(pExpr, EP_TokenOnly) );
+ assert( ExprUseXList(pExpr) );
pFarg = pExpr->x.pList;
nFarg = pFarg ? pFarg->nExpr : 0;
assert( !ExprHasProperty(pExpr, EP_IntValue) );
@@ -105557,7 +106077,7 @@ expr_code_doover:
sqlite3VdbeAddOp4(v, OP_CollSeq, 0, 0, 0, (char *)pColl, P4_COLLSEQ);
}
#ifdef SQLITE_ENABLE_OFFSET_SQL_FUNC
- if( pDef->funcFlags & SQLITE_FUNC_OFFSET ){
+ if( (pDef->funcFlags & SQLITE_FUNC_OFFSET)!=0 && ALWAYS(pFarg!=0) ){
Expr *pArg = pFarg->a[0].pExpr;
if( pArg->op==TK_COLUMN ){
sqlite3VdbeAddOp3(v, OP_Offset, pArg->iTable, pArg->iColumn, target);
@@ -105587,7 +106107,10 @@ expr_code_doover:
testcase( op==TK_SELECT );
if( pParse->db->mallocFailed ){
return 0;
- }else if( op==TK_SELECT && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1 ){
+ }else if( op==TK_SELECT
+ && ALWAYS( ExprUseXSelect(pExpr) )
+ && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1
+ ){
sqlite3SubselectError(pParse, nCol, 1);
}else{
return sqlite3CodeSubselect(pParse, pExpr);
@@ -105599,11 +106122,9 @@ expr_code_doover:
if( pExpr->pLeft->iTable==0 ){
pExpr->pLeft->iTable = sqlite3CodeSubselect(pParse, pExpr->pLeft);
}
- assert( pExpr->iTable==0 || pExpr->pLeft->op==TK_SELECT
- || pExpr->pLeft->op==TK_ERROR );
- if( pExpr->iTable!=0
- && pExpr->iTable!=(n = sqlite3ExprVectorSize(pExpr->pLeft))
- ){
+ assert( pExpr->pLeft->op==TK_SELECT || pExpr->pLeft->op==TK_ERROR );
+ n = sqlite3ExprVectorSize(pExpr->pLeft);
+ if( pExpr->iTable!=n ){
sqlite3ErrorMsg(pParse, "%d columns assigned %d values",
pExpr->iTable, n);
}
@@ -105671,9 +106192,14 @@ expr_code_doover:
** p1==1 -> old.a p1==4 -> new.a
** p1==2 -> old.b p1==5 -> new.b
*/
- Table *pTab = pExpr->y.pTab;
- int iCol = pExpr->iColumn;
- int p1 = pExpr->iTable * (pTab->nCol+1) + 1
+ Table *pTab;
+ int iCol;
+ int p1;
+
+ assert( ExprUseYTab(pExpr) );
+ pTab = pExpr->y.pTab;
+ iCol = pExpr->iColumn;
+ p1 = pExpr->iTable * (pTab->nCol+1) + 1
+ sqlite3TableColumnToStorage(pTab, iCol);
assert( pExpr->iTable==0 || pExpr->iTable==1 );
@@ -105684,7 +106210,7 @@ expr_code_doover:
sqlite3VdbeAddOp2(v, OP_Param, p1, target);
VdbeComment((v, "r[%d]=%s.%s", target,
(pExpr->iTable ? "new" : "old"),
- (pExpr->iColumn<0 ? "rowid" : pExpr->y.pTab->aCol[iCol].zName)
+ (pExpr->iColumn<0 ? "rowid" : pExpr->y.pTab->aCol[iCol].zCnName)
));
#ifndef SQLITE_OMIT_FLOATING_POINT
@@ -105761,7 +106287,7 @@ expr_code_doover:
Expr *pDel = 0;
sqlite3 *db = pParse->db;
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) && pExpr->x.pList );
+ assert( ExprUseXList(pExpr) && pExpr->x.pList!=0 );
assert(pExpr->x.pList->nExpr > 0);
pEList = pExpr->x.pList;
aListelem = pEList->a;
@@ -105958,7 +106484,7 @@ SQLITE_PRIVATE void sqlite3ExprCode(Parse *pParse, Expr *pExpr, int target){
inReg = sqlite3ExprCodeTarget(pParse, pExpr, target);
if( inReg!=target ){
u8 op;
- if( ExprHasProperty(pExpr,EP_Subquery) ){
+ if( ALWAYS(pExpr) && ExprHasProperty(pExpr,EP_Subquery) ){
op = OP_Copy;
}else{
op = OP_SCopy;
@@ -106106,7 +106632,7 @@ static void exprCodeBetween(
memset(&compRight, 0, sizeof(Expr));
memset(&exprAnd, 0, sizeof(Expr));
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
+ assert( ExprUseXList(pExpr) );
pDel = sqlite3ExprDup(db, pExpr->pLeft, 0);
if( db->mallocFailed==0 ){
exprAnd.op = TK_AND;
@@ -106496,7 +107022,11 @@ SQLITE_PRIVATE void sqlite3ExprIfFalseDup(Parse *pParse, Expr *pExpr, int dest,i
** Otherwise, if the values are not the same or if pExpr is not a simple
** SQL value, zero is returned.
*/
-static int exprCompareVariable(Parse *pParse, Expr *pVar, Expr *pExpr){
+static int exprCompareVariable(
+ const Parse *pParse,
+ const Expr *pVar,
+ const Expr *pExpr
+){
int res = 0;
int iVar;
sqlite3_value *pL, *pR = 0;
@@ -106548,7 +107078,12 @@ static int exprCompareVariable(Parse *pParse, Expr *pVar, Expr *pExpr){
** Argument pParse should normally be NULL. If it is not NULL and pA or
** pB causes a return value of 2.
*/
-SQLITE_PRIVATE int sqlite3ExprCompare(Parse *pParse, Expr *pA, Expr *pB, int iTab){
+SQLITE_PRIVATE int sqlite3ExprCompare(
+ const Parse *pParse,
+ const Expr *pA,
+ const Expr *pB,
+ int iTab
+){
u32 combinedFlags;
if( pA==0 || pB==0 ){
return pB==pA ? 0 : 2;
@@ -106572,7 +107107,9 @@ SQLITE_PRIVATE int sqlite3ExprCompare(Parse *pParse, Expr *pA, Expr *pB, int iTa
}
return 2;
}
- if( pA->op!=TK_COLUMN && pA->op!=TK_AGG_COLUMN && pA->u.zToken ){
+ assert( !ExprHasProperty(pA, EP_IntValue) );
+ assert( !ExprHasProperty(pB, EP_IntValue) );
+ if( pA->u.zToken ){
if( pA->op==TK_FUNCTION || pA->op==TK_AGG_FUNCTION ){
if( sqlite3StrICmp(pA->u.zToken,pB->u.zToken)!=0 ) return 2;
#ifndef SQLITE_OMIT_WINDOWFUNC
@@ -106590,7 +107127,12 @@ SQLITE_PRIVATE int sqlite3ExprCompare(Parse *pParse, Expr *pA, Expr *pB, int iTa
return 0;
}else if( pA->op==TK_COLLATE ){
if( sqlite3_stricmp(pA->u.zToken,pB->u.zToken)!=0 ) return 2;
- }else if( ALWAYS(pB->u.zToken!=0) && strcmp(pA->u.zToken,pB->u.zToken)!=0 ){
+ }else
+ if( pB->u.zToken!=0
+ && pA->op!=TK_COLUMN
+ && pA->op!=TK_AGG_COLUMN
+ && strcmp(pA->u.zToken,pB->u.zToken)!=0
+ ){
return 2;
}
}
@@ -106632,7 +107174,7 @@ SQLITE_PRIVATE int sqlite3ExprCompare(Parse *pParse, Expr *pA, Expr *pB, int iTa
** Two NULL pointers are considered to be the same. But a NULL pointer
** always differs from a non-NULL pointer.
*/
-SQLITE_PRIVATE int sqlite3ExprListCompare(ExprList *pA, ExprList *pB, int iTab){
+SQLITE_PRIVATE int sqlite3ExprListCompare(const ExprList *pA, const ExprList *pB, int iTab){
int i;
if( pA==0 && pB==0 ) return 0;
if( pA==0 || pB==0 ) return 1;
@@ -106651,7 +107193,7 @@ SQLITE_PRIVATE int sqlite3ExprListCompare(ExprList *pA, ExprList *pB, int iTab){
** Like sqlite3ExprCompare() except COLLATE operators at the top-level
** are ignored.
*/
-SQLITE_PRIVATE int sqlite3ExprCompareSkip(Expr *pA, Expr *pB, int iTab){
+SQLITE_PRIVATE int sqlite3ExprCompareSkip(Expr *pA,Expr *pB, int iTab){
return sqlite3ExprCompare(0,
sqlite3ExprSkipCollateAndLikely(pA),
sqlite3ExprSkipCollateAndLikely(pB),
@@ -106665,9 +107207,9 @@ SQLITE_PRIVATE int sqlite3ExprCompareSkip(Expr *pA, Expr *pB, int iTab){
** non-NULL if pNN is not NULL
*/
static int exprImpliesNotNull(
- Parse *pParse, /* Parsing context */
- Expr *p, /* The expression to be checked */
- Expr *pNN, /* The expression that is NOT NULL */
+ const Parse *pParse,/* Parsing context */
+ const Expr *p, /* The expression to be checked */
+ const Expr *pNN, /* The expression that is NOT NULL */
int iTab, /* Table being evaluated */
int seenNot /* Return true only if p can be any non-NULL value */
){
@@ -106679,12 +107221,13 @@ static int exprImpliesNotNull(
switch( p->op ){
case TK_IN: {
if( seenNot && ExprHasProperty(p, EP_xIsSelect) ) return 0;
- assert( ExprHasProperty(p,EP_xIsSelect)
- || (p->x.pList!=0 && p->x.pList->nExpr>0) );
+ assert( ExprUseXSelect(p) || (p->x.pList!=0 && p->x.pList->nExpr>0) );
return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1);
}
case TK_BETWEEN: {
- ExprList *pList = p->x.pList;
+ ExprList *pList;
+ assert( ExprUseXList(p) );
+ pList = p->x.pList;
assert( pList!=0 );
assert( pList->nExpr==2 );
if( seenNot ) return 0;
@@ -106760,7 +107303,12 @@ static int exprImpliesNotNull(
** improvement. Returning false might cause a performance reduction, but
** it will always give the correct answer and is hence always safe.
*/
-SQLITE_PRIVATE int sqlite3ExprImpliesExpr(Parse *pParse, Expr *pE1, Expr *pE2, int iTab){
+SQLITE_PRIVATE int sqlite3ExprImpliesExpr(
+ const Parse *pParse,
+ const Expr *pE1,
+ const Expr *pE2,
+ int iTab
+){
if( sqlite3ExprCompare(pParse, pE1, pE2, iTab)==0 ){
return 1;
}
@@ -106856,10 +107404,14 @@ static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
testcase( pExpr->op==TK_GE );
/* The y.pTab=0 assignment in wherecode.c always happens after the
** impliesNotNullRow() test */
- if( (pLeft->op==TK_COLUMN && ALWAYS(pLeft->y.pTab!=0)
- && IsVirtual(pLeft->y.pTab))
- || (pRight->op==TK_COLUMN && ALWAYS(pRight->y.pTab!=0)
- && IsVirtual(pRight->y.pTab))
+ assert( pLeft->op!=TK_COLUMN || ExprUseYTab(pLeft) );
+ assert( pRight->op!=TK_COLUMN || ExprUseYTab(pRight) );
+ if( (pLeft->op==TK_COLUMN
+ && pLeft->y.pTab!=0
+ && IsVirtual(pLeft->y.pTab))
+ || (pRight->op==TK_COLUMN
+ && pRight->y.pTab!=0
+ && IsVirtual(pRight->y.pTab))
){
return WRC_Prune;
}
@@ -106968,88 +107520,125 @@ SQLITE_PRIVATE int sqlite3ExprCoveredByIndex(
}
-/*
-** An instance of the following structure is used by the tree walker
-** to count references to table columns in the arguments of an
-** aggregate function, in order to implement the
-** sqlite3FunctionThisSrc() routine.
-*/
-struct SrcCount {
- SrcList *pSrc; /* One particular FROM clause in a nested query */
- int iSrcInner; /* Smallest cursor number in this context */
- int nThis; /* Number of references to columns in pSrcList */
- int nOther; /* Number of references to columns in other FROM clauses */
+/* Structure used to pass information throught the Walker in order to
+** implement sqlite3ReferencesSrcList().
+*/
+struct RefSrcList {
+ sqlite3 *db; /* Database connection used for sqlite3DbRealloc() */
+ SrcList *pRef; /* Looking for references to these tables */
+ i64 nExclude; /* Number of tables to exclude from the search */
+ int *aiExclude; /* Cursor IDs for tables to exclude from the search */
};
/*
-** xSelect callback for sqlite3FunctionUsesThisSrc(). If this is the first
-** SELECT with a FROM clause encountered during this iteration, set
-** SrcCount.iSrcInner to the cursor number of the leftmost object in
-** the FROM cause.
+** Walker SELECT callbacks for sqlite3ReferencesSrcList().
+**
+** When entering a new subquery on the pExpr argument, add all FROM clause
+** entries for that subquery to the exclude list.
+**
+** When leaving the subquery, remove those entries from the exclude list.
*/
-static int selectSrcCount(Walker *pWalker, Select *pSel){
- struct SrcCount *p = pWalker->u.pSrcCount;
- if( p->iSrcInner==0x7FFFFFFF && ALWAYS(pSel->pSrc) && pSel->pSrc->nSrc ){
- pWalker->u.pSrcCount->iSrcInner = pSel->pSrc->a[0].iCursor;
+static int selectRefEnter(Walker *pWalker, Select *pSelect){
+ struct RefSrcList *p = pWalker->u.pRefSrcList;
+ SrcList *pSrc = pSelect->pSrc;
+ i64 i, j;
+ int *piNew;
+ if( pSrc->nSrc==0 ) return WRC_Continue;
+ j = p->nExclude;
+ p->nExclude += pSrc->nSrc;
+ piNew = sqlite3DbRealloc(p->db, p->aiExclude, p->nExclude*sizeof(int));
+ if( piNew==0 ){
+ p->nExclude = 0;
+ return WRC_Abort;
+ }else{
+ p->aiExclude = piNew;
+ }
+ for(i=0; i<pSrc->nSrc; i++, j++){
+ p->aiExclude[j] = pSrc->a[i].iCursor;
}
return WRC_Continue;
}
+static void selectRefLeave(Walker *pWalker, Select *pSelect){
+ struct RefSrcList *p = pWalker->u.pRefSrcList;
+ SrcList *pSrc = pSelect->pSrc;
+ if( p->nExclude ){
+ assert( p->nExclude>=pSrc->nSrc );
+ p->nExclude -= pSrc->nSrc;
+ }
+}
-/*
-** Count the number of references to columns.
+/* This is the Walker EXPR callback for sqlite3ReferencesSrcList().
+**
+** Set the 0x01 bit of pWalker->eCode if there is a reference to any
+** of the tables shown in RefSrcList.pRef.
+**
+** Set the 0x02 bit of pWalker->eCode if there is a reference to a
+** table is in neither RefSrcList.pRef nor RefSrcList.aiExclude.
*/
-static int exprSrcCount(Walker *pWalker, Expr *pExpr){
- /* There was once a NEVER() on the second term on the grounds that
- ** sqlite3FunctionUsesThisSrc() was always called before
- ** sqlite3ExprAnalyzeAggregates() and so the TK_COLUMNs have not yet
- ** been converted into TK_AGG_COLUMN. But this is no longer true due
- ** to window functions - sqlite3WindowRewrite() may now indirectly call
- ** FunctionUsesThisSrc() when creating a new sub-select. */
- if( pExpr->op==TK_COLUMN || pExpr->op==TK_AGG_COLUMN ){
+static int exprRefToSrcList(Walker *pWalker, Expr *pExpr){
+ if( pExpr->op==TK_COLUMN
+ || pExpr->op==TK_AGG_COLUMN
+ ){
int i;
- struct SrcCount *p = pWalker->u.pSrcCount;
- SrcList *pSrc = p->pSrc;
+ struct RefSrcList *p = pWalker->u.pRefSrcList;
+ SrcList *pSrc = p->pRef;
int nSrc = pSrc ? pSrc->nSrc : 0;
for(i=0; i<nSrc; i++){
- if( pExpr->iTable==pSrc->a[i].iCursor ) break;
+ if( pExpr->iTable==pSrc->a[i].iCursor ){
+ pWalker->eCode |= 1;
+ return WRC_Continue;
+ }
}
- if( i<nSrc ){
- p->nThis++;
- }else if( pExpr->iTable<p->iSrcInner ){
- /* In a well-formed parse tree (no name resolution errors),
- ** TK_COLUMN nodes with smaller Expr.iTable values are in an
- ** outer context. Those are the only ones to count as "other" */
- p->nOther++;
+ for(i=0; i<p->nExclude && p->aiExclude[i]!=pExpr->iTable; i++){}
+ if( i>=p->nExclude ){
+ pWalker->eCode |= 2;
}
}
return WRC_Continue;
}
/*
-** Determine if any of the arguments to the pExpr Function reference
-** pSrcList. Return true if they do. Also return true if the function
-** has no arguments or has only constant arguments. Return false if pExpr
-** references columns but not columns of tables found in pSrcList.
+** Check to see if pExpr references any tables in pSrcList.
+** Possible return values:
+**
+** 1 pExpr does references a table in pSrcList.
+**
+** 0 pExpr references some table that is not defined in either
+** pSrcList or in subqueries of pExpr itself.
+**
+** -1 pExpr only references no tables at all, or it only
+** references tables defined in subqueries of pExpr itself.
+**
+** As currently used, pExpr is always an aggregate function call. That
+** fact is exploited for efficiency.
*/
-SQLITE_PRIVATE int sqlite3FunctionUsesThisSrc(Expr *pExpr, SrcList *pSrcList){
+SQLITE_PRIVATE int sqlite3ReferencesSrcList(Parse *pParse, Expr *pExpr, SrcList *pSrcList){
Walker w;
- struct SrcCount cnt;
- assert( pExpr->op==TK_AGG_FUNCTION );
+ struct RefSrcList x;
memset(&w, 0, sizeof(w));
- w.xExprCallback = exprSrcCount;
- w.xSelectCallback = selectSrcCount;
- w.u.pSrcCount = &cnt;
- cnt.pSrc = pSrcList;
- cnt.iSrcInner = (pSrcList&&pSrcList->nSrc)?pSrcList->a[0].iCursor:0x7FFFFFFF;
- cnt.nThis = 0;
- cnt.nOther = 0;
+ memset(&x, 0, sizeof(x));
+ w.xExprCallback = exprRefToSrcList;
+ w.xSelectCallback = selectRefEnter;
+ w.xSelectCallback2 = selectRefLeave;
+ w.u.pRefSrcList = &x;
+ x.db = pParse->db;
+ x.pRef = pSrcList;
+ assert( pExpr->op==TK_AGG_FUNCTION );
+ assert( ExprUseXList(pExpr) );
sqlite3WalkExprList(&w, pExpr->x.pList);
#ifndef SQLITE_OMIT_WINDOWFUNC
if( ExprHasProperty(pExpr, EP_WinFunc) ){
sqlite3WalkExpr(&w, pExpr->y.pWin->pFilter);
}
#endif
- return cnt.nThis>0 || cnt.nOther==0;
+ sqlite3DbFree(pParse->db, x.aiExclude);
+ if( w.eCode & 0x01 ){
+ return 1;
+ }else if( w.eCode ){
+ return 0;
+ }else{
+ return -1;
+ }
}
/*
@@ -107184,6 +107773,7 @@ static int analyzeAggregate(Walker *pWalker, Expr *pExpr){
&& (k = addAggInfoColumn(pParse->db, pAggInfo))>=0
){
pCol = &pAggInfo->aCol[k];
+ assert( ExprUseYTab(pExpr) );
pCol->pTab = pExpr->y.pTab;
pCol->iTable = pExpr->iTable;
pCol->iColumn = pExpr->iColumn;
@@ -107247,7 +107837,7 @@ static int analyzeAggregate(Walker *pWalker, Expr *pExpr){
pItem = &pAggInfo->aFunc[i];
pItem->pFExpr = pExpr;
pItem->iMem = ++pParse->nMem;
- assert( !ExprHasProperty(pExpr, EP_IntValue) );
+ assert( ExprUseUToken(pExpr) );
pItem->pFunc = sqlite3FindFunction(pParse->db,
pExpr->u.zToken,
pExpr->x.pList ? pExpr->x.pList->nExpr : 0, enc, 0);
@@ -107462,7 +108052,7 @@ static void renameTestSchema(
pParse->colNamesSet = 1;
sqlite3NestedParse(pParse,
"SELECT 1 "
- "FROM \"%w\"." DFLT_SCHEMA_TABLE " "
+ "FROM \"%w\"." LEGACY_SCHEMA_TABLE " "
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
" AND sql NOT LIKE 'create virtual%%'"
" AND sqlite_rename_test(%Q, sql, type, name, %d, %Q, %d)=NULL ",
@@ -107473,7 +108063,7 @@ static void renameTestSchema(
if( bTemp==0 ){
sqlite3NestedParse(pParse,
"SELECT 1 "
- "FROM temp." DFLT_SCHEMA_TABLE " "
+ "FROM temp." LEGACY_SCHEMA_TABLE " "
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
" AND sql NOT LIKE 'create virtual%%'"
" AND sqlite_rename_test(%Q, sql, type, name, 1, %Q, %d)=NULL ",
@@ -107491,14 +108081,14 @@ static void renameTestSchema(
*/
static void renameFixQuotes(Parse *pParse, const char *zDb, int bTemp){
sqlite3NestedParse(pParse,
- "UPDATE \"%w\"." DFLT_SCHEMA_TABLE
+ "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE
" SET sql = sqlite_rename_quotefix(%Q, sql)"
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
" AND sql NOT LIKE 'create virtual%%'" , zDb, zDb
);
if( bTemp==0 ){
sqlite3NestedParse(pParse,
- "UPDATE temp." DFLT_SCHEMA_TABLE
+ "UPDATE temp." LEGACY_SCHEMA_TABLE
" SET sql = sqlite_rename_quotefix('temp', sql)"
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
" AND sql NOT LIKE 'create virtual%%'"
@@ -107537,9 +108127,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
const char *zTabName; /* Original name of the table */
Vdbe *v;
VTable *pVTab = 0; /* Non-zero if this is a v-tab with an xRename() */
- u32 savedDbFlags; /* Saved value of db->mDbFlags */
- savedDbFlags = db->mDbFlags;
if( NEVER(db->mallocFailed) ) goto exit_rename_table;
assert( pSrc->nSrc==1 );
assert( sqlite3BtreeHoldsAllMutexes(pParse->db) );
@@ -107548,7 +108136,6 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
if( !pTab ) goto exit_rename_table;
iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
zDb = db->aDb[iDb].zDbSName;
- db->mDbFlags |= DBFLAG_PreferBuiltin;
/* Get a NULL terminated version of the new table name. */
zName = sqlite3NameFromToken(db, pName);
@@ -107577,7 +108164,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
}
#ifndef SQLITE_OMIT_VIEW
- if( pTab->pSelect ){
+ if( IsView(pTab) ){
sqlite3ErrorMsg(pParse, "view %s may not be altered", pTab->zName);
goto exit_rename_table;
}
@@ -107619,7 +108206,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
/* Rewrite all CREATE TABLE, INDEX, TRIGGER or VIEW statements in
** the schema to use the new table name. */
sqlite3NestedParse(pParse,
- "UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET "
+ "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
"sql = sqlite_rename_table(%Q, type, name, sql, %Q, %Q, %d) "
"WHERE (type!='index' OR tbl_name=%Q COLLATE nocase)"
"AND name NOT LIKE 'sqliteX_%%' ESCAPE 'X'"
@@ -107629,7 +108216,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
/* Update the tbl_name and name columns of the sqlite_schema table
** as required. */
sqlite3NestedParse(pParse,
- "UPDATE %Q." DFLT_SCHEMA_TABLE " SET "
+ "UPDATE %Q." LEGACY_SCHEMA_TABLE " SET "
"tbl_name = %Q, "
"name = CASE "
"WHEN type='table' THEN %Q "
@@ -107689,7 +108276,6 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
exit_rename_table:
sqlite3SrcListDelete(db, pSrc);
sqlite3DbFree(db, zName);
- db->mDbFlags = savedDbFlags;
}
/*
@@ -107739,7 +108325,7 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
zDb = db->aDb[iDb].zDbSName;
zTab = &pNew->zName[16]; /* Skip the "sqlite_altertab_" prefix on the name */
pCol = &pNew->aCol[pNew->nCol-1];
- pDflt = pCol->pDflt;
+ pDflt = sqlite3ColumnExpr(pNew, pCol);
pTab = sqlite3FindTable(db, zTab, zDb);
assert( pTab );
@@ -107773,7 +108359,8 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
if( pDflt && pDflt->pLeft->op==TK_NULL ){
pDflt = 0;
}
- if( (db->flags&SQLITE_ForeignKeys) && pNew->pFKey && pDflt ){
+ assert( IsOrdinaryTable(pNew) );
+ if( (db->flags&SQLITE_ForeignKeys) && pNew->u.tab.pFKey && pDflt ){
sqlite3ErrorIfNotEmpty(pParse, zDb, zTab,
"Cannot add a REFERENCES column with non-NULL default value");
}
@@ -107810,31 +108397,30 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
zCol = sqlite3DbStrNDup(db, (char*)pColDef->z, pColDef->n);
if( zCol ){
char *zEnd = &zCol[pColDef->n-1];
- u32 savedDbFlags = db->mDbFlags;
while( zEnd>zCol && (*zEnd==';' || sqlite3Isspace(*zEnd)) ){
*zEnd-- = '\0';
}
- db->mDbFlags |= DBFLAG_PreferBuiltin;
/* substr() operations on characters, but addColOffset is in bytes. So we
** have to use printf() to translate between these units: */
+ assert( IsOrdinaryTable(pTab) );
+ assert( IsOrdinaryTable(pNew) );
sqlite3NestedParse(pParse,
- "UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET "
+ "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
"sql = printf('%%.%ds, ',sql) || %Q"
" || substr(sql,1+length(printf('%%.%ds',sql))) "
"WHERE type = 'table' AND name = %Q",
- zDb, pNew->addColOffset, zCol, pNew->addColOffset,
+ zDb, pNew->u.tab.addColOffset, zCol, pNew->u.tab.addColOffset,
zTab
);
sqlite3DbFree(db, zCol);
- db->mDbFlags = savedDbFlags;
}
- /* Make sure the schema version is at least 3. But do not upgrade
- ** from less than 3 to 4, as that will corrupt any preexisting DESC
- ** index.
- */
v = sqlite3GetVdbe(pParse);
if( v ){
+ /* Make sure the schema version is at least 3. But do not upgrade
+ ** from less than 3 to 4, as that will corrupt any preexisting DESC
+ ** index.
+ */
r1 = sqlite3GetTempReg(pParse);
sqlite3VdbeAddOp3(v, OP_ReadCookie, iDb, r1, BTREE_FILE_FORMAT);
sqlite3VdbeUsesBtree(v, iDb);
@@ -107843,10 +108429,25 @@ SQLITE_PRIVATE void sqlite3AlterFinishAddColumn(Parse *pParse, Token *pColDef){
VdbeCoverage(v);
sqlite3VdbeAddOp3(v, OP_SetCookie, iDb, BTREE_FILE_FORMAT, 3);
sqlite3ReleaseTempReg(pParse, r1);
- }
- /* Reload the table definition */
- renameReloadSchema(pParse, iDb, INITFLAG_AlterRename);
+ /* Reload the table definition */
+ renameReloadSchema(pParse, iDb, INITFLAG_AlterAdd);
+
+ /* Verify that constraints are still satisfied */
+ if( pNew->pCheck!=0
+ || (pCol->notNull && (pCol->colFlags & COLFLAG_GENERATED)!=0)
+ ){
+ sqlite3NestedParse(pParse,
+ "SELECT CASE WHEN quick_check GLOB 'CHECK*'"
+ " THEN raise(ABORT,'CHECK constraint failed')"
+ " ELSE raise(ABORT,'NOT NULL constraint failed')"
+ " END"
+ " FROM pragma_quick_check(\"%w\",\"%w\")"
+ " WHERE quick_check GLOB 'CHECK*' OR quick_check GLOB 'NULL*'",
+ zTab, zDb
+ );
+ }
+ }
}
/*
@@ -107887,7 +108488,7 @@ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
#endif
/* Make sure this is not an attempt to ALTER a view. */
- if( pTab->pSelect ){
+ if( IsView(pTab) ){
sqlite3ErrorMsg(pParse, "Cannot add a column to a view");
goto exit_begin_add_column;
}
@@ -107896,7 +108497,8 @@ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
}
sqlite3MayAbort(pParse);
- assert( pTab->addColOffset>0 );
+ assert( IsOrdinaryTable(pTab) );
+ assert( pTab->u.tab.addColOffset>0 );
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
/* Put a copy of the Table struct in Parse.pNewTable for the
@@ -107923,13 +108525,13 @@ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
memcpy(pNew->aCol, pTab->aCol, sizeof(Column)*pNew->nCol);
for(i=0; i<pNew->nCol; i++){
Column *pCol = &pNew->aCol[i];
- pCol->zName = sqlite3DbStrDup(db, pCol->zName);
- pCol->hName = sqlite3StrIHash(pCol->zName);
- pCol->zColl = 0;
- pCol->pDflt = 0;
+ pCol->zCnName = sqlite3DbStrDup(db, pCol->zCnName);
+ pCol->hName = sqlite3StrIHash(pCol->zCnName);
}
+ assert( IsOrdinaryTable(pNew) );
+ pNew->u.tab.pDfltList = sqlite3ExprListDup(db, pTab->u.tab.pDfltList, 0);
pNew->pSchema = db->aDb[iDb].pSchema;
- pNew->addColOffset = pTab->addColOffset;
+ pNew->u.tab.addColOffset = pTab->u.tab.addColOffset;
pNew->nTabRef = 1;
exit_begin_add_column:
@@ -107949,7 +108551,7 @@ exit_begin_add_column:
static int isRealTable(Parse *pParse, Table *pTab, int bDrop){
const char *zType = 0;
#ifndef SQLITE_OMIT_VIEW
- if( pTab->pSelect ){
+ if( IsView(pTab) ){
zType = "view";
}
#endif
@@ -108016,7 +108618,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameColumn(
zOld = sqlite3NameFromToken(db, pOld);
if( !zOld ) goto exit_rename_column;
for(iCol=0; iCol<pTab->nCol; iCol++){
- if( 0==sqlite3StrICmp(pTab->aCol[iCol].zName, zOld) ) break;
+ if( 0==sqlite3StrICmp(pTab->aCol[iCol].zCnName, zOld) ) break;
}
if( iCol==pTab->nCol ){
sqlite3ErrorMsg(pParse, "no such column: \"%s\"", zOld);
@@ -108037,18 +108639,17 @@ SQLITE_PRIVATE void sqlite3AlterRenameColumn(
assert( pNew->n>0 );
bQuote = sqlite3Isquote(pNew->z[0]);
sqlite3NestedParse(pParse,
- "UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET "
+ "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
"sql = sqlite_rename_column(sql, type, name, %Q, %Q, %d, %Q, %d, %d) "
"WHERE name NOT LIKE 'sqliteX_%%' ESCAPE 'X' "
- " AND (type != 'index' OR tbl_name = %Q)"
- " AND sql NOT LIKE 'create virtual%%'",
+ " AND (type != 'index' OR tbl_name = %Q)",
zDb,
zDb, pTab->zName, iCol, zNew, bQuote, iSchema==1,
pTab->zName
);
sqlite3NestedParse(pParse,
- "UPDATE temp." DFLT_SCHEMA_TABLE " SET "
+ "UPDATE temp." LEGACY_SCHEMA_TABLE " SET "
"sql = sqlite_rename_column(sql, type, name, %Q, %Q, %d, %Q, %d, 1) "
"WHERE type IN ('trigger', 'view')",
zDb, pTab->zName, iCol, zNew, bQuote
@@ -108083,7 +108684,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameColumn(
** the parse tree.
*/
struct RenameToken {
- void *p; /* Parse tree element created by token t */
+ const void *p; /* Parse tree element created by token t */
Token t; /* The token that created parse tree element p */
RenameToken *pNext; /* Next is a list of all RenameToken objects */
};
@@ -108125,9 +108726,9 @@ struct RenameCtx {
** Technically, as x no longer points into a valid object or to the byte
** following a valid object, it may not be used in comparison operations.
*/
-static void renameTokenCheckAll(Parse *pParse, void *pPtr){
+static void renameTokenCheckAll(Parse *pParse, const void *pPtr){
if( pParse->nErr==0 && pParse->db->mallocFailed==0 ){
- RenameToken *p;
+ const RenameToken *p;
u8 i = 0;
for(p=pParse->pRename; p; p=p->pNext){
if( p->p ){
@@ -108153,7 +108754,11 @@ static void renameTokenCheckAll(Parse *pParse, void *pPtr){
** with tail recursion in tokenExpr() routine, for a small performance
** improvement.
*/
-SQLITE_PRIVATE void *sqlite3RenameTokenMap(Parse *pParse, void *pPtr, Token *pToken){
+SQLITE_PRIVATE const void *sqlite3RenameTokenMap(
+ Parse *pParse,
+ const void *pPtr,
+ const Token *pToken
+){
RenameToken *pNew;
assert( pPtr || pParse->db->mallocFailed );
renameTokenCheckAll(pParse, pPtr);
@@ -108175,7 +108780,7 @@ SQLITE_PRIVATE void *sqlite3RenameTokenMap(Parse *pParse, void *pPtr, Token *pTo
** with parse tree element pFrom. This function remaps the associated token
** to parse tree element pTo.
*/
-SQLITE_PRIVATE void sqlite3RenameTokenRemap(Parse *pParse, void *pTo, void *pFrom){
+SQLITE_PRIVATE void sqlite3RenameTokenRemap(Parse *pParse, const void *pTo, const void *pFrom){
RenameToken *p;
renameTokenCheckAll(pParse, pTo);
for(p=pParse->pRename; p; p=p->pNext){
@@ -108191,7 +108796,10 @@ SQLITE_PRIVATE void sqlite3RenameTokenRemap(Parse *pParse, void *pTo, void *pFro
*/
static int renameUnmapExprCb(Walker *pWalker, Expr *pExpr){
Parse *pParse = pWalker->pParse;
- sqlite3RenameTokenRemap(pParse, 0, (void*)pExpr);
+ sqlite3RenameTokenRemap(pParse, 0, (const void*)pExpr);
+ if( ExprUseYTab(pExpr) ){
+ sqlite3RenameTokenRemap(pParse, 0, (const void*)&pExpr->y.pTab);
+ }
return WRC_Continue;
}
@@ -108221,6 +108829,7 @@ static void renameWalkWith(Walker *pWalker, Select *pSelect){
memset(&sNC, 0, sizeof(sNC));
sNC.pParse = pParse;
if( pCopy ) sqlite3SelectPrep(sNC.pParse, p, &sNC);
+ if( sNC.pParse->db->mallocFailed ) return;
sqlite3WalkSelect(pWalker, p);
sqlite3RenameExprlistUnmap(pParse, pWith->a[i].pCols);
}
@@ -108235,12 +108844,12 @@ static void renameWalkWith(Walker *pWalker, Select *pSelect){
*/
static void unmapColumnIdlistNames(
Parse *pParse,
- IdList *pIdList
+ const IdList *pIdList
){
if( pIdList ){
int ii;
for(ii=0; ii<pIdList->nId; ii++){
- sqlite3RenameTokenRemap(pParse, 0, (void*)pIdList->a[ii].zName);
+ sqlite3RenameTokenRemap(pParse, 0, (const void*)pIdList->a[ii].zName);
}
}
}
@@ -108252,9 +108861,9 @@ static int renameUnmapSelectCb(Walker *pWalker, Select *p){
Parse *pParse = pWalker->pParse;
int i;
if( pParse->nErr ) return WRC_Abort;
+ testcase( p->selFlags & SF_View );
+ testcase( p->selFlags & SF_CopyCte );
if( p->selFlags & (SF_View|SF_CopyCte) ){
- testcase( p->selFlags & SF_View );
- testcase( p->selFlags & SF_CopyCte );
return WRC_Prune;
}
if( ALWAYS(p->pEList) ){
@@ -108269,7 +108878,7 @@ static int renameUnmapSelectCb(Walker *pWalker, Select *p){
SrcList *pSrc = p->pSrc;
for(i=0; i<pSrc->nSrc; i++){
sqlite3RenameTokenRemap(pParse, 0, (void*)pSrc->a[i].zName);
- if( sqlite3WalkExpr(pWalker, pSrc->a[i].pOn) ) return WRC_Abort;
+ sqlite3WalkExpr(pWalker, pSrc->a[i].pOn);
unmapColumnIdlistNames(pParse, pSrc->a[i].pUsing);
}
}
@@ -108337,7 +108946,7 @@ static void renameTokenFree(sqlite3 *db, RenameToken *pToken){
static RenameToken *renameTokenFind(
Parse *pParse,
struct RenameCtx *pCtx,
- void *pPtr
+ const void *pPtr
){
RenameToken **pp;
if( NEVER(pPtr==0) ){
@@ -108391,6 +109000,7 @@ static int renameColumnExprCb(Walker *pWalker, Expr *pExpr){
renameTokenFind(pWalker->pParse, p, (void*)pExpr);
}else if( pExpr->op==TK_COLUMN
&& pExpr->iColumn==p->iCol
+ && ALWAYS(ExprUseYTab(pExpr))
&& p->pTab==pExpr->y.pTab
){
renameTokenFind(pWalker->pParse, p, (void*)pExpr);
@@ -108456,18 +109066,18 @@ static void renameColumnParseError(
static void renameColumnElistNames(
Parse *pParse,
RenameCtx *pCtx,
- ExprList *pEList,
+ const ExprList *pEList,
const char *zOld
){
if( pEList ){
int i;
for(i=0; i<pEList->nExpr; i++){
- char *zName = pEList->a[i].zEName;
+ const char *zName = pEList->a[i].zEName;
if( ALWAYS(pEList->a[i].eEName==ENAME_NAME)
&& ALWAYS(zName!=0)
&& 0==sqlite3_stricmp(zName, zOld)
){
- renameTokenFind(pParse, pCtx, (void*)zName);
+ renameTokenFind(pParse, pCtx, (const void*)zName);
}
}
}
@@ -108481,15 +109091,15 @@ static void renameColumnElistNames(
static void renameColumnIdlistNames(
Parse *pParse,
RenameCtx *pCtx,
- IdList *pIdList,
+ const IdList *pIdList,
const char *zOld
){
if( pIdList ){
int i;
for(i=0; i<pIdList->nId; i++){
- char *zName = pIdList->a[i].zName;
+ const char *zName = pIdList->a[i].zName;
if( 0==sqlite3_stricmp(zName, zOld) ){
- renameTokenFind(pParse, pCtx, (void*)zName);
+ renameTokenFind(pParse, pCtx, (const void*)zName);
}
}
}
@@ -108715,6 +109325,9 @@ static int renameResolveTrigger(Parse *pParse){
}
}
}
+ if( rc==SQLITE_OK && db->mallocFailed ){
+ rc = SQLITE_NOMEM;
+ }
sNC.pSrcList = pSrc;
if( rc==SQLITE_OK && pStep->pWhere ){
rc = sqlite3ResolveExprNames(&sNC, pStep->pWhere);
@@ -108862,7 +109475,7 @@ static void renameColumnFunc(
sqlite3BtreeLeaveAll(db);
return;
}
- zOld = pTab->aCol[iCol].zName;
+ zOld = pTab->aCol[iCol].zCnName;
memset(&sCtx, 0, sizeof(sCtx));
sCtx.iCol = ((iCol==pTab->iPKey) ? -1 : iCol);
@@ -108881,8 +109494,8 @@ static void renameColumnFunc(
sCtx.pTab = pTab;
if( rc!=SQLITE_OK ) goto renameColumnFunc_done;
if( sParse.pNewTable ){
- Select *pSelect = sParse.pNewTable->pSelect;
- if( pSelect ){
+ if( IsView(sParse.pNewTable) ){
+ Select *pSelect = sParse.pNewTable->u.view.pSelect;
pSelect->selFlags &= ~SF_View;
sParse.rc = SQLITE_OK;
sqlite3SelectPrep(&sParse, pSelect, 0);
@@ -108891,16 +109504,15 @@ static void renameColumnFunc(
sqlite3WalkSelect(&sWalker, pSelect);
}
if( rc!=SQLITE_OK ) goto renameColumnFunc_done;
- }else{
+ }else if( IsOrdinaryTable(sParse.pNewTable) ){
/* A regular table */
int bFKOnly = sqlite3_stricmp(zTable, sParse.pNewTable->zName);
FKey *pFKey;
- assert( sParse.pNewTable->pSelect==0 );
sCtx.pTab = sParse.pNewTable;
if( bFKOnly==0 ){
if( iCol<sParse.pNewTable->nCol ){
renameTokenFind(
- &sParse, &sCtx, (void*)sParse.pNewTable->aCol[iCol].zName
+ &sParse, &sCtx, (void*)sParse.pNewTable->aCol[iCol].zCnName
);
}
if( sCtx.iCol<0 ){
@@ -108915,12 +109527,15 @@ static void renameColumnFunc(
}
#ifndef SQLITE_OMIT_GENERATED_COLUMNS
for(i=0; i<sParse.pNewTable->nCol; i++){
- sqlite3WalkExpr(&sWalker, sParse.pNewTable->aCol[i].pDflt);
+ Expr *pExpr = sqlite3ColumnExpr(sParse.pNewTable,
+ &sParse.pNewTable->aCol[i]);
+ sqlite3WalkExpr(&sWalker, pExpr);
}
#endif
}
- for(pFKey=sParse.pNewTable->pFKey; pFKey; pFKey=pFKey->pNextFrom){
+ assert( IsOrdinaryTable(sParse.pNewTable) );
+ for(pFKey=sParse.pNewTable->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
for(i=0; i<pFKey->nCol; i++){
if( bFKOnly==0 && pFKey->aCol[i].iFrom==iCol ){
renameTokenFind(&sParse, &sCtx, (void*)&pFKey->aCol[i]);
@@ -108991,7 +109606,10 @@ renameColumnFunc_done:
*/
static int renameTableExprCb(Walker *pWalker, Expr *pExpr){
RenameCtx *p = pWalker->u.pRename;
- if( pExpr->op==TK_COLUMN && p->pTab==pExpr->y.pTab ){
+ if( pExpr->op==TK_COLUMN
+ && ALWAYS(ExprUseYTab(pExpr))
+ && p->pTab==pExpr->y.pTab
+ ){
renameTokenFind(pWalker->pParse, p, (void*)&pExpr->y.pTab);
}
return WRC_Continue;
@@ -109086,28 +109704,31 @@ static void renameTableFunc(
if( sParse.pNewTable ){
Table *pTab = sParse.pNewTable;
- if( pTab->pSelect ){
+ if( IsView(pTab) ){
if( isLegacy==0 ){
- Select *pSelect = pTab->pSelect;
+ Select *pSelect = pTab->u.view.pSelect;
NameContext sNC;
memset(&sNC, 0, sizeof(sNC));
sNC.pParse = &sParse;
assert( pSelect->selFlags & SF_View );
pSelect->selFlags &= ~SF_View;
- sqlite3SelectPrep(&sParse, pTab->pSelect, &sNC);
+ sqlite3SelectPrep(&sParse, pTab->u.view.pSelect, &sNC);
if( sParse.nErr ){
rc = sParse.rc;
}else{
- sqlite3WalkSelect(&sWalker, pTab->pSelect);
+ sqlite3WalkSelect(&sWalker, pTab->u.view.pSelect);
}
}
}else{
/* Modify any FK definitions to point to the new table. */
#ifndef SQLITE_OMIT_FOREIGN_KEY
- if( isLegacy==0 || (db->flags & SQLITE_ForeignKeys) ){
+ if( (isLegacy==0 || (db->flags & SQLITE_ForeignKeys))
+ && !IsVirtual(pTab)
+ ){
FKey *pFKey;
- for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){
+ assert( IsOrdinaryTable(pTab) );
+ for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
if( sqlite3_stricmp(pFKey->zTo, zOld)==0 ){
renameTokenFind(&sParse, &sCtx, (void*)pFKey->zTo);
}
@@ -109184,7 +109805,7 @@ static void renameTableFunc(
static int renameQuotefixExprCb(Walker *pWalker, Expr *pExpr){
if( pExpr->op==TK_STRING && (pExpr->flags & EP_DblQuoted) ){
- renameTokenFind(pWalker->pParse, pWalker->u.pRename, (void*)pExpr);
+ renameTokenFind(pWalker->pParse, pWalker->u.pRename, (const void*)pExpr);
}
return WRC_Continue;
}
@@ -109247,8 +109868,8 @@ static void renameQuotefixFunc(
sWalker.u.pRename = &sCtx;
if( sParse.pNewTable ){
- Select *pSelect = sParse.pNewTable->pSelect;
- if( pSelect ){
+ if( IsView(sParse.pNewTable) ){
+ Select *pSelect = sParse.pNewTable->u.view.pSelect;
pSelect->selFlags &= ~SF_View;
sParse.rc = SQLITE_OK;
sqlite3SelectPrep(&sParse, pSelect, 0);
@@ -109261,7 +109882,9 @@ static void renameQuotefixFunc(
sqlite3WalkExprList(&sWalker, sParse.pNewTable->pCheck);
#ifndef SQLITE_OMIT_GENERATED_COLUMNS
for(i=0; i<sParse.pNewTable->nCol; i++){
- sqlite3WalkExpr(&sWalker, sParse.pNewTable->aCol[i].pDflt);
+ sqlite3WalkExpr(&sWalker,
+ sqlite3ColumnExpr(sParse.pNewTable,
+ &sParse.pNewTable->aCol[i]));
}
#endif /* SQLITE_OMIT_GENERATED_COLUMNS */
}
@@ -109344,11 +109967,11 @@ static void renameTableTest(
rc = renameParseSql(&sParse, zDb, db, zInput, bTemp);
db->flags |= (flags & (SQLITE_DqsDML|SQLITE_DqsDDL));
if( rc==SQLITE_OK ){
- if( isLegacy==0 && sParse.pNewTable && sParse.pNewTable->pSelect ){
+ if( isLegacy==0 && sParse.pNewTable && IsView(sParse.pNewTable) ){
NameContext sNC;
memset(&sNC, 0, sizeof(sNC));
sNC.pParse = &sParse;
- sqlite3SelectPrep(&sParse, sParse.pNewTable->pSelect, &sNC);
+ sqlite3SelectPrep(&sParse, sParse.pNewTable->u.view.pSelect, &sNC);
if( sParse.nErr ) rc = sParse.rc;
}
@@ -109419,13 +110042,14 @@ static void dropColumnFunc(
goto drop_column_done;
}
- pCol = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol].zName);
+ pCol = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol].zCnName);
if( iCol<pTab->nCol-1 ){
RenameToken *pEnd;
- pEnd = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol+1].zName);
+ pEnd = renameTokenFind(&sParse, 0, (void*)pTab->aCol[iCol+1].zCnName);
zEnd = (const char*)pEnd->t.z;
}else{
- zEnd = (const char*)&zSql[pTab->addColOffset];
+ assert( IsOrdinaryTable(pTab) );
+ zEnd = (const char*)&zSql[pTab->u.tab.addColOffset];
while( ALWAYS(pCol->t.z[0]!=0) && pCol->t.z[0]!=',' ) pCol->t.z--;
}
@@ -109451,7 +110075,7 @@ drop_column_done:
** statement. Argument pSrc contains the possibly qualified name of the
** table being edited, and token pName the name of the column to drop.
*/
-SQLITE_PRIVATE void sqlite3AlterDropColumn(Parse *pParse, SrcList *pSrc, Token *pName){
+SQLITE_PRIVATE void sqlite3AlterDropColumn(Parse *pParse, SrcList *pSrc, const Token *pName){
sqlite3 *db = pParse->db; /* Database handle */
Table *pTab; /* Table to modify */
int iDb; /* Index of db containing pTab in aDb[] */
@@ -109506,7 +110130,7 @@ SQLITE_PRIVATE void sqlite3AlterDropColumn(Parse *pParse, SrcList *pSrc, Token *
renameTestSchema(pParse, zDb, iDb==1, "", 0);
renameFixQuotes(pParse, zDb, iDb==1);
sqlite3NestedParse(pParse,
- "UPDATE \"%w\"." DFLT_SCHEMA_TABLE " SET "
+ "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
"sql = sqlite_drop_column(%d, sql, %d) "
"WHERE (type=='table' AND tbl_name=%Q COLLATE nocase)"
, zDb, iDb, iCol, pTab->zName
@@ -109561,6 +110185,12 @@ SQLITE_PRIVATE void sqlite3AlterDropColumn(Parse *pParse, SrcList *pSrc, Token *
nField++;
}
}
+ if( nField==0 ){
+ /* dbsqlfuzz 5f09e7bcc78b4954d06bf9f2400d7715f48d1fef */
+ pParse->nMem++;
+ sqlite3VdbeAddOp2(v, OP_Null, 0, reg+1);
+ nField = 1;
+ }
sqlite3VdbeAddOp3(v, OP_MakeRecord, reg+1, nField, regRec);
if( pPk ){
sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iCur, regRec, reg+1, pPk->nKeyCol);
@@ -110030,7 +110660,6 @@ static void statInit(
+ sizeof(tRowcnt)*3*nColUp*(nCol+mxSample);
}
#endif
- db = sqlite3_context_db_handle(context);
p = sqlite3DbMallocZero(db, n);
if( p==0 ){
sqlite3_result_error_nomem(context);
@@ -110449,28 +111078,19 @@ static void statGet(
**
** I = (K+D-1)/D
*/
- char *z;
- int i;
-
- char *zRet = sqlite3MallocZero( (p->nKeyCol+1)*25 );
- if( zRet==0 ){
- sqlite3_result_error_nomem(context);
- return;
- }
+ sqlite3_str sStat; /* Text of the constructed "stat" line */
+ int i; /* Loop counter */
- sqlite3_snprintf(24, zRet, "%llu",
+ sqlite3StrAccumInit(&sStat, 0, 0, 0, (p->nKeyCol+1)*100);
+ sqlite3_str_appendf(&sStat, "%llu",
p->nSkipAhead ? (u64)p->nEst : (u64)p->nRow);
- z = zRet + sqlite3Strlen30(zRet);
for(i=0; i<p->nKeyCol; i++){
u64 nDistinct = p->current.anDLt[i] + 1;
u64 iVal = (p->nRow + nDistinct - 1) / nDistinct;
- sqlite3_snprintf(24, z, " %llu", iVal);
- z += sqlite3Strlen30(z);
+ sqlite3_str_appendf(&sStat, " %llu", iVal);
assert( p->current.anEq[i] );
}
- assert( z[0]=='\0' && z>zRet );
-
- sqlite3_result_text(context, zRet, -1, sqlite3_free);
+ sqlite3ResultStrAccum(context, &sStat);
}
#ifdef SQLITE_ENABLE_STAT4
else if( eCall==STAT_GET_ROWID ){
@@ -110489,6 +111109,8 @@ static void statGet(
}
}else{
tRowcnt *aCnt = 0;
+ sqlite3_str sStat;
+ int i;
assert( p->iGet<p->nSample );
switch( eCall ){
@@ -110500,23 +111122,12 @@ static void statGet(
break;
}
}
-
- {
- char *zRet = sqlite3MallocZero(p->nCol * 25);
- if( zRet==0 ){
- sqlite3_result_error_nomem(context);
- }else{
- int i;
- char *z = zRet;
- for(i=0; i<p->nCol; i++){
- sqlite3_snprintf(24, z, "%llu ", (u64)aCnt[i]);
- z += sqlite3Strlen30(z);
- }
- assert( z[0]=='\0' && z>zRet );
- z[-1] = '\0';
- sqlite3_result_text(context, zRet, -1, sqlite3_free);
- }
+ sqlite3StrAccumInit(&sStat, 0, 0, 0, p->nCol*100);
+ for(i=0; i<p->nCol; i++){
+ sqlite3_str_appendf(&sStat, "%llu ", (u64)aCnt[i]);
}
+ if( sStat.nChar ) sStat.nChar--;
+ sqlite3ResultStrAccum(context, &sStat);
}
#endif /* SQLITE_ENABLE_STAT4 */
#ifndef SQLITE_DEBUG
@@ -110565,7 +111176,7 @@ static void analyzeVdbeCommentIndexWithColumnName(
}else if( i==XN_EXPR ){
VdbeComment((v,"%s.expr(%d)",pIdx->zName, k));
}else{
- VdbeComment((v,"%s.%s", pIdx->zName, pIdx->pTable->aCol[i].zName));
+ VdbeComment((v,"%s.%s", pIdx->zName, pIdx->pTable->aCol[i].zCnName));
}
}
#else
@@ -110612,7 +111223,7 @@ static void analyzeOneTable(
if( v==0 || NEVER(pTab==0) ){
return;
}
- if( pTab->tnum==0 ){
+ if( !IsOrdinaryTable(pTab) ){
/* Do not gather statistics on views or virtual tables */
return;
}
@@ -111437,9 +112048,12 @@ static int loadStatTbl(
*/
static int loadStat4(sqlite3 *db, const char *zDb){
int rc = SQLITE_OK; /* Result codes from subroutines */
+ const Table *pStat4;
assert( db->lookaside.bDisable );
- if( sqlite3FindTable(db, "sqlite_stat4", zDb) ){
+ if( (pStat4 = sqlite3FindTable(db, "sqlite_stat4", zDb))!=0
+ && IsOrdinaryTable(pStat4)
+ ){
rc = loadStatTbl(db,
"SELECT idx,count(*) FROM %Q.sqlite_stat4 GROUP BY idx",
"SELECT idx,neq,nlt,ndlt,sample FROM %Q.sqlite_stat4",
@@ -111476,6 +112090,7 @@ SQLITE_PRIVATE int sqlite3AnalysisLoad(sqlite3 *db, int iDb){
char *zSql;
int rc = SQLITE_OK;
Schema *pSchema = db->aDb[iDb].pSchema;
+ const Table *pStat1;
assert( iDb>=0 && iDb<db->nDb );
assert( db->aDb[iDb].pBt!=0 );
@@ -111498,7 +112113,9 @@ SQLITE_PRIVATE int sqlite3AnalysisLoad(sqlite3 *db, int iDb){
/* Load new statistics out of the sqlite_stat1 table */
sInfo.db = db;
sInfo.zDatabase = db->aDb[iDb].zDbSName;
- if( sqlite3FindTable(db, "sqlite_stat1", sInfo.zDatabase)!=0 ){
+ if( (pStat1 = sqlite3FindTable(db, "sqlite_stat1", sInfo.zDatabase))
+ && IsOrdinaryTable(pStat1)
+ ){
zSql = sqlite3MPrintf(db,
"SELECT tbl,idx,stat FROM %Q.sqlite_stat1", sInfo.zDatabase);
if( zSql==0 ){
@@ -111889,9 +112506,9 @@ static void codeAttach(
sName.pParse = pParse;
if(
- SQLITE_OK!=(rc = resolveAttachExpr(&sName, pFilename)) ||
- SQLITE_OK!=(rc = resolveAttachExpr(&sName, pDbname)) ||
- SQLITE_OK!=(rc = resolveAttachExpr(&sName, pKey))
+ SQLITE_OK!=resolveAttachExpr(&sName, pFilename) ||
+ SQLITE_OK!=resolveAttachExpr(&sName, pDbname) ||
+ SQLITE_OK!=resolveAttachExpr(&sName, pKey)
){
goto attach_end;
}
@@ -111900,6 +112517,7 @@ static void codeAttach(
if( pAuthArg ){
char *zAuthArg;
if( pAuthArg->op==TK_STRING ){
+ assert( !ExprHasProperty(pAuthArg, EP_IntValue) );
zAuthArg = pAuthArg->u.zToken;
}else{
zAuthArg = 0;
@@ -112318,10 +112936,10 @@ SQLITE_PRIVATE void sqlite3AuthRead(
if( iCol>=0 ){
assert( iCol<pTab->nCol );
- zCol = pTab->aCol[iCol].zName;
+ zCol = pTab->aCol[iCol].zCnName;
}else if( pTab->iPKey>=0 ){
assert( pTab->iPKey<pTab->nCol );
- zCol = pTab->aCol[pTab->iPKey].zName;
+ zCol = pTab->aCol[pTab->iPKey].zCnName;
}else{
zCol = "ROWID";
}
@@ -112584,17 +113202,21 @@ SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){
int i;
int reg;
- addrRewind =
- sqlite3VdbeAddOp1(v, OP_Rewind, pReturning->iRetCur);
- VdbeCoverage(v);
- reg = pReturning->iRetReg;
- for(i=0; i<pReturning->nRetCol; i++){
- sqlite3VdbeAddOp3(v, OP_Column, pReturning->iRetCur, i, reg+i);
+ if( pReturning->nRetCol==0 ){
+ assert( CORRUPT_DB );
+ }else{
+ addrRewind =
+ sqlite3VdbeAddOp1(v, OP_Rewind, pReturning->iRetCur);
+ VdbeCoverage(v);
+ reg = pReturning->iRetReg;
+ for(i=0; i<pReturning->nRetCol; i++){
+ sqlite3VdbeAddOp3(v, OP_Column, pReturning->iRetCur, i, reg+i);
+ }
+ sqlite3VdbeAddOp2(v, OP_ResultRow, reg, i);
+ sqlite3VdbeAddOp2(v, OP_Next, pReturning->iRetCur, addrRewind+1);
+ VdbeCoverage(v);
+ sqlite3VdbeJumpHere(v, addrRewind);
}
- sqlite3VdbeAddOp2(v, OP_ResultRow, reg, i);
- sqlite3VdbeAddOp2(v, OP_Next, pReturning->iRetCur, addrRewind+1);
- VdbeCoverage(v);
- sqlite3VdbeJumpHere(v, addrRewind);
}
sqlite3VdbeAddOp0(v, OP_Halt);
@@ -112675,7 +113297,11 @@ SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){
if( pParse->bReturning ){
Returning *pRet = pParse->u1.pReturning;
- sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pRet->iRetCur, pRet->nRetCol);
+ if( pRet->nRetCol==0 ){
+ assert( CORRUPT_DB );
+ }else{
+ sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pRet->iRetCur, pRet->nRetCol);
+ }
}
/* Finally, jump back to the beginning of the executable code. */
@@ -112699,20 +113325,22 @@ SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){
/*
** Run the parser and code generator recursively in order to generate
** code for the SQL statement given onto the end of the pParse context
-** currently under construction. When the parser is run recursively
-** this way, the final OP_Halt is not appended and other initialization
-** and finalization steps are omitted because those are handling by the
-** outermost parser.
+** currently under construction. Notes:
+**
+** * The final OP_Halt is not appended and other initialization
+** and finalization steps are omitted because those are handling by the
+** outermost parser.
**
-** Not everything is nestable. This facility is designed to permit
-** INSERT, UPDATE, and DELETE operations against the schema table. Use
-** care if you decide to try to use this routine for some other purposes.
+** * Built-in SQL functions always take precedence over application-defined
+** SQL functions. In other words, it is not possible to override a
+** built-in function.
*/
SQLITE_PRIVATE void sqlite3NestedParse(Parse *pParse, const char *zFormat, ...){
va_list ap;
char *zSql;
char *zErrMsg = 0;
sqlite3 *db = pParse->db;
+ u32 savedDbFlags = db->mDbFlags;
char saveBuf[PARSE_TAIL_SZ];
if( pParse->nErr ) return;
@@ -112731,7 +113359,9 @@ SQLITE_PRIVATE void sqlite3NestedParse(Parse *pParse, const char *zFormat, ...){
pParse->nested++;
memcpy(saveBuf, PARSE_TAIL(pParse), PARSE_TAIL_SZ);
memset(PARSE_TAIL(pParse), 0, PARSE_TAIL_SZ);
+ db->mDbFlags |= DBFLAG_PreferBuiltin;
sqlite3RunParser(pParse, zSql, &zErrMsg);
+ db->mDbFlags = savedDbFlags;
sqlite3DbFree(db, zErrMsg);
sqlite3DbFree(db, zSql);
memcpy(PARSE_TAIL(pParse), saveBuf, PARSE_TAIL_SZ);
@@ -112789,17 +113419,17 @@ SQLITE_PRIVATE Table *sqlite3FindTable(sqlite3 *db, const char *zName, const cha
p = sqlite3HashFind(&db->aDb[i].pSchema->tblHash, zName);
if( p==0 && sqlite3StrNICmp(zName, "sqlite_", 7)==0 ){
if( i==1 ){
- if( sqlite3StrICmp(zName+7, &ALT_TEMP_SCHEMA_TABLE[7])==0
- || sqlite3StrICmp(zName+7, &ALT_SCHEMA_TABLE[7])==0
- || sqlite3StrICmp(zName+7, &DFLT_SCHEMA_TABLE[7])==0
+ if( sqlite3StrICmp(zName+7, &PREFERRED_TEMP_SCHEMA_TABLE[7])==0
+ || sqlite3StrICmp(zName+7, &PREFERRED_SCHEMA_TABLE[7])==0
+ || sqlite3StrICmp(zName+7, &LEGACY_SCHEMA_TABLE[7])==0
){
p = sqlite3HashFind(&db->aDb[1].pSchema->tblHash,
- DFLT_TEMP_SCHEMA_TABLE);
+ LEGACY_TEMP_SCHEMA_TABLE);
}
}else{
- if( sqlite3StrICmp(zName+7, &ALT_SCHEMA_TABLE[7])==0 ){
+ if( sqlite3StrICmp(zName+7, &PREFERRED_SCHEMA_TABLE[7])==0 ){
p = sqlite3HashFind(&db->aDb[i].pSchema->tblHash,
- DFLT_SCHEMA_TABLE);
+ LEGACY_SCHEMA_TABLE);
}
}
}
@@ -112817,11 +113447,11 @@ SQLITE_PRIVATE Table *sqlite3FindTable(sqlite3 *db, const char *zName, const cha
if( p ) break;
}
if( p==0 && sqlite3StrNICmp(zName, "sqlite_", 7)==0 ){
- if( sqlite3StrICmp(zName+7, &ALT_SCHEMA_TABLE[7])==0 ){
- p = sqlite3HashFind(&db->aDb[0].pSchema->tblHash, DFLT_SCHEMA_TABLE);
- }else if( sqlite3StrICmp(zName+7, &ALT_TEMP_SCHEMA_TABLE[7])==0 ){
+ if( sqlite3StrICmp(zName+7, &PREFERRED_SCHEMA_TABLE[7])==0 ){
+ p = sqlite3HashFind(&db->aDb[0].pSchema->tblHash, LEGACY_SCHEMA_TABLE);
+ }else if( sqlite3StrICmp(zName+7, &PREFERRED_TEMP_SCHEMA_TABLE[7])==0 ){
p = sqlite3HashFind(&db->aDb[1].pSchema->tblHash,
- DFLT_TEMP_SCHEMA_TABLE);
+ LEGACY_TEMP_SCHEMA_TABLE);
}
}
}
@@ -112867,6 +113497,7 @@ SQLITE_PRIVATE Table *sqlite3LocateTable(
pMod = sqlite3PragmaVtabRegister(db, zName);
}
if( pMod && sqlite3VtabEponymousTableInit(pParse, pMod) ){
+ testcase( pMod->pEpoTab==0 );
return pMod->pEpoTab;
}
}
@@ -112917,6 +113548,22 @@ SQLITE_PRIVATE Table *sqlite3LocateTableItem(
}
/*
+** Return the preferred table name for system tables. Translate legacy
+** names into the new preferred names, as appropriate.
+*/
+SQLITE_PRIVATE const char *sqlite3PreferredTableName(const char *zName){
+ if( sqlite3StrNICmp(zName, "sqlite_", 7)==0 ){
+ if( sqlite3StrICmp(zName+7, &LEGACY_SCHEMA_TABLE[7])==0 ){
+ return PREFERRED_SCHEMA_TABLE;
+ }
+ if( sqlite3StrICmp(zName+7, &LEGACY_TEMP_SCHEMA_TABLE[7])==0 ){
+ return PREFERRED_TEMP_SCHEMA_TABLE;
+ }
+ }
+ return zName;
+}
+
+/*
** Locate the in-memory structure that describes
** a particular index given the name of that index
** and the name of the database that contains the index.
@@ -113081,6 +113728,84 @@ SQLITE_PRIVATE void sqlite3CommitInternalChanges(sqlite3 *db){
}
/*
+** Set the expression associated with a column. This is usually
+** the DEFAULT value, but might also be the expression that computes
+** the value for a generated column.
+*/
+SQLITE_PRIVATE void sqlite3ColumnSetExpr(
+ Parse *pParse, /* Parsing context */
+ Table *pTab, /* The table containing the column */
+ Column *pCol, /* The column to receive the new DEFAULT expression */
+ Expr *pExpr /* The new default expression */
+){
+ ExprList *pList;
+ assert( IsOrdinaryTable(pTab) );
+ pList = pTab->u.tab.pDfltList;
+ if( pCol->iDflt==0
+ || NEVER(pList==0)
+ || NEVER(pList->nExpr<pCol->iDflt)
+ ){
+ pCol->iDflt = pList==0 ? 1 : pList->nExpr+1;
+ pTab->u.tab.pDfltList = sqlite3ExprListAppend(pParse, pList, pExpr);
+ }else{
+ sqlite3ExprDelete(pParse->db, pList->a[pCol->iDflt-1].pExpr);
+ pList->a[pCol->iDflt-1].pExpr = pExpr;
+ }
+}
+
+/*
+** Return the expression associated with a column. The expression might be
+** the DEFAULT clause or the AS clause of a generated column.
+** Return NULL if the column has no associated expression.
+*/
+SQLITE_PRIVATE Expr *sqlite3ColumnExpr(Table *pTab, Column *pCol){
+ if( pCol->iDflt==0 ) return 0;
+ if( NEVER(!IsOrdinaryTable(pTab)) ) return 0;
+ if( NEVER(pTab->u.tab.pDfltList==0) ) return 0;
+ if( NEVER(pTab->u.tab.pDfltList->nExpr<pCol->iDflt) ) return 0;
+ return pTab->u.tab.pDfltList->a[pCol->iDflt-1].pExpr;
+}
+
+/*
+** Set the collating sequence name for a column.
+*/
+SQLITE_PRIVATE void sqlite3ColumnSetColl(
+ sqlite3 *db,
+ Column *pCol,
+ const char *zColl
+){
+ i64 nColl;
+ i64 n;
+ char *zNew;
+ assert( zColl!=0 );
+ n = sqlite3Strlen30(pCol->zCnName) + 1;
+ if( pCol->colFlags & COLFLAG_HASTYPE ){
+ n += sqlite3Strlen30(pCol->zCnName+n) + 1;
+ }
+ nColl = sqlite3Strlen30(zColl) + 1;
+ zNew = sqlite3DbRealloc(db, pCol->zCnName, nColl+n);
+ if( zNew ){
+ pCol->zCnName = zNew;
+ memcpy(pCol->zCnName + n, zColl, nColl);
+ pCol->colFlags |= COLFLAG_HASCOLL;
+ }
+}
+
+/*
+** Return the collating squence name for a column
+*/
+SQLITE_PRIVATE const char *sqlite3ColumnColl(Column *pCol){
+ const char *z;
+ if( (pCol->colFlags & COLFLAG_HASCOLL)==0 ) return 0;
+ z = pCol->zCnName;
+ while( *z ){ z++; }
+ if( pCol->colFlags & COLFLAG_HASTYPE ){
+ do{ z++; }while( *z );
+ }
+ return z+1;
+}
+
+/*
** Delete memory allocated for the column names of a table or view (the
** Table.aCol[] array).
*/
@@ -113090,12 +113815,20 @@ SQLITE_PRIVATE void sqlite3DeleteColumnNames(sqlite3 *db, Table *pTable){
assert( pTable!=0 );
if( (pCol = pTable->aCol)!=0 ){
for(i=0; i<pTable->nCol; i++, pCol++){
- assert( pCol->zName==0 || pCol->hName==sqlite3StrIHash(pCol->zName) );
- sqlite3DbFree(db, pCol->zName);
- sqlite3ExprDelete(db, pCol->pDflt);
- sqlite3DbFree(db, pCol->zColl);
+ assert( pCol->zCnName==0 || pCol->hName==sqlite3StrIHash(pCol->zCnName) );
+ sqlite3DbFree(db, pCol->zCnName);
}
sqlite3DbFree(db, pTable->aCol);
+ if( IsOrdinaryTable(pTable) ){
+ sqlite3ExprListDelete(db, pTable->u.tab.pDfltList);
+ }
+ if( db==0 || db->pnBytesFreed==0 ){
+ pTable->aCol = 0;
+ pTable->nCol = 0;
+ if( IsOrdinaryTable(pTable) ){
+ pTable->u.tab.pDfltList = 0;
+ }
+ }
}
}
@@ -113147,19 +113880,25 @@ static void SQLITE_NOINLINE deleteTable(sqlite3 *db, Table *pTable){
sqlite3FreeIndex(db, pIndex);
}
- /* Delete any foreign keys attached to this table. */
- sqlite3FkDelete(db, pTable);
+ if( IsOrdinaryTable(pTable) ){
+ sqlite3FkDelete(db, pTable);
+ }
+#ifndef SQLITE_OMIT_VIRTUAL_TABLE
+ else if( IsVirtual(pTable) ){
+ sqlite3VtabClear(db, pTable);
+ }
+#endif
+ else{
+ assert( IsView(pTable) );
+ sqlite3SelectDelete(db, pTable->u.view.pSelect);
+ }
/* Delete the Table structure itself.
*/
sqlite3DeleteColumnNames(db, pTable);
sqlite3DbFree(db, pTable->zName);
sqlite3DbFree(db, pTable->zColAff);
- sqlite3SelectDelete(db, pTable->pSelect);
sqlite3ExprListDelete(db, pTable->pCheck);
-#ifndef SQLITE_OMIT_VIRTUALTABLE
- sqlite3VtabClear(db, pTable);
-#endif
sqlite3DbFree(db, pTable);
/* Verify that no lookaside memory was used by schema tables */
@@ -113205,10 +113944,10 @@ SQLITE_PRIVATE void sqlite3UnlinkAndDeleteTable(sqlite3 *db, int iDb, const char
** are not \000 terminated and are not persistent. The returned string
** is \000 terminated and is persistent.
*/
-SQLITE_PRIVATE char *sqlite3NameFromToken(sqlite3 *db, Token *pName){
+SQLITE_PRIVATE char *sqlite3NameFromToken(sqlite3 *db, const Token *pName){
char *zName;
if( pName ){
- zName = sqlite3DbStrNDup(db, (char*)pName->z, pName->n);
+ zName = sqlite3DbStrNDup(db, (const char*)pName->z, pName->n);
sqlite3Dequote(zName);
}else{
zName = 0;
@@ -113222,7 +113961,7 @@ SQLITE_PRIVATE char *sqlite3NameFromToken(sqlite3 *db, Token *pName){
*/
SQLITE_PRIVATE void sqlite3OpenSchemaTable(Parse *p, int iDb){
Vdbe *v = sqlite3GetVdbe(p);
- sqlite3TableLock(p, iDb, SCHEMA_ROOT, 1, DFLT_SCHEMA_TABLE);
+ sqlite3TableLock(p, iDb, SCHEMA_ROOT, 1, LEGACY_SCHEMA_TABLE);
sqlite3VdbeAddOp4Int(v, OP_OpenWrite, 0, SCHEMA_ROOT, iDb, 5);
if( p->nTab==0 ){
p->nTab = 1;
@@ -113685,6 +114424,7 @@ SQLITE_PRIVATE void sqlite3StartTable(
/* If an error occurs, we jump here */
begin_table_error:
+ pParse->checkSchema = 1;
sqlite3DbFree(db, zName);
return;
}
@@ -113694,7 +114434,7 @@ begin_table_error:
*/
#if SQLITE_ENABLE_HIDDEN_COLUMNS
SQLITE_PRIVATE void sqlite3ColumnPropertiesFromName(Table *pTab, Column *pCol){
- if( sqlite3_strnicmp(pCol->zName, "__hidden__", 10)==0 ){
+ if( sqlite3_strnicmp(pCol->zCnName, "__hidden__", 10)==0 ){
pCol->colFlags |= COLFLAG_HIDDEN;
if( pTab ) pTab->tabFlags |= TF_HasHidden;
}else if( pTab && pCol!=pTab->aCol && (pCol[-1].colFlags & COLFLAG_HIDDEN) ){
@@ -113785,7 +114525,7 @@ SQLITE_PRIVATE void sqlite3AddReturning(Parse *pParse, ExprList *pList){
** first to get things going. Then this routine is called for each
** column.
*/
-SQLITE_PRIVATE void sqlite3AddColumn(Parse *pParse, Token *pName, Token *pType){
+SQLITE_PRIVATE void sqlite3AddColumn(Parse *pParse, Token sName, Token sType){
Table *p;
int i;
char *z;
@@ -113793,55 +114533,96 @@ SQLITE_PRIVATE void sqlite3AddColumn(Parse *pParse, Token *pName, Token *pType){
Column *pCol;
sqlite3 *db = pParse->db;
u8 hName;
+ Column *aNew;
+ u8 eType = COLTYPE_CUSTOM;
+ u8 szEst = 1;
+ char affinity = SQLITE_AFF_BLOB;
if( (p = pParse->pNewTable)==0 ) return;
if( p->nCol+1>db->aLimit[SQLITE_LIMIT_COLUMN] ){
sqlite3ErrorMsg(pParse, "too many columns on %s", p->zName);
return;
}
- z = sqlite3DbMallocRaw(db, pName->n + pType->n + 2);
+ if( !IN_RENAME_OBJECT ) sqlite3DequoteToken(&sName);
+
+ /* Because keywords GENERATE ALWAYS can be converted into indentifiers
+ ** by the parser, we can sometimes end up with a typename that ends
+ ** with "generated always". Check for this case and omit the surplus
+ ** text. */
+ if( sType.n>=16
+ && sqlite3_strnicmp(sType.z+(sType.n-6),"always",6)==0
+ ){
+ sType.n -= 6;
+ while( ALWAYS(sType.n>0) && sqlite3Isspace(sType.z[sType.n-1]) ) sType.n--;
+ if( sType.n>=9
+ && sqlite3_strnicmp(sType.z+(sType.n-9),"generated",9)==0
+ ){
+ sType.n -= 9;
+ while( sType.n>0 && sqlite3Isspace(sType.z[sType.n-1]) ) sType.n--;
+ }
+ }
+
+ /* Check for standard typenames. For standard typenames we will
+ ** set the Column.eType field rather than storing the typename after
+ ** the column name, in order to save space. */
+ if( sType.n>=3 ){
+ sqlite3DequoteToken(&sType);
+ for(i=0; i<SQLITE_N_STDTYPE; i++){
+ if( sType.n==sqlite3StdTypeLen[i]
+ && sqlite3_strnicmp(sType.z, sqlite3StdType[i], sType.n)==0
+ ){
+ sType.n = 0;
+ eType = i+1;
+ affinity = sqlite3StdTypeAffinity[i];
+ if( affinity<=SQLITE_AFF_TEXT ) szEst = 5;
+ break;
+ }
+ }
+ }
+
+ z = sqlite3DbMallocRaw(db, (i64)sName.n + 1 + (i64)sType.n + (sType.n>0) );
if( z==0 ) return;
- if( IN_RENAME_OBJECT ) sqlite3RenameTokenMap(pParse, (void*)z, pName);
- memcpy(z, pName->z, pName->n);
- z[pName->n] = 0;
+ if( IN_RENAME_OBJECT ) sqlite3RenameTokenMap(pParse, (void*)z, &sName);
+ memcpy(z, sName.z, sName.n);
+ z[sName.n] = 0;
sqlite3Dequote(z);
hName = sqlite3StrIHash(z);
for(i=0; i<p->nCol; i++){
- if( p->aCol[i].hName==hName && sqlite3StrICmp(z, p->aCol[i].zName)==0 ){
+ if( p->aCol[i].hName==hName && sqlite3StrICmp(z, p->aCol[i].zCnName)==0 ){
sqlite3ErrorMsg(pParse, "duplicate column name: %s", z);
sqlite3DbFree(db, z);
return;
}
}
- if( (p->nCol & 0x7)==0 ){
- Column *aNew;
- aNew = sqlite3DbRealloc(db,p->aCol,(p->nCol+8)*sizeof(p->aCol[0]));
- if( aNew==0 ){
- sqlite3DbFree(db, z);
- return;
- }
- p->aCol = aNew;
+ aNew = sqlite3DbRealloc(db,p->aCol,((i64)p->nCol+1)*sizeof(p->aCol[0]));
+ if( aNew==0 ){
+ sqlite3DbFree(db, z);
+ return;
}
+ p->aCol = aNew;
pCol = &p->aCol[p->nCol];
memset(pCol, 0, sizeof(p->aCol[0]));
- pCol->zName = z;
+ pCol->zCnName = z;
pCol->hName = hName;
sqlite3ColumnPropertiesFromName(p, pCol);
- if( pType->n==0 ){
+ if( sType.n==0 ){
/* If there is no type specified, columns have the default affinity
** 'BLOB' with a default size of 4 bytes. */
- pCol->affinity = SQLITE_AFF_BLOB;
- pCol->szEst = 1;
+ pCol->affinity = affinity;
+ pCol->eCType = eType;
+ pCol->szEst = szEst;
#ifdef SQLITE_ENABLE_SORTER_REFERENCES
- if( 4>=sqlite3GlobalConfig.szSorterRef ){
- pCol->colFlags |= COLFLAG_SORTERREF;
+ if( affinity==SQLITE_AFF_BLOB ){
+ if( 4>=sqlite3GlobalConfig.szSorterRef ){
+ pCol->colFlags |= COLFLAG_SORTERREF;
+ }
}
#endif
}else{
zType = z + sqlite3Strlen30(z) + 1;
- memcpy(zType, pType->z, pType->n);
- zType[pType->n] = 0;
+ memcpy(zType, sType.z, sType.n);
+ zType[sType.n] = 0;
sqlite3Dequote(zType);
pCol->affinity = sqlite3AffinityType(zType, pCol);
pCol->colFlags |= COLFLAG_HASTYPE;
@@ -113996,7 +114777,7 @@ SQLITE_PRIVATE void sqlite3AddDefaultValue(
pCol = &(p->aCol[p->nCol-1]);
if( !sqlite3ExprIsConstantOrFunction(pExpr, isInit) ){
sqlite3ErrorMsg(pParse, "default value of column [%s] is not constant",
- pCol->zName);
+ pCol->zCnName);
#ifndef SQLITE_OMIT_GENERATED_COLUMNS
}else if( pCol->colFlags & COLFLAG_GENERATED ){
testcase( pCol->colFlags & COLFLAG_VIRTUAL );
@@ -114007,15 +114788,15 @@ SQLITE_PRIVATE void sqlite3AddDefaultValue(
/* A copy of pExpr is used instead of the original, as pExpr contains
** tokens that point to volatile memory.
*/
- Expr x;
- sqlite3ExprDelete(db, pCol->pDflt);
+ Expr x, *pDfltExpr;
memset(&x, 0, sizeof(x));
x.op = TK_SPAN;
x.u.zToken = sqlite3DbSpanDup(db, zStart, zEnd);
x.pLeft = pExpr;
x.flags = EP_Skip;
- pCol->pDflt = sqlite3ExprDup(db, &x, EXPRDUP_REDUCE);
+ pDfltExpr = sqlite3ExprDup(db, &x, EXPRDUP_REDUCE);
sqlite3DbFree(db, x.u.zToken);
+ sqlite3ColumnSetExpr(pParse, p, pCol, pDfltExpr);
}
}
if( IN_RENAME_OBJECT ){
@@ -114111,9 +114892,11 @@ SQLITE_PRIVATE void sqlite3AddPrimaryKey(
assert( pCExpr!=0 );
sqlite3StringToId(pCExpr);
if( pCExpr->op==TK_ID ){
- const char *zCName = pCExpr->u.zToken;
+ const char *zCName;
+ assert( !ExprHasProperty(pCExpr, EP_IntValue) );
+ zCName = pCExpr->u.zToken;
for(iCol=0; iCol<pTab->nCol; iCol++){
- if( sqlite3StrICmp(zCName, pTab->aCol[iCol].zName)==0 ){
+ if( sqlite3StrICmp(zCName, pTab->aCol[iCol].zCnName)==0 ){
pCol = &pTab->aCol[iCol];
makeColumnPartOfPrimaryKey(pParse, pCol);
break;
@@ -114124,7 +114907,7 @@ SQLITE_PRIVATE void sqlite3AddPrimaryKey(
}
if( nTerm==1
&& pCol
- && sqlite3StrICmp(sqlite3ColumnType(pCol,""), "INTEGER")==0
+ && pCol->eCType==COLTYPE_INTEGER
&& sortOrder!=SQLITE_SO_DESC
){
if( IN_RENAME_OBJECT && pList ){
@@ -114204,8 +114987,7 @@ SQLITE_PRIVATE void sqlite3AddCollateType(Parse *pParse, Token *pToken){
if( sqlite3LocateCollSeq(pParse, zColl) ){
Index *pIdx;
- sqlite3DbFree(db, p->aCol[i].zColl);
- p->aCol[i].zColl = zColl;
+ sqlite3ColumnSetColl(db, &p->aCol[i], zColl);
/* If the column is declared as "<name> PRIMARY KEY COLLATE <type>",
** then an index may have been created on this column before the
@@ -114214,12 +114996,11 @@ SQLITE_PRIVATE void sqlite3AddCollateType(Parse *pParse, Token *pToken){
for(pIdx=p->pIndex; pIdx; pIdx=pIdx->pNext){
assert( pIdx->nKeyCol==1 );
if( pIdx->aiColumn[0]==i ){
- pIdx->azColl[0] = p->aCol[i].zColl;
+ pIdx->azColl[0] = sqlite3ColumnColl(&p->aCol[i]);
}
}
- }else{
- sqlite3DbFree(db, zColl);
}
+ sqlite3DbFree(db, zColl);
}
/* Change the most recently parsed column to be a GENERATED ALWAYS AS
@@ -114239,7 +115020,7 @@ SQLITE_PRIVATE void sqlite3AddGenerated(Parse *pParse, Expr *pExpr, Token *pType
sqlite3ErrorMsg(pParse, "virtual tables cannot use computed columns");
goto generated_done;
}
- if( pCol->pDflt ) goto generated_error;
+ if( pCol->iDflt>0 ) goto generated_error;
if( pType ){
if( pType->n==7 && sqlite3StrNICmp("virtual",pType->z,7)==0 ){
/* no-op */
@@ -114257,13 +115038,13 @@ SQLITE_PRIVATE void sqlite3AddGenerated(Parse *pParse, Expr *pExpr, Token *pType
if( pCol->colFlags & COLFLAG_PRIMKEY ){
makeColumnPartOfPrimaryKey(pParse, pCol); /* For the error message */
}
- pCol->pDflt = pExpr;
+ sqlite3ColumnSetExpr(pParse, pTab, pCol, pExpr);
pExpr = 0;
goto generated_done;
generated_error:
sqlite3ErrorMsg(pParse, "error in generated column \"%s\"",
- pCol->zName);
+ pCol->zCnName);
generated_done:
sqlite3ExprDelete(pParse->db, pExpr);
#else
@@ -114365,7 +115146,7 @@ static char *createTableStmt(sqlite3 *db, Table *p){
Column *pCol;
n = 0;
for(pCol = p->aCol, i=0; i<p->nCol; i++, pCol++){
- n += identLength(pCol->zName) + 5;
+ n += identLength(pCol->zCnName) + 5;
}
n += identLength(p->zName);
if( n<50 ){
@@ -114401,7 +115182,7 @@ static char *createTableStmt(sqlite3 *db, Table *p){
sqlite3_snprintf(n-k, &zStmt[k], zSep);
k += sqlite3Strlen30(&zStmt[k]);
zSep = zSep2;
- identPut(zStmt, &k, pCol->zName);
+ identPut(zStmt, &k, pCol->zCnName);
assert( pCol->affinity-SQLITE_AFF_BLOB >= 0 );
assert( pCol->affinity-SQLITE_AFF_BLOB < ArraySize(azType) );
testcase( pCol->affinity==SQLITE_AFF_BLOB );
@@ -114485,7 +115266,6 @@ static void estimateIndexWidth(Index *pIdx){
*/
static int hasColumn(const i16 *aiCol, int nCol, int x){
while( nCol-- > 0 ){
- assert( aiCol[0]>=0 );
if( x==*(aiCol++) ){
return 1;
}
@@ -114598,7 +115378,9 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
*/
if( !db->init.imposterTable ){
for(i=0; i<pTab->nCol; i++){
- if( (pTab->aCol[i].colFlags & COLFLAG_PRIMKEY)!=0 ){
+ if( (pTab->aCol[i].colFlags & COLFLAG_PRIMKEY)!=0
+ && (pTab->aCol[i].notNull==OE_None)
+ ){
pTab->aCol[i].notNull = OE_Abort;
}
}
@@ -114620,7 +115402,7 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
if( pTab->iPKey>=0 ){
ExprList *pList;
Token ipkToken;
- sqlite3TokenInit(&ipkToken, pTab->aCol[pTab->iPKey].zName);
+ sqlite3TokenInit(&ipkToken, pTab->aCol[pTab->iPKey].zCnName);
pList = sqlite3ExprListAppend(pParse, 0,
sqlite3ExprAlloc(db, TK_ID, &ipkToken, 0));
if( pList==0 ){
@@ -114750,7 +115532,7 @@ SQLITE_PRIVATE int sqlite3IsShadowTableOf(sqlite3 *db, Table *pTab, const char *
nName = sqlite3Strlen30(pTab->zName);
if( sqlite3_strnicmp(zName, pTab->zName, nName)!=0 ) return 0;
if( zName[nName]!='_' ) return 0;
- pMod = (Module*)sqlite3HashFind(&db->aModule, pTab->azModuleArg[0]);
+ pMod = (Module*)sqlite3HashFind(&db->aModule, pTab->u.vtab.azArg[0]);
if( pMod==0 ) return 0;
if( pMod->pModule->iVersion<3 ) return 0;
if( pMod->pModule->xShadowName==0 ) return 0;
@@ -114760,6 +115542,41 @@ SQLITE_PRIVATE int sqlite3IsShadowTableOf(sqlite3 *db, Table *pTab, const char *
#ifndef SQLITE_OMIT_VIRTUALTABLE
/*
+** Table pTab is a virtual table. If it the virtual table implementation
+** exists and has an xShadowName method, then loop over all other ordinary
+** tables within the same schema looking for shadow tables of pTab, and mark
+** any shadow tables seen using the TF_Shadow flag.
+*/
+SQLITE_PRIVATE void sqlite3MarkAllShadowTablesOf(sqlite3 *db, Table *pTab){
+ int nName; /* Length of pTab->zName */
+ Module *pMod; /* Module for the virtual table */
+ HashElem *k; /* For looping through the symbol table */
+
+ assert( IsVirtual(pTab) );
+ pMod = (Module*)sqlite3HashFind(&db->aModule, pTab->u.vtab.azArg[0]);
+ if( pMod==0 ) return;
+ if( NEVER(pMod->pModule==0) ) return;
+ if( pMod->pModule->iVersion<3 ) return;
+ if( pMod->pModule->xShadowName==0 ) return;
+ assert( pTab->zName!=0 );
+ nName = sqlite3Strlen30(pTab->zName);
+ for(k=sqliteHashFirst(&pTab->pSchema->tblHash); k; k=sqliteHashNext(k)){
+ Table *pOther = sqliteHashData(k);
+ assert( pOther->zName!=0 );
+ if( !IsOrdinaryTable(pOther) ) continue;
+ if( pOther->tabFlags & TF_Shadow ) continue;
+ if( sqlite3StrNICmp(pOther->zName, pTab->zName, nName)==0
+ && pOther->zName[nName]=='_'
+ && pMod->pModule->xShadowName(pOther->zName+nName+1)
+ ){
+ pOther->tabFlags |= TF_Shadow;
+ }
+ }
+}
+#endif /* ifndef SQLITE_OMIT_VIRTUALTABLE */
+
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+/*
** Return true if zName is a shadow table name in the current database
** connection.
**
@@ -114831,7 +115648,7 @@ SQLITE_PRIVATE void sqlite3EndTable(
Parse *pParse, /* Parse context */
Token *pCons, /* The ',' token after the last column defn. */
Token *pEnd, /* The ')' before options in the CREATE TABLE */
- u8 tabOpts, /* Extra table options. Usually 0. */
+ u32 tabOpts, /* Extra table options. Usually 0. */
Select *pSelect /* Select from a "CREATE ... AS SELECT" */
){
Table *p; /* The new table */
@@ -114859,7 +115676,7 @@ SQLITE_PRIVATE void sqlite3EndTable(
** table itself. So mark it read-only.
*/
if( db->init.busy ){
- if( pSelect ){
+ if( pSelect || (!IsOrdinaryTable(p) && db->init.newTnum) ){
sqlite3ErrorMsg(pParse, "");
return;
}
@@ -114867,6 +115684,44 @@ SQLITE_PRIVATE void sqlite3EndTable(
if( p->tnum==1 ) p->tabFlags |= TF_Readonly;
}
+ /* Special processing for tables that include the STRICT keyword:
+ **
+ ** * Do not allow custom column datatypes. Every column must have
+ ** a datatype that is one of INT, INTEGER, REAL, TEXT, or BLOB.
+ **
+ ** * If a PRIMARY KEY is defined, other than the INTEGER PRIMARY KEY,
+ ** then all columns of the PRIMARY KEY must have a NOT NULL
+ ** constraint.
+ */
+ if( tabOpts & TF_Strict ){
+ int ii;
+ p->tabFlags |= TF_Strict;
+ for(ii=0; ii<p->nCol; ii++){
+ Column *pCol = &p->aCol[ii];
+ if( pCol->eCType==COLTYPE_CUSTOM ){
+ if( pCol->colFlags & COLFLAG_HASTYPE ){
+ sqlite3ErrorMsg(pParse,
+ "unknown datatype for %s.%s: \"%s\"",
+ p->zName, pCol->zCnName, sqlite3ColumnType(pCol, "")
+ );
+ }else{
+ sqlite3ErrorMsg(pParse, "missing datatype for %s.%s",
+ p->zName, pCol->zCnName);
+ }
+ return;
+ }else if( pCol->eCType==COLTYPE_ANY ){
+ pCol->affinity = SQLITE_AFF_BLOB;
+ }
+ if( (pCol->colFlags & COLFLAG_PRIMKEY)!=0
+ && p->iPKey!=ii
+ && pCol->notNull == OE_None
+ ){
+ pCol->notNull = OE_Abort;
+ p->tabFlags |= TF_HasNotNull;
+ }
+ }
+ }
+
assert( (p->tabFlags & TF_HasPrimaryKey)==0
|| p->iPKey>=0 || sqlite3PrimaryKeyIndex(p)!=0 );
assert( (p->tabFlags & TF_HasPrimaryKey)!=0
@@ -114911,7 +115766,7 @@ SQLITE_PRIVATE void sqlite3EndTable(
for(ii=0; ii<p->nCol; ii++){
u32 colFlags = p->aCol[ii].colFlags;
if( (colFlags & COLFLAG_GENERATED)!=0 ){
- Expr *pX = p->aCol[ii].pDflt;
+ Expr *pX = sqlite3ColumnExpr(p, &p->aCol[ii]);
testcase( colFlags & COLFLAG_VIRTUAL );
testcase( colFlags & COLFLAG_STORED );
if( sqlite3ResolveSelfReference(pParse, p, NC_GenCol, pX, 0) ){
@@ -114921,8 +115776,8 @@ SQLITE_PRIVATE void sqlite3EndTable(
** tree that have been allocated from lookaside memory, which is
** illegal in a schema and will lead to errors or heap corruption
** when the database connection closes. */
- sqlite3ExprDelete(db, pX);
- p->aCol[ii].pDflt = sqlite3ExprAlloc(db, TK_NULL, 0, 0);
+ sqlite3ColumnSetExpr(pParse, p, &p->aCol[ii],
+ sqlite3ExprAlloc(db, TK_NULL, 0, 0));
}
}else{
nNG++;
@@ -114962,7 +115817,7 @@ SQLITE_PRIVATE void sqlite3EndTable(
/*
** Initialize zType for the new view or table.
*/
- if( p->pSelect==0 ){
+ if( IsOrdinaryTable(p) ){
/* A regular table */
zType = "table";
zType2 = "TABLE";
@@ -115048,7 +115903,7 @@ SQLITE_PRIVATE void sqlite3EndTable(
** the information we've collected.
*/
sqlite3NestedParse(pParse,
- "UPDATE %Q." DFLT_SCHEMA_TABLE
+ "UPDATE %Q." LEGACY_SCHEMA_TABLE
" SET type='%s', name=%Q, tbl_name=%Q, rootpage=#%d, sql=%Q"
" WHERE rowid=#%d",
db->aDb[iDb].zDbSName,
@@ -115112,12 +115967,12 @@ SQLITE_PRIVATE void sqlite3EndTable(
}
#ifndef SQLITE_OMIT_ALTERTABLE
- if( !pSelect && !p->pSelect ){
+ if( !pSelect && IsOrdinaryTable(p) ){
assert( pCons && pEnd );
if( pCons->z==0 ){
pCons = pEnd;
}
- p->addColOffset = 13 + (int)(pCons->z - pParse->sNameToken.z);
+ p->u.tab.addColOffset = 13 + (int)(pCons->z - pParse->sNameToken.z);
}
#endif
}
@@ -115174,12 +116029,13 @@ SQLITE_PRIVATE void sqlite3CreateView(
*/
pSelect->selFlags |= SF_View;
if( IN_RENAME_OBJECT ){
- p->pSelect = pSelect;
+ p->u.view.pSelect = pSelect;
pSelect = 0;
}else{
- p->pSelect = sqlite3SelectDup(db, pSelect, EXPRDUP_REDUCE);
+ p->u.view.pSelect = sqlite3SelectDup(db, pSelect, EXPRDUP_REDUCE);
}
p->pCheck = sqlite3ExprListDup(db, pCNames, EXPRDUP_REDUCE);
+ p->eTabType = TABTYP_VIEW;
if( db->mallocFailed ) goto create_view_fail;
/* Locate the end of the CREATE VIEW statement. Make sEnd point to
@@ -115233,13 +116089,12 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
assert( pTable );
#ifndef SQLITE_OMIT_VIRTUALTABLE
- db->nSchemaLock++;
- rc = sqlite3VtabCallConnect(pParse, pTable);
- db->nSchemaLock--;
- if( rc ){
- return 1;
+ if( IsVirtual(pTable) ){
+ db->nSchemaLock++;
+ rc = sqlite3VtabCallConnect(pParse, pTable);
+ db->nSchemaLock--;
+ return rc;
}
- if( IsVirtual(pTable) ) return 0;
#endif
#ifndef SQLITE_OMIT_VIEW
@@ -115276,8 +116131,8 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
** to be permanent. So the computation is done on a copy of the SELECT
** statement that defines the view.
*/
- assert( pTable->pSelect );
- pSel = sqlite3SelectDup(db, pTable->pSelect, 0);
+ assert( IsView(pTable) );
+ pSel = sqlite3SelectDup(db, pTable->u.view.pSelect, 0);
if( pSel ){
u8 eParseMode = pParse->eParseMode;
pParse->eParseMode = PARSE_MODE_NORMAL;
@@ -115336,8 +116191,6 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
pTable->pSchema->schemaFlags |= DB_UnresetViews;
if( db->mallocFailed ){
sqlite3DeleteColumnNames(db, pTable);
- pTable->aCol = 0;
- pTable->nCol = 0;
}
#endif /* SQLITE_OMIT_VIEW */
return nErr;
@@ -115354,10 +116207,8 @@ static void sqliteViewResetAll(sqlite3 *db, int idx){
if( !DbHasProperty(db, idx, DB_UnresetViews) ) return;
for(i=sqliteHashFirst(&db->aDb[idx].pSchema->tblHash); i;i=sqliteHashNext(i)){
Table *pTab = sqliteHashData(i);
- if( pTab->pSelect ){
+ if( IsView(pTab) ){
sqlite3DeleteColumnNames(db, pTab);
- pTab->aCol = 0;
- pTab->nCol = 0;
}
}
DbClearProperty(db, idx, DB_UnresetViews);
@@ -115431,7 +116282,7 @@ static void destroyRootPage(Parse *pParse, int iTable, int iDb){
** token for additional information.
*/
sqlite3NestedParse(pParse,
- "UPDATE %Q." DFLT_SCHEMA_TABLE
+ "UPDATE %Q." LEGACY_SCHEMA_TABLE
" SET rootpage=%d WHERE #%d AND rootpage=#%d",
pParse->db->aDb[iDb].zDbSName, iTable, r1, r1);
#endif
@@ -115566,7 +116417,7 @@ SQLITE_PRIVATE void sqlite3CodeDropTable(Parse *pParse, Table *pTab, int iDb, in
** database.
*/
sqlite3NestedParse(pParse,
- "DELETE FROM %Q." DFLT_SCHEMA_TABLE
+ "DELETE FROM %Q." LEGACY_SCHEMA_TABLE
" WHERE tbl_name=%Q and type!='trigger'",
pDb->zDbSName, pTab->zName);
if( !isView && !IsVirtual(pTab) ){
@@ -115594,6 +116445,7 @@ SQLITE_PRIVATE int sqlite3ReadOnlyShadowTables(sqlite3 *db){
if( (db->flags & SQLITE_Defensive)!=0
&& db->pVtabCtx==0
&& db->nVdbeExec==0
+ && !sqlite3VtabInSync(db)
){
return 1;
}
@@ -115613,6 +116465,9 @@ static int tableMayNotBeDropped(sqlite3 *db, Table *pTab){
if( (pTab->tabFlags & TF_Shadow)!=0 && sqlite3ReadOnlyShadowTables(db) ){
return 1;
}
+ if( pTab->tabFlags & TF_Eponymous ){
+ return 1;
+ }
return 0;
}
@@ -115697,11 +116552,11 @@ SQLITE_PRIVATE void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView,
/* Ensure DROP TABLE is not used on a view, and DROP VIEW is not used
** on a table.
*/
- if( isView && pTab->pSelect==0 ){
+ if( isView && !IsView(pTab) ){
sqlite3ErrorMsg(pParse, "use DROP TABLE to delete table %s", pTab->zName);
goto exit_drop_table;
}
- if( !isView && pTab->pSelect ){
+ if( !isView && IsView(pTab) ){
sqlite3ErrorMsg(pParse, "use DROP VIEW to delete view %s", pTab->zName);
goto exit_drop_table;
}
@@ -115752,7 +116607,7 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey(
FKey *pFKey = 0;
FKey *pNextTo;
Table *p = pParse->pNewTable;
- int nByte;
+ i64 nByte;
int i;
int nCol;
char *z;
@@ -115765,7 +116620,7 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey(
if( pToCol && pToCol->nExpr!=1 ){
sqlite3ErrorMsg(pParse, "foreign key on %s"
" should reference only one column of table %T",
- p->aCol[iCol].zName, pTo);
+ p->aCol[iCol].zCnName, pTo);
goto fk_end;
}
nCol = 1;
@@ -115788,7 +116643,8 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey(
goto fk_end;
}
pFKey->pFrom = p;
- pFKey->pNextFrom = p->pFKey;
+ assert( IsOrdinaryTable(p) );
+ pFKey->pNextFrom = p->u.tab.pFKey;
z = (char*)&pFKey->aCol[nCol];
pFKey->zTo = z;
if( IN_RENAME_OBJECT ){
@@ -115805,7 +116661,7 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey(
for(i=0; i<nCol; i++){
int j;
for(j=0; j<p->nCol; j++){
- if( sqlite3StrICmp(p->aCol[j].zName, pFromCol->a[i].zEName)==0 ){
+ if( sqlite3StrICmp(p->aCol[j].zCnName, pFromCol->a[i].zEName)==0 ){
pFKey->aCol[i].iFrom = j;
break;
}
@@ -115853,7 +116709,8 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey(
/* Link the foreign key to the table as the last step.
*/
- p->pFKey = pFKey;
+ assert( IsOrdinaryTable(p) );
+ p->u.tab.pFKey = pFKey;
pFKey = 0;
fk_end:
@@ -115874,7 +116731,9 @@ SQLITE_PRIVATE void sqlite3DeferForeignKey(Parse *pParse, int isDeferred){
#ifndef SQLITE_OMIT_FOREIGN_KEY
Table *pTab;
FKey *pFKey;
- if( (pTab = pParse->pNewTable)==0 || (pFKey = pTab->pFKey)==0 ) return;
+ if( (pTab = pParse->pNewTable)==0 ) return;
+ if( NEVER(!IsOrdinaryTable(pTab)) ) return;
+ if( (pFKey = pTab->u.tab.pFKey)==0 ) return;
assert( isDeferred==0 || isDeferred==1 ); /* EV: R-30323-21917 */
pFKey->isDeferred = (u8)isDeferred;
#endif
@@ -116166,7 +117025,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex(
goto exit_create_index;
}
#ifndef SQLITE_OMIT_VIEW
- if( pTab->pSelect ){
+ if( IsView(pTab) ){
sqlite3ErrorMsg(pParse, "views may not be indexed");
goto exit_create_index;
}
@@ -116257,7 +117116,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex(
Token prevCol;
Column *pCol = &pTab->aCol[pTab->nCol-1];
pCol->colFlags |= COLFLAG_UNIQUE;
- sqlite3TokenInit(&prevCol, pCol->zName);
+ sqlite3TokenInit(&prevCol, pCol->zCnName);
pList = sqlite3ExprListAppend(pParse, 0,
sqlite3ExprAlloc(db, TK_ID, &prevCol, 0));
if( pList==0 ) goto exit_create_index;
@@ -116275,6 +117134,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex(
Expr *pExpr = pList->a[i].pExpr;
assert( pExpr!=0 );
if( pExpr->op==TK_COLLATE ){
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
nExtra += (1 + sqlite3Strlen30(pExpr->u.zToken));
}
}
@@ -116370,6 +117230,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex(
zColl = 0;
if( pListItem->pExpr->op==TK_COLLATE ){
int nColl;
+ assert( !ExprHasProperty(pListItem->pExpr, EP_IntValue) );
zColl = pListItem->pExpr->u.zToken;
nColl = sqlite3Strlen30(zColl) + 1;
assert( nExtra>=nColl );
@@ -116378,7 +117239,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex(
zExtra += nColl;
nExtra -= nColl;
}else if( j>=0 ){
- zColl = pTab->aCol[j].zColl;
+ zColl = sqlite3ColumnColl(&pTab->aCol[j]);
}
if( !zColl ) zColl = sqlite3StrBINARY;
if( !db->init.busy && !sqlite3LocateCollSeq(pParse, zColl) ){
@@ -116576,7 +117437,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex(
/* Add an entry in sqlite_schema for this index
*/
sqlite3NestedParse(pParse,
- "INSERT INTO %Q." DFLT_SCHEMA_TABLE " VALUES('index',%Q,%Q,#%d,%Q);",
+ "INSERT INTO %Q." LEGACY_SCHEMA_TABLE " VALUES('index',%Q,%Q,#%d,%Q);",
db->aDb[iDb].zDbSName,
pIndex->zName,
pTab->zName,
@@ -116618,7 +117479,7 @@ exit_create_index:
** The list was already ordered when this routine was entered, so at this
** point at most a single index (the newly added index) will be out of
** order. So we have to reorder at most one index. */
- Index **ppFrom = &pTab->pIndex;
+ Index **ppFrom;
Index *pThis;
for(ppFrom=&pTab->pIndex; (pThis = *ppFrom)!=0; ppFrom=&pThis->pNext){
Index *pNext;
@@ -116762,7 +117623,7 @@ SQLITE_PRIVATE void sqlite3DropIndex(Parse *pParse, SrcList *pName, int ifExists
if( v ){
sqlite3BeginWriteOperation(pParse, 1, iDb);
sqlite3NestedParse(pParse,
- "DELETE FROM %Q." DFLT_SCHEMA_TABLE " WHERE name=%Q AND type='index'",
+ "DELETE FROM %Q." LEGACY_SCHEMA_TABLE " WHERE name=%Q AND type='index'",
db->aDb[iDb].zDbSName, pIndex->zName
);
sqlite3ClearStatTables(pParse, iDb, "idx", pIndex->zName);
@@ -117158,6 +118019,7 @@ SQLITE_PRIVATE void sqlite3SrcListIndexedBy(Parse *pParse, SrcList *p, Token *pI
}else{
pItem->u1.zIndexedBy = sqlite3NameFromToken(pParse->db, pIndexedBy);
pItem->fg.isIndexedBy = 1;
+ assert( pItem->fg.isCte==0 ); /* No collision on union u2 */
}
}
}
@@ -117470,7 +118332,7 @@ SQLITE_PRIVATE void sqlite3UniqueConstraint(
for(j=0; j<pIdx->nKeyCol; j++){
char *zCol;
assert( pIdx->aiColumn[j]>=0 );
- zCol = pTab->aCol[pIdx->aiColumn[j]].zName;
+ zCol = pTab->aCol[pIdx->aiColumn[j]].zCnName;
if( j ) sqlite3_str_append(&errMsg, ", ", 2);
sqlite3_str_appendall(&errMsg, pTab->zName);
sqlite3_str_append(&errMsg, ".", 1);
@@ -117497,7 +118359,7 @@ SQLITE_PRIVATE void sqlite3RowidConstraint(
int rc;
if( pTab->iPKey>=0 ){
zMsg = sqlite3MPrintf(pParse->db, "%s.%s", pTab->zName,
- pTab->aCol[pTab->iPKey].zName);
+ pTab->aCol[pTab->iPKey].zCnName);
rc = SQLITE_CONSTRAINT_PRIMARYKEY;
}else{
zMsg = sqlite3MPrintf(pParse->db, "%s.rowid", pTab->zName);
@@ -118138,6 +119000,7 @@ SQLITE_PRIVATE FuncDef *sqlite3FunctionSearch(
){
FuncDef *p;
for(p=sqlite3BuiltinFunctions.a[h]; p; p=p->u.pHash){
+ assert( p->funcFlags & SQLITE_FUNC_BUILTIN );
if( sqlite3StrICmp(p->zName, zFunc)==0 ){
return p;
}
@@ -118159,6 +119022,7 @@ SQLITE_PRIVATE void sqlite3InsertBuiltinFuncs(
int nName = sqlite3Strlen30(zName);
int h = SQLITE_FUNC_HASH(zName[0], nName);
assert( zName[0]>='a' && zName[0]<='z' );
+ assert( aDef[i].funcFlags & SQLITE_FUNC_BUILTIN );
pOther = sqlite3FunctionSearch(h, zName);
if( pOther ){
assert( pOther!=&aDef[i] && pOther->pNext!=&aDef[i] );
@@ -118424,7 +119288,7 @@ SQLITE_PRIVATE int sqlite3IsReadOnly(Parse *pParse, Table *pTab, int viewOk){
return 1;
}
#ifndef SQLITE_OMIT_VIEW
- if( !viewOk && pTab->pSelect ){
+ if( !viewOk && IsView(pTab) ){
sqlite3ErrorMsg(pParse,"cannot modify %s because it is a view",pTab->zName);
return 1;
}
@@ -118528,13 +119392,13 @@ SQLITE_PRIVATE Expr *sqlite3LimitWhere(
}else{
Index *pPk = sqlite3PrimaryKeyIndex(pTab);
if( pPk->nKeyCol==1 ){
- const char *zName = pTab->aCol[pPk->aiColumn[0]].zName;
+ const char *zName = pTab->aCol[pPk->aiColumn[0]].zCnName;
pLhs = sqlite3Expr(db, TK_ID, zName);
pEList = sqlite3ExprListAppend(pParse, 0, sqlite3Expr(db, TK_ID, zName));
}else{
int i;
for(i=0; i<pPk->nKeyCol; i++){
- Expr *p = sqlite3Expr(db, TK_ID, pTab->aCol[pPk->aiColumn[i]].zName);
+ Expr *p = sqlite3Expr(db, TK_ID, pTab->aCol[pPk->aiColumn[i]].zCnName);
pEList = sqlite3ExprListAppend(pParse, pEList, p);
}
pLhs = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
@@ -118550,6 +119414,7 @@ SQLITE_PRIVATE Expr *sqlite3LimitWhere(
pSelectSrc = sqlite3SrcListDup(db, pSrc, 0);
pSrc->a[0].pTab = pTab;
if( pSrc->a[0].fg.isIndexedBy ){
+ assert( pSrc->a[0].fg.isCte==0 );
pSrc->a[0].u2.pIBIndex = 0;
pSrc->a[0].fg.isIndexedBy = 0;
sqlite3DbFree(db, pSrc->a[0].u1.zIndexedBy);
@@ -118641,7 +119506,7 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
*/
#ifndef SQLITE_OMIT_TRIGGER
pTrigger = sqlite3TriggersExist(pParse, pTab, TK_DELETE, 0, 0);
- isView = pTab->pSelect!=0;
+ isView = IsView(pTab);
#else
# define pTrigger 0
# define isView 0
@@ -118891,7 +119756,7 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
if( eOnePass!=ONEPASS_OFF ){
assert( nKey==nPk ); /* OP_Found will use an unpacked key */
if( !IsVirtual(pTab) && aToOpen[iDataCur-iTabCur] ){
- assert( pPk!=0 || pTab->pSelect!=0 );
+ assert( pPk!=0 || IsView(pTab) );
sqlite3VdbeAddOp4Int(v, OP_NotFound, iDataCur, addrBypass, iKey, nKey);
VdbeCoverage(v);
}
@@ -119125,7 +119990,7 @@ SQLITE_PRIVATE void sqlite3GenerateRowDelete(
** the update-hook is not invoked for rows removed by REPLACE, but the
** pre-update-hook is.
*/
- if( pTab->pSelect==0 ){
+ if( !IsView(pTab) ){
u8 p5 = 0;
sqlite3GenerateRowIndexDelete(pParse, pTab, iDataCur, iIdxCur,0,iIdxNoSeek);
sqlite3VdbeAddOp2(v, OP_Delete, iDataCur, (count?OPFLAG_NCHANGE:0));
@@ -119885,9 +120750,9 @@ static void last_insert_rowid(
/*
** Implementation of the changes() SQL function.
**
-** IMP: R-62073-11209 The changes() SQL function is a wrapper
-** around the sqlite3_changes() C/C++ function and hence follows the same
-** rules for counting changes.
+** IMP: R-32760-32347 The changes() SQL function is a wrapper
+** around the sqlite3_changes64() C/C++ function and hence follows the
+** same rules for counting changes.
*/
static void changes(
sqlite3_context *context,
@@ -119896,12 +120761,12 @@ static void changes(
){
sqlite3 *db = sqlite3_context_db_handle(context);
UNUSED_PARAMETER2(NotUsed, NotUsed2);
- sqlite3_result_int(context, sqlite3_changes(db));
+ sqlite3_result_int64(context, sqlite3_changes64(db));
}
/*
** Implementation of the total_changes() SQL function. The return value is
-** the same as the sqlite3_total_changes() API function.
+** the same as the sqlite3_total_changes64() API function.
*/
static void total_changes(
sqlite3_context *context,
@@ -119910,9 +120775,9 @@ static void total_changes(
){
sqlite3 *db = sqlite3_context_db_handle(context);
UNUSED_PARAMETER2(NotUsed, NotUsed2);
- /* IMP: R-52756-41993 This function is a wrapper around the
- ** sqlite3_total_changes() C/C++ interface. */
- sqlite3_result_int(context, sqlite3_total_changes(db));
+ /* IMP: R-11217-42568 This function is a wrapper around the
+ ** sqlite3_total_changes64() C/C++ interface. */
+ sqlite3_result_int64(context, sqlite3_total_changes64(db));
}
/*
@@ -121029,97 +121894,167 @@ static void minMaxFinalize(sqlite3_context *context){
/*
** group_concat(EXPR, ?SEPARATOR?)
+**
+** The SEPARATOR goes before the EXPR string. This is tragic. The
+** groupConcatInverse() implementation would have been easier if the
+** SEPARATOR were appended after EXPR. And the order is undocumented,
+** so we could change it, in theory. But the old behavior has been
+** around for so long that we dare not, for fear of breaking something.
*/
+typedef struct {
+ StrAccum str; /* The accumulated concatenation */
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ int nAccum; /* Number of strings presently concatenated */
+ int nFirstSepLength; /* Used to detect separator length change */
+ /* If pnSepLengths!=0, refs an array of inter-string separator lengths,
+ ** stored as actually incorporated into presently accumulated result.
+ ** (Hence, its slots in use number nAccum-1 between method calls.)
+ ** If pnSepLengths==0, nFirstSepLength is the length used throughout.
+ */
+ int *pnSepLengths;
+#endif
+} GroupConcatCtx;
+
static void groupConcatStep(
sqlite3_context *context,
int argc,
sqlite3_value **argv
){
const char *zVal;
- StrAccum *pAccum;
+ GroupConcatCtx *pGCC;
const char *zSep;
int nVal, nSep;
assert( argc==1 || argc==2 );
if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return;
- pAccum = (StrAccum*)sqlite3_aggregate_context(context, sizeof(*pAccum));
-
- if( pAccum ){
+ pGCC = (GroupConcatCtx*)sqlite3_aggregate_context(context, sizeof(*pGCC));
+ if( pGCC ){
sqlite3 *db = sqlite3_context_db_handle(context);
- int firstTerm = pAccum->mxAlloc==0;
- pAccum->mxAlloc = db->aLimit[SQLITE_LIMIT_LENGTH];
- if( !firstTerm ){
- if( argc==2 ){
- zSep = (char*)sqlite3_value_text(argv[1]);
- nSep = sqlite3_value_bytes(argv[1]);
- }else{
- zSep = ",";
- nSep = 1;
+ int firstTerm = pGCC->str.mxAlloc==0;
+ pGCC->str.mxAlloc = db->aLimit[SQLITE_LIMIT_LENGTH];
+ if( argc==1 ){
+ if( !firstTerm ){
+ sqlite3_str_appendchar(&pGCC->str, 1, ',');
+ }
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ else{
+ pGCC->nFirstSepLength = 1;
+ }
+#endif
+ }else if( !firstTerm ){
+ zSep = (char*)sqlite3_value_text(argv[1]);
+ nSep = sqlite3_value_bytes(argv[1]);
+ if( zSep ){
+ sqlite3_str_append(&pGCC->str, zSep, nSep);
+ }
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ else{
+ nSep = 0;
+ }
+ if( nSep != pGCC->nFirstSepLength || pGCC->pnSepLengths != 0 ){
+ int *pnsl = pGCC->pnSepLengths;
+ if( pnsl == 0 ){
+ /* First separator length variation seen, start tracking them. */
+ pnsl = (int*)sqlite3_malloc64((pGCC->nAccum+1) * sizeof(int));
+ if( pnsl!=0 ){
+ int i = 0, nA = pGCC->nAccum-1;
+ while( i<nA ) pnsl[i++] = pGCC->nFirstSepLength;
+ }
+ }else{
+ pnsl = (int*)sqlite3_realloc64(pnsl, pGCC->nAccum * sizeof(int));
+ }
+ if( pnsl!=0 ){
+ if( ALWAYS(pGCC->nAccum>0) ){
+ pnsl[pGCC->nAccum-1] = nSep;
+ }
+ pGCC->pnSepLengths = pnsl;
+ }else{
+ sqlite3StrAccumSetError(&pGCC->str, SQLITE_NOMEM);
+ }
}
- if( zSep ) sqlite3_str_append(pAccum, zSep, nSep);
+#endif
}
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ else{
+ pGCC->nFirstSepLength = sqlite3_value_bytes(argv[1]);
+ }
+ pGCC->nAccum += 1;
+#endif
zVal = (char*)sqlite3_value_text(argv[0]);
nVal = sqlite3_value_bytes(argv[0]);
- if( zVal ) sqlite3_str_append(pAccum, zVal, nVal);
+ if( zVal ) sqlite3_str_append(&pGCC->str, zVal, nVal);
}
}
+
#ifndef SQLITE_OMIT_WINDOWFUNC
static void groupConcatInverse(
sqlite3_context *context,
int argc,
sqlite3_value **argv
){
- int n;
- StrAccum *pAccum;
+ GroupConcatCtx *pGCC;
assert( argc==1 || argc==2 );
+ (void)argc; /* Suppress unused parameter warning */
if( sqlite3_value_type(argv[0])==SQLITE_NULL ) return;
- pAccum = (StrAccum*)sqlite3_aggregate_context(context, sizeof(*pAccum));
- /* pAccum is always non-NULL since groupConcatStep() will have always
+ pGCC = (GroupConcatCtx*)sqlite3_aggregate_context(context, sizeof(*pGCC));
+ /* pGCC is always non-NULL since groupConcatStep() will have always
** run frist to initialize it */
- if( ALWAYS(pAccum) ){
- n = sqlite3_value_bytes(argv[0]);
- if( argc==2 ){
- n += sqlite3_value_bytes(argv[1]);
+ if( ALWAYS(pGCC) ){
+ int nVS;
+ /* Must call sqlite3_value_text() to convert the argument into text prior
+ ** to invoking sqlite3_value_bytes(), in case the text encoding is UTF16 */
+ (void)sqlite3_value_text(argv[0]);
+ nVS = sqlite3_value_bytes(argv[0]);
+ pGCC->nAccum -= 1;
+ if( pGCC->pnSepLengths!=0 ){
+ assert(pGCC->nAccum >= 0);
+ if( pGCC->nAccum>0 ){
+ nVS += *pGCC->pnSepLengths;
+ memmove(pGCC->pnSepLengths, pGCC->pnSepLengths+1,
+ (pGCC->nAccum-1)*sizeof(int));
+ }
}else{
- n++;
+ /* If removing single accumulated string, harmlessly over-do. */
+ nVS += pGCC->nFirstSepLength;
}
- if( n>=(int)pAccum->nChar ){
- pAccum->nChar = 0;
+ if( nVS>=(int)pGCC->str.nChar ){
+ pGCC->str.nChar = 0;
}else{
- pAccum->nChar -= n;
- memmove(pAccum->zText, &pAccum->zText[n], pAccum->nChar);
+ pGCC->str.nChar -= nVS;
+ memmove(pGCC->str.zText, &pGCC->str.zText[nVS], pGCC->str.nChar);
+ }
+ if( pGCC->str.nChar==0 ){
+ pGCC->str.mxAlloc = 0;
+ sqlite3_free(pGCC->pnSepLengths);
+ pGCC->pnSepLengths = 0;
}
- if( pAccum->nChar==0 ) pAccum->mxAlloc = 0;
}
}
#else
# define groupConcatInverse 0
#endif /* SQLITE_OMIT_WINDOWFUNC */
static void groupConcatFinalize(sqlite3_context *context){
- StrAccum *pAccum;
- pAccum = sqlite3_aggregate_context(context, 0);
- if( pAccum ){
- if( pAccum->accError==SQLITE_TOOBIG ){
- sqlite3_result_error_toobig(context);
- }else if( pAccum->accError==SQLITE_NOMEM ){
- sqlite3_result_error_nomem(context);
- }else{
- sqlite3_result_text(context, sqlite3StrAccumFinish(pAccum), -1,
- sqlite3_free);
- }
+ GroupConcatCtx *pGCC
+ = (GroupConcatCtx*)sqlite3_aggregate_context(context, 0);
+ if( pGCC ){
+ sqlite3ResultStrAccum(context, &pGCC->str);
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ sqlite3_free(pGCC->pnSepLengths);
+#endif
}
}
#ifndef SQLITE_OMIT_WINDOWFUNC
static void groupConcatValue(sqlite3_context *context){
- sqlite3_str *pAccum;
- pAccum = (sqlite3_str*)sqlite3_aggregate_context(context, 0);
- if( pAccum ){
+ GroupConcatCtx *pGCC
+ = (GroupConcatCtx*)sqlite3_aggregate_context(context, 0);
+ if( pGCC ){
+ StrAccum *pAccum = &pGCC->str;
if( pAccum->accError==SQLITE_TOOBIG ){
sqlite3_result_error_toobig(context);
}else if( pAccum->accError==SQLITE_NOMEM ){
sqlite3_result_error_nomem(context);
}else{
const char *zText = sqlite3_str_value(pAccum);
- sqlite3_result_text(context, zText, -1, SQLITE_TRANSIENT);
+ sqlite3_result_text(context, zText, pAccum->nChar, SQLITE_TRANSIENT);
}
}
}
@@ -121183,11 +122118,12 @@ SQLITE_PRIVATE int sqlite3IsLikeFunction(sqlite3 *db, Expr *pExpr, int *pIsNocas
int nExpr;
assert( pExpr!=0 );
assert( pExpr->op==TK_FUNCTION );
+ assert( ExprUseXList(pExpr) );
if( !pExpr->x.pList ){
return 0;
}
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
nExpr = pExpr->x.pList->nExpr;
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
pDef = sqlite3FindFunction(db, pExpr->u.zToken, nExpr, SQLITE_UTF8, 0);
#ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
if( pDef==0 ) return 0;
@@ -121211,6 +122147,7 @@ SQLITE_PRIVATE int sqlite3IsLikeFunction(sqlite3 *db, Expr *pExpr, int *pIsNocas
Expr *pEscape = pExpr->x.pList->a[2].pExpr;
char *zEscape;
if( pEscape->op!=TK_STRING ) return 0;
+ assert( !ExprHasProperty(pEscape, EP_IntValue) );
zEscape = pEscape->u.zToken;
if( zEscape[0]==0 || zEscape[1]!=0 ) return 0;
if( zEscape[0]==aWc[0] ) return 0;
@@ -121437,12 +122374,12 @@ SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void){
*/
static FuncDef aBuiltinFunc[] = {
/***** Functions only available with SQLITE_TESTCTRL_INTERNAL_FUNCTIONS *****/
+#if !defined(SQLITE_UNTESTABLE)
TEST_FUNC(implies_nonnull_row, 2, INLINEFUNC_implies_nonnull_row, 0),
TEST_FUNC(expr_compare, 2, INLINEFUNC_expr_compare, 0),
TEST_FUNC(expr_implies_expr, 2, INLINEFUNC_expr_implies_expr, 0),
-#ifdef SQLITE_DEBUG
- TEST_FUNC(affinity, 1, INLINEFUNC_affinity, 0),
-#endif
+ TEST_FUNC(affinity, 1, INLINEFUNC_affinity, 0),
+#endif /* !defined(SQLITE_UNTESTABLE) */
/***** Regular functions *****/
#ifdef SQLITE_SOUNDEX
FUNCTION(soundex, 1, 0, 0, soundexFunc ),
@@ -121474,11 +122411,11 @@ SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void){
FUNCTION(min, -1, 0, 1, minmaxFunc ),
FUNCTION(min, 0, 0, 1, 0 ),
WAGGREGATE(min, 1, 0, 1, minmaxStep, minMaxFinalize, minMaxValue, 0,
- SQLITE_FUNC_MINMAX ),
+ SQLITE_FUNC_MINMAX|SQLITE_FUNC_ANYORDER ),
FUNCTION(max, -1, 1, 1, minmaxFunc ),
FUNCTION(max, 0, 1, 1, 0 ),
WAGGREGATE(max, 1, 1, 1, minmaxStep, minMaxFinalize, minMaxValue, 0,
- SQLITE_FUNC_MINMAX ),
+ SQLITE_FUNC_MINMAX|SQLITE_FUNC_ANYORDER ),
FUNCTION2(typeof, 1, 0, 0, typeofFunc, SQLITE_FUNC_TYPEOF),
FUNCTION2(length, 1, 0, 0, lengthFunc, SQLITE_FUNC_LENGTH),
FUNCTION(instr, 2, 0, 0, instrFunc ),
@@ -121514,9 +122451,10 @@ SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void){
WAGGREGATE(total, 1,0,0, sumStep,totalFinalize,totalFinalize,sumInverse, 0),
WAGGREGATE(avg, 1,0,0, sumStep, avgFinalize, avgFinalize, sumInverse, 0),
WAGGREGATE(count, 0,0,0, countStep,
- countFinalize, countFinalize, countInverse, SQLITE_FUNC_COUNT ),
+ countFinalize, countFinalize, countInverse,
+ SQLITE_FUNC_COUNT|SQLITE_FUNC_ANYORDER ),
WAGGREGATE(count, 1,0,0, countStep,
- countFinalize, countFinalize, countInverse, 0 ),
+ countFinalize, countFinalize, countInverse, SQLITE_FUNC_ANYORDER ),
WAGGREGATE(group_concat, 1, 0, 0, groupConcatStep,
groupConcatFinalize, groupConcatValue, groupConcatInverse, 0),
WAGGREGATE(group_concat, 2, 0, 0, groupConcatStep,
@@ -121591,6 +122529,7 @@ SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void){
for(p=sqlite3BuiltinFunctions.a[i]; p; p=p->u.pHash){
int n = sqlite3Strlen30(p->zName);
int h = p->zName[0] + n;
+ assert( p->funcFlags & SQLITE_FUNC_BUILTIN );
printf(" %s(%d)", p->zName, h);
}
printf("\n");
@@ -121818,7 +122757,9 @@ SQLITE_PRIVATE int sqlite3FkLocateIndex(
*/
if( pParent->iPKey>=0 ){
if( !zKey ) return 0;
- if( !sqlite3StrICmp(pParent->aCol[pParent->iPKey].zName, zKey) ) return 0;
+ if( !sqlite3StrICmp(pParent->aCol[pParent->iPKey].zCnName, zKey) ){
+ return 0;
+ }
}
}else if( paiCol ){
assert( nCol>1 );
@@ -121860,11 +122801,11 @@ SQLITE_PRIVATE int sqlite3FkLocateIndex(
/* If the index uses a collation sequence that is different from
** the default collation sequence for the column, this index is
** unusable. Bail out early in this case. */
- zDfltColl = pParent->aCol[iCol].zColl;
+ zDfltColl = sqlite3ColumnColl(&pParent->aCol[iCol]);
if( !zDfltColl ) zDfltColl = sqlite3StrBINARY;
if( sqlite3StrICmp(pIdx->azColl[i], zDfltColl) ) break;
- zIdxCol = pParent->aCol[iCol].zName;
+ zIdxCol = pParent->aCol[iCol].zCnName;
for(j=0; j<nCol; j++){
if( sqlite3StrICmp(pFKey->aCol[j].zCol, zIdxCol)==0 ){
if( aiCol ) aiCol[i] = pFKey->aCol[j].iFrom;
@@ -122088,7 +123029,7 @@ static Expr *exprTableRegister(
pCol = &pTab->aCol[iCol];
pExpr->iTable = regBase + sqlite3TableColumnToStorage(pTab,iCol) + 1;
pExpr->affExpr = pCol->affinity;
- zColl = pCol->zColl;
+ zColl = sqlite3ColumnColl(pCol);
if( zColl==0 ) zColl = db->pDfltColl->zName;
pExpr = sqlite3ExprAddCollateString(pParse, pExpr, zColl);
}else{
@@ -122111,6 +123052,7 @@ static Expr *exprTableColumn(
){
Expr *pExpr = sqlite3Expr(db, TK_COLUMN, 0);
if( pExpr ){
+ assert( ExprUseYTab(pExpr) );
pExpr->y.pTab = pTab;
pExpr->iTable = iCursor;
pExpr->iColumn = iCol;
@@ -122197,7 +123139,7 @@ static void fkScanChildren(
pLeft = exprTableRegister(pParse, pTab, regData, iCol);
iCol = aiCol ? aiCol[i] : pFKey->aCol[0].iFrom;
assert( iCol>=0 );
- zCol = pFKey->pFrom->aCol[iCol].zName;
+ zCol = pFKey->pFrom->aCol[iCol].zCnName;
pRight = sqlite3Expr(db, TK_ID, zCol);
pEq = sqlite3PExpr(pParse, TK_EQ, pLeft, pRight);
pWhere = sqlite3ExprAnd(pParse, pWhere, pEq);
@@ -122232,7 +123174,7 @@ static void fkScanChildren(
i16 iCol = pIdx->aiColumn[i];
assert( iCol>=0 );
pLeft = exprTableRegister(pParse, pTab, regData, iCol);
- pRight = sqlite3Expr(db, TK_ID, pTab->aCol[iCol].zName);
+ pRight = sqlite3Expr(db, TK_ID, pTab->aCol[iCol].zCnName);
pEq = sqlite3PExpr(pParse, TK_IS, pLeft, pRight);
pAll = sqlite3ExprAnd(pParse, pAll, pEq);
}
@@ -122303,6 +123245,25 @@ static void fkTriggerDelete(sqlite3 *dbMem, Trigger *p){
}
/*
+** Clear the apTrigger[] cache of CASCADE triggers for all foreign keys
+** in a particular database. This needs to happen when the schema
+** changes.
+*/
+SQLITE_PRIVATE void sqlite3FkClearTriggerCache(sqlite3 *db, int iDb){
+ HashElem *k;
+ Hash *pHash = &db->aDb[iDb].pSchema->tblHash;
+ for(k=sqliteHashFirst(pHash); k; k=sqliteHashNext(k)){
+ Table *pTab = sqliteHashData(k);
+ FKey *pFKey;
+ if( !IsOrdinaryTable(pTab) ) continue;
+ for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
+ fkTriggerDelete(db, pFKey->apTrigger[0]); pFKey->apTrigger[0] = 0;
+ fkTriggerDelete(db, pFKey->apTrigger[1]); pFKey->apTrigger[1] = 0;
+ }
+ }
+}
+
+/*
** This function is called to generate code that runs when table pTab is
** being dropped from the database. The SrcList passed as the second argument
** to this function contains a single entry guaranteed to resolve to
@@ -122321,12 +123282,12 @@ static void fkTriggerDelete(sqlite3 *dbMem, Trigger *p){
*/
SQLITE_PRIVATE void sqlite3FkDropTable(Parse *pParse, SrcList *pName, Table *pTab){
sqlite3 *db = pParse->db;
- if( (db->flags&SQLITE_ForeignKeys) && !IsVirtual(pTab) ){
+ if( (db->flags&SQLITE_ForeignKeys) && IsOrdinaryTable(pTab) ){
int iSkip = 0;
Vdbe *v = sqlite3GetVdbe(pParse);
assert( v ); /* VDBE has already been allocated */
- assert( pTab->pSelect==0 ); /* Not a view */
+ assert( IsOrdinaryTable(pTab) );
if( sqlite3FkReferences(pTab)==0 ){
/* Search for a deferred foreign key constraint for which this table
** is the child table. If one cannot be found, return without
@@ -122334,7 +123295,7 @@ SQLITE_PRIVATE void sqlite3FkDropTable(Parse *pParse, SrcList *pName, Table *pTa
** the entire DELETE if there are no outstanding deferred constraints
** when this statement is run. */
FKey *p;
- for(p=pTab->pFKey; p; p=p->pNextFrom){
+ for(p=pTab->u.tab.pFKey; p; p=p->pNextFrom){
if( p->isDeferred || (db->flags & SQLITE_DeferFKs) ) break;
}
if( !p ) return;
@@ -122423,7 +123384,7 @@ static int fkParentIsModified(
if( aChange[iKey]>=0 || (iKey==pTab->iPKey && bChngRowid) ){
Column *pCol = &pTab->aCol[iKey];
if( zKey ){
- if( 0==sqlite3StrICmp(pCol->zName, zKey) ) return 1;
+ if( 0==sqlite3StrICmp(pCol->zCnName, zKey) ) return 1;
}else if( pCol->colFlags & COLFLAG_PRIMKEY ){
return 1;
}
@@ -122490,13 +123451,14 @@ SQLITE_PRIVATE void sqlite3FkCheck(
/* If foreign-keys are disabled, this function is a no-op. */
if( (db->flags&SQLITE_ForeignKeys)==0 ) return;
+ if( !IsOrdinaryTable(pTab) ) return;
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
zDb = db->aDb[iDb].zDbSName;
/* Loop through all the foreign key constraints for which pTab is the
** child table (the table that the foreign key definition is part of). */
- for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){
+ for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pFKey->pNextFrom){
Table *pTo; /* Parent table of foreign key pFKey */
Index *pIdx = 0; /* Index on key columns in pTo */
int *aiFree = 0;
@@ -122563,7 +123525,7 @@ SQLITE_PRIVATE void sqlite3FkCheck(
** values read from the parent table are NULL. */
if( db->xAuth ){
int rcauth;
- char *zCol = pTo->aCol[pIdx ? pIdx->aiColumn[i] : pTo->iPKey].zName;
+ char *zCol = pTo->aCol[pIdx ? pIdx->aiColumn[i] : pTo->iPKey].zCnName;
rcauth = sqlite3AuthReadCol(pParse, pTo->zName, zCol, iDb);
bIgnore = (rcauth==SQLITE_IGNORE);
}
@@ -122678,10 +123640,10 @@ SQLITE_PRIVATE u32 sqlite3FkOldmask(
Table *pTab /* Table being modified */
){
u32 mask = 0;
- if( pParse->db->flags&SQLITE_ForeignKeys ){
+ if( pParse->db->flags&SQLITE_ForeignKeys && IsOrdinaryTable(pTab) ){
FKey *p;
int i;
- for(p=pTab->pFKey; p; p=p->pNextFrom){
+ for(p=pTab->u.tab.pFKey; p; p=p->pNextFrom){
for(i=0; i<p->nCol; i++) mask |= COLUMN_MASK(p->aCol[i].iFrom);
}
for(p=sqlite3FkReferences(pTab); p; p=p->pNextTo){
@@ -122731,19 +123693,19 @@ SQLITE_PRIVATE int sqlite3FkRequired(
){
int eRet = 1; /* Value to return if bHaveFK is true */
int bHaveFK = 0; /* If FK processing is required */
- if( pParse->db->flags&SQLITE_ForeignKeys ){
+ if( pParse->db->flags&SQLITE_ForeignKeys && IsOrdinaryTable(pTab) ){
if( !aChange ){
/* A DELETE operation. Foreign key processing is required if the
** table in question is either the child or parent table for any
** foreign key constraint. */
- bHaveFK = (sqlite3FkReferences(pTab) || pTab->pFKey);
+ bHaveFK = (sqlite3FkReferences(pTab) || pTab->u.tab.pFKey);
}else{
/* This is an UPDATE. Foreign key processing is only required if the
** operation modifies one or more child or parent key columns. */
FKey *p;
/* Check if any child key columns are being modified. */
- for(p=pTab->pFKey; p; p=p->pNextFrom){
+ for(p=pTab->u.tab.pFKey; p; p=p->pNextFrom){
if( fkChildIsModified(pTab, p, aChange, chngRowid) ){
if( 0==sqlite3_stricmp(pTab->zName, p->zTo) ) eRet = 2;
bHaveFK = 1;
@@ -122836,8 +123798,8 @@ static Trigger *fkActionTrigger(
assert( pIdx!=0 || (pTab->iPKey>=0 && pTab->iPKey<pTab->nCol) );
assert( pIdx==0 || pIdx->aiColumn[i]>=0 );
sqlite3TokenInit(&tToCol,
- pTab->aCol[pIdx ? pIdx->aiColumn[i] : pTab->iPKey].zName);
- sqlite3TokenInit(&tFromCol, pFKey->pFrom->aCol[iFromCol].zName);
+ pTab->aCol[pIdx ? pIdx->aiColumn[i] : pTab->iPKey].zCnName);
+ sqlite3TokenInit(&tFromCol, pFKey->pFrom->aCol[iFromCol].zCnName);
/* Create the expression "OLD.zToCol = zFromCol". It is important
** that the "OLD.zToCol" term is on the LHS of the = operator, so
@@ -122882,7 +123844,7 @@ static Trigger *fkActionTrigger(
testcase( pCol->colFlags & COLFLAG_STORED );
pDflt = 0;
}else{
- pDflt = pCol->pDflt;
+ pDflt = sqlite3ColumnExpr(pFKey->pFrom, pCol);
}
if( pDflt ){
pNew = sqlite3ExprDup(db, pDflt, 0);
@@ -123019,9 +123981,9 @@ SQLITE_PRIVATE void sqlite3FkDelete(sqlite3 *db, Table *pTab){
FKey *pFKey; /* Iterator variable */
FKey *pNext; /* Copy of pFKey->pNextFrom */
- assert( db==0 || IsVirtual(pTab)
- || sqlite3SchemaMutexHeld(db, 0, pTab->pSchema) );
- for(pFKey=pTab->pFKey; pFKey; pFKey=pNext){
+ assert( IsOrdinaryTable(pTab) );
+ for(pFKey=pTab->u.tab.pFKey; pFKey; pFKey=pNext){
+ assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pTab->pSchema) );
/* Remove the FK from the fkeyHash hash table. */
if( !db || db->pnBytesFreed==0 ){
@@ -123101,7 +124063,7 @@ SQLITE_PRIVATE void sqlite3OpenTable(
}else{
Index *pPk = sqlite3PrimaryKeyIndex(pTab);
assert( pPk!=0 );
- assert( pPk->tnum==pTab->tnum );
+ assert( pPk->tnum==pTab->tnum || CORRUPT_DB );
sqlite3VdbeAddOp3(v, opcode, iCur, pPk->tnum, iDb);
sqlite3VdbeSetP4KeyInfo(pParse, pPk);
VdbeComment((v, "%s", pTab->zName));
@@ -123168,28 +124130,68 @@ SQLITE_PRIVATE const char *sqlite3IndexAffinityStr(sqlite3 *db, Index *pIdx){
}
/*
+** Make changes to the evolving bytecode to do affinity transformations
+** of values that are about to be gathered into a row for table pTab.
+**
+** For ordinary (legacy, non-strict) tables:
+** -----------------------------------------
+**
** Compute the affinity string for table pTab, if it has not already been
** computed. As an optimization, omit trailing SQLITE_AFF_BLOB affinities.
**
-** If the affinity exists (if it is no entirely SQLITE_AFF_BLOB values) and
-** if iReg>0 then code an OP_Affinity opcode that will set the affinities
-** for register iReg and following. Or if affinities exists and iReg==0,
+** If the affinity string is empty (because it was all SQLITE_AFF_BLOB entries
+** which were then optimized out) then this routine becomes a no-op.
+**
+** Otherwise if iReg>0 then code an OP_Affinity opcode that will set the
+** affinities for register iReg and following. Or if iReg==0,
** then just set the P4 operand of the previous opcode (which should be
** an OP_MakeRecord) to the affinity string.
**
** A column affinity string has one character per column:
**
-** Character Column affinity
-** ------------------------------
-** 'A' BLOB
-** 'B' TEXT
-** 'C' NUMERIC
-** 'D' INTEGER
-** 'E' REAL
+** Character Column affinity
+** --------- ---------------
+** 'A' BLOB
+** 'B' TEXT
+** 'C' NUMERIC
+** 'D' INTEGER
+** 'E' REAL
+**
+** For STRICT tables:
+** ------------------
+**
+** Generate an appropropriate OP_TypeCheck opcode that will verify the
+** datatypes against the column definitions in pTab. If iReg==0, that
+** means an OP_MakeRecord opcode has already been generated and should be
+** the last opcode generated. The new OP_TypeCheck needs to be inserted
+** before the OP_MakeRecord. The new OP_TypeCheck should use the same
+** register set as the OP_MakeRecord. If iReg>0 then register iReg is
+** the first of a series of registers that will form the new record.
+** Apply the type checking to that array of registers.
*/
SQLITE_PRIVATE void sqlite3TableAffinity(Vdbe *v, Table *pTab, int iReg){
int i, j;
- char *zColAff = pTab->zColAff;
+ char *zColAff;
+ if( pTab->tabFlags & TF_Strict ){
+ if( iReg==0 ){
+ /* Move the previous opcode (which should be OP_MakeRecord) forward
+ ** by one slot and insert a new OP_TypeCheck where the current
+ ** OP_MakeRecord is found */
+ VdbeOp *pPrev;
+ sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
+ pPrev = sqlite3VdbeGetOp(v, -1);
+ assert( pPrev!=0 );
+ assert( pPrev->opcode==OP_MakeRecord || sqlite3VdbeDb(v)->mallocFailed );
+ pPrev->opcode = OP_TypeCheck;
+ sqlite3VdbeAddOp3(v, OP_MakeRecord, pPrev->p1, pPrev->p2, pPrev->p3);
+ }else{
+ /* Insert an isolated OP_Typecheck */
+ sqlite3VdbeAddOp2(v, OP_TypeCheck, iReg, pTab->nNVCol);
+ sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
+ }
+ return;
+ }
+ zColAff = pTab->zColAff;
if( zColAff==0 ){
sqlite3 *db = sqlite3VdbeDb(v);
zColAff = (char *)sqlite3DbMallocRaw(0, pTab->nCol+1);
@@ -123215,6 +124217,8 @@ SQLITE_PRIVATE void sqlite3TableAffinity(Vdbe *v, Table *pTab, int iReg){
if( iReg ){
sqlite3VdbeAddOp4(v, OP_Affinity, iReg, i, 0, zColAff, i);
}else{
+ assert( sqlite3VdbeGetOp(v, -1)->opcode==OP_MakeRecord
+ || sqlite3VdbeDb(v)->mallocFailed );
sqlite3VdbeChangeP4(v, -1, zColAff, i);
}
}
@@ -123298,24 +124302,30 @@ SQLITE_PRIVATE void sqlite3ComputeGeneratedColumns(
** that appropriate affinity has been applied to the regular columns
*/
sqlite3TableAffinity(pParse->pVdbe, pTab, iRegStore);
- if( (pTab->tabFlags & TF_HasStored)!=0
- && (pOp = sqlite3VdbeGetOp(pParse->pVdbe,-1))->opcode==OP_Affinity
- ){
- /* Change the OP_Affinity argument to '@' (NONE) for all stored
- ** columns. '@' is the no-op affinity and those columns have not
- ** yet been computed. */
- int ii, jj;
- char *zP4 = pOp->p4.z;
- assert( zP4!=0 );
- assert( pOp->p4type==P4_DYNAMIC );
- for(ii=jj=0; zP4[jj]; ii++){
- if( pTab->aCol[ii].colFlags & COLFLAG_VIRTUAL ){
- continue;
- }
- if( pTab->aCol[ii].colFlags & COLFLAG_STORED ){
- zP4[jj] = SQLITE_AFF_NONE;
+ if( (pTab->tabFlags & TF_HasStored)!=0 ){
+ pOp = sqlite3VdbeGetOp(pParse->pVdbe,-1);
+ if( pOp->opcode==OP_Affinity ){
+ /* Change the OP_Affinity argument to '@' (NONE) for all stored
+ ** columns. '@' is the no-op affinity and those columns have not
+ ** yet been computed. */
+ int ii, jj;
+ char *zP4 = pOp->p4.z;
+ assert( zP4!=0 );
+ assert( pOp->p4type==P4_DYNAMIC );
+ for(ii=jj=0; zP4[jj]; ii++){
+ if( pTab->aCol[ii].colFlags & COLFLAG_VIRTUAL ){
+ continue;
+ }
+ if( pTab->aCol[ii].colFlags & COLFLAG_STORED ){
+ zP4[jj] = SQLITE_AFF_NONE;
+ }
+ jj++;
}
- jj++;
+ }else if( pOp->opcode==OP_TypeCheck ){
+ /* If an OP_TypeCheck was generated because the table is STRICT,
+ ** then set the P3 operand to indicate that generated columns should
+ ** not be checked */
+ pOp->p3 = 1;
}
}
@@ -123351,7 +124361,7 @@ SQLITE_PRIVATE void sqlite3ComputeGeneratedColumns(
int x;
pCol->colFlags |= COLFLAG_BUSY;
w.eCode = 0;
- sqlite3WalkExpr(&w, pCol->pDflt);
+ sqlite3WalkExpr(&w, sqlite3ColumnExpr(pTab, pCol));
pCol->colFlags &= ~COLFLAG_BUSY;
if( w.eCode & COLFLAG_NOTAVAIL ){
pRedo = pCol;
@@ -123360,13 +124370,13 @@ SQLITE_PRIVATE void sqlite3ComputeGeneratedColumns(
eProgress = 1;
assert( pCol->colFlags & COLFLAG_GENERATED );
x = sqlite3TableColumnToStorage(pTab, i) + iRegStore;
- sqlite3ExprCodeGeneratedColumn(pParse, pCol, x);
+ sqlite3ExprCodeGeneratedColumn(pParse, pTab, pCol, x);
pCol->colFlags &= ~COLFLAG_NOTAVAIL;
}
}
}while( pRedo && eProgress );
if( pRedo ){
- sqlite3ErrorMsg(pParse, "generated column loop on \"%s\"", pRedo->zName);
+ sqlite3ErrorMsg(pParse, "generated column loop on \"%s\"", pRedo->zCnName);
}
pParse->iSelfTab = 0;
}
@@ -123761,7 +124771,7 @@ SQLITE_PRIVATE void sqlite3Insert(
*/
#ifndef SQLITE_OMIT_TRIGGER
pTrigger = sqlite3TriggersExist(pParse, pTab, TK_INSERT, 0, &tmask);
- isView = pTab->pSelect!=0;
+ isView = IsView(pTab);
#else
# define pTrigger 0
# define tmask 0
@@ -123852,7 +124862,7 @@ SQLITE_PRIVATE void sqlite3Insert(
}
for(i=0; i<pColumn->nId; i++){
for(j=0; j<pTab->nCol; j++){
- if( sqlite3StrICmp(pColumn->a[i].zName, pTab->aCol[j].zName)==0 ){
+ if( sqlite3StrICmp(pColumn->a[i].zName, pTab->aCol[j].zCnName)==0 ){
pColumn->a[i].idx = j;
if( i!=j ) bIdListInOrder = 0;
if( j==pTab->iPKey ){
@@ -123862,7 +124872,7 @@ SQLITE_PRIVATE void sqlite3Insert(
if( pTab->aCol[j].colFlags & (COLFLAG_STORED|COLFLAG_VIRTUAL) ){
sqlite3ErrorMsg(pParse,
"cannot INSERT into generated column \"%s\"",
- pTab->aCol[j].zName);
+ pTab->aCol[j].zCnName);
goto insert_cleanup;
}
#endif
@@ -124047,7 +125057,7 @@ SQLITE_PRIVATE void sqlite3Insert(
pTab->zName);
goto insert_cleanup;
}
- if( pTab->pSelect ){
+ if( IsView(pTab) ){
sqlite3ErrorMsg(pParse, "cannot UPSERT a view");
goto insert_cleanup;
}
@@ -124146,7 +125156,9 @@ SQLITE_PRIVATE void sqlite3Insert(
}else if( pColumn==0 ){
/* Hidden columns that are not explicitly named in the INSERT
** get there default value */
- sqlite3ExprCodeFactorable(pParse, pTab->aCol[i].pDflt, iRegStore);
+ sqlite3ExprCodeFactorable(pParse,
+ sqlite3ColumnExpr(pTab, &pTab->aCol[i]),
+ iRegStore);
continue;
}
}
@@ -124155,13 +125167,17 @@ SQLITE_PRIVATE void sqlite3Insert(
if( j>=pColumn->nId ){
/* A column not named in the insert column list gets its
** default value */
- sqlite3ExprCodeFactorable(pParse, pTab->aCol[i].pDflt, iRegStore);
+ sqlite3ExprCodeFactorable(pParse,
+ sqlite3ColumnExpr(pTab, &pTab->aCol[i]),
+ iRegStore);
continue;
}
k = j;
}else if( nColumn==0 ){
/* This is INSERT INTO ... DEFAULT VALUES. Load the default value. */
- sqlite3ExprCodeFactorable(pParse, pTab->aCol[i].pDflt, iRegStore);
+ sqlite3ExprCodeFactorable(pParse,
+ sqlite3ColumnExpr(pTab, &pTab->aCol[i]),
+ iRegStore);
continue;
}else{
k = i - nHidden;
@@ -124676,7 +125692,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
db = pParse->db;
v = pParse->pVdbe;
assert( v!=0 );
- assert( pTab->pSelect==0 ); /* This table is not a VIEW */
+ assert( !IsView(pTab) ); /* This table is not a VIEW */
nCol = pTab->nCol;
/* pPk is the PRIMARY KEY index for WITHOUT ROWID tables and NULL for
@@ -124727,7 +125743,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
}
if( onError==OE_Replace ){
if( b2ndPass /* REPLACE becomes ABORT on the 2nd pass */
- || pCol->pDflt==0 /* REPLACE is ABORT if no DEFAULT value */
+ || pCol->iDflt==0 /* REPLACE is ABORT if no DEFAULT value */
){
testcase( pCol->colFlags & COLFLAG_VIRTUAL );
testcase( pCol->colFlags & COLFLAG_STORED );
@@ -124749,7 +125765,8 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
VdbeCoverage(v);
assert( (pCol->colFlags & COLFLAG_GENERATED)==0 );
nSeenReplace++;
- sqlite3ExprCodeCopy(pParse, pCol->pDflt, iReg);
+ sqlite3ExprCodeCopy(pParse,
+ sqlite3ColumnExpr(pTab, pCol), iReg);
sqlite3VdbeJumpHere(v, addr1);
break;
}
@@ -124759,7 +125776,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
case OE_Rollback:
case OE_Fail: {
char *zMsg = sqlite3MPrintf(db, "%s.%s", pTab->zName,
- pCol->zName);
+ pCol->zCnName);
sqlite3VdbeAddOp3(v, OP_HaltIfNull, SQLITE_CONSTRAINT_NOTNULL,
onError, iReg);
sqlite3VdbeAppendP4(v, zMsg, P4_DYNAMIC);
@@ -125012,6 +126029,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
if( onError==OE_Replace /* IPK rule is REPLACE */
&& onError!=overrideError /* Rules for other constraints are different */
&& pTab->pIndex /* There exist other constraints */
+ && !upsertIpkDelay /* IPK check already deferred by UPSERT */
){
ipkTop = sqlite3VdbeAddOp0(v, OP_Goto)+1;
VdbeComment((v, "defer IPK REPLACE until last"));
@@ -125177,7 +126195,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
testcase( sqlite3TableColumnToStorage(pTab, iField)!=iField );
x = sqlite3TableColumnToStorage(pTab, iField) + regNewData + 1;
sqlite3VdbeAddOp2(v, OP_SCopy, x, regIdx+i);
- VdbeComment((v, "%s", pTab->aCol[iField].zName));
+ VdbeComment((v, "%s", pTab->aCol[iField].zCnName));
}
}
sqlite3VdbeAddOp3(v, OP_MakeRecord, regIdx, pIdx->nColumn, aRegIdx[ix]);
@@ -125229,6 +126247,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
** This is not possible for ENABLE_PREUPDATE_HOOK builds, as the row
** must be explicitly deleted in order to ensure any pre-update hook
** is invoked. */
+ assert( IsOrdinaryTable(pTab) );
#ifndef SQLITE_ENABLE_PREUPDATE_HOOK
if( (ix==0 && pIdx->pNext==0) /* Condition 3 */
&& pPk==pIdx /* Condition 2 */
@@ -125236,7 +126255,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
&& ( 0==(db->flags&SQLITE_RecTriggers) || /* Condition 4 */
0==sqlite3TriggersExist(pParse, pTab, TK_DELETE, 0, 0))
&& ( 0==(db->flags&SQLITE_ForeignKeys) || /* Condition 5 */
- (0==pTab->pFKey && 0==sqlite3FkReferences(pTab)))
+ (0==pTab->u.tab.pFKey && 0==sqlite3FkReferences(pTab)))
){
sqlite3VdbeResolveLabel(v, addrUniqueOk);
continue;
@@ -125271,7 +126290,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
x = sqlite3TableColumnToIndex(pIdx, pPk->aiColumn[i]);
sqlite3VdbeAddOp3(v, OP_Column, iThisCur, x, regR+i);
VdbeComment((v, "%s.%s", pTab->zName,
- pTab->aCol[pPk->aiColumn[i]].zName));
+ pTab->aCol[pPk->aiColumn[i]].zCnName));
}
}
if( isUpdate ){
@@ -125335,7 +126354,8 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
assert( onError==OE_Replace );
nConflictCk = sqlite3VdbeCurrentAddr(v) - addrConflictCk;
- assert( nConflictCk>0 );
+ assert( nConflictCk>0 || db->mallocFailed );
+ testcase( nConflictCk<=0 );
testcase( nConflictCk>1 );
if( regTrigCnt ){
sqlite3MultiWrite(pParse);
@@ -125418,6 +126438,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
if( ipkTop ){
sqlite3VdbeGoto(v, ipkTop);
VdbeComment((v, "Do IPK REPLACE"));
+ assert( ipkBottom>0 );
sqlite3VdbeJumpHere(v, ipkBottom);
}
@@ -125470,7 +126491,7 @@ SQLITE_PRIVATE void sqlite3SetMakeRecordP5(Vdbe *v, Table *pTab){
if( pTab->pSchema->file_format<2 ) return;
for(i=pTab->nCol-1; i>0; i--){
- if( pTab->aCol[i].pDflt!=0 ) break;
+ if( pTab->aCol[i].iDflt!=0 ) break;
if( pTab->aCol[i].colFlags & COLFLAG_PRIMKEY ) break;
}
sqlite3VdbeChangeP5(v, i+1);
@@ -125535,7 +126556,7 @@ SQLITE_PRIVATE void sqlite3CompleteInsertion(
v = pParse->pVdbe;
assert( v!=0 );
- assert( pTab->pSelect==0 ); /* This table is not a VIEW */
+ assert( !IsView(pTab) ); /* This table is not a VIEW */
for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
/* All REPLACE indexes are at the end of the list */
assert( pIdx->onError!=OE_Replace
@@ -125548,7 +126569,6 @@ SQLITE_PRIVATE void sqlite3CompleteInsertion(
}
pik_flags = (useSeekResult ? OPFLAG_USESEEKRESULT : 0);
if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) ){
- assert( pParse->nested==0 );
pik_flags |= OPFLAG_NCHANGE;
pik_flags |= (update_flags & OPFLAG_SAVEPOSITION);
if( update_flags==0 ){
@@ -125621,8 +126641,9 @@ SQLITE_PRIVATE int sqlite3OpenTableAndIndices(
assert( op==OP_OpenWrite || p5==0 );
if( IsVirtual(pTab) ){
/* This routine is a no-op for virtual tables. Leave the output
- ** variables *piDataCur and *piIdxCur uninitialized so that valgrind
- ** can detect if they are used by mistake in the caller. */
+ ** variables *piDataCur and *piIdxCur set to illegal cursor numbers
+ ** for improved error detection. */
+ *piDataCur = *piIdxCur = -999;
return 0;
}
iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
@@ -125837,13 +126858,8 @@ static int xferOptimization(
if( HasRowid(pDest)!=HasRowid(pSrc) ){
return 0; /* source and destination must both be WITHOUT ROWID or not */
}
-#ifndef SQLITE_OMIT_VIRTUALTABLE
- if( IsVirtual(pSrc) ){
- return 0; /* tab2 must not be a virtual table */
- }
-#endif
- if( pSrc->pSelect ){
- return 0; /* tab2 may not be a view */
+ if( !IsOrdinaryTable(pSrc) ){
+ return 0; /* tab2 may not be a view or virtual table */
}
if( pDest->nCol!=pSrc->nCol ){
return 0; /* Number of columns must be the same in tab1 and tab2 */
@@ -125851,6 +126867,9 @@ static int xferOptimization(
if( pDest->iPKey!=pSrc->iPKey ){
return 0; /* Both tables must have the same INTEGER PRIMARY KEY */
}
+ if( (pDest->tabFlags & TF_Strict)!=0 && (pSrc->tabFlags & TF_Strict)==0 ){
+ return 0; /* Cannot feed from a non-strict into a strict table */
+ }
for(i=0; i<pDest->nCol; i++){
Column *pDestCol = &pDest->aCol[i];
Column *pSrcCol = &pSrc->aCol[i];
@@ -125887,7 +126906,9 @@ static int xferOptimization(
** This requirement could be relaxed for VIRTUAL columns, I suppose.
*/
if( (pDestCol->colFlags & COLFLAG_GENERATED)!=0 ){
- if( sqlite3ExprCompare(0, pSrcCol->pDflt, pDestCol->pDflt, -1)!=0 ){
+ if( sqlite3ExprCompare(0,
+ sqlite3ColumnExpr(pSrc, pSrcCol),
+ sqlite3ColumnExpr(pDest, pDestCol), -1)!=0 ){
testcase( pDestCol->colFlags & COLFLAG_VIRTUAL );
testcase( pDestCol->colFlags & COLFLAG_STORED );
return 0; /* Different generator expressions */
@@ -125897,7 +126918,8 @@ static int xferOptimization(
if( pDestCol->affinity!=pSrcCol->affinity ){
return 0; /* Affinity must be the same on all columns */
}
- if( sqlite3_stricmp(pDestCol->zColl, pSrcCol->zColl)!=0 ){
+ if( sqlite3_stricmp(sqlite3ColumnColl(pDestCol),
+ sqlite3ColumnColl(pSrcCol))!=0 ){
return 0; /* Collating sequence must be the same on all columns */
}
if( pDestCol->notNull && !pSrcCol->notNull ){
@@ -125905,11 +126927,15 @@ static int xferOptimization(
}
/* Default values for second and subsequent columns need to match. */
if( (pDestCol->colFlags & COLFLAG_GENERATED)==0 && i>0 ){
- assert( pDestCol->pDflt==0 || pDestCol->pDflt->op==TK_SPAN );
- assert( pSrcCol->pDflt==0 || pSrcCol->pDflt->op==TK_SPAN );
- if( (pDestCol->pDflt==0)!=(pSrcCol->pDflt==0)
- || (pDestCol->pDflt && strcmp(pDestCol->pDflt->u.zToken,
- pSrcCol->pDflt->u.zToken)!=0)
+ Expr *pDestExpr = sqlite3ColumnExpr(pDest, pDestCol);
+ Expr *pSrcExpr = sqlite3ColumnExpr(pSrc, pSrcCol);
+ assert( pDestExpr==0 || pDestExpr->op==TK_SPAN );
+ assert( pDestExpr==0 || !ExprHasProperty(pDestExpr, EP_IntValue) );
+ assert( pSrcExpr==0 || pSrcExpr->op==TK_SPAN );
+ assert( pSrcExpr==0 || !ExprHasProperty(pSrcExpr, EP_IntValue) );
+ if( (pDestExpr==0)!=(pSrcExpr==0)
+ || (pDestExpr!=0 && strcmp(pDestExpr->u.zToken,
+ pSrcExpr->u.zToken)!=0)
){
return 0; /* Default values must be the same for all columns */
}
@@ -125946,7 +126972,8 @@ static int xferOptimization(
** the extra complication to make this rule less restrictive is probably
** not worth the effort. Ticket [6284df89debdfa61db8073e062908af0c9b6118e]
*/
- if( (db->flags & SQLITE_ForeignKeys)!=0 && pDest->pFKey!=0 ){
+ assert( IsOrdinaryTable(pDest) );
+ if( (db->flags & SQLITE_ForeignKeys)!=0 && pDest->u.tab.pFKey!=0 ){
return 0;
}
#endif
@@ -126624,6 +127651,13 @@ struct sqlite3_api_routines {
sqlite3_file *(*database_file_object)(const char*);
/* Version 3.34.0 and later */
int (*txn_state)(sqlite3*,const char*);
+ /* Version 3.36.1 and later */
+ sqlite3_int64 (*changes64)(sqlite3*);
+ sqlite3_int64 (*total_changes64)(sqlite3*);
+ /* Version 3.37.0 and later */
+ int (*autovacuum_pages)(sqlite3*,
+ unsigned int(*)(void*,const char*,unsigned int,unsigned int,unsigned int),
+ void*, void(*)(void*));
};
/*
@@ -126930,6 +127964,11 @@ typedef int (*sqlite3_loadext_entry)(
#define sqlite3_database_file_object sqlite3_api->database_file_object
/* Version 3.34.0 and later */
#define sqlite3_txn_state sqlite3_api->txn_state
+/* Version 3.36.1 and later */
+#define sqlite3_changes64 sqlite3_api->changes64
+#define sqlite3_total_changes64 sqlite3_api->total_changes64
+/* Version 3.37.0 and later */
+#define sqlite3_autovacuum_pages sqlite3_api->autovacuum_pages
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
@@ -127414,6 +128453,11 @@ static const sqlite3_api_routines sqlite3Apis = {
sqlite3_database_file_object,
/* Version 3.34.0 and later */
sqlite3_txn_state,
+ /* Version 3.36.1 and later */
+ sqlite3_changes64,
+ sqlite3_total_changes64,
+ /* Version 3.37.0 and later */
+ sqlite3_autovacuum_pages,
};
/* True if x is the directory separator character
@@ -127876,13 +128920,14 @@ SQLITE_PRIVATE void sqlite3AutoLoadExtensions(sqlite3 *db){
#define PragTyp_SOFT_HEAP_LIMIT 35
#define PragTyp_SYNCHRONOUS 36
#define PragTyp_TABLE_INFO 37
-#define PragTyp_TEMP_STORE 38
-#define PragTyp_TEMP_STORE_DIRECTORY 39
-#define PragTyp_THREADS 40
-#define PragTyp_WAL_AUTOCHECKPOINT 41
-#define PragTyp_WAL_CHECKPOINT 42
-#define PragTyp_LOCK_STATUS 43
-#define PragTyp_STATS 44
+#define PragTyp_TABLE_LIST 38
+#define PragTyp_TEMP_STORE 39
+#define PragTyp_TEMP_STORE_DIRECTORY 40
+#define PragTyp_THREADS 41
+#define PragTyp_WAL_AUTOCHECKPOINT 42
+#define PragTyp_WAL_CHECKPOINT 43
+#define PragTyp_LOCK_STATUS 44
+#define PragTyp_STATS 45
/* Property flags associated with various pragma. */
#define PragFlg_NeedSchema 0x01 /* Force schema load before running */
@@ -127915,45 +128960,51 @@ static const char *const pragCName[] = {
/* 13 */ "pk",
/* 14 */ "hidden",
/* table_info reuses 8 */
- /* 15 */ "seqno", /* Used by: index_xinfo */
- /* 16 */ "cid",
- /* 17 */ "name",
- /* 18 */ "desc",
- /* 19 */ "coll",
- /* 20 */ "key",
- /* 21 */ "name", /* Used by: function_list */
- /* 22 */ "builtin",
- /* 23 */ "type",
- /* 24 */ "enc",
- /* 25 */ "narg",
- /* 26 */ "flags",
- /* 27 */ "tbl", /* Used by: stats */
- /* 28 */ "idx",
- /* 29 */ "wdth",
- /* 30 */ "hght",
- /* 31 */ "flgs",
- /* 32 */ "seq", /* Used by: index_list */
- /* 33 */ "name",
- /* 34 */ "unique",
- /* 35 */ "origin",
- /* 36 */ "partial",
- /* 37 */ "table", /* Used by: foreign_key_check */
- /* 38 */ "rowid",
- /* 39 */ "parent",
- /* 40 */ "fkid",
- /* index_info reuses 15 */
- /* 41 */ "seq", /* Used by: database_list */
- /* 42 */ "name",
- /* 43 */ "file",
- /* 44 */ "busy", /* Used by: wal_checkpoint */
- /* 45 */ "log",
- /* 46 */ "checkpointed",
- /* collation_list reuses 32 */
- /* 47 */ "database", /* Used by: lock_status */
- /* 48 */ "status",
- /* 49 */ "cache_size", /* Used by: default_cache_size */
+ /* 15 */ "schema", /* Used by: table_list */
+ /* 16 */ "name",
+ /* 17 */ "type",
+ /* 18 */ "ncol",
+ /* 19 */ "wr",
+ /* 20 */ "strict",
+ /* 21 */ "seqno", /* Used by: index_xinfo */
+ /* 22 */ "cid",
+ /* 23 */ "name",
+ /* 24 */ "desc",
+ /* 25 */ "coll",
+ /* 26 */ "key",
+ /* 27 */ "name", /* Used by: function_list */
+ /* 28 */ "builtin",
+ /* 29 */ "type",
+ /* 30 */ "enc",
+ /* 31 */ "narg",
+ /* 32 */ "flags",
+ /* 33 */ "tbl", /* Used by: stats */
+ /* 34 */ "idx",
+ /* 35 */ "wdth",
+ /* 36 */ "hght",
+ /* 37 */ "flgs",
+ /* 38 */ "seq", /* Used by: index_list */
+ /* 39 */ "name",
+ /* 40 */ "unique",
+ /* 41 */ "origin",
+ /* 42 */ "partial",
+ /* 43 */ "table", /* Used by: foreign_key_check */
+ /* 44 */ "rowid",
+ /* 45 */ "parent",
+ /* 46 */ "fkid",
+ /* index_info reuses 21 */
+ /* 47 */ "seq", /* Used by: database_list */
+ /* 48 */ "name",
+ /* 49 */ "file",
+ /* 50 */ "busy", /* Used by: wal_checkpoint */
+ /* 51 */ "log",
+ /* 52 */ "checkpointed",
+ /* collation_list reuses 38 */
+ /* 53 */ "database", /* Used by: lock_status */
+ /* 54 */ "status",
+ /* 55 */ "cache_size", /* Used by: default_cache_size */
/* module_list pragma_list reuses 9 */
- /* 50 */ "timeout", /* Used by: busy_timeout */
+ /* 56 */ "timeout", /* Used by: busy_timeout */
};
/* Definitions of all built-in pragmas */
@@ -128004,7 +129055,7 @@ static const PragmaName aPragmaName[] = {
{/* zName: */ "busy_timeout",
/* ePragTyp: */ PragTyp_BUSY_TIMEOUT,
/* ePragFlg: */ PragFlg_Result0,
- /* ColNames: */ 50, 1,
+ /* ColNames: */ 56, 1,
/* iArg: */ 0 },
#if !defined(SQLITE_OMIT_PAGER_PRAGMAS)
{/* zName: */ "cache_size",
@@ -128043,7 +129094,7 @@ static const PragmaName aPragmaName[] = {
{/* zName: */ "collation_list",
/* ePragTyp: */ PragTyp_COLLATION_LIST,
/* ePragFlg: */ PragFlg_Result0,
- /* ColNames: */ 32, 2,
+ /* ColNames: */ 38, 2,
/* iArg: */ 0 },
#endif
#if !defined(SQLITE_OMIT_COMPILEOPTION_DIAGS)
@@ -128078,14 +129129,14 @@ static const PragmaName aPragmaName[] = {
{/* zName: */ "database_list",
/* ePragTyp: */ PragTyp_DATABASE_LIST,
/* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0,
- /* ColNames: */ 41, 3,
+ /* ColNames: */ 47, 3,
/* iArg: */ 0 },
#endif
#if !defined(SQLITE_OMIT_PAGER_PRAGMAS) && !defined(SQLITE_OMIT_DEPRECATED)
{/* zName: */ "default_cache_size",
/* ePragTyp: */ PragTyp_DEFAULT_CACHE_SIZE,
/* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0|PragFlg_SchemaReq|PragFlg_NoColumns1,
- /* ColNames: */ 49, 1,
+ /* ColNames: */ 55, 1,
/* iArg: */ 0 },
#endif
#if !defined(SQLITE_OMIT_FLAG_PRAGMAS)
@@ -128115,7 +129166,7 @@ static const PragmaName aPragmaName[] = {
{/* zName: */ "foreign_key_check",
/* ePragTyp: */ PragTyp_FOREIGN_KEY_CHECK,
/* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0|PragFlg_Result1|PragFlg_SchemaOpt,
- /* ColNames: */ 37, 4,
+ /* ColNames: */ 43, 4,
/* iArg: */ 0 },
#endif
#if !defined(SQLITE_OMIT_FOREIGN_KEY)
@@ -128158,7 +129209,7 @@ static const PragmaName aPragmaName[] = {
{/* zName: */ "function_list",
/* ePragTyp: */ PragTyp_FUNCTION_LIST,
/* ePragFlg: */ PragFlg_Result0,
- /* ColNames: */ 21, 6,
+ /* ColNames: */ 27, 6,
/* iArg: */ 0 },
#endif
#endif
@@ -128187,23 +129238,23 @@ static const PragmaName aPragmaName[] = {
{/* zName: */ "index_info",
/* ePragTyp: */ PragTyp_INDEX_INFO,
/* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result1|PragFlg_SchemaOpt,
- /* ColNames: */ 15, 3,
+ /* ColNames: */ 21, 3,
/* iArg: */ 0 },
{/* zName: */ "index_list",
/* ePragTyp: */ PragTyp_INDEX_LIST,
/* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result1|PragFlg_SchemaOpt,
- /* ColNames: */ 32, 5,
+ /* ColNames: */ 38, 5,
/* iArg: */ 0 },
{/* zName: */ "index_xinfo",
/* ePragTyp: */ PragTyp_INDEX_INFO,
/* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result1|PragFlg_SchemaOpt,
- /* ColNames: */ 15, 6,
+ /* ColNames: */ 21, 6,
/* iArg: */ 1 },
#endif
#if !defined(SQLITE_OMIT_INTEGRITY_CHECK)
{/* zName: */ "integrity_check",
/* ePragTyp: */ PragTyp_INTEGRITY_CHECK,
- /* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0|PragFlg_Result1,
+ /* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0|PragFlg_Result1|PragFlg_SchemaOpt,
/* ColNames: */ 0, 0,
/* iArg: */ 0 },
#endif
@@ -128237,7 +129288,7 @@ static const PragmaName aPragmaName[] = {
{/* zName: */ "lock_status",
/* ePragTyp: */ PragTyp_LOCK_STATUS,
/* ePragFlg: */ PragFlg_Result0,
- /* ColNames: */ 47, 2,
+ /* ColNames: */ 53, 2,
/* iArg: */ 0 },
#endif
#if !defined(SQLITE_OMIT_PAGER_PRAGMAS)
@@ -128311,7 +129362,7 @@ static const PragmaName aPragmaName[] = {
#if !defined(SQLITE_OMIT_INTEGRITY_CHECK)
{/* zName: */ "quick_check",
/* ePragTyp: */ PragTyp_INTEGRITY_CHECK,
- /* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0|PragFlg_Result1,
+ /* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0|PragFlg_Result1|PragFlg_SchemaOpt,
/* ColNames: */ 0, 0,
/* iArg: */ 0 },
#endif
@@ -128376,7 +129427,7 @@ static const PragmaName aPragmaName[] = {
{/* zName: */ "stats",
/* ePragTyp: */ PragTyp_STATS,
/* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result0|PragFlg_SchemaReq,
- /* ColNames: */ 27, 5,
+ /* ColNames: */ 33, 5,
/* iArg: */ 0 },
#endif
#if !defined(SQLITE_OMIT_PAGER_PRAGMAS)
@@ -128392,6 +129443,11 @@ static const PragmaName aPragmaName[] = {
/* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result1|PragFlg_SchemaOpt,
/* ColNames: */ 8, 6,
/* iArg: */ 0 },
+ {/* zName: */ "table_list",
+ /* ePragTyp: */ PragTyp_TABLE_LIST,
+ /* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result1,
+ /* ColNames: */ 15, 6,
+ /* iArg: */ 0 },
{/* zName: */ "table_xinfo",
/* ePragTyp: */ PragTyp_TABLE_INFO,
/* ePragFlg: */ PragFlg_NeedSchema|PragFlg_Result1|PragFlg_SchemaOpt,
@@ -128467,7 +129523,7 @@ static const PragmaName aPragmaName[] = {
{/* zName: */ "wal_checkpoint",
/* ePragTyp: */ PragTyp_WAL_CHECKPOINT,
/* ePragFlg: */ PragFlg_NeedSchema,
- /* ColNames: */ 44, 3,
+ /* ColNames: */ 50, 3,
/* iArg: */ 0 },
#endif
#if !defined(SQLITE_OMIT_FLAG_PRAGMAS)
@@ -128478,7 +129534,7 @@ static const PragmaName aPragmaName[] = {
/* iArg: */ SQLITE_WriteSchema|SQLITE_NoSchemaError },
#endif
};
-/* Number of pragmas: 67 on by default, 77 total. */
+/* Number of pragmas: 68 on by default, 78 total. */
/************** End of pragma.h **********************************************/
/************** Continuing where we left off in pragma.c *********************/
@@ -128920,7 +129976,11 @@ SQLITE_PRIVATE void sqlite3Pragma(
/* Locate the pragma in the lookup table */
pPragma = pragmaLocate(zLeft);
- if( pPragma==0 ) goto pragma_out;
+ if( pPragma==0 ){
+ /* IMP: R-43042-22504 No error messages are generated if an
+ ** unknown pragma is issued. */
+ goto pragma_out;
+ }
/* Make sure the database schema is loaded if the pragma requires that */
if( (pPragma->mPragFlg & PragFlg_NeedSchema)!=0 ){
@@ -129570,6 +130630,14 @@ SQLITE_PRIVATE void sqlite3Pragma(
}else{
db->flags &= ~mask;
if( mask==SQLITE_DeferFKs ) db->nDeferredImmCons = 0;
+ if( (mask & SQLITE_WriteSchema)!=0
+ && sqlite3_stricmp(zRight, "reset")==0
+ ){
+ /* IMP: R-60817-01178 If the argument is "RESET" then schema
+ ** writing is disabled (as with "PRAGMA writable_schema=OFF") and,
+ ** in addition, the schema is reloaded. */
+ sqlite3ResetAllSchemasOfConnection(db);
+ }
}
/* Many of the flag-pragmas modify the code generated by the SQL
@@ -129610,6 +130678,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
sqlite3ViewGetColumnNames(pParse, pTab);
for(i=0, pCol=pTab->aCol; i<pTab->nCol; i++, pCol++){
int isHidden = 0;
+ const Expr *pColExpr;
if( pCol->colFlags & COLFLAG_NOINSERT ){
if( pPragma->iArg==0 ){
nHidden++;
@@ -129630,13 +130699,16 @@ SQLITE_PRIVATE void sqlite3Pragma(
}else{
for(k=1; k<=pTab->nCol && pPk->aiColumn[k-1]!=i; k++){}
}
- assert( pCol->pDflt==0 || pCol->pDflt->op==TK_SPAN || isHidden>=2 );
+ pColExpr = sqlite3ColumnExpr(pTab,pCol);
+ assert( pColExpr==0 || pColExpr->op==TK_SPAN || isHidden>=2 );
+ assert( pColExpr==0 || !ExprHasProperty(pColExpr, EP_IntValue)
+ || isHidden>=2 );
sqlite3VdbeMultiLoad(v, 1, pPragma->iArg ? "issisii" : "issisi",
i-nHidden,
- pCol->zName,
+ pCol->zCnName,
sqlite3ColumnType(pCol,""),
pCol->notNull ? 1 : 0,
- pCol->pDflt && isHidden<2 ? pCol->pDflt->u.zToken : 0,
+ (isHidden>=2 || pColExpr==0) ? 0 : pColExpr->u.zToken,
k,
isHidden);
}
@@ -129644,6 +130716,81 @@ SQLITE_PRIVATE void sqlite3Pragma(
}
break;
+ /*
+ ** PRAGMA table_list
+ **
+ ** Return a single row for each table, virtual table, or view in the
+ ** entire schema.
+ **
+ ** schema: Name of attached database hold this table
+ ** name: Name of the table itself
+ ** type: "table", "view", "virtual", "shadow"
+ ** ncol: Number of columns
+ ** wr: True for a WITHOUT ROWID table
+ ** strict: True for a STRICT table
+ */
+ case PragTyp_TABLE_LIST: {
+ int ii;
+ pParse->nMem = 6;
+ sqlite3CodeVerifyNamedSchema(pParse, zDb);
+ for(ii=0; ii<db->nDb; ii++){
+ HashElem *k;
+ Hash *pHash;
+ int initNCol;
+ if( zDb && sqlite3_stricmp(zDb, db->aDb[ii].zDbSName)!=0 ) continue;
+
+ /* Ensure that the Table.nCol field is initialized for all views
+ ** and virtual tables. Each time we initialize a Table.nCol value
+ ** for a table, that can potentially disrupt the hash table, so restart
+ ** the initialization scan.
+ */
+ pHash = &db->aDb[ii].pSchema->tblHash;
+ initNCol = sqliteHashCount(pHash);
+ while( initNCol-- ){
+ for(k=sqliteHashFirst(pHash); 1; k=sqliteHashNext(k) ){
+ Table *pTab;
+ if( k==0 ){ initNCol = 0; break; }
+ pTab = sqliteHashData(k);
+ if( pTab->nCol==0 ){
+ char *zSql = sqlite3MPrintf(db, "SELECT*FROM\"%w\"", pTab->zName);
+ if( zSql ){
+ sqlite3_stmt *pDummy = 0;
+ (void)sqlite3_prepare(db, zSql, -1, &pDummy, 0);
+ (void)sqlite3_finalize(pDummy);
+ sqlite3DbFree(db, zSql);
+ }
+ pHash = &db->aDb[ii].pSchema->tblHash;
+ break;
+ }
+ }
+ }
+
+ for(k=sqliteHashFirst(pHash); k; k=sqliteHashNext(k) ){
+ Table *pTab = sqliteHashData(k);
+ const char *zType;
+ if( zRight && sqlite3_stricmp(zRight, pTab->zName)!=0 ) continue;
+ if( IsView(pTab) ){
+ zType = "view";
+ }else if( IsVirtual(pTab) ){
+ zType = "virtual";
+ }else if( pTab->tabFlags & TF_Shadow ){
+ zType = "shadow";
+ }else{
+ zType = "table";
+ }
+ sqlite3VdbeMultiLoad(v, 1, "sssiii",
+ db->aDb[ii].zDbSName,
+ sqlite3PreferredTableName(pTab->zName),
+ zType,
+ pTab->nCol,
+ (pTab->tabFlags & TF_WithoutRowid)!=0,
+ (pTab->tabFlags & TF_Strict)!=0
+ );
+ }
+ }
+ }
+ break;
+
#ifdef SQLITE_DEBUG
case PragTyp_STATS: {
Index *pIdx;
@@ -129653,7 +130800,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
for(i=sqliteHashFirst(&pDb->pSchema->tblHash); i; i=sqliteHashNext(i)){
Table *pTab = sqliteHashData(i);
sqlite3VdbeMultiLoad(v, 1, "ssiii",
- pTab->zName,
+ sqlite3PreferredTableName(pTab->zName),
0,
pTab->szTabRow,
pTab->nRowLogEst,
@@ -129703,7 +130850,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
for(i=0; i<mx; i++){
i16 cnum = pIdx->aiColumn[i];
sqlite3VdbeMultiLoad(v, 1, "iisX", i, cnum,
- cnum<0 ? 0 : pTab->aCol[cnum].zName);
+ cnum<0 ? 0 : pTab->aCol[cnum].zCnName);
if( pPragma->iArg ){
sqlite3VdbeMultiLoad(v, 4, "isiX",
pIdx->aSortOrder[i],
@@ -129772,11 +130919,13 @@ SQLITE_PRIVATE void sqlite3Pragma(
pParse->nMem = 6;
for(i=0; i<SQLITE_FUNC_HASH_SZ; i++){
for(p=sqlite3BuiltinFunctions.a[i]; p; p=p->u.pHash ){
+ assert( p->funcFlags & SQLITE_FUNC_BUILTIN );
pragmaFunclistLine(v, p, 1, showInternFunc);
}
}
for(j=sqliteHashFirst(&db->aFunc); j; j=sqliteHashNext(j)){
p = (FuncDef*)sqliteHashData(j);
+ assert( (p->funcFlags & SQLITE_FUNC_BUILTIN)==0 );
pragmaFunclistLine(v, p, 0, showInternFunc);
}
}
@@ -129810,8 +130959,8 @@ SQLITE_PRIVATE void sqlite3Pragma(
FKey *pFK;
Table *pTab;
pTab = sqlite3FindTable(db, zRight, zDb);
- if( pTab ){
- pFK = pTab->pFKey;
+ if( pTab && IsOrdinaryTable(pTab) ){
+ pFK = pTab->u.tab.pFKey;
if( pFK ){
int iTabDb = sqlite3SchemaToIndex(db, pTab->pSchema);
int i = 0;
@@ -129824,7 +130973,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
i,
j,
pFK->zTo,
- pTab->aCol[pFK->aCol[j].iFrom].zName,
+ pTab->aCol[pFK->aCol[j].iFrom].zCnName,
pFK->aCol[j].zCol,
actionName(pFK->aAction[1]), /* ON UPDATE */
actionName(pFK->aAction[0]), /* ON DELETE */
@@ -129870,7 +131019,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
pTab = (Table*)sqliteHashData(k);
k = sqliteHashNext(k);
}
- if( pTab==0 || pTab->pFKey==0 ) continue;
+ if( pTab==0 || !IsOrdinaryTable(pTab) || pTab->u.tab.pFKey==0 ) continue;
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
zDb = db->aDb[iDb].zDbSName;
sqlite3CodeVerifySchema(pParse, iDb);
@@ -129878,7 +131027,8 @@ SQLITE_PRIVATE void sqlite3Pragma(
if( pTab->nCol+regRow>pParse->nMem ) pParse->nMem = pTab->nCol + regRow;
sqlite3OpenTable(pParse, 0, iDb, pTab, OP_OpenRead);
sqlite3VdbeLoadString(v, regResult, pTab->zName);
- for(i=1, pFK=pTab->pFKey; pFK; i++, pFK=pFK->pNextFrom){
+ assert( IsOrdinaryTable(pTab) );
+ for(i=1, pFK=pTab->u.tab.pFKey; pFK; i++, pFK=pFK->pNextFrom){
pParent = sqlite3FindTable(db, pFK->zTo, zDb);
if( pParent==0 ) continue;
pIdx = 0;
@@ -129900,7 +131050,8 @@ SQLITE_PRIVATE void sqlite3Pragma(
if( pFK ) break;
if( pParse->nTab<i ) pParse->nTab = i;
addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, 0); VdbeCoverage(v);
- for(i=1, pFK=pTab->pFKey; pFK; i++, pFK=pFK->pNextFrom){
+ assert( IsOrdinaryTable(pTab) );
+ for(i=1, pFK=pTab->u.tab.pFKey; pFK; i++, pFK=pFK->pNextFrom){
pParent = sqlite3FindTable(db, pFK->zTo, zDb);
pIdx = 0;
aiCols = 0;
@@ -129914,6 +131065,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
** regRow..regRow+n. If any of the child key values are NULL, this
** row cannot cause an FK violation. Jump directly to addrOk in
** this case. */
+ if( regRow+pFK->nCol>pParse->nMem ) pParse->nMem = regRow+pFK->nCol;
for(j=0; j<pFK->nCol; j++){
int iCol = aiCols ? aiCols[j] : pFK->aCol[j].iFrom;
sqlite3ExprCodeGetColumnOfTable(v, pTab, 0, iCol, regRow+j);
@@ -130100,8 +131252,9 @@ SQLITE_PRIVATE void sqlite3Pragma(
int loopTop;
int iDataCur, iIdxCur;
int r1 = -1;
+ int bStrict;
- if( pTab->tnum<1 ) continue; /* Skip VIEWs or VIRTUAL TABLEs */
+ if( !IsOrdinaryTable(pTab) ) continue;
if( pObjTab && pObjTab!=pTab ) continue;
pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab);
sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenRead, 0,
@@ -130121,23 +131274,48 @@ SQLITE_PRIVATE void sqlite3Pragma(
/* Sanity check on record header decoding */
sqlite3VdbeAddOp3(v, OP_Column, iDataCur, pTab->nNVCol-1,3);
sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG);
+ VdbeComment((v, "(right-most column)"));
}
- /* Verify that all NOT NULL columns really are NOT NULL */
+ /* Verify that all NOT NULL columns really are NOT NULL. At the
+ ** same time verify the type of the content of STRICT tables */
+ bStrict = (pTab->tabFlags & TF_Strict)!=0;
for(j=0; j<pTab->nCol; j++){
char *zErr;
- int jmp2;
+ Column *pCol = pTab->aCol + j;
+ int doError, jmp2;
if( j==pTab->iPKey ) continue;
- if( pTab->aCol[j].notNull==0 ) continue;
+ if( pCol->notNull==0 && !bStrict ) continue;
+ doError = bStrict ? sqlite3VdbeMakeLabel(pParse) : 0;
sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, j, 3);
if( sqlite3VdbeGetOp(v,-1)->opcode==OP_Column ){
sqlite3VdbeChangeP5(v, OPFLAG_TYPEOFARG);
}
- jmp2 = sqlite3VdbeAddOp1(v, OP_NotNull, 3); VdbeCoverage(v);
- zErr = sqlite3MPrintf(db, "NULL value in %s.%s", pTab->zName,
- pTab->aCol[j].zName);
- sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC);
- integrityCheckResultRow(v);
- sqlite3VdbeJumpHere(v, jmp2);
+ if( pCol->notNull ){
+ jmp2 = sqlite3VdbeAddOp1(v, OP_NotNull, 3); VdbeCoverage(v);
+ zErr = sqlite3MPrintf(db, "NULL value in %s.%s", pTab->zName,
+ pCol->zCnName);
+ sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC);
+ if( bStrict && pCol->eCType!=COLTYPE_ANY ){
+ sqlite3VdbeGoto(v, doError);
+ }else{
+ integrityCheckResultRow(v);
+ }
+ sqlite3VdbeJumpHere(v, jmp2);
+ }
+ if( (pTab->tabFlags & TF_Strict)!=0
+ && pCol->eCType!=COLTYPE_ANY
+ ){
+ jmp2 = sqlite3VdbeAddOp3(v, OP_IsNullOrType, 3, 0,
+ sqlite3StdTypeMap[pCol->eCType-1]);
+ VdbeCoverage(v);
+ zErr = sqlite3MPrintf(db, "non-%s value in %s.%s",
+ sqlite3StdType[pCol->eCType-1],
+ pTab->zName, pTab->aCol[j].zCnName);
+ sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, zErr, P4_DYNAMIC);
+ sqlite3VdbeResolveLabel(v, doError);
+ integrityCheckResultRow(v);
+ sqlite3VdbeJumpHere(v, jmp2);
+ }
}
/* Verify CHECK constraints */
if( pTab->pCheck && (db->flags & SQLITE_IgnoreChecks)==0 ){
@@ -130671,12 +131849,12 @@ SQLITE_PRIVATE void sqlite3Pragma(
case PragTyp_ANALYSIS_LIMIT: {
sqlite3_int64 N;
if( zRight
- && sqlite3DecOrHexToI64(zRight, &N)==SQLITE_OK
+ && sqlite3DecOrHexToI64(zRight, &N)==SQLITE_OK /* IMP: R-40975-20399 */
&& N>=0
){
db->nAnalysisLimit = (int)(N&0x7fffffff);
}
- returnSingleInt(v, db->nAnalysisLimit);
+ returnSingleInt(v, db->nAnalysisLimit); /* IMP: R-57594-65522 */
break;
}
@@ -131078,10 +132256,15 @@ static void corruptSchema(
pData->rc = SQLITE_NOMEM_BKPT;
}else if( pData->pzErrMsg[0]!=0 ){
/* A error message has already been generated. Do not overwrite it */
- }else if( pData->mInitFlags & (INITFLAG_AlterRename|INITFLAG_AlterDrop) ){
+ }else if( pData->mInitFlags & (INITFLAG_AlterMask) ){
+ static const char *azAlterType[] = {
+ "rename",
+ "drop column",
+ "add column"
+ };
*pData->pzErrMsg = sqlite3MPrintf(db,
"error in %s %s after %s: %s", azObj[0], azObj[1],
- (pData->mInitFlags & INITFLAG_AlterRename) ? "rename" : "drop column",
+ azAlterType[(pData->mInitFlags&INITFLAG_AlterMask)-1],
zExtra
);
pData->rc = SQLITE_ERROR;
@@ -131183,7 +132366,7 @@ SQLITE_PRIVATE int sqlite3InitCallback(void *pInit, int argc, char **argv, char
}
}
db->init.orphanTrigger = 0;
- db->init.azInit = argv;
+ db->init.azInit = (const char**)argv;
pStmt = 0;
TESTONLY(rcp = ) sqlite3Prepare(db, argv[4], -1, 0, 0, &pStmt, 0);
rc = db->errCode;
@@ -131202,6 +132385,7 @@ SQLITE_PRIVATE int sqlite3InitCallback(void *pInit, int argc, char **argv, char
}
}
}
+ db->init.azInit = sqlite3StdType; /* Any array of string ptrs will do */
sqlite3_finalize(pStmt);
}else if( argv[1]==0 || (argv[4]!=0 && argv[4][0]!=0) ){
corruptSchema(pData, argv, 0);
@@ -131790,7 +132974,7 @@ static int sqlite3Prepare(
sParse.checkSchema = 0;
}
if( sParse.rc!=SQLITE_OK && sParse.rc!=SQLITE_DONE ){
- if( sParse.checkSchema ){
+ if( sParse.checkSchema && db->init.busy==0 ){
schemaIsValid(&sParse);
}
if( sParse.pVdbe ){
@@ -131851,6 +133035,7 @@ static int sqlite3LockAndPrepare(
** reset is considered a permanent error. */
rc = sqlite3Prepare(db, zSql, nBytes, prepFlags, pOld, ppStmt, pzTail);
assert( rc==SQLITE_OK || *ppStmt==0 );
+ if( rc==SQLITE_OK || db->mallocFailed ) break;
}while( rc==SQLITE_ERROR_RETRY
|| (rc==SQLITE_SCHEMA && (sqlite3ResetOneSchema(db,-1), cnt++)==0) );
sqlite3BtreeLeaveAll(db);
@@ -132342,7 +133527,7 @@ SQLITE_PRIVATE int sqlite3ColumnIndex(Table *pTab, const char *zCol){
u8 h = sqlite3StrIHash(zCol);
Column *pCol;
for(pCol=pTab->aCol, i=0; i<pTab->nCol; pCol++, i++){
- if( pCol->hName==h && sqlite3StrICmp(pCol->zName, zCol)==0 ) return i;
+ if( pCol->hName==h && sqlite3StrICmp(pCol->zCnName, zCol)==0 ) return i;
}
return -1;
}
@@ -132418,6 +133603,9 @@ static void addWhereTerm(
pE2 = sqlite3CreateColumnExpr(db, pSrc, iRight, iColRight);
pEq = sqlite3PExpr(pParse, TK_EQ, pE1, pE2);
+ assert( pE2!=0 || pEq==0 ); /* Due to db->mallocFailed test
+ ** in sqlite3DbMallocRawNN() called from
+ ** sqlite3PExpr(). */
if( pEq && isOuterJoin ){
ExprSetProperty(pEq, EP_FromJoin);
assert( !ExprHasProperty(pEq, EP_TokenOnly|EP_Reduced) );
@@ -132459,10 +133647,13 @@ SQLITE_PRIVATE void sqlite3SetJoinExpr(Expr *p, int iTable){
assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) );
ExprSetVVAProperty(p, EP_NoReduce);
p->iRightJoinTable = iTable;
- if( p->op==TK_FUNCTION && p->x.pList ){
- int i;
- for(i=0; i<p->x.pList->nExpr; i++){
- sqlite3SetJoinExpr(p->x.pList->a[i].pExpr, iTable);
+ if( p->op==TK_FUNCTION ){
+ assert( ExprUseXList(p) );
+ if( p->x.pList ){
+ int i;
+ for(i=0; i<p->x.pList->nExpr; i++){
+ sqlite3SetJoinExpr(p->x.pList->a[i].pExpr, iTable);
+ }
}
}
sqlite3SetJoinExpr(p->pLeft, iTable);
@@ -132485,10 +133676,13 @@ static void unsetJoinExpr(Expr *p, int iTable){
if( p->op==TK_COLUMN && p->iTable==iTable ){
ExprClearProperty(p, EP_CanBeNull);
}
- if( p->op==TK_FUNCTION && p->x.pList ){
- int i;
- for(i=0; i<p->x.pList->nExpr; i++){
- unsetJoinExpr(p->x.pList->a[i].pExpr, iTable);
+ if( p->op==TK_FUNCTION ){
+ assert( ExprUseXList(p) );
+ if( p->x.pList ){
+ int i;
+ for(i=0; i<p->x.pList->nExpr; i++){
+ unsetJoinExpr(p->x.pList->a[i].pExpr, iTable);
+ }
}
}
unsetJoinExpr(p->pLeft, iTable);
@@ -132541,7 +133735,7 @@ static int sqliteProcessJoin(Parse *pParse, Select *p){
int iLeftCol; /* Matching column in the left table */
if( IsHiddenColumn(&pRightTab->aCol[j]) ) continue;
- zName = pRightTab->aCol[j].zName;
+ zName = pRightTab->aCol[j].zCnName;
if( tableAndColumnIndex(pSrc, i+1, zName, &iLeft, &iLeftCol, 1) ){
addWhereTerm(pParse, pSrc, iLeft, iLeftCol, i+1, j,
isOuter, &p->pWhere);
@@ -132944,7 +134138,9 @@ static void fixDistinctOpenEph(
int iVal, /* Value returned by codeDistinct() */
int iOpenEphAddr /* Address of OP_OpenEphemeral instruction for iTab */
){
- if( eTnctType==WHERE_DISTINCT_UNIQUE || eTnctType==WHERE_DISTINCT_ORDERED ){
+ if( pParse->nErr==0
+ && (eTnctType==WHERE_DISTINCT_UNIQUE || eTnctType==WHERE_DISTINCT_ORDERED)
+ ){
Vdbe *v = pParse->pVdbe;
sqlite3VdbeChangeToNoop(v, iOpenEphAddr);
if( sqlite3VdbeGetOp(v, iOpenEphAddr+1)->opcode==OP_Explain ){
@@ -133001,9 +134197,13 @@ static void selectExprDefer(
struct ExprList_item *pItem = &pEList->a[i];
if( pItem->u.x.iOrderByCol==0 ){
Expr *pExpr = pItem->pExpr;
- Table *pTab = pExpr->y.pTab;
- if( pExpr->op==TK_COLUMN && pExpr->iColumn>=0 && pTab && !IsVirtual(pTab)
- && (pTab->aCol[pExpr->iColumn].colFlags & COLFLAG_SORTERREF)
+ Table *pTab;
+ if( pExpr->op==TK_COLUMN
+ && pExpr->iColumn>=0
+ && ALWAYS( ExprUseYTab(pExpr) )
+ && (pTab = pExpr->y.pTab)!=0
+ && IsOrdinaryTable(pTab)
+ && (pTab->aCol[pExpr->iColumn].colFlags & COLFLAG_SORTERREF)!=0
){
int j;
for(j=0; j<nDefer; j++){
@@ -133024,6 +134224,7 @@ static void selectExprDefer(
Expr *pNew = sqlite3PExpr(pParse, TK_COLUMN, 0, 0);
if( pNew ){
pNew->iTable = pExpr->iTable;
+ assert( ExprUseYTab(pNew) );
pNew->y.pTab = pExpr->y.pTab;
pNew->iColumn = pPk ? pPk->aiColumn[k] : -1;
pExtra = sqlite3ExprListAppend(pParse, pExtra, pNew);
@@ -133872,7 +135073,7 @@ static const char *columnTypeImpl(
break;
}
- assert( pTab && pExpr->y.pTab==pTab );
+ assert( pTab && ExprUseYTab(pExpr) && pExpr->y.pTab==pTab );
if( pS ){
/* The "table" is actually a sub-select or a view in the FROM clause
** of the SELECT statement. Return the declaration type and origin
@@ -133906,7 +135107,7 @@ static const char *columnTypeImpl(
zType = "INTEGER";
zOrigCol = "rowid";
}else{
- zOrigCol = pTab->aCol[iCol].zName;
+ zOrigCol = pTab->aCol[iCol].zCnName;
zType = sqlite3ColumnType(&pTab->aCol[iCol],0);
}
zOrigTab = pTab->zName;
@@ -133932,9 +135133,11 @@ static const char *columnTypeImpl(
** statement.
*/
NameContext sNC;
- Select *pS = pExpr->x.pSelect;
- Expr *p = pS->pEList->a[0].pExpr;
- assert( ExprHasProperty(pExpr, EP_xIsSelect) );
+ Select *pS;
+ Expr *p;
+ assert( ExprUseXSelect(pExpr) );
+ pS = pExpr->x.pSelect;
+ p = pS->pEList->a[0].pExpr;
sNC.pSrcList = pS->pSrc;
sNC.pNext = pNC;
sNC.pParse = pNC->pParse;
@@ -134063,7 +135266,8 @@ SQLITE_PRIVATE void sqlite3GenerateColumnNames(
assert( p!=0 );
assert( p->op!=TK_AGG_COLUMN ); /* Agg processing has not run yet */
- assert( p->op!=TK_COLUMN || p->y.pTab!=0 ); /* Covering idx not yet coded */
+ assert( p->op!=TK_COLUMN
+ || (ExprUseYTab(p) && p->y.pTab!=0) ); /* Covering idx not yet coded */
if( pEList->a[i].zEName && pEList->a[i].eEName==ENAME_NAME ){
/* An AS clause always takes first priority */
char *zName = pEList->a[i].zEName;
@@ -134078,7 +135282,7 @@ SQLITE_PRIVATE void sqlite3GenerateColumnNames(
if( iCol<0 ){
zCol = "rowid";
}else{
- zCol = pTab->aCol[iCol].zName;
+ zCol = pTab->aCol[iCol].zCnName;
}
if( fullName ){
char *zName = 0;
@@ -134159,11 +135363,14 @@ SQLITE_PRIVATE int sqlite3ColumnsFromExprList(
pColExpr = pColExpr->pRight;
assert( pColExpr!=0 );
}
- if( pColExpr->op==TK_COLUMN && (pTab = pColExpr->y.pTab)!=0 ){
+ if( pColExpr->op==TK_COLUMN
+ && ALWAYS( ExprUseYTab(pColExpr) )
+ && (pTab = pColExpr->y.pTab)!=0
+ ){
/* For columns use the column name name */
int iCol = pColExpr->iColumn;
if( iCol<0 ) iCol = pTab->iPKey;
- zName = iCol>=0 ? pTab->aCol[iCol].zName : "rowid";
+ zName = iCol>=0 ? pTab->aCol[iCol].zCnName : "rowid";
}else if( pColExpr->op==TK_ID ){
assert( !ExprHasProperty(pColExpr, EP_IntValue) );
zName = pColExpr->u.zToken;
@@ -134191,7 +135398,7 @@ SQLITE_PRIVATE int sqlite3ColumnsFromExprList(
zName = sqlite3MPrintf(db, "%.*z:%u", nName, zName, ++cnt);
if( cnt>3 ) sqlite3_randomness(sizeof(cnt), &cnt);
}
- pCol->zName = zName;
+ pCol->zCnName = zName;
pCol->hName = sqlite3StrIHash(zName);
sqlite3ColumnPropertiesFromName(0, pCol);
if( zName && sqlite3HashInsert(&ht, zName, pCol)==pCol ){
@@ -134201,7 +135408,7 @@ SQLITE_PRIVATE int sqlite3ColumnsFromExprList(
sqlite3HashClear(&ht);
if( db->mallocFailed ){
for(j=0; j<i; j++){
- sqlite3DbFree(db, aCol[j].zName);
+ sqlite3DbFree(db, aCol[j].zCnName);
}
sqlite3DbFree(db, aCol);
*paCol = 0;
@@ -134245,7 +135452,7 @@ SQLITE_PRIVATE void sqlite3SelectAddColumnTypeAndCollation(
a = pSelect->pEList->a;
for(i=0, pCol=pTab->aCol; i<pTab->nCol; i++, pCol++){
const char *zType;
- int n, m;
+ i64 n, m;
pTab->tabFlags |= (pCol->colFlags & COLFLAG_NOINSERT);
p = a[i].pExpr;
zType = columnType(&sNC, p, 0, 0, 0);
@@ -134253,17 +135460,21 @@ SQLITE_PRIVATE void sqlite3SelectAddColumnTypeAndCollation(
pCol->affinity = sqlite3ExprAffinity(p);
if( zType ){
m = sqlite3Strlen30(zType);
- n = sqlite3Strlen30(pCol->zName);
- pCol->zName = sqlite3DbReallocOrFree(db, pCol->zName, n+m+2);
- if( pCol->zName ){
- memcpy(&pCol->zName[n+1], zType, m+1);
+ n = sqlite3Strlen30(pCol->zCnName);
+ pCol->zCnName = sqlite3DbReallocOrFree(db, pCol->zCnName, n+m+2);
+ if( pCol->zCnName ){
+ memcpy(&pCol->zCnName[n+1], zType, m+1);
pCol->colFlags |= COLFLAG_HASTYPE;
+ }else{
+ testcase( pCol->colFlags & COLFLAG_HASTYPE );
+ pCol->colFlags &= ~(COLFLAG_HASTYPE|COLFLAG_HASCOLL);
}
}
if( pCol->affinity<=SQLITE_AFF_NONE ) pCol->affinity = aff;
pColl = sqlite3ExprCollSeq(pParse, p);
- if( pColl && pCol->zColl==0 ){
- pCol->zColl = sqlite3DbStrDup(db, pColl->zName);
+ if( pColl ){
+ assert( pTab->pIndex==0 );
+ sqlite3ColumnSetColl(db, pCol, pColl->zName);
}
}
pTab->szTabRow = 1; /* Any non-zero value works */
@@ -134427,7 +135638,7 @@ static CollSeq *multiSelectCollSeq(Parse *pParse, Select *p, int iCol){
*/
static KeyInfo *multiSelectOrderByKeyInfo(Parse *pParse, Select *p, int nExtra){
ExprList *pOrderBy = p->pOrderBy;
- int nOrderBy = p->pOrderBy->nExpr;
+ int nOrderBy = ALWAYS(pOrderBy!=0) ? pOrderBy->nExpr : 0;
sqlite3 *db = pParse->db;
KeyInfo *pRet = sqlite3KeyInfoAlloc(db, nOrderBy+nExtra, 1);
if( pRet ){
@@ -134499,7 +135710,7 @@ static void generateWithRecursiveQuery(
SrcList *pSrc = p->pSrc; /* The FROM clause of the recursive query */
int nCol = p->pEList->nExpr; /* Number of columns in the recursive table */
Vdbe *v = pParse->pVdbe; /* The prepared statement under construction */
- Select *pSetup = p->pPrior; /* The setup query */
+ Select *pSetup; /* The setup query */
Select *pFirstRec; /* Left-most recursive term */
int addrTop; /* Top of the loop */
int addrCont, addrBreak; /* CONTINUE and BREAK addresses */
@@ -134583,7 +135794,6 @@ static void generateWithRecursiveQuery(
** iDistinct table. pFirstRec is left pointing to the left-most
** recursive term of the CTE.
*/
- pFirstRec = p;
for(pFirstRec=p; ALWAYS(pFirstRec!=0); pFirstRec=pFirstRec->pPrior){
if( pFirstRec->selFlags & SF_Aggregate ){
sqlite3ErrorMsg(pParse, "recursive aggregate queries not supported");
@@ -135049,6 +136259,7 @@ static int multiSelect(
int nCol; /* Number of columns in result set */
assert( p->pNext==0 );
+ assert( p->pEList!=0 );
nCol = p->pEList->nExpr;
pKeyInfo = sqlite3KeyInfoAlloc(db, nCol, 1);
if( !pKeyInfo ){
@@ -135083,7 +136294,11 @@ static int multiSelect(
multi_select_end:
pDest->iSdst = dest.iSdst;
pDest->nSdst = dest.nSdst;
- sqlite3SelectDelete(db, pDelete);
+ if( pDelete ){
+ sqlite3ParserAddCleanup(pParse,
+ (void(*)(sqlite3*,void*))sqlite3SelectDelete,
+ pDelete);
+ }
return rc;
}
#endif /* SQLITE_OMIT_COMPOUND_SELECT */
@@ -135396,6 +136611,7 @@ static int multiSelectOrderBy(
for(i=1; db->mallocFailed==0 && i<=p->pEList->nExpr; i++){
struct ExprList_item *pItem;
for(j=0, pItem=pOrderBy->a; j<nOrderBy; j++, pItem++){
+ assert( pItem!=0 );
assert( pItem->u.x.iOrderByCol>0 );
if( pItem->u.x.iOrderByCol==i ) break;
}
@@ -135422,6 +136638,7 @@ static int multiSelectOrderBy(
struct ExprList_item *pItem;
aPermute[0] = nOrderBy;
for(i=1, pItem=pOrderBy->a; i<=nOrderBy; i++, pItem++){
+ assert( pItem!=0 );
assert( pItem->u.x.iOrderByCol>0 );
assert( pItem->u.x.iOrderByCol<=p->pEList->nExpr );
aPermute[i] = pItem->u.x.iOrderByCol - 1;
@@ -135734,7 +136951,7 @@ static Expr *substExpr(
}
pExpr->pLeft = substExpr(pSubst, pExpr->pLeft);
pExpr->pRight = substExpr(pSubst, pExpr->pRight);
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ if( ExprUseXSelect(pExpr) ){
substSelect(pSubst, pExpr->x.pSelect, 1);
}else{
substExprList(pSubst, pExpr->x.pList);
@@ -135825,10 +137042,10 @@ static void recomputeColumnsUsed(
** new cursor number assigned, set an entry in the aCsrMap[] array
** to map the old cursor number to the new:
**
-** aCsrMap[iOld] = iNew;
+** aCsrMap[iOld+1] = iNew;
**
** The array is guaranteed by the caller to be large enough for all
-** existing cursor numbers in pSrc.
+** existing cursor numbers in pSrc. aCsrMap[0] is the array size.
**
** If pSrc contains any sub-selects, call this routine recursively
** on the FROM clause of each such sub-select, with iExcept set to -1.
@@ -135844,10 +137061,11 @@ static void srclistRenumberCursors(
for(i=0, pItem=pSrc->a; i<pSrc->nSrc; i++, pItem++){
if( i!=iExcept ){
Select *p;
- if( !pItem->fg.isRecursive || aCsrMap[pItem->iCursor]==0 ){
- aCsrMap[pItem->iCursor] = pParse->nTab++;
+ assert( pItem->iCursor < aCsrMap[0] );
+ if( !pItem->fg.isRecursive || aCsrMap[pItem->iCursor+1]==0 ){
+ aCsrMap[pItem->iCursor+1] = pParse->nTab++;
}
- pItem->iCursor = aCsrMap[pItem->iCursor];
+ pItem->iCursor = aCsrMap[pItem->iCursor+1];
for(p=pItem->pSelect; p; p=p->pPrior){
srclistRenumberCursors(pParse, aCsrMap, p->pSrc, -1);
}
@@ -135856,17 +137074,27 @@ static void srclistRenumberCursors(
}
/*
+** *piCursor is a cursor number. Change it if it needs to be mapped.
+*/
+static void renumberCursorDoMapping(Walker *pWalker, int *piCursor){
+ int *aCsrMap = pWalker->u.aiCol;
+ int iCsr = *piCursor;
+ if( iCsr < aCsrMap[0] && aCsrMap[iCsr+1]>0 ){
+ *piCursor = aCsrMap[iCsr+1];
+ }
+}
+
+/*
** Expression walker callback used by renumberCursors() to update
** Expr objects to match newly assigned cursor numbers.
*/
static int renumberCursorsCb(Walker *pWalker, Expr *pExpr){
- int *aCsrMap = pWalker->u.aiCol;
int op = pExpr->op;
- if( (op==TK_COLUMN || op==TK_IF_NULL_ROW) && aCsrMap[pExpr->iTable] ){
- pExpr->iTable = aCsrMap[pExpr->iTable];
+ if( op==TK_COLUMN || op==TK_IF_NULL_ROW ){
+ renumberCursorDoMapping(pWalker, &pExpr->iTable);
}
- if( ExprHasProperty(pExpr, EP_FromJoin) && aCsrMap[pExpr->iRightJoinTable] ){
- pExpr->iRightJoinTable = aCsrMap[pExpr->iRightJoinTable];
+ if( ExprHasProperty(pExpr, EP_FromJoin) ){
+ renumberCursorDoMapping(pWalker, &pExpr->iRightJoinTable);
}
return WRC_Continue;
}
@@ -136210,7 +137438,8 @@ static int flattenSubquery(
if( pSrc->nSrc>1 ){
if( pParse->nSelect>500 ) return 0;
- aCsrMap = sqlite3DbMallocZero(db, pParse->nTab*sizeof(int));
+ aCsrMap = sqlite3DbMallocZero(db, ((i64)pParse->nTab+1)*sizeof(int));
+ if( aCsrMap ) aCsrMap[0] = pParse->nTab;
}
}
@@ -136933,7 +138162,7 @@ static int pushDownWhereTerms(
*/
static u8 minMaxQuery(sqlite3 *db, Expr *pFunc, ExprList **ppMinMax){
int eRet = WHERE_ORDERBY_NORMAL; /* Return value */
- ExprList *pEList = pFunc->x.pList; /* Arguments to agg function */
+ ExprList *pEList; /* Arguments to agg function */
const char *zFunc; /* Name of aggregate function pFunc */
ExprList *pOrderBy;
u8 sortFlags = 0;
@@ -136941,6 +138170,8 @@ static u8 minMaxQuery(sqlite3 *db, Expr *pFunc, ExprList **ppMinMax){
assert( *ppMinMax==0 );
assert( pFunc->op==TK_AGG_FUNCTION );
assert( !IsWindowFunc(pFunc) );
+ assert( ExprUseXList(pFunc) );
+ pEList = pFunc->x.pList;
if( pEList==0
|| pEList->nExpr!=1
|| ExprHasProperty(pFunc, EP_WinFunc)
@@ -136948,6 +138179,7 @@ static u8 minMaxQuery(sqlite3 *db, Expr *pFunc, ExprList **ppMinMax){
){
return eRet;
}
+ assert( !ExprHasProperty(pFunc, EP_IntValue) );
zFunc = pFunc->u.zToken;
if( sqlite3StrICmp(zFunc, "min")==0 ){
eRet = WHERE_ORDERBY_MIN;
@@ -136975,7 +138207,13 @@ static u8 minMaxQuery(sqlite3 *db, Expr *pFunc, ExprList **ppMinMax){
**
** where table is a database table, not a sub-select or view. If the query
** does match this pattern, then a pointer to the Table object representing
-** <tbl> is returned. Otherwise, 0 is returned.
+** <tbl> is returned. Otherwise, NULL is returned.
+**
+** This routine checks to see if it is safe to use the count optimization.
+** A correct answer is still obtained (though perhaps more slowly) if
+** this routine returns NULL when it could have returned a table pointer.
+** But returning the pointer when NULL should have been returned can
+** result in incorrect answers and/or crashes. So, when in doubt, return NULL.
*/
static Table *isSimpleCount(Select *p, AggInfo *pAggInfo){
Table *pTab;
@@ -136983,19 +138221,26 @@ static Table *isSimpleCount(Select *p, AggInfo *pAggInfo){
assert( !p->pGroupBy );
- if( p->pWhere || p->pEList->nExpr!=1
- || p->pSrc->nSrc!=1 || p->pSrc->a[0].pSelect
+ if( p->pWhere
+ || p->pEList->nExpr!=1
+ || p->pSrc->nSrc!=1
+ || p->pSrc->a[0].pSelect
+ || pAggInfo->nFunc!=1
){
return 0;
}
pTab = p->pSrc->a[0].pTab;
+ assert( pTab!=0 );
+ assert( !IsView(pTab) );
+ if( !IsOrdinaryTable(pTab) ) return 0;
pExpr = p->pEList->a[0].pExpr;
- assert( pTab && !pTab->pSelect && pExpr );
-
- if( IsVirtual(pTab) ) return 0;
+ assert( pExpr!=0 );
if( pExpr->op!=TK_AGG_FUNCTION ) return 0;
- if( NEVER(pAggInfo->nFunc==0) ) return 0;
+ if( pExpr->pAggInfo!=pAggInfo ) return 0;
if( (pAggInfo->aFunc[0].pFunc->funcFlags&SQLITE_FUNC_COUNT)==0 ) return 0;
+ assert( pAggInfo->aFunc[0].pFExpr==pExpr );
+ testcase( ExprHasProperty(pExpr, EP_Distinct) );
+ testcase( ExprHasProperty(pExpr, EP_WinFunc) );
if( ExprHasProperty(pExpr, EP_Distinct|EP_WinFunc) ) return 0;
return pTab;
@@ -137024,6 +138269,7 @@ SQLITE_PRIVATE int sqlite3IndexedByLookup(Parse *pParse, SrcItem *pFrom){
pParse->checkSchema = 1;
return SQLITE_ERROR;
}
+ assert( pFrom->fg.isCte==0 );
pFrom->u2.pIBIndex = pIdx;
return SQLITE_OK;
}
@@ -137281,6 +138527,10 @@ static int resolveFromTermToCte(
if( db->mallocFailed ) return 2;
pFrom->pSelect->selFlags |= SF_CopyCte;
assert( pFrom->pSelect );
+ if( pFrom->fg.isIndexedBy ){
+ sqlite3ErrorMsg(pParse, "no such index: \"%s\"", pFrom->u1.zIndexedBy);
+ return 2;
+ }
pFrom->fg.isCte = 1;
pFrom->u2.pCteUse = pCteUse;
pCteUse->nUse++;
@@ -137535,30 +138785,31 @@ static int selectExpander(Walker *pWalker, Select *p){
return WRC_Abort;
}
#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE)
- if( IsVirtual(pTab) || pTab->pSelect ){
+ if( !IsOrdinaryTable(pTab) ){
i16 nCol;
u8 eCodeOrig = pWalker->eCode;
if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
assert( pFrom->pSelect==0 );
- if( pTab->pSelect
- && (db->flags & SQLITE_EnableView)==0
- && pTab->pSchema!=db->aDb[1].pSchema
- ){
- sqlite3ErrorMsg(pParse, "access to view \"%s\" prohibited",
- pTab->zName);
+ if( IsView(pTab) ){
+ if( (db->flags & SQLITE_EnableView)==0
+ && pTab->pSchema!=db->aDb[1].pSchema
+ ){
+ sqlite3ErrorMsg(pParse, "access to view \"%s\" prohibited",
+ pTab->zName);
+ }
+ pFrom->pSelect = sqlite3SelectDup(db, pTab->u.view.pSelect, 0);
}
#ifndef SQLITE_OMIT_VIRTUALTABLE
- assert( SQLITE_VTABRISK_Normal==1 && SQLITE_VTABRISK_High==2 );
- if( IsVirtual(pTab)
+ else if( ALWAYS(IsVirtual(pTab))
&& pFrom->fg.fromDDL
- && ALWAYS(pTab->pVTable!=0)
- && pTab->pVTable->eVtabRisk > ((db->flags & SQLITE_TrustedSchema)!=0)
+ && ALWAYS(pTab->u.vtab.p!=0)
+ && pTab->u.vtab.p->eVtabRisk > ((db->flags & SQLITE_TrustedSchema)!=0)
){
sqlite3ErrorMsg(pParse, "unsafe use of virtual table \"%s\"",
pTab->zName);
}
+ assert( SQLITE_VTABRISK_Normal==1 && SQLITE_VTABRISK_High==2 );
#endif
- pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
nCol = pTab->nCol;
pTab->nCol = -1;
pWalker->eCode = 1; /* Turn on Select.selId renumbering */
@@ -137658,7 +138909,7 @@ static int selectExpander(Walker *pWalker, Select *p){
zSchemaName = iDb>=0 ? db->aDb[iDb].zDbSName : "*";
}
for(j=0; j<pTab->nCol; j++){
- char *zName = pTab->aCol[j].zName;
+ char *zName = pTab->aCol[j].zCnName;
char *zColname; /* The computed column name */
char *zToFree; /* Malloced string that needs to be freed */
Token sColname; /* Computed column name as a token */
@@ -137915,7 +139166,7 @@ static void resetAccumulator(Parse *pParse, AggInfo *pAggInfo){
for(pFunc=pAggInfo->aFunc, i=0; i<pAggInfo->nFunc; i++, pFunc++){
if( pFunc->iDistinct>=0 ){
Expr *pE = pFunc->pFExpr;
- assert( !ExprHasProperty(pE, EP_xIsSelect) );
+ assert( ExprUseXList(pE) );
if( pE->x.pList==0 || pE->x.pList->nExpr!=1 ){
sqlite3ErrorMsg(pParse, "DISTINCT aggregates must have exactly one "
"argument");
@@ -137940,8 +139191,9 @@ static void finalizeAggFunctions(Parse *pParse, AggInfo *pAggInfo){
int i;
struct AggInfo_func *pF;
for(i=0, pF=pAggInfo->aFunc; i<pAggInfo->nFunc; i++, pF++){
- ExprList *pList = pF->pFExpr->x.pList;
- assert( !ExprHasProperty(pF->pFExpr, EP_xIsSelect) );
+ ExprList *pList;
+ assert( ExprUseXList(pF->pFExpr) );
+ pList = pF->pFExpr->x.pList;
sqlite3VdbeAddOp2(v, OP_AggFinal, pF->iMem, pList ? pList->nExpr : 0);
sqlite3VdbeAppendP4(v, pF->pFunc, P4_FUNCDEF);
}
@@ -137975,9 +139227,10 @@ static void updateAccumulator(
int nArg;
int addrNext = 0;
int regAgg;
- ExprList *pList = pF->pFExpr->x.pList;
- assert( !ExprHasProperty(pF->pFExpr, EP_xIsSelect) );
+ ExprList *pList;
+ assert( ExprUseXList(pF->pFExpr) );
assert( !IsWindowFunc(pF->pFExpr) );
+ pList = pF->pFExpr->x.pList;
if( ExprHasProperty(pF->pFExpr, EP_WinFunc) ){
Expr *pFilter = pF->pFExpr->y.pWin->pFilter;
if( pAggInfo->nAccumulator
@@ -138090,8 +139343,16 @@ static void explainSimpleCount(
static int havingToWhereExprCb(Walker *pWalker, Expr *pExpr){
if( pExpr->op!=TK_AND ){
Select *pS = pWalker->u.pSelect;
+ /* This routine is called before the HAVING clause of the current
+ ** SELECT is analyzed for aggregates. So if pExpr->pAggInfo is set
+ ** here, it indicates that the expression is a correlated reference to a
+ ** column from an outer aggregate query, or an aggregate function that
+ ** belongs to an outer query. Do not move the expression to the WHERE
+ ** clause in this obscure case, as doing so may corrupt the outer Select
+ ** statements AggInfo structure. */
if( sqlite3ExprIsConstantOrGroupBy(pWalker->pParse, pExpr, pS->pGroupBy)
&& ExprAlwaysFalse(pExpr)==0
+ && pExpr->pAggInfo==0
){
sqlite3 *db = pWalker->pParse->db;
Expr *pNew = sqlite3Expr(db, TK_INTEGER, "1");
@@ -138215,7 +139476,9 @@ static int countOfViewOptimization(Parse *pParse, Select *p){
if( p->pGroupBy ) return 0;
pExpr = p->pEList->a[0].pExpr;
if( pExpr->op!=TK_AGG_FUNCTION ) return 0; /* Result is an aggregate */
+ assert( ExprUseUToken(pExpr) );
if( sqlite3_stricmp(pExpr->u.zToken,"count") ) return 0; /* Is count() */
+ assert( ExprUseXList(pExpr) );
if( pExpr->x.pList!=0 ) return 0; /* Must be count(*) */
if( p->pSrc->nSrc!=1 ) return 0; /* One table in FROM */
pSub = p->pSrc->a[0].pSelect;
@@ -138357,11 +139620,16 @@ SQLITE_PRIVATE int sqlite3Select(
}
#endif
- /* If the SF_UpdateFrom flag is set, then this function is being called
+ /* If the SF_UFSrcCheck flag is set, then this function is being called
** as part of populating the temp table for an UPDATE...FROM statement.
** In this case, it is an error if the target object (pSrc->a[0]) name
- ** or alias is duplicated within FROM clause (pSrc->a[1..n]). */
- if( p->selFlags & SF_UpdateFrom ){
+ ** or alias is duplicated within FROM clause (pSrc->a[1..n]).
+ **
+ ** Postgres disallows this case too. The reason is that some other
+ ** systems handle this case differently, and not all the same way,
+ ** which is just confusing. To avoid this, we follow PG's lead and
+ ** disallow it altogether. */
+ if( p->selFlags & SF_UFSrcCheck ){
SrcItem *p0 = &p->pSrc->a[0];
for(i=1; i<p->pSrc->nSrc; i++){
SrcItem *p1 = &p->pSrc->a[i];
@@ -138373,6 +139641,12 @@ SQLITE_PRIVATE int sqlite3Select(
goto select_end;
}
}
+
+ /* Clear the SF_UFSrcCheck flag. The check has already been performed,
+ ** and leaving this flag set can cause errors if a compound sub-query
+ ** in p->pSrc is flattened into this query and this function called
+ ** again as part of compound SELECT processing. */
+ p->selFlags &= ~SF_UFSrcCheck;
}
if( pDest->eDest==SRT_Output ){
@@ -138444,6 +139718,39 @@ SQLITE_PRIVATE int sqlite3Select(
if( (pSub->selFlags & SF_Aggregate)!=0 ) continue;
assert( pSub->pGroupBy==0 );
+ /* If a FROM-clause subquery has an ORDER BY clause that is not
+ ** really doing anything, then delete it now so that it does not
+ ** interfere with query flattening. See the discussion at
+ ** https://sqlite.org/forum/forumpost/2d76f2bcf65d256a
+ **
+ ** Beware of these cases where the ORDER BY clause may not be safely
+ ** omitted:
+ **
+ ** (1) There is also a LIMIT clause
+ ** (2) The subquery was added to help with window-function
+ ** processing
+ ** (3) The subquery is in the FROM clause of an UPDATE
+ ** (4) The outer query uses an aggregate function other than
+ ** the built-in count(), min(), or max().
+ ** (5) The ORDER BY isn't going to accomplish anything because
+ ** one of:
+ ** (a) The outer query has a different ORDER BY clause
+ ** (b) The subquery is part of a join
+ ** See forum post 062d576715d277c8
+ */
+ if( pSub->pOrderBy!=0
+ && (p->pOrderBy!=0 || pTabList->nSrc>1) /* Condition (5) */
+ && pSub->pLimit==0 /* Condition (1) */
+ && (pSub->selFlags & SF_OrderByReqd)==0 /* Condition (2) */
+ && (p->selFlags & SF_OrderByReqd)==0 /* Condition (3) and (4) */
+ && OptimizationEnabled(db, SQLITE_OmitOrderBy)
+ ){
+ SELECTTRACE(0x100,pParse,p,
+ ("omit superfluous ORDER BY on %r FROM-clause subquery\n",i+1));
+ sqlite3ExprListDelete(db, pSub->pOrderBy);
+ pSub->pOrderBy = 0;
+ }
+
/* If the outer query contains a "complex" result set (that is,
** if the result set of the outer query uses functions or subqueries)
** and if the subquery contains an ORDER BY clause and if
@@ -138586,7 +139893,8 @@ SQLITE_PRIVATE int sqlite3Select(
** inside the subquery. This can help the subquery to run more efficiently.
*/
if( OptimizationEnabled(db, SQLITE_PushDown)
- && (pItem->fg.isCte==0 || pItem->u2.pCteUse->eM10d!=M10d_Yes)
+ && (pItem->fg.isCte==0
+ || (pItem->u2.pCteUse->eM10d!=M10d_Yes && pItem->u2.pCteUse->nUse<2))
&& pushDownWhereTerms(pParse, pSub, p->pWhere, pItem->iCursor,
(pItem->fg.jointype & JT_OUTER)!=0)
){
@@ -138647,6 +139955,7 @@ SQLITE_PRIVATE int sqlite3Select(
sqlite3VdbeAddOp2(v, OP_Gosub, pCteUse->regRtn, pCteUse->addrM9e);
if( pItem->iCursor!=pCteUse->iCur ){
sqlite3VdbeAddOp2(v, OP_OpenDup, pItem->iCursor, pCteUse->iCur);
+ VdbeComment((v, "%!S", pItem));
}
pSub->nSelectRow = pCteUse->nRowEst;
}else if( (pPrior = isSelfJoinView(pTabList, pItem))!=0 ){
@@ -138984,7 +140293,7 @@ SQLITE_PRIVATE int sqlite3Select(
}
for(i=0; i<pAggInfo->nFunc; i++){
Expr *pExpr = pAggInfo->aFunc[i].pFExpr;
- assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
+ assert( ExprUseXList(pExpr) );
sNC.ncFlags |= NC_InAggFunc;
sqlite3ExprAnalyzeAggList(&sNC, pExpr->x.pList);
#ifndef SQLITE_OMIT_WINDOWFUNC
@@ -139039,7 +140348,9 @@ SQLITE_PRIVATE int sqlite3Select(
if( pAggInfo->nFunc==1
&& pAggInfo->aFunc[0].iDistinct>=0
- && pAggInfo->aFunc[0].pFExpr->x.pList
+ && ALWAYS(pAggInfo->aFunc[0].pFExpr!=0)
+ && ALWAYS(ExprUseXList(pAggInfo->aFunc[0].pFExpr))
+ && pAggInfo->aFunc[0].pFExpr->x.pList!=0
){
Expr *pExpr = pAggInfo->aFunc[0].pFExpr->x.pList->a[0].pExpr;
pExpr = sqlite3ExprDup(db, pExpr, 0);
@@ -139360,6 +140671,7 @@ SQLITE_PRIVATE int sqlite3Select(
sqlite3VdbeAddOp2(v, OP_Integer, 0, regAcc);
}
}else if( pAggInfo->nFunc==1 && pAggInfo->aFunc[0].iDistinct>=0 ){
+ assert( ExprUseXList(pAggInfo->aFunc[0].pFExpr) );
pDistinct = pAggInfo->aFunc[0].pFExpr->x.pList;
distFlag = pDistinct ? (WHERE_WANT_DISTINCT|WHERE_AGG_DISTINCT) : 0;
}
@@ -139891,12 +141203,12 @@ SQLITE_PRIVATE void sqlite3BeginTrigger(
/* INSTEAD of triggers are only for views and views only support INSTEAD
** of triggers.
*/
- if( pTab->pSelect && tr_tm!=TK_INSTEAD ){
+ if( IsView(pTab) && tr_tm!=TK_INSTEAD ){
sqlite3ErrorMsg(pParse, "cannot create %s trigger on view: %S",
(tr_tm == TK_BEFORE)?"BEFORE":"AFTER", pTableName->a);
goto trigger_orphan_error;
}
- if( !pTab->pSelect && tr_tm==TK_INSTEAD ){
+ if( !IsView(pTab) && tr_tm==TK_INSTEAD ){
sqlite3ErrorMsg(pParse, "cannot create INSTEAD OF"
" trigger on table: %S", pTableName->a);
goto trigger_orphan_error;
@@ -140033,7 +141345,7 @@ SQLITE_PRIVATE void sqlite3FinishTrigger(
z = sqlite3DbStrNDup(db, (char*)pAll->z, pAll->n);
testcase( z==0 );
sqlite3NestedParse(pParse,
- "INSERT INTO %Q." DFLT_SCHEMA_TABLE
+ "INSERT INTO %Q." LEGACY_SCHEMA_TABLE
" VALUES('trigger',%Q,%Q,0,'CREATE TRIGGER %q')",
db->aDb[iDb].zDbSName, zName,
pTrig->table, z);
@@ -140347,7 +141659,7 @@ SQLITE_PRIVATE void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger){
*/
if( (v = sqlite3GetVdbe(pParse))!=0 ){
sqlite3NestedParse(pParse,
- "DELETE FROM %Q." DFLT_SCHEMA_TABLE " WHERE name=%Q AND type='trigger'",
+ "DELETE FROM %Q." LEGACY_SCHEMA_TABLE " WHERE name=%Q AND type='trigger'",
db->aDb[iDb].zDbSName, pTrigger->zName
);
sqlite3ChangeCookie(pParse, iDb);
@@ -140549,11 +141861,11 @@ static ExprList *sqlite3ExpandReturning(
for(jj=0; jj<pTab->nCol; jj++){
Expr *pNewExpr;
if( IsHiddenColumn(pTab->aCol+jj) ) continue;
- pNewExpr = sqlite3Expr(db, TK_ID, pTab->aCol[jj].zName);
+ pNewExpr = sqlite3Expr(db, TK_ID, pTab->aCol[jj].zCnName);
pNew = sqlite3ExprListAppend(pParse, pNew, pNewExpr);
if( !db->mallocFailed ){
struct ExprList_item *pItem = &pNew->a[pNew->nExpr-1];
- pItem->zEName = sqlite3DbStrDup(db, pTab->aCol[jj].zName);
+ pItem->zEName = sqlite3DbStrDup(db, pTab->aCol[jj].zCnName);
pItem->eEName = ENAME_NAME;
}
}
@@ -140598,13 +141910,14 @@ static void codeReturningTrigger(
sSelect.pSrc = &sFrom;
sFrom.nSrc = 1;
sFrom.a[0].pTab = pTab;
+ sFrom.a[0].iCursor = -1;
sqlite3SelectPrep(pParse, &sSelect, 0);
if( db->mallocFailed==0 && pParse->nErr==0 ){
sqlite3GenerateColumnNames(pParse, &sSelect);
}
sqlite3ExprListDelete(db, sSelect.pEList);
pNew = sqlite3ExpandReturning(pParse, pReturning->pReturnEL, pTab);
- if( pNew ){
+ if( !db->mallocFailed ){
NameContext sNC;
memset(&sNC, 0, sizeof(sNC));
if( pReturning->nRetCol==0 ){
@@ -140616,7 +141929,9 @@ static void codeReturningTrigger(
sNC.ncFlags = NC_UBaseReg;
pParse->eTriggerOp = pTrigger->op;
pParse->pTriggerTab = pTab;
- if( sqlite3ResolveExprListNames(&sNC, pNew)==SQLITE_OK ){
+ if( sqlite3ResolveExprListNames(&sNC, pNew)==SQLITE_OK
+ && !db->mallocFailed
+ ){
int i;
int nCol = pNew->nExpr;
int reg = pParse->nMem+1;
@@ -140624,16 +141939,17 @@ static void codeReturningTrigger(
pReturning->iRetReg = reg;
for(i=0; i<nCol; i++){
Expr *pCol = pNew->a[i].pExpr;
+ assert( pCol!=0 ); /* Due to !db->mallocFailed ~9 lines above */
sqlite3ExprCodeFactorable(pParse, pCol, reg+i);
}
sqlite3VdbeAddOp3(v, OP_MakeRecord, reg, i, reg+i);
sqlite3VdbeAddOp2(v, OP_NewRowid, pReturning->iRetCur, reg+i+1);
sqlite3VdbeAddOp3(v, OP_Insert, pReturning->iRetCur, reg+i, reg+i+1);
}
- sqlite3ExprListDelete(db, pNew);
- pParse->eTriggerOp = 0;
- pParse->pTriggerTab = 0;
}
+ sqlite3ExprListDelete(db, pNew);
+ pParse->eTriggerOp = 0;
+ pParse->pTriggerTab = 0;
}
@@ -141153,13 +142469,14 @@ static void updateVirtualTable(
*/
SQLITE_PRIVATE void sqlite3ColumnDefault(Vdbe *v, Table *pTab, int i, int iReg){
assert( pTab!=0 );
- if( !pTab->pSelect ){
+ if( !IsView(pTab) ){
sqlite3_value *pValue = 0;
u8 enc = ENC(sqlite3VdbeDb(v));
Column *pCol = &pTab->aCol[i];
- VdbeComment((v, "%s.%s", pTab->zName, pCol->zName));
+ VdbeComment((v, "%s.%s", pTab->zName, pCol->zCnName));
assert( i<pTab->nCol );
- sqlite3ValueFromExpr(sqlite3VdbeDb(v), pCol->pDflt, enc,
+ sqlite3ValueFromExpr(sqlite3VdbeDb(v),
+ sqlite3ColumnExpr(pTab,pCol), enc,
pCol->affinity, &pValue);
if( pValue ){
sqlite3VdbeAppendP4(v, pValue, P4_MEM);
@@ -141329,7 +142646,7 @@ static void updateFromSelect(
pList = sqlite3ExprListAppend(pParse, pList, pNew);
}
eDest = IsVirtual(pTab) ? SRT_Table : SRT_Upfrom;
- }else if( pTab->pSelect ){
+ }else if( IsView(pTab) ){
for(i=0; i<pTab->nCol; i++){
pList = sqlite3ExprListAppend(pParse, pList, exprRowColumn(pParse, i));
}
@@ -141352,8 +142669,9 @@ static void updateFromSelect(
}
}
pSelect = sqlite3SelectNew(pParse, pList,
- pSrc, pWhere2, pGrp, 0, pOrderBy2, SF_UpdateFrom|SF_IncludeHidden, pLimit2
+ pSrc, pWhere2, pGrp, 0, pOrderBy2, SF_UFSrcCheck|SF_IncludeHidden, pLimit2
);
+ if( pSelect ) pSelect->selFlags |= SF_OrderByReqd;
sqlite3SelectDestInit(&dest, eDest, iEph);
dest.iSDParm2 = (pPk ? pPk->nKeyCol : -1);
sqlite3Select(pParse, pSelect, &dest);
@@ -141453,7 +142771,7 @@ SQLITE_PRIVATE void sqlite3Update(
*/
#ifndef SQLITE_OMIT_TRIGGER
pTrigger = sqlite3TriggersExist(pParse, pTab, TK_UPDATE, pChanges, &tmask);
- isView = pTab->pSelect!=0;
+ isView = IsView(pTab);
assert( pTrigger || tmask==0 );
#else
# define pTrigger 0
@@ -141542,13 +142860,16 @@ SQLITE_PRIVATE void sqlite3Update(
*/
chngRowid = chngPk = 0;
for(i=0; i<pChanges->nExpr; i++){
+ u8 hCol = sqlite3StrIHash(pChanges->a[i].zEName);
/* If this is an UPDATE with a FROM clause, do not resolve expressions
** here. The call to sqlite3Select() below will do that. */
if( nChangeFrom==0 && sqlite3ResolveExprNames(&sNC, pChanges->a[i].pExpr) ){
goto update_cleanup;
}
for(j=0; j<pTab->nCol; j++){
- if( sqlite3StrICmp(pTab->aCol[j].zName, pChanges->a[i].zEName)==0 ){
+ if( pTab->aCol[j].hName==hCol
+ && sqlite3StrICmp(pTab->aCol[j].zCnName, pChanges->a[i].zEName)==0
+ ){
if( j==pTab->iPKey ){
chngRowid = 1;
pRowidExpr = pChanges->a[i].pExpr;
@@ -141562,7 +142883,7 @@ SQLITE_PRIVATE void sqlite3Update(
testcase( pTab->aCol[j].colFlags & COLFLAG_STORED );
sqlite3ErrorMsg(pParse,
"cannot UPDATE generated column \"%s\"",
- pTab->aCol[j].zName);
+ pTab->aCol[j].zCnName);
goto update_cleanup;
}
#endif
@@ -141586,7 +142907,7 @@ SQLITE_PRIVATE void sqlite3Update(
{
int rc;
rc = sqlite3AuthCheck(pParse, SQLITE_UPDATE, pTab->zName,
- j<0 ? "ROWID" : pTab->aCol[j].zName,
+ j<0 ? "ROWID" : pTab->aCol[j].zCnName,
db->aDb[iDb].zDbSName);
if( rc==SQLITE_DENY ){
goto update_cleanup;
@@ -141618,8 +142939,10 @@ SQLITE_PRIVATE void sqlite3Update(
for(i=0; i<pTab->nCol; i++){
if( aXRef[i]>=0 ) continue;
if( (pTab->aCol[i].colFlags & COLFLAG_GENERATED)==0 ) continue;
- if( sqlite3ExprReferencesUpdatedColumn(pTab->aCol[i].pDflt,
- aXRef, chngRowid) ){
+ if( sqlite3ExprReferencesUpdatedColumn(
+ sqlite3ColumnExpr(pTab, &pTab->aCol[i]),
+ aXRef, chngRowid)
+ ){
aXRef[i] = 99999;
bProgress = 1;
}
@@ -142711,7 +144034,7 @@ SQLITE_PRIVATE void sqlite3UpsertDoUpdate(
k = sqlite3TableColumnToIndex(pIdx, pPk->aiColumn[i]);
sqlite3VdbeAddOp3(v, OP_Column, iCur, k, iPk+i);
VdbeComment((v, "%s.%s", pIdx->zName,
- pTab->aCol[pPk->aiColumn[i]].zName));
+ pTab->aCol[pPk->aiColumn[i]].zCnName));
}
sqlite3VdbeVerifyAbortable(v, OE_Abort);
i = sqlite3VdbeAddOp4Int(v, OP_Found, iDataCur, 0, iPk, nPk);
@@ -142893,8 +144216,8 @@ SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3RunVacuum(
Btree *pTemp; /* The temporary database we vacuum into */
u32 saved_mDbFlags; /* Saved value of db->mDbFlags */
u64 saved_flags; /* Saved value of db->flags */
- int saved_nChange; /* Saved value of db->nChange */
- int saved_nTotalChange; /* Saved value of db->nTotalChange */
+ i64 saved_nChange; /* Saved value of db->nChange */
+ i64 saved_nTotalChange; /* Saved value of db->nTotalChange */
u32 saved_openFlags; /* Saved value of db->openFlags */
u8 saved_mTrace; /* Saved trace settings */
Db *pDb = 0; /* Database to detach at end of vacuum */
@@ -142992,7 +144315,9 @@ SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3RunVacuum(
/* Do not attempt to change the page size for a WAL database */
if( sqlite3PagerGetJournalMode(sqlite3BtreePager(pMain))
- ==PAGER_JOURNALMODE_WAL ){
+ ==PAGER_JOURNALMODE_WAL
+ && pOut==0
+ ){
db->nextPagesize = 0;
}
@@ -143341,7 +144666,7 @@ SQLITE_PRIVATE void sqlite3VtabLock(VTable *pVTab){
SQLITE_PRIVATE VTable *sqlite3GetVTable(sqlite3 *db, Table *pTab){
VTable *pVtab;
assert( IsVirtual(pTab) );
- for(pVtab=pTab->pVTable; pVtab && pVtab->db!=db; pVtab=pVtab->pNext);
+ for(pVtab=pTab->u.vtab.p; pVtab && pVtab->db!=db; pVtab=pVtab->pNext);
return pVtab;
}
@@ -143354,7 +144679,8 @@ SQLITE_PRIVATE void sqlite3VtabUnlock(VTable *pVTab){
assert( db );
assert( pVTab->nRef>0 );
- assert( db->magic==SQLITE_MAGIC_OPEN || db->magic==SQLITE_MAGIC_ZOMBIE );
+ assert( db->eOpenState==SQLITE_STATE_OPEN
+ || db->eOpenState==SQLITE_STATE_ZOMBIE );
pVTab->nRef--;
if( pVTab->nRef==0 ){
@@ -143369,21 +144695,24 @@ SQLITE_PRIVATE void sqlite3VtabUnlock(VTable *pVTab){
/*
** Table p is a virtual table. This function moves all elements in the
-** p->pVTable list to the sqlite3.pDisconnect lists of their associated
+** p->u.vtab.p list to the sqlite3.pDisconnect lists of their associated
** database connections to be disconnected at the next opportunity.
** Except, if argument db is not NULL, then the entry associated with
-** connection db is left in the p->pVTable list.
+** connection db is left in the p->u.vtab.p list.
*/
static VTable *vtabDisconnectAll(sqlite3 *db, Table *p){
VTable *pRet = 0;
- VTable *pVTable = p->pVTable;
- p->pVTable = 0;
+ VTable *pVTable;
+
+ assert( IsVirtual(p) );
+ pVTable = p->u.vtab.p;
+ p->u.vtab.p = 0;
/* Assert that the mutex (if any) associated with the BtShared database
** that contains table p is held by the caller. See header comments
** above function sqlite3VtabUnlockList() for an explanation of why
** this makes it safe to access the sqlite3.pDisconnect list of any
- ** database connection that may have an entry in the p->pVTable list.
+ ** database connection that may have an entry in the p->u.vtab.p list.
*/
assert( db==0 || sqlite3SchemaMutexHeld(db, 0, p->pSchema) );
@@ -143393,7 +144722,7 @@ static VTable *vtabDisconnectAll(sqlite3 *db, Table *p){
assert( db2 );
if( db2==db ){
pRet = pVTable;
- p->pVTable = pRet;
+ p->u.vtab.p = pRet;
pRet->pNext = 0;
}else{
pVTable->pNext = db2->pDisconnect;
@@ -143421,7 +144750,7 @@ SQLITE_PRIVATE void sqlite3VtabDisconnect(sqlite3 *db, Table *p){
assert( sqlite3BtreeHoldsAllMutexes(db) );
assert( sqlite3_mutex_held(db->mutex) );
- for(ppVTab=&p->pVTable; *ppVTab; ppVTab=&(*ppVTab)->pNext){
+ for(ppVTab=&p->u.vtab.p; *ppVTab; ppVTab=&(*ppVTab)->pNext){
if( (*ppVTab)->db==db ){
VTable *pVTab = *ppVTab;
*ppVTab = pVTab->pNext;
@@ -143484,37 +144813,41 @@ SQLITE_PRIVATE void sqlite3VtabUnlockList(sqlite3 *db){
** database connection.
*/
SQLITE_PRIVATE void sqlite3VtabClear(sqlite3 *db, Table *p){
+ assert( IsVirtual(p) );
if( !db || db->pnBytesFreed==0 ) vtabDisconnectAll(0, p);
- if( p->azModuleArg ){
+ if( p->u.vtab.azArg ){
int i;
- for(i=0; i<p->nModuleArg; i++){
- if( i!=1 ) sqlite3DbFree(db, p->azModuleArg[i]);
+ for(i=0; i<p->u.vtab.nArg; i++){
+ if( i!=1 ) sqlite3DbFree(db, p->u.vtab.azArg[i]);
}
- sqlite3DbFree(db, p->azModuleArg);
+ sqlite3DbFree(db, p->u.vtab.azArg);
}
}
/*
-** Add a new module argument to pTable->azModuleArg[].
+** Add a new module argument to pTable->u.vtab.azArg[].
** The string is not copied - the pointer is stored. The
** string will be freed automatically when the table is
** deleted.
*/
static void addModuleArgument(Parse *pParse, Table *pTable, char *zArg){
- sqlite3_int64 nBytes = sizeof(char *)*(2+pTable->nModuleArg);
+ sqlite3_int64 nBytes;
char **azModuleArg;
sqlite3 *db = pParse->db;
- if( pTable->nModuleArg+3>=db->aLimit[SQLITE_LIMIT_COLUMN] ){
+
+ assert( IsVirtual(pTable) );
+ nBytes = sizeof(char *)*(2+pTable->u.vtab.nArg);
+ if( pTable->u.vtab.nArg+3>=db->aLimit[SQLITE_LIMIT_COLUMN] ){
sqlite3ErrorMsg(pParse, "too many columns on %s", pTable->zName);
}
- azModuleArg = sqlite3DbRealloc(db, pTable->azModuleArg, nBytes);
+ azModuleArg = sqlite3DbRealloc(db, pTable->u.vtab.azArg, nBytes);
if( azModuleArg==0 ){
sqlite3DbFree(db, zArg);
}else{
- int i = pTable->nModuleArg++;
+ int i = pTable->u.vtab.nArg++;
azModuleArg[i] = zArg;
azModuleArg[i+1] = 0;
- pTable->azModuleArg = azModuleArg;
+ pTable->u.vtab.azArg = azModuleArg;
}
}
@@ -143537,10 +144870,11 @@ SQLITE_PRIVATE void sqlite3VtabBeginParse(
pTable = pParse->pNewTable;
if( pTable==0 ) return;
assert( 0==pTable->pIndex );
+ pTable->eTabType = TABTYP_VTAB;
db = pParse->db;
- assert( pTable->nModuleArg==0 );
+ assert( pTable->u.vtab.nArg==0 );
addModuleArgument(pParse, pTable, sqlite3NameFromToken(db, pModuleName));
addModuleArgument(pParse, pTable, 0);
addModuleArgument(pParse, pTable, sqlite3DbStrDup(db, pTable->zName));
@@ -143557,11 +144891,11 @@ SQLITE_PRIVATE void sqlite3VtabBeginParse(
** sqlite_schema table, has already been made by sqlite3StartTable().
** The second call, to obtain permission to create the table, is made now.
*/
- if( pTable->azModuleArg ){
+ if( pTable->u.vtab.azArg ){
int iDb = sqlite3SchemaToIndex(db, pTable->pSchema);
assert( iDb>=0 ); /* The database the table is being created in */
sqlite3AuthCheck(pParse, SQLITE_CREATE_VTABLE, pTable->zName,
- pTable->azModuleArg[0], pParse->db->aDb[iDb].zDbSName);
+ pTable->u.vtab.azArg[0], pParse->db->aDb[iDb].zDbSName);
}
#endif
}
@@ -143589,9 +144923,10 @@ SQLITE_PRIVATE void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
sqlite3 *db = pParse->db; /* The database connection */
if( pTab==0 ) return;
+ assert( IsVirtual(pTab) );
addArgumentToVtab(pParse);
pParse->sArg.z = 0;
- if( pTab->nModuleArg<1 ) return;
+ if( pTab->u.vtab.nArg<1 ) return;
/* If the CREATE VIRTUAL TABLE statement is being entered for the
** first time (in other words if the virtual table is actually being
@@ -143624,7 +144959,7 @@ SQLITE_PRIVATE void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
*/
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
sqlite3NestedParse(pParse,
- "UPDATE %Q." DFLT_SCHEMA_TABLE " "
+ "UPDATE %Q." LEGACY_SCHEMA_TABLE " "
"SET type='table', name=%Q, tbl_name=%Q, rootpage=0, sql=%Q "
"WHERE rowid=#%d",
db->aDb[iDb].zDbSName,
@@ -143644,18 +144979,14 @@ SQLITE_PRIVATE void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
iReg = ++pParse->nMem;
sqlite3VdbeLoadString(v, iReg, pTab->zName);
sqlite3VdbeAddOp2(v, OP_VCreate, iDb, iReg);
- }
-
- /* If we are rereading the sqlite_schema table create the in-memory
- ** record of the table. The xConnect() method is not called until
- ** the first time the virtual table is used in an SQL statement. This
- ** allows a schema that contains virtual tables to be loaded before
- ** the required virtual table implementations are registered. */
- else {
+ }else{
+ /* If we are rereading the sqlite_schema table create the in-memory
+ ** record of the table. */
Table *pOld;
Schema *pSchema = pTab->pSchema;
const char *zName = pTab->zName;
- assert( sqlite3SchemaMutexHeld(db, 0, pSchema) );
+ assert( zName!=0 );
+ sqlite3MarkAllShadowTablesOf(db, pTab);
pOld = sqlite3HashInsert(&pSchema->tblHash, zName, pTab);
if( pOld ){
sqlite3OomFault(db);
@@ -143706,13 +145037,16 @@ static int vtabCallConstructor(
VtabCtx sCtx;
VTable *pVTable;
int rc;
- const char *const*azArg = (const char *const*)pTab->azModuleArg;
- int nArg = pTab->nModuleArg;
+ const char *const*azArg;
+ int nArg = pTab->u.vtab.nArg;
char *zErr = 0;
char *zModuleName;
int iDb;
VtabCtx *pCtx;
+ assert( IsVirtual(pTab) );
+ azArg = (const char *const*)pTab->u.vtab.azArg;
+
/* Check that the virtual-table is not already being initialized */
for(pCtx=db->pVtabCtx; pCtx; pCtx=pCtx->pPrior){
if( pCtx->pTab==pTab ){
@@ -143739,7 +145073,7 @@ static int vtabCallConstructor(
pVTable->eVtabRisk = SQLITE_VTABRISK_Normal;
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
- pTab->azModuleArg[1] = db->aDb[iDb].zDbSName;
+ pTab->u.vtab.azArg[1] = db->aDb[iDb].zDbSName;
/* Invoke the virtual table constructor */
assert( &db->pVtabCtx );
@@ -143778,12 +145112,12 @@ static int vtabCallConstructor(
int iCol;
u16 oooHidden = 0;
/* If everything went according to plan, link the new VTable structure
- ** into the linked list headed by pTab->pVTable. Then loop through the
+ ** into the linked list headed by pTab->u.vtab.p. Then loop through the
** columns of the table to see if any of them contain the token "hidden".
** If so, set the Column COLFLAG_HIDDEN flag and remove the token from
** the type string. */
- pVTable->pNext = pTab->pVTable;
- pTab->pVTable = pVTable;
+ pVTable->pNext = pTab->u.vtab.p;
+ pTab->u.vtab.p = pVTable;
for(iCol=0; iCol<pTab->nCol; iCol++){
char *zType = sqlite3ColumnType(&pTab->aCol[iCol], "");
@@ -143836,16 +145170,17 @@ SQLITE_PRIVATE int sqlite3VtabCallConnect(Parse *pParse, Table *pTab){
int rc;
assert( pTab );
- if( !IsVirtual(pTab) || sqlite3GetVTable(db, pTab) ){
+ assert( IsVirtual(pTab) );
+ if( sqlite3GetVTable(db, pTab) ){
return SQLITE_OK;
}
/* Locate the required virtual table module */
- zMod = pTab->azModuleArg[0];
+ zMod = pTab->u.vtab.azArg[0];
pMod = (Module*)sqlite3HashFind(&db->aModule, zMod);
if( !pMod ){
- const char *zModule = pTab->azModuleArg[0];
+ const char *zModule = pTab->u.vtab.azArg[0];
sqlite3ErrorMsg(pParse, "no such module: %s", zModule);
rc = SQLITE_ERROR;
}else{
@@ -143908,10 +145243,10 @@ SQLITE_PRIVATE int sqlite3VtabCallCreate(sqlite3 *db, int iDb, const char *zTab,
const char *zMod;
pTab = sqlite3FindTable(db, zTab, db->aDb[iDb].zDbSName);
- assert( pTab && IsVirtual(pTab) && !pTab->pVTable );
+ assert( pTab && IsVirtual(pTab) && !pTab->u.vtab.p );
/* Locate the required virtual table module */
- zMod = pTab->azModuleArg[0];
+ zMod = pTab->u.vtab.azArg[0];
pMod = (Module*)sqlite3HashFind(&db->aModule, zMod);
/* If the module has been registered and includes a Create method,
@@ -143948,6 +145283,7 @@ SQLITE_API int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){
Table *pTab;
char *zErr = 0;
Parse sParse;
+ int initBusy;
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) || zCreateTable==0 ){
@@ -143967,17 +145303,23 @@ SQLITE_API int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){
memset(&sParse, 0, sizeof(sParse));
sParse.eParseMode = PARSE_MODE_DECLARE_VTAB;
sParse.db = db;
+ /* We should never be able to reach this point while loading the
+ ** schema. Nevertheless, defend against that (turn off db->init.busy)
+ ** in case a bug arises. */
+ assert( db->init.busy==0 );
+ initBusy = db->init.busy;
+ db->init.busy = 0;
sParse.nQueryLoop = 1;
if( SQLITE_OK==sqlite3RunParser(&sParse, zCreateTable, &zErr)
&& sParse.pNewTable
&& !db->mallocFailed
- && !sParse.pNewTable->pSelect
- && !IsVirtual(sParse.pNewTable)
+ && IsOrdinaryTable(sParse.pNewTable)
){
if( !pTab->aCol ){
Table *pNew = sParse.pNewTable;
Index *pIdx;
pTab->aCol = pNew->aCol;
+ sqlite3ExprListDelete(db, pNew->u.tab.pDfltList);
pTab->nNVCol = pTab->nCol = pNew->nCol;
pTab->tabFlags |= pNew->tabFlags & (TF_WithoutRowid|TF_NoVisibleRowid);
pNew->nCol = 0;
@@ -144013,6 +145355,7 @@ SQLITE_API int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){
}
sqlite3DeleteTable(db, sParse.pNewTable);
sqlite3ParserReset(&sParse);
+ db->init.busy = initBusy;
assert( (rc&0xff)==rc );
rc = sqlite3ApiExit(db, rc);
@@ -144032,10 +145375,13 @@ SQLITE_PRIVATE int sqlite3VtabCallDestroy(sqlite3 *db, int iDb, const char *zTab
Table *pTab;
pTab = sqlite3FindTable(db, zTab, db->aDb[iDb].zDbSName);
- if( pTab!=0 && ALWAYS(pTab->pVTable!=0) ){
+ if( ALWAYS(pTab!=0)
+ && ALWAYS(IsVirtual(pTab))
+ && ALWAYS(pTab->u.vtab.p!=0)
+ ){
VTable *p;
int (*xDestroy)(sqlite3_vtab *);
- for(p=pTab->pVTable; p; p=p->pNext){
+ for(p=pTab->u.vtab.p; p; p=p->pNext){
assert( p->pVtab );
if( p->pVtab->nRef>0 ){
return SQLITE_LOCKED;
@@ -144049,9 +145395,9 @@ SQLITE_PRIVATE int sqlite3VtabCallDestroy(sqlite3 *db, int iDb, const char *zTab
rc = xDestroy(p->pVtab);
/* Remove the sqlite3_vtab* from the aVTrans[] array, if applicable */
if( rc==SQLITE_OK ){
- assert( pTab->pVTable==p && p->pNext==0 );
+ assert( pTab->u.vtab.p==p && p->pNext==0 );
p->pVtab = 0;
- pTab->pVTable = 0;
+ pTab->u.vtab.p = 0;
sqlite3VtabUnlock(p);
}
sqlite3DeleteTable(db, pTab);
@@ -144265,6 +145611,7 @@ SQLITE_PRIVATE FuncDef *sqlite3VtabOverloadFunction(
/* Check to see the left operand is a column in a virtual table */
if( NEVER(pExpr==0) ) return pDef;
if( pExpr->op!=TK_COLUMN ) return pDef;
+ assert( ExprUseYTab(pExpr) );
pTab = pExpr->y.pTab;
if( pTab==0 ) return pDef;
if( !IsVirtual(pTab) ) return pDef;
@@ -144339,8 +145686,9 @@ SQLITE_PRIVATE void sqlite3VtabMakeWritable(Parse *pParse, Table *pTab){
/*
** Check to see if virtual table module pMod can be have an eponymous
** virtual table instance. If it can, create one if one does not already
-** exist. Return non-zero if the eponymous virtual table instance exists
-** when this routine returns, and return zero if it does not exist.
+** exist. Return non-zero if either the eponymous virtual table instance
+** exists when this routine returns or if an attempt to create it failed
+** and an error message was left in pParse.
**
** An eponymous virtual table instance is one that is named after its
** module, and more importantly, does not require a CREATE VIRTUAL TABLE
@@ -144367,8 +145715,9 @@ SQLITE_PRIVATE int sqlite3VtabEponymousTableInit(Parse *pParse, Module *pMod){
}
pMod->pEpoTab = pTab;
pTab->nTabRef = 1;
+ pTab->eTabType = TABTYP_VTAB;
pTab->pSchema = db->aDb[0].pSchema;
- assert( pTab->nModuleArg==0 );
+ assert( pTab->u.vtab.nArg==0 );
pTab->iPKey = -1;
pTab->tabFlags |= TF_Eponymous;
addModuleArgument(pParse, pTab, sqlite3DbStrDup(db, pTab->zName));
@@ -144379,7 +145728,6 @@ SQLITE_PRIVATE int sqlite3VtabEponymousTableInit(Parse *pParse, Module *pMod){
sqlite3ErrorMsg(pParse, "%s", zErr);
sqlite3DbFree(db, zErr);
sqlite3VtabEponymousTableClear(db, pMod);
- return 0;
}
return 1;
}
@@ -144572,7 +145920,7 @@ struct WhereLevel {
u8 eEndLoopOp; /* IN Loop terminator. OP_Next or OP_Prev */
} *aInLoop; /* Information about each nested IN operator */
} in; /* Used when pWLoop->wsFlags&WHERE_IN_ABLE */
- Index *pCovidx; /* Possible covering index for WHERE_MULTI_OR */
+ Index *pCoveringIdx; /* Possible covering index for WHERE_MULTI_OR */
} u;
struct WhereLoop *pWLoop; /* The selected WhereLoop object */
Bitmask notReady; /* FROM entries not usable at this level */
@@ -145113,7 +146461,7 @@ static const char *explainIndexColumnName(Index *pIdx, int i){
i = pIdx->aiColumn[i];
if( i==XN_EXPR ) return "<expr>";
if( i==XN_ROWID ) return "rowid";
- return pIdx->pTable->aCol[i].zName;
+ return pIdx->pTable->aCol[i].zCnName;
}
/*
@@ -145500,16 +146848,23 @@ static Expr *removeUnindexableInClauseTerms(
Expr *pNew;
pNew = sqlite3ExprDup(db, pX, 0);
if( db->mallocFailed==0 ){
- ExprList *pOrigRhs = pNew->x.pSelect->pEList; /* Original unmodified RHS */
- ExprList *pOrigLhs = pNew->pLeft->x.pList; /* Original unmodified LHS */
+ ExprList *pOrigRhs; /* Original unmodified RHS */
+ ExprList *pOrigLhs; /* Original unmodified LHS */
ExprList *pRhs = 0; /* New RHS after modifications */
ExprList *pLhs = 0; /* New LHS after mods */
int i; /* Loop counter */
Select *pSelect; /* Pointer to the SELECT on the RHS */
+ assert( ExprUseXSelect(pNew) );
+ pOrigRhs = pNew->x.pSelect->pEList;
+ assert( pNew->pLeft!=0 );
+ assert( ExprUseXList(pNew->pLeft) );
+ pOrigLhs = pNew->pLeft->x.pList;
for(i=iEq; i<pLoop->nLTerm; i++){
if( pLoop->aLTerm[i]->pExpr==pX ){
- int iField = pLoop->aLTerm[i]->u.x.iField - 1;
+ int iField;
+ assert( (pLoop->aLTerm[i]->eOperator & (WO_OR|WO_AND))==0 );
+ iField = pLoop->aLTerm[i]->u.x.iField - 1;
if( pOrigRhs->a[iField].pExpr==0 ) continue; /* Duplicate PK column */
pRhs = sqlite3ExprListAppend(pParse, pRhs, pOrigRhs->a[iField].pExpr);
pOrigRhs->a[iField].pExpr = 0;
@@ -145624,7 +146979,7 @@ static int codeEqualityTerm(
}
iTab = 0;
- if( (pX->flags & EP_xIsSelect)==0 || pX->x.pSelect->pEList->nExpr==1 ){
+ if( !ExprUseXSelect(pX) || pX->x.pSelect->pEList->nExpr==1 ){
eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, 0, &iTab);
}else{
sqlite3 *db = pParse->db;
@@ -145646,8 +147001,8 @@ static int codeEqualityTerm(
sqlite3VdbeAddOp2(v, bRev ? OP_Last : OP_Rewind, iTab, 0);
VdbeCoverageIf(v, bRev);
VdbeCoverageIf(v, !bRev);
- assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 );
+ assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 );
pLoop->wsFlags |= WHERE_IN_ABLE;
if( pLevel->u.in.nIn==0 ){
pLevel->addrNxt = sqlite3VdbeMakeLabel(pParse);
@@ -146189,7 +147544,7 @@ static void codeExprOrVector(Parse *pParse, Expr *p, int iReg, int nReg){
assert( nReg>0 );
if( p && sqlite3ExprIsVector(p) ){
#ifndef SQLITE_OMIT_SUBQUERY
- if( (p->flags & EP_xIsSelect) ){
+ if( ExprUseXSelect(p) ){
Vdbe *v = pParse->pVdbe;
int iSelect;
assert( p->op==TK_SELECT );
@@ -146199,7 +147554,9 @@ static void codeExprOrVector(Parse *pParse, Expr *p, int iReg, int nReg){
#endif
{
int i;
- ExprList *pList = p->x.pList;
+ const ExprList *pList;
+ assert( ExprUseXList(p) );
+ pList = p->x.pList;
assert( nReg<=pList->nExpr );
for(i=0; i<nReg; i++){
sqlite3ExprCode(pParse, pList->a[i].pExpr, iReg+i);
@@ -146252,10 +147609,10 @@ static int whereIndexExprTransNode(Walker *p, Expr *pExpr){
pExpr->op = TK_COLUMN;
pExpr->iTable = pX->iIdxCur;
pExpr->iColumn = pX->iIdxCol;
- pExpr->y.pTab = 0;
testcase( ExprHasProperty(pExpr, EP_Skip) );
testcase( ExprHasProperty(pExpr, EP_Unlikely) );
- ExprClearProperty(pExpr, EP_Skip|EP_Unlikely);
+ ExprClearProperty(pExpr, EP_Skip|EP_Unlikely|EP_WinFunc|EP_Subrtn);
+ pExpr->y.pTab = 0;
return WRC_Prune;
}else{
return WRC_Continue;
@@ -146270,7 +147627,7 @@ static int whereIndexExprTransColumn(Walker *p, Expr *pExpr){
if( pExpr->op==TK_COLUMN ){
IdxExprTrans *pX = p->u.pIdxTrans;
if( pExpr->iTable==pX->iTabCur && pExpr->iColumn==pX->iTabCol ){
- assert( pExpr->y.pTab!=0 );
+ assert( ExprUseYTab(pExpr) && pExpr->y.pTab!=0 );
preserveExpr(pX, pExpr);
pExpr->affExpr = sqlite3TableColumnAffinity(pExpr->y.pTab,pExpr->iColumn);
pExpr->iTable = pX->iIdxCur;
@@ -146318,15 +147675,16 @@ static void whereIndexExprTrans(
for(iIdxCol=0; iIdxCol<pIdx->nColumn; iIdxCol++){
i16 iRef = pIdx->aiColumn[iIdxCol];
if( iRef==XN_EXPR ){
- assert( aColExpr->a[iIdxCol].pExpr!=0 );
+ assert( aColExpr!=0 && aColExpr->a[iIdxCol].pExpr!=0 );
x.pIdxExpr = aColExpr->a[iIdxCol].pExpr;
if( sqlite3ExprIsConstant(x.pIdxExpr) ) continue;
w.xExprCallback = whereIndexExprTransNode;
#ifndef SQLITE_OMIT_GENERATED_COLUMNS
}else if( iRef>=0
&& (pTab->aCol[iRef].colFlags & COLFLAG_VIRTUAL)!=0
- && (pTab->aCol[iRef].zColl==0
- || sqlite3StrICmp(pTab->aCol[iRef].zColl, sqlite3StrBINARY)==0)
+ && ((pTab->aCol[iRef].colFlags & COLFLAG_HASCOLL)==0
+ || sqlite3StrICmp(sqlite3ColumnColl(&pTab->aCol[iRef]),
+ sqlite3StrBINARY)==0)
){
/* Check to see if there are direct references to generated columns
** that are contained in the index. Pulling the generated column
@@ -146506,7 +147864,12 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
pLevel->p1 = iCur;
pLevel->op = pWInfo->eOnePass ? OP_Noop : OP_VNext;
pLevel->p2 = sqlite3VdbeCurrentAddr(v);
- iIn = pLevel->u.in.nIn;
+ assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 );
+ if( pLoop->wsFlags & WHERE_IN_ABLE ){
+ iIn = pLevel->u.in.nIn;
+ }else{
+ iIn = 0;
+ }
for(j=nConstraint-1; j>=0; j--){
pTerm = pLoop->aLTerm[j];
if( (pTerm->eOperator & WO_IN)!=0 ) iIn--;
@@ -146583,9 +147946,6 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
sqlite3VdbeAddOp3(v, OP_SeekRowid, iCur, addrNxt, iRowidReg);
VdbeCoverage(v);
pLevel->op = OP_Noop;
- if( (pTerm->prereqAll & pLevel->notReady)==0 ){
- pTerm->wtFlags |= TERM_CODED;
- }
}else if( (pLoop->wsFlags & WHERE_IPK)!=0
&& (pLoop->wsFlags & WHERE_COLUMN_RANGE)!=0
){
@@ -146956,8 +148316,19 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
** range (if any).
*/
nConstraint = nEq;
+ assert( pLevel->p2==0 );
if( pRangeEnd ){
Expr *pRight = pRangeEnd->pExpr->pRight;
+ if( addrSeekScan ){
+ /* For a seek-scan that has a range on the lowest term of the index,
+ ** we have to make the top of the loop be code that sets the end
+ ** condition of the range. Otherwise, the OP_SeekScan might jump
+ ** over that initialization, leaving the range-end value set to the
+ ** range-start value, resulting in a wrong answer.
+ ** See ticket 5981a8c041a3c2f3 (2021-11-02).
+ */
+ pLevel->p2 = sqlite3VdbeCurrentAddr(v);
+ }
codeExprOrVector(pParse, pRight, regBase+nEq, nTop);
whereLikeOptimizationStringFixup(v, pLevel, pRangeEnd);
if( (pRangeEnd->wtFlags & TERM_VNULL)==0
@@ -146991,7 +148362,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
sqlite3DbFree(db, zEndAff);
/* Top of the loop body */
- pLevel->p2 = sqlite3VdbeCurrentAddr(v);
+ if( pLevel->p2==0 ) pLevel->p2 = sqlite3VdbeCurrentAddr(v);
/* Check if the index cursor is past the end of the range. */
if( nConstraint ){
@@ -147398,7 +148769,10 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
}
}
ExplainQueryPlanPop(pParse);
- pLevel->u.pCovidx = pCov;
+ assert( pLevel->pWLoop==pLoop );
+ assert( (pLoop->wsFlags & WHERE_MULTI_OR)!=0 );
+ assert( (pLoop->wsFlags & WHERE_IN_ABLE)==0 );
+ pLevel->u.pCoveringIdx = pCov;
if( pCov ) pLevel->iIdxCur = iCovCur;
if( pAndExpr ){
pAndExpr->pLeft = 0;
@@ -147542,12 +148916,13 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
#endif
assert( !ExprHasProperty(pE, EP_FromJoin) );
assert( (pTerm->prereqRight & pLevel->notReady)!=0 );
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
pAlt = sqlite3WhereFindTerm(pWC, iCur, pTerm->u.x.leftColumn, notReady,
WO_EQ|WO_IN|WO_IS, 0);
if( pAlt==0 ) continue;
if( pAlt->wtFlags & (TERM_CODED) ) continue;
if( (pAlt->eOperator & WO_IN)
- && (pAlt->pExpr->flags & EP_xIsSelect)
+ && ExprUseXSelect(pAlt->pExpr)
&& (pAlt->pExpr->x.pSelect->pEList->nExpr>1)
){
continue;
@@ -147796,6 +149171,7 @@ static int isLikeOrGlob(
#ifdef SQLITE_EBCDIC
if( *pnoCase ) return 0;
#endif
+ assert( ExprUseXList(pExpr) );
pList = pExpr->x.pList;
pLeft = pList->a[1].pExpr;
@@ -147811,7 +149187,8 @@ static int isLikeOrGlob(
sqlite3VdbeSetVarmask(pParse->pVdbe, iCol);
assert( pRight->op==TK_VARIABLE || pRight->op==TK_REGISTER );
}else if( op==TK_STRING ){
- z = (u8*)pRight->u.zToken;
+ assert( !ExprHasProperty(pRight, EP_IntValue) );
+ z = (u8*)pRight->u.zToken;
}
if( z ){
@@ -147840,7 +149217,9 @@ static int isLikeOrGlob(
pPrefix = sqlite3Expr(db, TK_STRING, (char*)z);
if( pPrefix ){
int iFrom, iTo;
- char *zNew = pPrefix->u.zToken;
+ char *zNew;
+ assert( !ExprHasProperty(pPrefix, EP_IntValue) );
+ zNew = pPrefix->u.zToken;
zNew[cnt] = 0;
for(iFrom=iTo=0; iFrom<cnt; iFrom++){
if( zNew[iFrom]==wc[3] ) iFrom++;
@@ -147864,7 +149243,9 @@ static int isLikeOrGlob(
*/
if( pLeft->op!=TK_COLUMN
|| sqlite3ExprAffinity(pLeft)!=SQLITE_AFF_TEXT
- || IsVirtual(pLeft->y.pTab) /* Value might be numeric */
+ || (ALWAYS( ExprUseYTab(pLeft) )
+ && pLeft->y.pTab
+ && IsVirtual(pLeft->y.pTab)) /* Might be numeric */
){
int isNum;
double rDummy;
@@ -147892,6 +149273,7 @@ static int isLikeOrGlob(
if( op==TK_VARIABLE ){
Vdbe *v = pParse->pVdbe;
sqlite3VdbeSetVarmask(v, pRight->iColumn);
+ assert( !ExprHasProperty(pRight, EP_IntValue) );
if( *pisComplete && pRight->u.zToken[1] ){
/* If the rhs of the LIKE expression is a variable, and the current
** value of the variable means there is no need to invoke the LIKE
@@ -147965,6 +149347,7 @@ static int isAuxiliaryVtabOperator(
Expr *pCol; /* Column reference */
int i;
+ assert( ExprUseXList(pExpr) );
pList = pExpr->x.pList;
if( pList==0 || pList->nExpr!=2 ){
return 0;
@@ -147978,9 +149361,11 @@ static int isAuxiliaryVtabOperator(
** MATCH(expression,vtab_column)
*/
pCol = pList->a[1].pExpr;
+ assert( pCol->op!=TK_COLUMN || ExprUseYTab(pCol) );
testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
if( ExprIsVtab(pCol) ){
for(i=0; i<ArraySize(aOp); i++){
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
if( sqlite3StrICmp(pExpr->u.zToken, aOp[i].zOp)==0 ){
*peOp2 = aOp[i].eOp2;
*ppRight = pList->a[0].pExpr;
@@ -148001,6 +149386,7 @@ static int isAuxiliaryVtabOperator(
** with function names in an arbitrary case.
*/
pCol = pList->a[0].pExpr;
+ assert( pCol->op!=TK_COLUMN || ExprUseYTab(pCol) );
testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
if( ExprIsVtab(pCol) ){
sqlite3_vtab *pVtab;
@@ -148010,7 +149396,8 @@ static int isAuxiliaryVtabOperator(
pVtab = sqlite3GetVTable(db, pCol->y.pTab)->pVtab;
assert( pVtab!=0 );
assert( pVtab->pModule!=0 );
- pMod = (sqlite3_module *)pVtab->pModule;
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
+ pMod = (sqlite3_module *)pVtab->pModule;
if( pMod->xFindFunction!=0 ){
i = pMod->xFindFunction(pVtab,2, pExpr->u.zToken, &xNotUsed, &pNotUsed);
if( i>=SQLITE_INDEX_CONSTRAINT_FUNCTION ){
@@ -148025,10 +149412,12 @@ static int isAuxiliaryVtabOperator(
int res = 0;
Expr *pLeft = pExpr->pLeft;
Expr *pRight = pExpr->pRight;
+ assert( pLeft->op!=TK_COLUMN || ExprUseYTab(pLeft) );
testcase( pLeft->op==TK_COLUMN && pLeft->y.pTab==0 );
if( ExprIsVtab(pLeft) ){
res++;
}
+ assert( pRight==0 || pRight->op!=TK_COLUMN || ExprUseYTab(pRight) );
testcase( pRight && pRight->op==TK_COLUMN && pRight->y.pTab==0 );
if( pRight && ExprIsVtab(pRight) ){
res++;
@@ -148281,6 +149670,7 @@ static void exprAnalyzeOrTerm(
pOrTerm->u.pAndInfo = pAndInfo;
pOrTerm->wtFlags |= TERM_ANDINFO;
pOrTerm->eOperator = WO_AND;
+ pOrTerm->leftCursor = -1;
pAndWC = &pAndInfo->wc;
memset(pAndWC->aStatic, 0, sizeof(pAndWC->aStatic));
sqlite3WhereClauseInit(pAndWC, pWC->pWInfo);
@@ -148323,11 +149713,10 @@ static void exprAnalyzeOrTerm(
** empty.
*/
pOrInfo->indexable = indexable;
+ pTerm->eOperator = WO_OR;
+ pTerm->leftCursor = -1;
if( indexable ){
- pTerm->eOperator = WO_OR;
pWC->hasOr = 1;
- }else{
- pTerm->eOperator = WO_OR;
}
/* For a two-way OR, attempt to implementation case 2.
@@ -148400,6 +149789,7 @@ static void exprAnalyzeOrTerm(
assert( pOrTerm->wtFlags & (TERM_COPIED|TERM_VIRTUAL) );
continue;
}
+ assert( (pOrTerm->eOperator & (WO_OR|WO_AND))==0 );
iColumn = pOrTerm->u.x.leftColumn;
iCursor = pOrTerm->leftCursor;
pLeft = pOrTerm->pExpr->pLeft;
@@ -148420,6 +149810,7 @@ static void exprAnalyzeOrTerm(
okToChngToIN = 1;
for(; i>=0 && okToChngToIN; i--, pOrTerm++){
assert( pOrTerm->eOperator & WO_EQ );
+ assert( (pOrTerm->eOperator & (WO_OR|WO_AND))==0 );
if( pOrTerm->leftCursor!=iCursor ){
pOrTerm->wtFlags &= ~TERM_OR_OK;
}else if( pOrTerm->u.x.leftColumn!=iColumn || (iColumn==XN_EXPR
@@ -148456,6 +149847,7 @@ static void exprAnalyzeOrTerm(
for(i=pOrWc->nTerm-1, pOrTerm=pOrWc->a; i>=0; i--, pOrTerm++){
if( (pOrTerm->wtFlags & TERM_OR_OK)==0 ) continue;
assert( pOrTerm->eOperator & WO_EQ );
+ assert( (pOrTerm->eOperator & (WO_OR|WO_AND))==0 );
assert( pOrTerm->leftCursor==iCursor );
assert( pOrTerm->u.x.leftColumn==iColumn );
pDup = sqlite3ExprDup(db, pOrTerm->pExpr->pRight, 0);
@@ -148468,7 +149860,7 @@ static void exprAnalyzeOrTerm(
if( pNew ){
int idxNew;
transferJoinMarkings(pNew, pExpr);
- assert( !ExprHasProperty(pNew, EP_xIsSelect) );
+ assert( ExprUseXList(pNew) );
pNew->x.pList = pList;
idxNew = whereClauseInsert(pWC, pNew, TERM_VIRTUAL|TERM_DYNAMIC);
testcase( idxNew==0 );
@@ -148596,6 +149988,7 @@ static int exprMightBeIndexed(
assert( TK_IS<TK_GE && TK_ISNULL<TK_GE && TK_IN<TK_GE );
assert( op<=TK_GE );
if( pExpr->op==TK_VECTOR && (op>=TK_GT && ALWAYS(op<=TK_GE)) ){
+ assert( ExprUseXList(pExpr) );
pExpr = pExpr->x.pList->a[0].pExpr;
}
@@ -148662,7 +150055,7 @@ static void exprAnalyze(
if( op==TK_IN ){
assert( pExpr->pRight==0 );
if( sqlite3ExprCheckIN(pParse, pExpr) ) return;
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ if( ExprUseXSelect(pExpr) ){
pTerm->prereqRight = exprSelectUsage(pMaskSet, pExpr->x.pSelect);
}else{
pTerm->prereqRight = sqlite3WhereExprListUsage(pMaskSet, pExpr->x.pList);
@@ -148698,11 +150091,13 @@ static void exprAnalyze(
if( pTerm->u.x.iField>0 ){
assert( op==TK_IN );
assert( pLeft->op==TK_VECTOR );
+ assert( ExprUseXList(pLeft) );
pLeft = pLeft->x.pList->a[pTerm->u.x.iField-1].pExpr;
}
if( exprMightBeIndexed(pSrc, prereqLeft, aiCurCol, pLeft, op) ){
pTerm->leftCursor = aiCurCol[0];
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
pTerm->u.x.leftColumn = aiCurCol[1];
pTerm->eOperator = operatorMask(op) & opMask;
}
@@ -148740,12 +150135,18 @@ static void exprAnalyze(
}
pNew->wtFlags |= exprCommute(pParse, pDup);
pNew->leftCursor = aiCurCol[0];
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
pNew->u.x.leftColumn = aiCurCol[1];
testcase( (prereqLeft | extraRight) != prereqLeft );
pNew->prereqRight = prereqLeft | extraRight;
pNew->prereqAll = prereqAll;
pNew->eOperator = (operatorMask(pDup->op) + eExtraOp) & opMask;
- }else if( op==TK_ISNULL && 0==sqlite3ExprCanBeNull(pLeft) ){
+ }else
+ if( op==TK_ISNULL
+ && !ExprHasProperty(pExpr,EP_FromJoin)
+ && 0==sqlite3ExprCanBeNull(pLeft)
+ ){
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
pExpr->op = TK_TRUEFALSE;
pExpr->u.zToken = "false";
ExprSetProperty(pExpr, EP_IsFalse);
@@ -148771,9 +150172,11 @@ static void exprAnalyze(
** BETWEEN term is skipped.
*/
else if( pExpr->op==TK_BETWEEN && pWC->op==TK_AND ){
- ExprList *pList = pExpr->x.pList;
+ ExprList *pList;
int i;
static const u8 ops[] = {TK_GE, TK_LE};
+ assert( ExprUseXList(pExpr) );
+ pList = pExpr->x.pList;
assert( pList!=0 );
assert( pList->nExpr==2 );
for(i=0; i<2; i++){
@@ -148866,8 +150269,12 @@ static void exprAnalyze(
const char *zCollSeqName; /* Name of collating sequence */
const u16 wtFlags = TERM_LIKEOPT | TERM_VIRTUAL | TERM_DYNAMIC;
+ assert( ExprUseXList(pExpr) );
pLeft = pExpr->x.pList->a[1].pExpr;
pStr2 = sqlite3ExprDup(db, pStr1, 0);
+ assert( pStr1==0 || !ExprHasProperty(pStr1, EP_IntValue) );
+ assert( pStr2==0 || !ExprHasProperty(pStr2, EP_IntValue) );
+
/* Convert the lower bound to upper-case and the upper bound to
** lower-case (upper-case is less than lower-case in ASCII) so that
@@ -148942,8 +150349,8 @@ static void exprAnalyze(
for(i=0; i<nLeft; i++){
int idxNew;
Expr *pNew;
- Expr *pLeft = sqlite3ExprForVectorField(pParse, pExpr->pLeft, i);
- Expr *pRight = sqlite3ExprForVectorField(pParse, pExpr->pRight, i);
+ Expr *pLeft = sqlite3ExprForVectorField(pParse, pExpr->pLeft, i, nLeft);
+ Expr *pRight = sqlite3ExprForVectorField(pParse, pExpr->pRight, i, nLeft);
pNew = sqlite3PExpr(pParse, pExpr->op, pLeft, pRight);
transferJoinMarkings(pNew, pExpr);
@@ -148967,6 +150374,7 @@ static void exprAnalyze(
else if( pExpr->op==TK_IN
&& pTerm->u.x.iField==0
&& pExpr->pLeft->op==TK_VECTOR
+ && ALWAYS( ExprUseXSelect(pExpr) )
&& pExpr->x.pSelect->pPrior==0
#ifndef SQLITE_OMIT_WINDOWFUNC
&& pExpr->x.pSelect->pWin==0
@@ -149130,14 +150538,15 @@ SQLITE_PRIVATE Bitmask sqlite3WhereExprUsageNN(WhereMaskSet *pMaskSet, Expr *p){
if( p->pRight ){
mask |= sqlite3WhereExprUsageNN(pMaskSet, p->pRight);
assert( p->x.pList==0 );
- }else if( ExprHasProperty(p, EP_xIsSelect) ){
+ }else if( ExprUseXSelect(p) ){
if( ExprHasProperty(p, EP_VarSelect) ) pMaskSet->bVarSelect = 1;
mask |= exprSelectUsage(pMaskSet, p->x.pSelect);
}else if( p->x.pList ){
mask |= sqlite3WhereExprListUsage(pMaskSet, p->x.pList);
}
#ifndef SQLITE_OMIT_WINDOWFUNC
- if( (p->op==TK_FUNCTION || p->op==TK_AGG_FUNCTION) && p->y.pWin ){
+ if( (p->op==TK_FUNCTION || p->op==TK_AGG_FUNCTION) && ExprUseYWin(p) ){
+ assert( p->y.pWin!=0 );
mask |= sqlite3WhereExprListUsage(pMaskSet, p->y.pWin->pPartition);
mask |= sqlite3WhereExprListUsage(pMaskSet, p->y.pWin->pOrderBy);
mask |= sqlite3WhereExprUsage(pMaskSet, p->y.pWin->pFilter);
@@ -149212,6 +150621,7 @@ SQLITE_PRIVATE void sqlite3WhereTabFuncArgs(
if( pColRef==0 ) return;
pColRef->iTable = pItem->iCursor;
pColRef->iColumn = k++;
+ assert( ExprUseYTab(pColRef) );
pColRef->y.pTab = pTab;
pRhs = sqlite3PExpr(pParse, TK_UPLUS,
sqlite3ExprDup(pParse->db, pArgs->a[j].pExpr, 0), 0);
@@ -149513,8 +150923,10 @@ static WhereTerm *whereScanNext(WhereScan *pScan){
iColumn = pScan->aiColumn[pScan->iEquiv-1];
iCur = pScan->aiCur[pScan->iEquiv-1];
assert( pWC!=0 );
+ assert( iCur>=0 );
do{
for(pTerm=pWC->a+k; k<pWC->nTerm; k++, pTerm++){
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 || pTerm->leftCursor<0 );
if( pTerm->leftCursor==iCur
&& pTerm->u.x.leftColumn==iColumn
&& (iColumn!=XN_EXPR
@@ -149556,7 +150968,8 @@ static WhereTerm *whereScanNext(WhereScan *pScan){
}
}
if( (pTerm->eOperator & (WO_EQ|WO_IS))!=0
- && (pX = pTerm->pExpr->pRight)->op==TK_COLUMN
+ && (pX = pTerm->pExpr->pRight, ALWAYS(pX!=0))
+ && pX->op==TK_COLUMN
&& pX->iTable==pScan->aiCur[0]
&& pX->iColumn==pScan->aiColumn[0]
){
@@ -149953,6 +151366,7 @@ static int termCanDriveIndex(
return 0;
}
if( (pTerm->prereqRight & notReady)!=0 ) return 0;
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
if( pTerm->u.x.leftColumn<0 ) return 0;
aff = pSrc->pTab->aCol[pTerm->u.x.leftColumn].affinity;
if( !sqlite3IndexAffinityOk(pTerm->pExpr, aff) ) return 0;
@@ -150025,14 +151439,17 @@ static void constructAutomaticIndex(
sqlite3ExprDup(pParse->db, pExpr, 0));
}
if( termCanDriveIndex(pTerm, pSrc, notReady) ){
- int iCol = pTerm->u.x.leftColumn;
- Bitmask cMask = iCol>=BMS ? MASKBIT(BMS-1) : MASKBIT(iCol);
+ int iCol;
+ Bitmask cMask;
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
+ iCol = pTerm->u.x.leftColumn;
+ cMask = iCol>=BMS ? MASKBIT(BMS-1) : MASKBIT(iCol);
testcase( iCol==BMS );
testcase( iCol==BMS-1 );
if( !sentWarning ){
sqlite3_log(SQLITE_WARNING_AUTOINDEX,
"automatic index on %s(%s)", pTable->zName,
- pTable->aCol[iCol].zName);
+ pTable->aCol[iCol].zCnName);
sentWarning = 1;
}
if( (idxCols & cMask)==0 ){
@@ -150078,8 +151495,11 @@ static void constructAutomaticIndex(
idxCols = 0;
for(pTerm=pWC->a; pTerm<pWCEnd; pTerm++){
if( termCanDriveIndex(pTerm, pSrc, notReady) ){
- int iCol = pTerm->u.x.leftColumn;
- Bitmask cMask = iCol>=BMS ? MASKBIT(BMS-1) : MASKBIT(iCol);
+ int iCol;
+ Bitmask cMask;
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
+ iCol = pTerm->u.x.leftColumn;
+ cMask = iCol>=BMS ? MASKBIT(BMS-1) : MASKBIT(iCol);
testcase( iCol==BMS-1 );
testcase( iCol==BMS );
if( (idxCols & cMask)==0 ){
@@ -150206,6 +151626,7 @@ static sqlite3_index_info *allocateIndexInfo(
testcase( pTerm->eOperator & WO_ALL );
if( (pTerm->eOperator & ~(WO_EQUIV))==0 ) continue;
if( pTerm->wtFlags & TERM_VNULL ) continue;
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
assert( pTerm->u.x.leftColumn>=(-1) );
nTerm++;
}
@@ -150266,6 +151687,7 @@ static sqlite3_index_info *allocateIndexInfo(
){
continue;
}
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
assert( pTerm->u.x.leftColumn>=(-1) );
pIdxCons[j].iColumn = pTerm->u.x.leftColumn;
pIdxCons[j].iTermOffset = i;
@@ -151029,6 +152451,7 @@ SQLITE_PRIVATE void sqlite3WhereTermPrint(WhereTerm *pTerm, int iTerm){
if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) zType[2] = 'L';
if( pTerm->wtFlags & TERM_CODED ) zType[3] = 'C';
if( pTerm->eOperator & WO_SINGLE ){
+ assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 );
sqlite3_snprintf(sizeof(zLeft),zLeft,"left={%d:%d}",
pTerm->leftCursor, pTerm->u.x.leftColumn);
}else if( (pTerm->eOperator & WO_OR)!=0 && pTerm->u.pOrInfo!=0 ){
@@ -151046,7 +152469,7 @@ SQLITE_PRIVATE void sqlite3WhereTermPrint(WhereTerm *pTerm, int iTerm){
sqlite3DebugPrintf(" prob=%-3d prereq=%llx,%llx",
pTerm->truthProb, (u64)pTerm->prereqAll, (u64)pTerm->prereqRight);
}
- if( pTerm->u.x.iField ){
+ if( (pTerm->eOperator & (WO_OR|WO_AND))==0 && pTerm->u.x.iField ){
sqlite3DebugPrintf(" iField=%d", pTerm->u.x.iField);
}
if( pTerm->iParent>=0 ){
@@ -151210,7 +152633,8 @@ static void whereInfoFree(sqlite3 *db, WhereInfo *pWInfo){
assert( pWInfo!=0 );
for(i=0; i<pWInfo->nLevel; i++){
WhereLevel *pLevel = &pWInfo->a[i];
- if( pLevel->pWLoop && (pLevel->pWLoop->wsFlags & WHERE_IN_ABLE) ){
+ if( pLevel->pWLoop && (pLevel->pWLoop->wsFlags & WHERE_IN_ABLE)!=0 ){
+ assert( (pLevel->pWLoop->wsFlags & WHERE_MULTI_OR)==0 );
sqlite3DbFree(db, pLevel->u.in.aInLoop);
}
}
@@ -151238,7 +152662,8 @@ static void whereUndoExprMods(WhereInfo *pWInfo){
/*
** Return TRUE if all of the following are true:
**
-** (1) X has the same or lower cost that Y
+** (1) X has the same or lower cost, or returns the same or fewer rows,
+** than Y.
** (2) X uses fewer WHERE clause terms than Y
** (3) Every WHERE clause term used by X is also used by Y
** (4) X skips at least as many columns as Y
@@ -151261,11 +152686,8 @@ static int whereLoopCheaperProperSubset(
if( pX->nLTerm-pX->nSkip >= pY->nLTerm-pY->nSkip ){
return 0; /* X is not a subset of Y */
}
+ if( pX->rRun>pY->rRun && pX->nOut>pY->nOut ) return 0;
if( pY->nSkip > pX->nSkip ) return 0;
- if( pX->rRun >= pY->rRun ){
- if( pX->rRun > pY->rRun ) return 0; /* X costs more than Y */
- if( pX->nOut > pY->nOut ) return 0; /* X costs more than Y */
- }
for(i=pX->nLTerm-1; i>=0; i--){
if( pX->aLTerm[i]==0 ) continue;
for(j=pY->nLTerm-1; j>=0; j--){
@@ -151281,8 +152703,8 @@ static int whereLoopCheaperProperSubset(
}
/*
-** Try to adjust the cost of WhereLoop pTemplate upwards or downwards so
-** that:
+** Try to adjust the cost and number of output rows of WhereLoop pTemplate
+** upwards or downwards so that:
**
** (1) pTemplate costs less than any other WhereLoops that are a proper
** subset of pTemplate
@@ -151303,16 +152725,20 @@ static void whereLoopAdjustCost(const WhereLoop *p, WhereLoop *pTemplate){
/* Adjust pTemplate cost downward so that it is cheaper than its
** subset p. */
WHERETRACE(0x80,("subset cost adjustment %d,%d to %d,%d\n",
- pTemplate->rRun, pTemplate->nOut, p->rRun, p->nOut-1));
- pTemplate->rRun = p->rRun;
- pTemplate->nOut = p->nOut - 1;
+ pTemplate->rRun, pTemplate->nOut,
+ MIN(p->rRun, pTemplate->rRun),
+ MIN(p->nOut - 1, pTemplate->nOut)));
+ pTemplate->rRun = MIN(p->rRun, pTemplate->rRun);
+ pTemplate->nOut = MIN(p->nOut - 1, pTemplate->nOut);
}else if( whereLoopCheaperProperSubset(pTemplate, p) ){
/* Adjust pTemplate cost upward so that it is costlier than p since
** pTemplate is a proper subset of p */
WHERETRACE(0x80,("subset cost adjustment %d,%d to %d,%d\n",
- pTemplate->rRun, pTemplate->nOut, p->rRun, p->nOut+1));
- pTemplate->rRun = p->rRun;
- pTemplate->nOut = p->nOut + 1;
+ pTemplate->rRun, pTemplate->nOut,
+ MAX(p->rRun, pTemplate->rRun),
+ MAX(p->nOut + 1, pTemplate->nOut)));
+ pTemplate->rRun = MAX(p->rRun, pTemplate->rRun);
+ pTemplate->nOut = MAX(p->nOut + 1, pTemplate->nOut);
}
}
}
@@ -151643,9 +153069,12 @@ static int whereRangeVectorLen(
char aff; /* Comparison affinity */
char idxaff = 0; /* Indexed columns affinity */
CollSeq *pColl; /* Comparison collation sequence */
- Expr *pLhs = pTerm->pExpr->pLeft->x.pList->a[i].pExpr;
- Expr *pRhs = pTerm->pExpr->pRight;
- if( pRhs->flags & EP_xIsSelect ){
+ Expr *pLhs, *pRhs;
+
+ assert( ExprUseXList(pTerm->pExpr->pLeft) );
+ pLhs = pTerm->pExpr->pLeft->x.pList->a[i].pExpr;
+ pRhs = pTerm->pExpr->pRight;
+ if( ExprUseXSelect(pRhs) ){
pRhs = pRhs->x.pSelect->pEList->a[i].pExpr;
}else{
pRhs = pRhs->x.pList->a[i].pExpr;
@@ -151806,7 +153235,7 @@ static int whereLoopAddBtreeIndex(
if( eOp & WO_IN ){
Expr *pExpr = pTerm->pExpr;
- if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ if( ExprUseXSelect(pExpr) ){
/* "x IN (SELECT ...)": TUNING: the SELECT returns 25 rows */
int i;
nIn = 46; assert( 46==sqlite3LogEst(25) );
@@ -151947,7 +153376,7 @@ static int whereLoopAddBtreeIndex(
if( nInMul==0
&& pProbe->nSample
&& ALWAYS(pNew->u.btree.nEq<=pProbe->nSampleCol)
- && ((eOp & WO_IN)==0 || !ExprHasProperty(pTerm->pExpr, EP_xIsSelect))
+ && ((eOp & WO_IN)==0 || ExprUseXList(pTerm->pExpr))
&& OptimizationEnabled(db, SQLITE_Stat4)
){
Expr *pExpr = pTerm->pExpr;
@@ -152211,7 +153640,6 @@ static int whereLoopAddBtree(
int iSortIdx = 1; /* Index number */
int b; /* A boolean value */
LogEst rSize; /* number of rows in the table */
- LogEst rLogSize; /* Logarithm of the number of rows in the table */
WhereClause *pWC; /* The parsed WHERE clause */
Table *pTab; /* Table being queried */
@@ -152224,6 +153652,7 @@ static int whereLoopAddBtree(
assert( !IsVirtual(pSrc->pTab) );
if( pSrc->fg.isIndexedBy ){
+ assert( pSrc->fg.isCte==0 );
/* An INDEXED BY clause specifies a particular index to use */
pProbe = pSrc->u2.pIBIndex;
}else if( !HasRowid(pTab) ){
@@ -152254,7 +153683,6 @@ static int whereLoopAddBtree(
pProbe = &sPk;
}
rSize = pTab->nRowLogEst;
- rLogSize = estLog(rSize);
#ifndef SQLITE_OMIT_AUTOMATIC_INDEX
/* Automatic indexes */
@@ -152268,8 +153696,10 @@ static int whereLoopAddBtree(
&& !pSrc->fg.isRecursive /* Not a recursive common table expression. */
){
/* Generate auto-index WhereLoops */
+ LogEst rLogSize; /* Logarithm of the number of rows in the table */
WhereTerm *pTerm;
WhereTerm *pWCEnd = pWC->a + pWC->nTerm;
+ rLogSize = estLog(rSize);
for(pTerm=pWC->a; rc==SQLITE_OK && pTerm<pWCEnd; pTerm++){
if( pTerm->prereqRight & pNew->maskSelf ) continue;
if( termCanDriveIndex(pTerm, pSrc, 0) ){
@@ -152287,7 +153717,7 @@ static int whereLoopAddBtree(
** those objects, since there is no opportunity to add schema
** indexes on subqueries and views. */
pNew->rSetup = rLogSize + rSize;
- if( pTab->pSelect==0 && (pTab->tabFlags & TF_Ephemeral)==0 ){
+ if( !IsView(pTab) && (pTab->tabFlags & TF_Ephemeral)==0 ){
pNew->rSetup += 28;
}else{
pNew->rSetup -= 10;
@@ -153309,7 +154739,7 @@ static i8 wherePathSatisfiesOrderBy(
if( obSat==obDone ) return (i8)nOrderBy;
if( !isOrderDistinct ){
for(i=nOrderBy-1; i>0; i--){
- Bitmask m = MASKBIT(i) - 1;
+ Bitmask m = ALWAYS(i<BMS) ? MASKBIT(i) - 1 : 0;
if( (obSat&m)==m ) return i;
}
return 0;
@@ -153819,6 +155249,7 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){
int j;
Table *pTab;
Index *pIdx;
+ WhereScan scan;
pWInfo = pBuilder->pWInfo;
if( pWInfo->wctrlFlags & WHERE_OR_SUBCLAUSE ) return 0;
@@ -153832,7 +155263,8 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){
pLoop = pBuilder->pNew;
pLoop->wsFlags = 0;
pLoop->nSkip = 0;
- pTerm = sqlite3WhereFindTerm(pWC, iCur, -1, 0, WO_EQ|WO_IS, 0);
+ pTerm = whereScanInit(&scan, pWC, iCur, -1, WO_EQ|WO_IS, 0);
+ while( pTerm && pTerm->prereqRight ) pTerm = whereScanNext(&scan);
if( pTerm ){
testcase( pTerm->eOperator & WO_IS );
pLoop->wsFlags = WHERE_COLUMN_EQ|WHERE_IPK|WHERE_ONEROW;
@@ -153851,7 +155283,8 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){
) continue;
opMask = pIdx->uniqNotNull ? (WO_EQ|WO_IS) : WO_EQ;
for(j=0; j<pIdx->nKeyCol; j++){
- pTerm = sqlite3WhereFindTerm(pWC, iCur, j, 0, opMask, pIdx);
+ pTerm = whereScanInit(&scan, pWC, iCur, j, opMask, pIdx);
+ while( pTerm && pTerm->prereqRight ) pTerm = whereScanNext(&scan);
if( pTerm==0 ) break;
testcase( pTerm->eOperator & WO_IS );
pLoop->aLTerm[j] = pTerm;
@@ -153880,9 +155313,15 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){
if( pWInfo->wctrlFlags & WHERE_WANT_DISTINCT ){
pWInfo->eDistinct = WHERE_DISTINCT_UNIQUE;
}
+ if( scan.iEquiv>1 ) pLoop->wsFlags |= WHERE_TRANSCONS;
#ifdef SQLITE_DEBUG
pLoop->cId = '0';
#endif
+#ifdef WHERETRACE_ENABLED
+ if( sqlite3WhereTrace ){
+ sqlite3DebugPrintf("whereShortCut() used to compute solution\n");
+ }
+#endif
return 1;
}
return 0;
@@ -154438,7 +155877,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
pTab = pTabItem->pTab;
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
pLoop = pLevel->pWLoop;
- if( (pTab->tabFlags & TF_Ephemeral)!=0 || pTab->pSelect ){
+ if( (pTab->tabFlags & TF_Ephemeral)!=0 || IsView(pTab) ){
/* Do nothing */
}else
#ifndef SQLITE_OMIT_VIRTUALTABLE
@@ -154563,6 +156002,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
for(ii=0; ii<nTabList; ii++){
int addrExplain;
int wsFlags;
+ if( pParse->nErr ) goto whereBeginError;
pLevel = &pWInfo->a[ii];
wsFlags = pLevel->pWLoop->wsFlags;
#ifndef SQLITE_OMIT_AUTOMATIC_INDEX
@@ -154684,7 +156124,7 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
}else{
sqlite3VdbeResolveLabel(v, pLevel->addrCont);
}
- if( pLoop->wsFlags & WHERE_IN_ABLE && pLevel->u.in.nIn>0 ){
+ if( (pLoop->wsFlags & WHERE_IN_ABLE)!=0 && pLevel->u.in.nIn>0 ){
struct InLoop *pIn;
int j;
sqlite3VdbeResolveLabel(v, pLevel->addrNxt);
@@ -154753,8 +156193,14 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
sqlite3VdbeAddOp1(v, OP_NullRow, pLevel->iTabCur);
}
if( (ws & WHERE_INDEXED)
- || ((ws & WHERE_MULTI_OR) && pLevel->u.pCovidx)
+ || ((ws & WHERE_MULTI_OR) && pLevel->u.pCoveringIdx)
){
+ if( ws & WHERE_MULTI_OR ){
+ Index *pIx = pLevel->u.pCoveringIdx;
+ int iDb = sqlite3SchemaToIndex(db, pIx->pSchema);
+ sqlite3VdbeAddOp3(v, OP_ReopenIdx, pLevel->iIdxCur, pIx->tnum, iDb);
+ sqlite3VdbeSetP4KeyInfo(pParse, pIx);
+ }
sqlite3VdbeAddOp1(v, OP_NullRow, pLevel->iIdxCur);
}
if( pLevel->op==OP_Return ){
@@ -154801,7 +156247,7 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
** created for the ONEPASS optimization.
*/
if( (pTab->tabFlags & TF_Ephemeral)==0
- && pTab->pSelect==0
+ && !IsView(pTab)
&& (pWInfo->wctrlFlags & WHERE_OR_SUBCLAUSE)==0
){
int ws = pLoop->wsFlags;
@@ -154831,7 +156277,7 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
if( pLoop->wsFlags & (WHERE_INDEXED|WHERE_IDX_ONLY) ){
pIdx = pLoop->u.btree.pIndex;
}else if( pLoop->wsFlags & WHERE_MULTI_OR ){
- pIdx = pLevel->u.pCovidx;
+ pIdx = pLevel->u.pCoveringIdx;
}
if( pIdx
&& !db->mallocFailed
@@ -155492,7 +156938,7 @@ static void noopValueFunc(sqlite3_context *p){ UNUSED_PARAMETER(p); /*no-op*/ }
/* Window functions that use all window interfaces: xStep, xFinal,
** xValue, and xInverse */
#define WINDOWFUNCALL(name,nArg,extra) { \
- nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
+ nArg, (SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
name ## StepFunc, name ## FinalizeFunc, name ## ValueFunc, \
name ## InvFunc, name ## Name, {0} \
}
@@ -155500,7 +156946,7 @@ static void noopValueFunc(sqlite3_context *p){ UNUSED_PARAMETER(p); /*no-op*/ }
/* Window functions that are implemented using bytecode and thus have
** no-op routines for their methods */
#define WINDOWFUNCNOOP(name,nArg,extra) { \
- nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
+ nArg, (SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
noopStepFunc, noopValueFunc, noopValueFunc, \
noopStepFunc, name ## Name, {0} \
}
@@ -155509,7 +156955,7 @@ static void noopValueFunc(sqlite3_context *p){ UNUSED_PARAMETER(p); /*no-op*/ }
** same routine for xFinalize and xValue and which never call
** xInverse. */
#define WINDOWFUNCX(name,nArg,extra) { \
- nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
+ nArg, (SQLITE_FUNC_BUILTIN|SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0, \
name ## StepFunc, name ## ValueFunc, name ## ValueFunc, \
noopStepFunc, name ## Name, {0} \
}
@@ -155819,9 +157265,7 @@ static ExprList *exprListAppendList(
if( bIntToNull ){
int iDummy;
Expr *pSub;
- for(pSub=pDup; ExprHasProperty(pSub, EP_Skip); pSub=pSub->pLeft){
- assert( pSub );
- }
+ pSub = sqlite3ExprSkipCollateAndLikely(pDup);
if( sqlite3ExprIsInteger(pSub, &iDummy) ){
pSub->op = TK_NULL;
pSub->flags &= ~(EP_IntValue|EP_IsTrue|EP_IsFalse);
@@ -155854,7 +157298,8 @@ static int sqlite3WindowExtraAggFuncDepth(Walker *pWalker, Expr *pExpr){
static int disallowAggregatesInOrderByCb(Walker *pWalker, Expr *pExpr){
if( pExpr->op==TK_AGG_FUNCTION && pExpr->pAggInfo==0 ){
- sqlite3ErrorMsg(pWalker->pParse,
+ assert( !ExprHasProperty(pExpr, EP_IntValue) );
+ sqlite3ErrorMsg(pWalker->pParse,
"misuse of aggregate: %s()", pExpr->u.zToken);
}
return WRC_Continue;
@@ -155942,7 +157387,9 @@ SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
** window function - one for the accumulator, another for interim
** results. */
for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
- ExprList *pArgs = pWin->pOwner->x.pList;
+ ExprList *pArgs;
+ assert( ExprUseXList(pWin->pOwner) );
+ pArgs = pWin->pOwner->x.pList;
if( pWin->pFunc->funcFlags & SQLITE_FUNC_SUBTYPE ){
selectWindowRewriteEList(pParse, pMWin, pSrc, pArgs, pTab, &pSublist);
pWin->iArgCol = (pSublist ? pSublist->nExpr : 0);
@@ -155979,11 +157426,14 @@ SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
("New window-function subquery in FROM clause of (%u/%p)\n",
p->selId, p));
p->pSrc = sqlite3SrcListAppend(pParse, 0, 0, 0);
+ assert( pSub!=0 || p->pSrc==0 ); /* Due to db->mallocFailed test inside
+ ** of sqlite3DbMallocRawNN() called from
+ ** sqlite3SrcListAppend() */
if( p->pSrc ){
Table *pTab2;
p->pSrc->a[0].pSelect = pSub;
sqlite3SrcListAssignCursors(pParse, p->pSrc);
- pSub->selFlags |= SF_Expanded;
+ pSub->selFlags |= SF_Expanded|SF_OrderByReqd;
pTab2 = sqlite3ResultSetOfSelect(pParse, pSub, SQLITE_AFF_NONE);
pSub->selFlags |= (selFlags & SF_Aggregate);
if( pTab2==0 ){
@@ -156006,7 +157456,11 @@ SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
sqlite3SelectDelete(db, pSub);
}
if( db->mallocFailed ) rc = SQLITE_NOMEM;
- sqlite3DbFree(db, pTab);
+
+ /* Defer deleting the temporary table pTab because if an error occurred,
+ ** there could still be references to that table embedded in the
+ ** result-set or ORDER BY clause of the SELECT statement p. */
+ sqlite3ParserAddCleanup(pParse, sqlite3DbFree, pTab);
}
if( rc ){
@@ -156255,7 +157709,12 @@ SQLITE_PRIVATE void sqlite3WindowLink(Select *pSel, Window *pWin){
** different, or 2 if it cannot be determined if the objects are identical
** or not. Identical window objects can be processed in a single scan.
*/
-SQLITE_PRIVATE int sqlite3WindowCompare(Parse *pParse, Window *p1, Window *p2, int bFilter){
+SQLITE_PRIVATE int sqlite3WindowCompare(
+ const Parse *pParse,
+ const Window *p1,
+ const Window *p2,
+ int bFilter
+){
int res;
if( NEVER(p1==0) || NEVER(p2==0) ) return 1;
if( p1->eFrmType!=p2->eFrmType ) return 1;
@@ -156327,8 +157786,11 @@ SQLITE_PRIVATE void sqlite3WindowCodeInit(Parse *pParse, Select *pSelect){
** regApp+1: integer value used to ensure keys are unique
** regApp+2: output of MakeRecord
*/
- ExprList *pList = pWin->pOwner->x.pList;
- KeyInfo *pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pList, 0, 0);
+ ExprList *pList;
+ KeyInfo *pKeyInfo;
+ assert( ExprUseXList(pWin->pOwner) );
+ pList = pWin->pOwner->x.pList;
+ pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pList, 0, 0);
pWin->csrApp = pParse->nTab++;
pWin->regApp = pParse->nMem+1;
pParse->nMem += 3;
@@ -156416,7 +157878,9 @@ static void windowCheckValue(Parse *pParse, int reg, int eCond){
** with the object passed as the only argument to this function.
*/
static int windowArgCount(Window *pWin){
- ExprList *pList = pWin->pOwner->x.pList;
+ const ExprList *pList;
+ assert( ExprUseXList(pWin->pOwner) );
+ pList = pWin->pOwner->x.pList;
return (pList ? pList->nExpr : 0);
}
@@ -156601,6 +158065,7 @@ static void windowAggStep(
int addrIf = 0;
if( pWin->pFilter ){
int regTmp;
+ assert( ExprUseXList(pWin->pOwner) );
assert( pWin->bExprArgs || !nArg ||nArg==pWin->pOwner->x.pList->nExpr );
assert( pWin->bExprArgs || nArg ||pWin->pOwner->x.pList==0 );
regTmp = sqlite3GetTempReg(pParse);
@@ -156614,6 +158079,7 @@ static void windowAggStep(
int iOp = sqlite3VdbeCurrentAddr(v);
int iEnd;
+ assert( ExprUseXList(pWin->pOwner) );
nArg = pWin->pOwner->x.pList->nExpr;
regArg = sqlite3GetTempRange(pParse, nArg);
sqlite3ExprCodeExprList(pParse, pWin->pOwner->x.pList, regArg, 0, 0);
@@ -156628,6 +158094,7 @@ static void windowAggStep(
if( pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL ){
CollSeq *pColl;
assert( nArg>0 );
+ assert( ExprUseXList(pWin->pOwner) );
pColl = sqlite3ExprNNCollSeq(pParse, pWin->pOwner->x.pList->a[0].pExpr);
sqlite3VdbeAddOp4(v, OP_CollSeq, 0,0,0, (const char*)pColl, P4_COLLSEQ);
}
@@ -156813,6 +158280,7 @@ static void windowReturnOneRow(WindowCodeArg *p){
for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
FuncDef *pFunc = pWin->pFunc;
+ assert( ExprUseXList(pWin->pOwner) );
if( pFunc->zName==nth_valueName
|| pFunc->zName==first_valueName
){
@@ -158162,9 +159630,9 @@ static void updateDeleteLimitError(
ExprClearVVAProperties(p);
p->iAgg = -1;
p->pLeft = p->pRight = 0;
- p->x.pList = 0;
p->pAggInfo = 0;
- p->y.pTab = 0;
+ memset(&p->x, 0, sizeof(p->x));
+ memset(&p->y, 0, sizeof(p->y));
p->op2 = 0;
p->iTable = 0;
p->iColumn = 0;
@@ -158250,8 +159718,8 @@ static void updateDeleteLimitError(
#define TK_LP 22
#define TK_RP 23
#define TK_AS 24
-#define TK_WITHOUT 25
-#define TK_COMMA 26
+#define TK_COMMA 25
+#define TK_WITHOUT 26
#define TK_ABORT 27
#define TK_ACTION 28
#define TK_AFTER 29
@@ -158468,29 +159936,30 @@ static void updateDeleteLimitError(
#endif
/************* Begin control #defines *****************************************/
#define YYCODETYPE unsigned short int
-#define YYNOCODE 317
+#define YYNOCODE 318
#define YYACTIONTYPE unsigned short int
#define YYWILDCARD 101
#define sqlite3ParserTOKENTYPE Token
typedef union {
int yyinit;
sqlite3ParserTOKENTYPE yy0;
- Window* yy49;
- ExprList* yy70;
- Select* yy81;
- With* yy103;
- struct FrameBound yy117;
- struct {int value; int mask;} yy139;
- SrcList* yy153;
- TriggerStep* yy157;
- Upsert* yy190;
- struct TrigEvent yy262;
- Cte* yy329;
- int yy376;
- Expr* yy404;
- IdList* yy436;
- const char* yy504;
- u8 yy552;
+ With* yy43;
+ u32 yy51;
+ int yy64;
+ struct FrameBound yy81;
+ struct {int value; int mask;} yy83;
+ TriggerStep* yy95;
+ Upsert* yy138;
+ IdList* yy240;
+ Cte* yy255;
+ Select* yy303;
+ Window* yy375;
+ u8 yy534;
+ ExprList* yy562;
+ struct TrigEvent yy570;
+ const char* yy600;
+ SrcList* yy607;
+ Expr* yy626;
} YYMINORTYPE;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
@@ -158506,18 +159975,18 @@ typedef union {
#define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
#define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
#define YYFALLBACK 1
-#define YYNSTATE 570
-#define YYNRULE 398
-#define YYNRULE_WITH_ACTION 337
+#define YYNSTATE 572
+#define YYNRULE 401
+#define YYNRULE_WITH_ACTION 339
#define YYNTOKEN 184
-#define YY_MAX_SHIFT 569
-#define YY_MIN_SHIFTREDUCE 825
-#define YY_MAX_SHIFTREDUCE 1222
-#define YY_ERROR_ACTION 1223
-#define YY_ACCEPT_ACTION 1224
-#define YY_NO_ACTION 1225
-#define YY_MIN_REDUCE 1226
-#define YY_MAX_REDUCE 1623
+#define YY_MAX_SHIFT 571
+#define YY_MIN_SHIFTREDUCE 829
+#define YY_MAX_SHIFTREDUCE 1229
+#define YY_ERROR_ACTION 1230
+#define YY_ACCEPT_ACTION 1231
+#define YY_NO_ACTION 1232
+#define YY_MIN_REDUCE 1233
+#define YY_MAX_REDUCE 1633
/************* End control #defines *******************************************/
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
@@ -158584,444 +160053,447 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
-#define YY_ACTTAB_COUNT (2023)
+#define YY_ACTTAB_COUNT (2037)
static const YYACTIONTYPE yy_action[] = {
- /* 0 */ 563, 1295, 563, 1274, 168, 1257, 115, 112, 218, 373,
- /* 10 */ 563, 1295, 374, 563, 488, 563, 115, 112, 218, 406,
- /* 20 */ 1300, 1300, 41, 41, 41, 41, 514, 1504, 520, 1298,
- /* 30 */ 1298, 959, 41, 41, 1260, 71, 71, 51, 51, 960,
- /* 40 */ 557, 557, 557, 122, 123, 113, 1200, 1200, 1035, 1038,
- /* 50 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 414, 406,
- /* 60 */ 273, 273, 273, 273, 115, 112, 218, 115, 112, 218,
- /* 70 */ 197, 268, 545, 560, 515, 560, 211, 563, 385, 248,
- /* 80 */ 215, 521, 399, 122, 123, 113, 1200, 1200, 1035, 1038,
- /* 90 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 540, 13,
- /* 100 */ 13, 1259, 119, 119, 119, 119, 118, 118, 117, 117,
- /* 110 */ 117, 116, 441, 1176, 419, 197, 446, 320, 512, 1539,
- /* 120 */ 1545, 372, 1547, 6, 371, 1176, 1148, 394, 1148, 406,
- /* 130 */ 1545, 534, 115, 112, 218, 1415, 99, 30, 121, 121,
+ /* 0 */ 564, 115, 112, 220, 169, 199, 115, 112, 220, 564,
+ /* 10 */ 375, 1266, 564, 376, 564, 270, 1309, 1309, 406, 407,
+ /* 20 */ 1084, 199, 1513, 41, 41, 515, 489, 521, 558, 558,
+ /* 30 */ 558, 965, 41, 41, 395, 41, 41, 51, 51, 966,
+ /* 40 */ 296, 1269, 296, 122, 123, 113, 1207, 1207, 1041, 1044,
+ /* 50 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 564, 407,
+ /* 60 */ 275, 275, 275, 275, 1268, 115, 112, 220, 115, 112,
+ /* 70 */ 220, 1512, 846, 561, 516, 561, 115, 112, 220, 250,
+ /* 80 */ 217, 71, 71, 122, 123, 113, 1207, 1207, 1041, 1044,
+ /* 90 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 440, 440,
+ /* 100 */ 440, 1149, 119, 119, 119, 119, 118, 118, 117, 117,
+ /* 110 */ 117, 116, 442, 1183, 1149, 116, 442, 1149, 546, 513,
+ /* 120 */ 1548, 1554, 374, 442, 6, 1183, 1154, 522, 1154, 407,
+ /* 130 */ 1556, 461, 373, 1554, 535, 99, 463, 332, 121, 121,
/* 140 */ 121, 121, 119, 119, 119, 119, 118, 118, 117, 117,
- /* 150 */ 117, 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038,
- /* 160 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 31, 1176,
- /* 170 */ 1177, 1178, 241, 357, 1558, 501, 498, 497, 317, 124,
- /* 180 */ 319, 1176, 1177, 1178, 1176, 496, 119, 119, 119, 119,
- /* 190 */ 118, 118, 117, 117, 117, 116, 441, 139, 96, 406,
- /* 200 */ 121, 121, 121, 121, 114, 117, 117, 117, 116, 441,
- /* 210 */ 541, 1532, 119, 119, 119, 119, 118, 118, 117, 117,
- /* 220 */ 117, 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038,
- /* 230 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 406, 441,
- /* 240 */ 1176, 1177, 1178, 81, 439, 439, 439, 80, 119, 119,
- /* 250 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 488,
- /* 260 */ 1176, 318, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
- /* 270 */ 1028, 120, 120, 121, 121, 121, 121, 493, 1025, 1025,
- /* 280 */ 1036, 1039, 119, 119, 119, 119, 118, 118, 117, 117,
- /* 290 */ 117, 116, 441, 1584, 995, 1224, 1, 1, 569, 2,
- /* 300 */ 1228, 1267, 137, 1503, 245, 305, 473, 140, 406, 860,
- /* 310 */ 561, 1176, 914, 914, 1308, 359, 1176, 1177, 1178, 462,
- /* 320 */ 330, 119, 119, 119, 119, 118, 118, 117, 117, 117,
- /* 330 */ 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
- /* 340 */ 1028, 120, 120, 121, 121, 121, 121, 328, 273, 273,
- /* 350 */ 1015, 83, 1029, 425, 1564, 569, 2, 1228, 304, 554,
- /* 360 */ 925, 560, 305, 944, 140, 860, 1006, 1176, 1177, 1178,
- /* 370 */ 1005, 1308, 411, 213, 511, 229, 119, 119, 119, 119,
- /* 380 */ 118, 118, 117, 117, 117, 116, 441, 519, 347, 116,
- /* 390 */ 441, 119, 119, 119, 119, 118, 118, 117, 117, 117,
- /* 400 */ 116, 441, 1005, 1005, 1007, 273, 273, 445, 563, 16,
- /* 410 */ 16, 1590, 563, 1540, 563, 406, 1176, 6, 560, 344,
- /* 420 */ 182, 118, 118, 117, 117, 117, 116, 441, 416, 142,
- /* 430 */ 71, 71, 229, 563, 71, 71, 55, 55, 203, 122,
- /* 440 */ 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120,
- /* 450 */ 121, 121, 121, 121, 217, 13, 13, 1176, 406, 568,
- /* 460 */ 1400, 1228, 502, 137, 445, 168, 305, 545, 140, 1180,
- /* 470 */ 424, 545, 1176, 1177, 1178, 1308, 544, 438, 437, 944,
- /* 480 */ 513, 452, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
- /* 490 */ 1028, 120, 120, 121, 121, 121, 121, 315, 119, 119,
- /* 500 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 273,
- /* 510 */ 273, 1143, 416, 1176, 1177, 1178, 543, 563, 1143, 304,
- /* 520 */ 554, 1561, 560, 1207, 1143, 1207, 1180, 1143, 406, 530,
- /* 530 */ 421, 1143, 864, 183, 1143, 143, 229, 562, 32, 71,
- /* 540 */ 71, 119, 119, 119, 119, 118, 118, 117, 117, 117,
- /* 550 */ 116, 441, 122, 123, 113, 1200, 1200, 1035, 1038, 1028,
- /* 560 */ 1028, 120, 120, 121, 121, 121, 121, 406, 445, 241,
- /* 570 */ 1176, 857, 501, 498, 497, 1176, 526, 189, 245, 538,
- /* 580 */ 1539, 282, 496, 370, 6, 563, 529, 477, 5, 279,
- /* 590 */ 1015, 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028,
- /* 600 */ 120, 120, 121, 121, 121, 121, 1006, 13, 13, 1414,
- /* 610 */ 1005, 119, 119, 119, 119, 118, 118, 117, 117, 117,
- /* 620 */ 116, 441, 426, 273, 273, 1176, 1176, 1177, 1178, 1619,
- /* 630 */ 392, 1176, 1177, 1178, 1176, 342, 560, 406, 525, 361,
- /* 640 */ 430, 1161, 1005, 1005, 1007, 348, 411, 357, 1558, 488,
+ /* 150 */ 117, 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044,
+ /* 160 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 1257, 1183,
+ /* 170 */ 1184, 1185, 243, 1064, 564, 502, 499, 498, 567, 124,
+ /* 180 */ 567, 1183, 1184, 1185, 474, 497, 119, 119, 119, 119,
+ /* 190 */ 118, 118, 117, 117, 117, 116, 442, 70, 70, 407,
+ /* 200 */ 121, 121, 121, 121, 114, 117, 117, 117, 116, 442,
+ /* 210 */ 1409, 1469, 119, 119, 119, 119, 118, 118, 117, 117,
+ /* 220 */ 117, 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044,
+ /* 230 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 407, 1031,
+ /* 240 */ 1031, 1042, 1045, 81, 382, 541, 378, 80, 119, 119,
+ /* 250 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 381,
+ /* 260 */ 463, 332, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
+ /* 270 */ 1034, 120, 120, 121, 121, 121, 121, 262, 215, 512,
+ /* 280 */ 1424, 422, 119, 119, 119, 119, 118, 118, 117, 117,
+ /* 290 */ 117, 116, 442, 1231, 1, 1, 571, 2, 1235, 1573,
+ /* 300 */ 571, 2, 1235, 307, 1149, 141, 1600, 307, 407, 141,
+ /* 310 */ 1183, 361, 1317, 1035, 866, 531, 1317, 1149, 359, 1567,
+ /* 320 */ 1149, 119, 119, 119, 119, 118, 118, 117, 117, 117,
+ /* 330 */ 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
+ /* 340 */ 1034, 120, 120, 121, 121, 121, 121, 275, 275, 1001,
+ /* 350 */ 426, 275, 275, 1128, 1627, 1021, 1627, 137, 542, 1541,
+ /* 360 */ 561, 272, 950, 950, 561, 1423, 1183, 1184, 1185, 1594,
+ /* 370 */ 866, 1012, 530, 315, 231, 1011, 468, 1276, 231, 119,
+ /* 380 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
+ /* 390 */ 1570, 119, 119, 119, 119, 118, 118, 117, 117, 117,
+ /* 400 */ 116, 442, 330, 359, 1567, 564, 446, 1011, 1011, 1013,
+ /* 410 */ 446, 207, 564, 306, 555, 407, 363, 1021, 363, 346,
+ /* 420 */ 184, 118, 118, 117, 117, 117, 116, 442, 71, 71,
+ /* 430 */ 439, 438, 1126, 1012, 472, 71, 71, 1011, 205, 122,
+ /* 440 */ 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120,
+ /* 450 */ 121, 121, 121, 121, 219, 219, 472, 1183, 407, 570,
+ /* 460 */ 1183, 1235, 503, 1477, 149, 546, 307, 489, 141, 1011,
+ /* 470 */ 1011, 1013, 546, 140, 545, 1317, 1214, 191, 1214, 950,
+ /* 480 */ 950, 514, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
+ /* 490 */ 1034, 120, 120, 121, 121, 121, 121, 563, 119, 119,
+ /* 500 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 283,
+ /* 510 */ 275, 275, 415, 1183, 1184, 1185, 1183, 1184, 1185, 372,
+ /* 520 */ 1183, 243, 344, 561, 502, 499, 498, 1539, 407, 1540,
+ /* 530 */ 1183, 288, 870, 143, 497, 1549, 185, 231, 9, 6,
+ /* 540 */ 253, 119, 119, 119, 119, 118, 118, 117, 117, 117,
+ /* 550 */ 116, 442, 122, 123, 113, 1207, 1207, 1041, 1044, 1034,
+ /* 560 */ 1034, 120, 120, 121, 121, 121, 121, 407, 137, 446,
+ /* 570 */ 447, 863, 169, 1183, 397, 1204, 1183, 1184, 1185, 931,
+ /* 580 */ 526, 1001, 98, 339, 564, 342, 1183, 1184, 1185, 306,
+ /* 590 */ 555, 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034,
+ /* 600 */ 120, 120, 121, 121, 121, 121, 452, 71, 71, 275,
+ /* 610 */ 275, 119, 119, 119, 119, 118, 118, 117, 117, 117,
+ /* 620 */ 116, 442, 561, 417, 306, 555, 1183, 1307, 1307, 1183,
+ /* 630 */ 1184, 1185, 1204, 1149, 330, 458, 318, 407, 363, 470,
+ /* 640 */ 431, 1167, 32, 541, 527, 350, 1149, 1629, 393, 1149,
/* 650 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
- /* 660 */ 441, 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028,
- /* 670 */ 120, 120, 121, 121, 121, 121, 406, 830, 831, 832,
- /* 680 */ 1016, 1176, 1177, 1178, 396, 285, 148, 1312, 304, 554,
- /* 690 */ 1176, 1177, 1178, 1467, 216, 3, 337, 137, 340, 560,
- /* 700 */ 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120,
- /* 710 */ 120, 121, 121, 121, 121, 563, 504, 946, 273, 273,
+ /* 660 */ 442, 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034,
+ /* 670 */ 120, 120, 121, 121, 121, 121, 407, 199, 472, 1183,
+ /* 680 */ 1022, 472, 1183, 1184, 1185, 386, 151, 539, 1548, 277,
+ /* 690 */ 400, 137, 6, 317, 5, 564, 562, 3, 920, 920,
+ /* 700 */ 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120,
+ /* 710 */ 120, 121, 121, 121, 121, 411, 505, 83, 71, 71,
/* 720 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
- /* 730 */ 441, 560, 1176, 427, 563, 451, 98, 13, 13, 259,
- /* 740 */ 276, 356, 507, 351, 506, 246, 406, 361, 469, 1530,
- /* 750 */ 1000, 347, 293, 304, 554, 1589, 71, 71, 889, 119,
- /* 760 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 441,
- /* 770 */ 122, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120,
- /* 780 */ 120, 121, 121, 121, 121, 406, 1143, 1078, 1176, 1177,
- /* 790 */ 1178, 416, 1080, 300, 150, 995, 1080, 361, 361, 1143,
- /* 800 */ 361, 378, 1143, 477, 563, 244, 243, 242, 1278, 122,
- /* 810 */ 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120,
- /* 820 */ 121, 121, 121, 121, 563, 880, 13, 13, 483, 119,
- /* 830 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 441,
- /* 840 */ 1176, 191, 540, 563, 147, 149, 13, 13, 328, 457,
- /* 850 */ 316, 1083, 1083, 485, 1537, 406, 505, 1530, 6, 1514,
- /* 860 */ 284, 192, 1277, 145, 881, 71, 71, 488, 119, 119,
- /* 870 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 122,
- /* 880 */ 123, 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120,
- /* 890 */ 121, 121, 121, 121, 563, 471, 1176, 1177, 1178, 406,
- /* 900 */ 852, 327, 301, 462, 330, 1516, 270, 1530, 1530, 944,
- /* 910 */ 1531, 1307, 313, 9, 842, 251, 71, 71, 477, 428,
- /* 920 */ 146, 488, 38, 945, 101, 113, 1200, 1200, 1035, 1038,
- /* 930 */ 1028, 1028, 120, 120, 121, 121, 121, 121, 119, 119,
- /* 940 */ 119, 119, 118, 118, 117, 117, 117, 116, 441, 563,
- /* 950 */ 1197, 1099, 563, 436, 563, 1533, 563, 852, 1122, 1617,
- /* 960 */ 454, 290, 1617, 546, 251, 1303, 1100, 267, 267, 281,
- /* 970 */ 404, 70, 70, 460, 71, 71, 71, 71, 13, 13,
- /* 980 */ 560, 1101, 119, 119, 119, 119, 118, 118, 117, 117,
- /* 990 */ 117, 116, 441, 542, 104, 273, 273, 273, 273, 1197,
- /* 1000 */ 217, 1468, 900, 471, 450, 563, 1473, 1197, 560, 447,
- /* 1010 */ 560, 545, 901, 440, 406, 1058, 292, 274, 274, 198,
- /* 1020 */ 547, 450, 449, 1473, 1475, 944, 455, 56, 56, 410,
- /* 1030 */ 560, 1122, 1618, 379, 406, 1618, 404, 1120, 122, 123,
- /* 1040 */ 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120, 121,
- /* 1050 */ 121, 121, 121, 1460, 406, 12, 1197, 1512, 122, 123,
- /* 1060 */ 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120, 121,
- /* 1070 */ 121, 121, 121, 308, 471, 126, 359, 286, 122, 111,
- /* 1080 */ 113, 1200, 1200, 1035, 1038, 1028, 1028, 120, 120, 121,
- /* 1090 */ 121, 121, 121, 309, 450, 471, 1473, 119, 119, 119,
- /* 1100 */ 119, 118, 118, 117, 117, 117, 116, 441, 1176, 563,
- /* 1110 */ 1120, 482, 563, 312, 433, 479, 197, 119, 119, 119,
- /* 1120 */ 119, 118, 118, 117, 117, 117, 116, 441, 405, 12,
- /* 1130 */ 536, 15, 15, 478, 43, 43, 509, 119, 119, 119,
- /* 1140 */ 119, 118, 118, 117, 117, 117, 116, 441, 289, 535,
- /* 1150 */ 294, 563, 294, 391, 1220, 438, 437, 406, 1154, 403,
- /* 1160 */ 402, 1400, 920, 1204, 1176, 1177, 1178, 919, 1206, 291,
- /* 1170 */ 1306, 1249, 412, 57, 57, 488, 1205, 563, 556, 412,
- /* 1180 */ 1176, 1344, 123, 113, 1200, 1200, 1035, 1038, 1028, 1028,
- /* 1190 */ 120, 120, 121, 121, 121, 121, 1400, 1143, 563, 44,
- /* 1200 */ 44, 1207, 194, 1207, 273, 273, 1400, 461, 537, 1154,
- /* 1210 */ 1143, 108, 555, 1143, 4, 391, 1121, 560, 1538, 335,
- /* 1220 */ 58, 58, 6, 1246, 1099, 380, 1400, 376, 558, 1536,
- /* 1230 */ 563, 422, 1221, 6, 304, 554, 1176, 1177, 1178, 1100,
+ /* 730 */ 442, 1183, 218, 428, 1183, 1183, 1184, 1185, 363, 261,
+ /* 740 */ 278, 358, 508, 353, 507, 248, 407, 306, 555, 1539,
+ /* 750 */ 1006, 349, 363, 291, 489, 302, 293, 1542, 281, 119,
+ /* 760 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
+ /* 770 */ 122, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120,
+ /* 780 */ 120, 121, 121, 121, 121, 407, 148, 1183, 1184, 1185,
+ /* 790 */ 1183, 1184, 1185, 275, 275, 1304, 1257, 1283, 483, 1476,
+ /* 800 */ 150, 489, 480, 564, 1187, 1304, 561, 1587, 1255, 122,
+ /* 810 */ 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120,
+ /* 820 */ 121, 121, 121, 121, 564, 886, 13, 13, 520, 119,
+ /* 830 */ 119, 119, 119, 118, 118, 117, 117, 117, 116, 442,
+ /* 840 */ 1183, 420, 417, 564, 269, 269, 1316, 13, 13, 1539,
+ /* 850 */ 1546, 16, 16, 322, 6, 407, 506, 561, 1089, 1089,
+ /* 860 */ 486, 1187, 425, 1539, 887, 292, 71, 71, 119, 119,
+ /* 870 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 122,
+ /* 880 */ 123, 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120,
+ /* 890 */ 121, 121, 121, 121, 564, 12, 1183, 1184, 1185, 407,
+ /* 900 */ 275, 275, 451, 303, 834, 835, 836, 417, 489, 276,
+ /* 910 */ 276, 1547, 284, 561, 319, 6, 321, 71, 71, 429,
+ /* 920 */ 451, 450, 561, 952, 101, 113, 1207, 1207, 1041, 1044,
+ /* 930 */ 1034, 1034, 120, 120, 121, 121, 121, 121, 119, 119,
+ /* 940 */ 119, 119, 118, 118, 117, 117, 117, 116, 442, 1105,
+ /* 950 */ 1183, 489, 564, 1312, 437, 455, 478, 564, 246, 245,
+ /* 960 */ 244, 1409, 1545, 547, 1106, 405, 6, 1544, 196, 1258,
+ /* 970 */ 413, 6, 105, 462, 103, 71, 71, 286, 564, 1107,
+ /* 980 */ 13, 13, 119, 119, 119, 119, 118, 118, 117, 117,
+ /* 990 */ 117, 116, 442, 451, 104, 427, 337, 320, 275, 275,
+ /* 1000 */ 906, 13, 13, 564, 1482, 1105, 1183, 1184, 1185, 126,
+ /* 1010 */ 907, 561, 546, 564, 407, 478, 295, 1321, 253, 200,
+ /* 1020 */ 1106, 548, 1482, 1484, 280, 1409, 55, 55, 1287, 561,
+ /* 1030 */ 478, 380, 423, 951, 407, 1107, 71, 71, 122, 123,
+ /* 1040 */ 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120, 121,
+ /* 1050 */ 121, 121, 121, 1204, 407, 287, 552, 309, 122, 123,
+ /* 1060 */ 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120, 121,
+ /* 1070 */ 121, 121, 121, 441, 1128, 1628, 146, 1628, 122, 111,
+ /* 1080 */ 113, 1207, 1207, 1041, 1044, 1034, 1034, 120, 120, 121,
+ /* 1090 */ 121, 121, 121, 404, 403, 1482, 424, 119, 119, 119,
+ /* 1100 */ 119, 118, 118, 117, 117, 117, 116, 442, 1183, 564,
+ /* 1110 */ 1204, 544, 1086, 858, 329, 361, 1086, 119, 119, 119,
+ /* 1120 */ 119, 118, 118, 117, 117, 117, 116, 442, 564, 294,
+ /* 1130 */ 144, 523, 56, 56, 224, 564, 510, 119, 119, 119,
+ /* 1140 */ 119, 118, 118, 117, 117, 117, 116, 442, 484, 1409,
+ /* 1150 */ 537, 15, 15, 1126, 434, 439, 438, 407, 13, 13,
+ /* 1160 */ 1523, 12, 926, 1211, 1183, 1184, 1185, 925, 1213, 536,
+ /* 1170 */ 858, 557, 413, 193, 1525, 494, 1212, 448, 1160, 1222,
+ /* 1180 */ 1183, 564, 123, 113, 1207, 1207, 1041, 1044, 1034, 1034,
+ /* 1190 */ 120, 120, 121, 121, 121, 121, 1521, 1149, 564, 965,
+ /* 1200 */ 564, 1214, 247, 1214, 13, 13, 1409, 966, 538, 564,
+ /* 1210 */ 1149, 108, 556, 1149, 4, 310, 392, 1227, 17, 194,
+ /* 1220 */ 485, 43, 43, 57, 57, 306, 555, 524, 559, 1160,
+ /* 1230 */ 464, 564, 44, 44, 392, 1127, 1183, 1184, 1185, 479,
/* 1240 */ 119, 119, 119, 119, 118, 118, 117, 117, 117, 116,
- /* 1250 */ 441, 442, 59, 59, 1101, 516, 1535, 273, 273, 563,
- /* 1260 */ 6, 563, 110, 552, 563, 528, 423, 413, 169, 548,
- /* 1270 */ 560, 108, 555, 137, 4, 551, 484, 272, 215, 222,
- /* 1280 */ 211, 60, 60, 61, 61, 98, 62, 62, 558, 273,
- /* 1290 */ 273, 563, 1015, 467, 1221, 563, 434, 563, 106, 106,
- /* 1300 */ 8, 920, 560, 273, 273, 107, 919, 442, 565, 564,
- /* 1310 */ 563, 442, 1005, 45, 45, 464, 560, 46, 46, 47,
- /* 1320 */ 47, 84, 202, 552, 1215, 404, 468, 563, 205, 304,
- /* 1330 */ 554, 563, 49, 49, 563, 522, 404, 532, 563, 867,
- /* 1340 */ 563, 105, 531, 103, 1005, 1005, 1007, 1008, 27, 50,
- /* 1350 */ 50, 563, 1015, 63, 63, 475, 64, 64, 106, 106,
- /* 1360 */ 65, 65, 14, 14, 17, 107, 563, 442, 565, 564,
- /* 1370 */ 563, 303, 1005, 66, 66, 563, 226, 563, 959, 563,
- /* 1380 */ 543, 404, 1196, 1343, 871, 278, 960, 456, 128, 128,
- /* 1390 */ 563, 1065, 67, 67, 563, 206, 867, 52, 52, 68,
- /* 1400 */ 68, 69, 69, 417, 1005, 1005, 1007, 1008, 27, 1563,
- /* 1410 */ 1165, 444, 53, 53, 277, 1519, 156, 156, 307, 389,
- /* 1420 */ 389, 388, 262, 386, 1165, 444, 839, 321, 277, 108,
- /* 1430 */ 555, 523, 4, 389, 389, 388, 262, 386, 563, 223,
- /* 1440 */ 839, 311, 326, 1492, 1117, 98, 558, 393, 1065, 310,
- /* 1450 */ 563, 476, 563, 223, 563, 311, 879, 878, 1009, 277,
- /* 1460 */ 157, 157, 463, 310, 389, 389, 388, 262, 386, 442,
- /* 1470 */ 518, 839, 76, 76, 54, 54, 72, 72, 355, 225,
- /* 1480 */ 563, 552, 275, 563, 223, 325, 311, 161, 354, 465,
- /* 1490 */ 135, 563, 228, 225, 310, 532, 563, 206, 886, 887,
- /* 1500 */ 533, 161, 129, 129, 135, 73, 73, 224, 962, 963,
- /* 1510 */ 1015, 563, 287, 130, 130, 1009, 106, 106, 131, 131,
- /* 1520 */ 563, 224, 563, 107, 225, 442, 565, 564, 997, 1276,
- /* 1530 */ 1005, 250, 161, 127, 127, 135, 108, 555, 1077, 4,
- /* 1540 */ 1077, 407, 155, 155, 154, 154, 304, 554, 1126, 563,
- /* 1550 */ 1331, 563, 224, 558, 470, 407, 563, 250, 563, 1491,
- /* 1560 */ 304, 554, 1005, 1005, 1007, 1008, 27, 563, 480, 332,
- /* 1570 */ 448, 136, 136, 134, 134, 1340, 442, 336, 132, 132,
- /* 1580 */ 133, 133, 563, 1076, 448, 1076, 407, 563, 552, 75,
- /* 1590 */ 75, 304, 554, 339, 341, 343, 108, 555, 563, 4,
- /* 1600 */ 1577, 299, 532, 563, 77, 77, 1291, 531, 472, 74,
- /* 1610 */ 74, 250, 1275, 558, 350, 448, 331, 1015, 360, 98,
- /* 1620 */ 42, 42, 1352, 106, 106, 48, 48, 1399, 494, 1327,
- /* 1630 */ 107, 247, 442, 565, 564, 345, 442, 1005, 98, 1061,
- /* 1640 */ 953, 917, 247, 250, 110, 1552, 550, 850, 552, 918,
- /* 1650 */ 144, 1338, 110, 549, 1405, 1256, 1248, 1237, 1236, 1238,
- /* 1660 */ 1571, 1324, 208, 390, 489, 265, 363, 200, 365, 1005,
- /* 1670 */ 1005, 1007, 1008, 27, 11, 280, 221, 1015, 323, 474,
- /* 1680 */ 1274, 367, 212, 106, 106, 924, 1386, 324, 288, 1381,
- /* 1690 */ 107, 453, 442, 565, 564, 283, 329, 1005, 1391, 499,
- /* 1700 */ 353, 1374, 1464, 108, 555, 1463, 4, 1574, 1390, 397,
- /* 1710 */ 1215, 171, 254, 369, 383, 207, 195, 196, 1511, 553,
- /* 1720 */ 558, 1509, 415, 1212, 100, 555, 83, 4, 204, 1005,
- /* 1730 */ 1005, 1007, 1008, 27, 180, 166, 173, 219, 79, 82,
- /* 1740 */ 458, 558, 175, 442, 35, 1387, 176, 459, 177, 178,
- /* 1750 */ 492, 231, 96, 1469, 395, 552, 1393, 1392, 36, 466,
- /* 1760 */ 1395, 184, 398, 481, 442, 1458, 235, 89, 1480, 487,
- /* 1770 */ 266, 334, 237, 188, 490, 400, 552, 338, 238, 508,
- /* 1780 */ 1239, 239, 1294, 1293, 1015, 1292, 1285, 429, 91, 871,
- /* 1790 */ 106, 106, 1588, 213, 401, 1587, 431, 107, 1264, 442,
- /* 1800 */ 565, 564, 1263, 352, 1005, 1015, 1262, 1586, 1557, 517,
- /* 1810 */ 432, 106, 106, 1284, 297, 298, 358, 524, 107, 1335,
- /* 1820 */ 442, 565, 564, 95, 1336, 1005, 252, 253, 435, 125,
- /* 1830 */ 543, 1543, 10, 1444, 377, 1542, 1005, 1005, 1007, 1008,
- /* 1840 */ 27, 97, 527, 375, 362, 102, 260, 364, 381, 1317,
- /* 1850 */ 382, 1334, 366, 1245, 1333, 1316, 368, 1005, 1005, 1007,
- /* 1860 */ 1008, 27, 1359, 1358, 34, 199, 1171, 566, 261, 263,
- /* 1870 */ 264, 567, 1234, 158, 1229, 141, 295, 159, 1496, 302,
- /* 1880 */ 1497, 1495, 1494, 160, 826, 209, 443, 201, 306, 210,
- /* 1890 */ 78, 220, 1075, 138, 1073, 314, 162, 172, 1196, 227,
- /* 1900 */ 174, 903, 322, 230, 1089, 179, 163, 164, 418, 408,
- /* 1910 */ 409, 170, 181, 85, 86, 420, 87, 165, 1092, 88,
- /* 1920 */ 233, 232, 1088, 151, 18, 234, 1081, 250, 333, 1209,
- /* 1930 */ 185, 486, 236, 186, 37, 841, 491, 354, 240, 346,
- /* 1940 */ 495, 187, 90, 869, 19, 20, 500, 503, 349, 92,
- /* 1950 */ 167, 152, 296, 882, 93, 510, 94, 1159, 153, 1041,
- /* 1960 */ 1128, 39, 214, 269, 1127, 271, 249, 952, 190, 947,
- /* 1970 */ 110, 1149, 21, 7, 1153, 22, 1145, 23, 1147, 24,
- /* 1980 */ 1133, 25, 1152, 33, 539, 193, 26, 1056, 98, 1042,
- /* 1990 */ 1040, 1044, 1098, 1045, 1097, 256, 255, 28, 40, 257,
- /* 2000 */ 1010, 851, 109, 29, 913, 559, 384, 387, 258, 1167,
- /* 2010 */ 1166, 1225, 1225, 1225, 1579, 1225, 1225, 1225, 1225, 1225,
- /* 2020 */ 1225, 1225, 1578,
+ /* 1250 */ 442, 443, 564, 327, 13, 13, 564, 418, 1315, 414,
+ /* 1260 */ 171, 564, 311, 553, 213, 529, 1253, 564, 517, 543,
+ /* 1270 */ 412, 108, 556, 137, 4, 58, 58, 435, 314, 59,
+ /* 1280 */ 59, 274, 217, 549, 60, 60, 349, 476, 559, 1353,
+ /* 1290 */ 61, 61, 1021, 275, 275, 1228, 213, 564, 106, 106,
+ /* 1300 */ 8, 275, 275, 275, 275, 107, 561, 443, 566, 565,
+ /* 1310 */ 564, 443, 1011, 1228, 561, 564, 561, 564, 275, 275,
+ /* 1320 */ 62, 62, 1352, 553, 247, 456, 564, 98, 110, 306,
+ /* 1330 */ 555, 561, 564, 45, 45, 405, 1203, 533, 46, 46,
+ /* 1340 */ 47, 47, 532, 465, 1011, 1011, 1013, 1014, 27, 49,
+ /* 1350 */ 49, 564, 1021, 405, 469, 50, 50, 564, 106, 106,
+ /* 1360 */ 305, 564, 84, 204, 405, 107, 564, 443, 566, 565,
+ /* 1370 */ 405, 564, 1011, 564, 63, 63, 564, 1599, 564, 895,
+ /* 1380 */ 64, 64, 457, 477, 65, 65, 147, 96, 38, 14,
+ /* 1390 */ 14, 1528, 412, 564, 66, 66, 128, 128, 926, 67,
+ /* 1400 */ 67, 52, 52, 925, 1011, 1011, 1013, 1014, 27, 1572,
+ /* 1410 */ 1171, 445, 208, 1123, 279, 394, 68, 68, 228, 390,
+ /* 1420 */ 390, 389, 264, 387, 1171, 445, 843, 877, 279, 108,
+ /* 1430 */ 556, 453, 4, 390, 390, 389, 264, 387, 564, 225,
+ /* 1440 */ 843, 313, 328, 1003, 98, 252, 559, 544, 471, 312,
+ /* 1450 */ 252, 564, 208, 225, 564, 313, 473, 30, 252, 279,
+ /* 1460 */ 466, 69, 69, 312, 390, 390, 389, 264, 387, 443,
+ /* 1470 */ 333, 843, 98, 564, 53, 53, 323, 157, 157, 227,
+ /* 1480 */ 495, 553, 249, 289, 225, 564, 313, 162, 31, 1501,
+ /* 1490 */ 135, 564, 1500, 227, 312, 533, 158, 158, 885, 884,
+ /* 1500 */ 534, 162, 873, 301, 135, 564, 481, 226, 76, 76,
+ /* 1510 */ 1021, 347, 1071, 98, 54, 54, 106, 106, 1067, 564,
+ /* 1520 */ 249, 226, 519, 107, 227, 443, 566, 565, 72, 72,
+ /* 1530 */ 1011, 334, 162, 564, 230, 135, 108, 556, 959, 4,
+ /* 1540 */ 252, 408, 129, 129, 564, 1349, 306, 555, 564, 923,
+ /* 1550 */ 564, 110, 226, 559, 564, 408, 73, 73, 564, 873,
+ /* 1560 */ 306, 555, 1011, 1011, 1013, 1014, 27, 130, 130, 1071,
+ /* 1570 */ 449, 131, 131, 127, 127, 357, 443, 156, 156, 892,
+ /* 1580 */ 893, 155, 155, 338, 449, 356, 408, 564, 553, 968,
+ /* 1590 */ 969, 306, 555, 1015, 341, 564, 108, 556, 564, 4,
+ /* 1600 */ 1132, 1286, 533, 564, 856, 343, 145, 532, 345, 1300,
+ /* 1610 */ 136, 136, 1083, 559, 1083, 449, 564, 1021, 134, 134,
+ /* 1620 */ 1284, 132, 132, 106, 106, 1285, 133, 133, 564, 352,
+ /* 1630 */ 107, 564, 443, 566, 565, 1340, 443, 1011, 362, 75,
+ /* 1640 */ 75, 1082, 564, 1082, 564, 924, 1561, 110, 553, 551,
+ /* 1650 */ 1015, 77, 77, 1361, 74, 74, 1408, 1336, 1347, 550,
+ /* 1660 */ 1414, 1265, 1256, 1244, 1243, 42, 42, 48, 48, 1011,
+ /* 1670 */ 1011, 1013, 1014, 27, 1245, 1580, 490, 1021, 267, 202,
+ /* 1680 */ 1333, 365, 11, 106, 106, 930, 367, 210, 369, 391,
+ /* 1690 */ 107, 1395, 443, 566, 565, 223, 1390, 1011, 500, 454,
+ /* 1700 */ 282, 1400, 285, 108, 556, 214, 4, 325, 1383, 1283,
+ /* 1710 */ 475, 355, 1473, 1583, 1472, 1399, 371, 1222, 326, 398,
+ /* 1720 */ 559, 290, 331, 197, 100, 556, 209, 4, 198, 1011,
+ /* 1730 */ 1011, 1013, 1014, 27, 385, 256, 1520, 1518, 554, 1219,
+ /* 1740 */ 416, 559, 83, 443, 173, 206, 182, 221, 459, 167,
+ /* 1750 */ 177, 460, 175, 493, 233, 553, 79, 178, 1396, 179,
+ /* 1760 */ 35, 180, 96, 1402, 443, 396, 36, 467, 1478, 1401,
+ /* 1770 */ 482, 237, 1404, 399, 82, 186, 553, 1467, 89, 488,
+ /* 1780 */ 190, 268, 239, 491, 1021, 340, 240, 401, 1246, 1489,
+ /* 1790 */ 106, 106, 336, 509, 1294, 241, 1303, 107, 430, 443,
+ /* 1800 */ 566, 565, 1302, 91, 1011, 1021, 1598, 1301, 1273, 215,
+ /* 1810 */ 1597, 106, 106, 402, 877, 432, 354, 1272, 107, 1271,
+ /* 1820 */ 443, 566, 565, 1596, 1566, 1011, 1293, 433, 518, 299,
+ /* 1830 */ 300, 360, 95, 525, 1344, 364, 1011, 1011, 1013, 1014,
+ /* 1840 */ 27, 254, 255, 1552, 436, 1551, 125, 544, 10, 379,
+ /* 1850 */ 1326, 1453, 102, 97, 1345, 528, 304, 1011, 1011, 1013,
+ /* 1860 */ 1014, 27, 366, 377, 1343, 1342, 368, 370, 1325, 384,
+ /* 1870 */ 201, 383, 34, 1368, 1367, 568, 1177, 266, 263, 265,
+ /* 1880 */ 1505, 159, 569, 1241, 1236, 1506, 160, 142, 1504, 1503,
+ /* 1890 */ 297, 211, 830, 161, 212, 78, 444, 203, 308, 222,
+ /* 1900 */ 1081, 139, 1079, 316, 174, 163, 1203, 229, 176, 909,
+ /* 1910 */ 324, 232, 1095, 181, 409, 410, 172, 164, 165, 419,
+ /* 1920 */ 183, 85, 86, 421, 166, 87, 88, 1098, 1094, 234,
+ /* 1930 */ 235, 152, 18, 236, 335, 1087, 1216, 252, 187, 487,
+ /* 1940 */ 238, 188, 37, 845, 492, 356, 242, 496, 351, 501,
+ /* 1950 */ 189, 90, 19, 504, 348, 20, 875, 92, 298, 168,
+ /* 1960 */ 888, 153, 93, 511, 94, 1165, 154, 1047, 1134, 39,
+ /* 1970 */ 216, 1133, 271, 273, 958, 192, 953, 110, 1151, 1155,
+ /* 1980 */ 251, 7, 21, 1159, 1139, 22, 1153, 33, 23, 24,
+ /* 1990 */ 25, 540, 1158, 195, 98, 1062, 26, 1048, 1046, 1050,
+ /* 2000 */ 1104, 1051, 1103, 257, 258, 28, 40, 1173, 1016, 857,
+ /* 2010 */ 109, 29, 560, 388, 138, 1172, 259, 170, 260, 1232,
+ /* 2020 */ 1232, 919, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
+ /* 2030 */ 1232, 1232, 1589, 1232, 1232, 1232, 1588,
};
static const YYCODETYPE yy_lookahead[] = {
- /* 0 */ 192, 221, 192, 223, 192, 214, 272, 273, 274, 217,
- /* 10 */ 192, 231, 217, 192, 192, 192, 272, 273, 274, 19,
- /* 20 */ 233, 234, 214, 215, 214, 215, 203, 293, 203, 233,
- /* 30 */ 234, 31, 214, 215, 214, 214, 215, 214, 215, 39,
- /* 40 */ 208, 209, 210, 43, 44, 45, 46, 47, 48, 49,
- /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 236, 19,
- /* 60 */ 237, 238, 237, 238, 272, 273, 274, 272, 273, 274,
- /* 70 */ 192, 211, 251, 250, 251, 250, 26, 192, 200, 254,
- /* 80 */ 255, 260, 204, 43, 44, 45, 46, 47, 48, 49,
- /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 214,
- /* 100 */ 215, 214, 102, 103, 104, 105, 106, 107, 108, 109,
- /* 110 */ 110, 111, 112, 59, 229, 192, 294, 16, 306, 307,
- /* 120 */ 312, 313, 312, 311, 314, 59, 86, 204, 88, 19,
- /* 130 */ 312, 313, 272, 273, 274, 271, 26, 22, 54, 55,
+ /* 0 */ 192, 273, 274, 275, 192, 192, 273, 274, 275, 192,
+ /* 10 */ 218, 215, 192, 218, 192, 212, 234, 235, 205, 19,
+ /* 20 */ 11, 192, 294, 215, 216, 203, 192, 203, 209, 210,
+ /* 30 */ 211, 31, 215, 216, 205, 215, 216, 215, 216, 39,
+ /* 40 */ 227, 215, 229, 43, 44, 45, 46, 47, 48, 49,
+ /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 19,
+ /* 60 */ 238, 239, 238, 239, 215, 273, 274, 275, 273, 274,
+ /* 70 */ 275, 237, 21, 251, 252, 251, 273, 274, 275, 255,
+ /* 80 */ 256, 215, 216, 43, 44, 45, 46, 47, 48, 49,
+ /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 209, 210,
+ /* 100 */ 211, 76, 102, 103, 104, 105, 106, 107, 108, 109,
+ /* 110 */ 110, 111, 112, 59, 89, 111, 112, 92, 252, 307,
+ /* 120 */ 308, 313, 314, 112, 312, 59, 86, 261, 88, 19,
+ /* 130 */ 313, 80, 315, 313, 314, 25, 127, 128, 54, 55,
/* 140 */ 56, 57, 102, 103, 104, 105, 106, 107, 108, 109,
/* 150 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
- /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 53, 115,
- /* 170 */ 116, 117, 118, 309, 310, 121, 122, 123, 77, 69,
- /* 180 */ 79, 115, 116, 117, 59, 131, 102, 103, 104, 105,
- /* 190 */ 106, 107, 108, 109, 110, 111, 112, 72, 148, 19,
+ /* 160 */ 50, 51, 52, 53, 54, 55, 56, 57, 192, 115,
+ /* 170 */ 116, 117, 118, 122, 192, 121, 122, 123, 202, 69,
+ /* 180 */ 204, 115, 116, 117, 192, 131, 102, 103, 104, 105,
+ /* 190 */ 106, 107, 108, 109, 110, 111, 112, 215, 216, 19,
/* 200 */ 54, 55, 56, 57, 58, 108, 109, 110, 111, 112,
- /* 210 */ 304, 305, 102, 103, 104, 105, 106, 107, 108, 109,
+ /* 210 */ 192, 160, 102, 103, 104, 105, 106, 107, 108, 109,
/* 220 */ 110, 111, 112, 43, 44, 45, 46, 47, 48, 49,
- /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 112,
- /* 240 */ 115, 116, 117, 24, 208, 209, 210, 67, 102, 103,
- /* 250 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 192,
- /* 260 */ 59, 160, 43, 44, 45, 46, 47, 48, 49, 50,
- /* 270 */ 51, 52, 53, 54, 55, 56, 57, 19, 46, 47,
- /* 280 */ 48, 49, 102, 103, 104, 105, 106, 107, 108, 109,
- /* 290 */ 110, 111, 112, 213, 73, 184, 185, 186, 187, 188,
- /* 300 */ 189, 221, 81, 236, 46, 194, 192, 196, 19, 59,
- /* 310 */ 133, 59, 135, 136, 203, 192, 115, 116, 117, 127,
- /* 320 */ 128, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ /* 230 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 46,
+ /* 240 */ 47, 48, 49, 24, 248, 192, 250, 67, 102, 103,
+ /* 250 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 277,
+ /* 260 */ 127, 128, 43, 44, 45, 46, 47, 48, 49, 50,
+ /* 270 */ 51, 52, 53, 54, 55, 56, 57, 26, 164, 165,
+ /* 280 */ 272, 263, 102, 103, 104, 105, 106, 107, 108, 109,
+ /* 290 */ 110, 111, 112, 184, 185, 186, 187, 188, 189, 186,
+ /* 300 */ 187, 188, 189, 194, 76, 196, 229, 194, 19, 196,
+ /* 310 */ 59, 192, 203, 120, 59, 87, 203, 89, 310, 311,
+ /* 320 */ 92, 102, 103, 104, 105, 106, 107, 108, 109, 110,
/* 330 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
- /* 340 */ 51, 52, 53, 54, 55, 56, 57, 126, 237, 238,
- /* 350 */ 100, 150, 120, 230, 186, 187, 188, 189, 137, 138,
- /* 360 */ 108, 250, 194, 26, 196, 115, 116, 115, 116, 117,
- /* 370 */ 120, 203, 114, 164, 165, 264, 102, 103, 104, 105,
- /* 380 */ 106, 107, 108, 109, 110, 111, 112, 192, 130, 111,
- /* 390 */ 112, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- /* 400 */ 111, 112, 152, 153, 154, 237, 238, 296, 192, 214,
- /* 410 */ 215, 228, 192, 307, 192, 19, 59, 311, 250, 23,
- /* 420 */ 22, 106, 107, 108, 109, 110, 111, 112, 192, 72,
- /* 430 */ 214, 215, 264, 192, 214, 215, 214, 215, 149, 43,
+ /* 340 */ 51, 52, 53, 54, 55, 56, 57, 238, 239, 73,
+ /* 350 */ 231, 238, 239, 22, 23, 100, 25, 81, 305, 306,
+ /* 360 */ 251, 23, 25, 25, 251, 272, 115, 116, 117, 214,
+ /* 370 */ 115, 116, 144, 192, 265, 120, 114, 222, 265, 102,
+ /* 380 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ /* 390 */ 192, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ /* 400 */ 111, 112, 126, 310, 311, 192, 297, 152, 153, 154,
+ /* 410 */ 297, 149, 192, 137, 138, 19, 192, 100, 192, 23,
+ /* 420 */ 22, 106, 107, 108, 109, 110, 111, 112, 215, 216,
+ /* 430 */ 106, 107, 101, 116, 192, 215, 216, 120, 149, 43,
/* 440 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- /* 450 */ 54, 55, 56, 57, 117, 214, 215, 59, 19, 187,
- /* 460 */ 192, 189, 23, 81, 296, 192, 194, 251, 196, 59,
- /* 470 */ 229, 251, 115, 116, 117, 203, 260, 106, 107, 142,
- /* 480 */ 260, 267, 43, 44, 45, 46, 47, 48, 49, 50,
- /* 490 */ 51, 52, 53, 54, 55, 56, 57, 261, 102, 103,
- /* 500 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 237,
- /* 510 */ 238, 76, 192, 115, 116, 117, 144, 192, 76, 137,
- /* 520 */ 138, 192, 250, 152, 89, 154, 116, 92, 19, 87,
- /* 530 */ 262, 89, 23, 22, 92, 163, 264, 192, 22, 214,
- /* 540 */ 215, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ /* 450 */ 54, 55, 56, 57, 117, 117, 192, 59, 19, 187,
+ /* 460 */ 59, 189, 23, 282, 240, 252, 194, 192, 196, 152,
+ /* 470 */ 153, 154, 252, 72, 261, 203, 152, 25, 154, 142,
+ /* 480 */ 142, 261, 43, 44, 45, 46, 47, 48, 49, 50,
+ /* 490 */ 51, 52, 53, 54, 55, 56, 57, 192, 102, 103,
+ /* 500 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 267,
+ /* 510 */ 238, 239, 237, 115, 116, 117, 115, 116, 117, 192,
+ /* 520 */ 59, 118, 16, 251, 121, 122, 123, 303, 19, 303,
+ /* 530 */ 59, 267, 23, 72, 131, 308, 22, 265, 22, 312,
+ /* 540 */ 24, 102, 103, 104, 105, 106, 107, 108, 109, 110,
/* 550 */ 111, 112, 43, 44, 45, 46, 47, 48, 49, 50,
- /* 560 */ 51, 52, 53, 54, 55, 56, 57, 19, 296, 118,
- /* 570 */ 59, 23, 121, 122, 123, 59, 251, 26, 46, 306,
- /* 580 */ 307, 261, 131, 192, 311, 192, 144, 192, 22, 203,
- /* 590 */ 100, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- /* 600 */ 52, 53, 54, 55, 56, 57, 116, 214, 215, 271,
- /* 610 */ 120, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- /* 620 */ 111, 112, 229, 237, 238, 59, 115, 116, 117, 299,
- /* 630 */ 300, 115, 116, 117, 59, 16, 250, 19, 192, 192,
- /* 640 */ 19, 23, 152, 153, 154, 24, 114, 309, 310, 192,
+ /* 560 */ 51, 52, 53, 54, 55, 56, 57, 19, 81, 297,
+ /* 570 */ 295, 23, 192, 59, 203, 59, 115, 116, 117, 108,
+ /* 580 */ 192, 73, 25, 77, 192, 79, 115, 116, 117, 137,
+ /* 590 */ 138, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ /* 600 */ 52, 53, 54, 55, 56, 57, 119, 215, 216, 238,
+ /* 610 */ 239, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ /* 620 */ 111, 112, 251, 192, 137, 138, 59, 234, 235, 115,
+ /* 630 */ 116, 117, 116, 76, 126, 127, 128, 19, 192, 268,
+ /* 640 */ 19, 23, 22, 192, 252, 24, 89, 300, 301, 92,
/* 650 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
/* 660 */ 112, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- /* 670 */ 52, 53, 54, 55, 56, 57, 19, 7, 8, 9,
- /* 680 */ 23, 115, 116, 117, 203, 290, 239, 238, 137, 138,
- /* 690 */ 115, 116, 117, 236, 192, 22, 77, 81, 79, 250,
+ /* 670 */ 52, 53, 54, 55, 56, 57, 19, 192, 192, 59,
+ /* 680 */ 23, 192, 115, 116, 117, 200, 240, 307, 308, 22,
+ /* 690 */ 205, 81, 312, 262, 22, 192, 133, 22, 135, 136,
/* 700 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- /* 710 */ 53, 54, 55, 56, 57, 192, 95, 142, 237, 238,
+ /* 710 */ 53, 54, 55, 56, 57, 197, 95, 150, 215, 216,
/* 720 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- /* 730 */ 112, 250, 59, 112, 192, 119, 26, 214, 215, 118,
- /* 740 */ 119, 120, 121, 122, 123, 124, 19, 192, 267, 302,
- /* 750 */ 23, 130, 229, 137, 138, 23, 214, 215, 26, 102,
+ /* 730 */ 112, 59, 192, 112, 59, 115, 116, 117, 192, 118,
+ /* 740 */ 119, 120, 121, 122, 123, 124, 19, 137, 138, 303,
+ /* 750 */ 23, 130, 192, 267, 192, 252, 267, 306, 203, 102,
/* 760 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
/* 770 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- /* 780 */ 53, 54, 55, 56, 57, 19, 76, 11, 115, 116,
- /* 790 */ 117, 192, 29, 251, 239, 73, 33, 192, 192, 89,
- /* 800 */ 192, 192, 92, 192, 192, 126, 127, 128, 224, 43,
+ /* 780 */ 53, 54, 55, 56, 57, 19, 240, 115, 116, 117,
+ /* 790 */ 115, 116, 117, 238, 239, 222, 192, 224, 280, 237,
+ /* 800 */ 240, 192, 284, 192, 59, 232, 251, 140, 204, 43,
/* 810 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- /* 820 */ 54, 55, 56, 57, 192, 35, 214, 215, 65, 102,
+ /* 820 */ 54, 55, 56, 57, 192, 35, 215, 216, 192, 102,
/* 830 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- /* 840 */ 59, 229, 192, 192, 239, 239, 214, 215, 126, 127,
- /* 850 */ 128, 126, 127, 128, 307, 19, 66, 302, 311, 192,
- /* 860 */ 261, 229, 224, 22, 74, 214, 215, 192, 102, 103,
+ /* 840 */ 59, 230, 192, 192, 238, 239, 237, 215, 216, 303,
+ /* 850 */ 308, 215, 216, 16, 312, 19, 66, 251, 126, 127,
+ /* 860 */ 128, 116, 230, 303, 74, 203, 215, 216, 102, 103,
/* 870 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 43,
/* 880 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- /* 890 */ 54, 55, 56, 57, 192, 192, 115, 116, 117, 19,
- /* 900 */ 59, 290, 251, 127, 128, 192, 23, 302, 302, 26,
- /* 910 */ 302, 236, 192, 22, 21, 24, 214, 215, 192, 129,
- /* 920 */ 22, 192, 24, 142, 158, 45, 46, 47, 48, 49,
+ /* 890 */ 54, 55, 56, 57, 192, 212, 115, 116, 117, 19,
+ /* 900 */ 238, 239, 192, 252, 7, 8, 9, 192, 192, 238,
+ /* 910 */ 239, 308, 262, 251, 77, 312, 79, 215, 216, 129,
+ /* 920 */ 210, 211, 251, 142, 158, 45, 46, 47, 48, 49,
/* 930 */ 50, 51, 52, 53, 54, 55, 56, 57, 102, 103,
- /* 940 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 192,
- /* 950 */ 59, 12, 192, 251, 192, 305, 192, 116, 22, 23,
- /* 960 */ 242, 203, 26, 203, 24, 236, 27, 237, 238, 266,
- /* 970 */ 252, 214, 215, 80, 214, 215, 214, 215, 214, 215,
- /* 980 */ 250, 42, 102, 103, 104, 105, 106, 107, 108, 109,
- /* 990 */ 110, 111, 112, 229, 158, 237, 238, 237, 238, 59,
- /* 1000 */ 117, 281, 63, 192, 192, 192, 192, 116, 250, 192,
- /* 1010 */ 250, 251, 73, 251, 19, 122, 290, 237, 238, 24,
- /* 1020 */ 260, 209, 210, 209, 210, 142, 242, 214, 215, 197,
- /* 1030 */ 250, 22, 23, 276, 19, 26, 252, 101, 43, 44,
+ /* 940 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 12,
+ /* 950 */ 59, 192, 192, 237, 252, 243, 192, 192, 126, 127,
+ /* 960 */ 128, 192, 308, 203, 27, 253, 312, 308, 285, 207,
+ /* 970 */ 208, 312, 157, 290, 159, 215, 216, 262, 192, 42,
+ /* 980 */ 215, 216, 102, 103, 104, 105, 106, 107, 108, 109,
+ /* 990 */ 110, 111, 112, 283, 158, 230, 237, 160, 238, 239,
+ /* 1000 */ 63, 215, 216, 192, 192, 12, 115, 116, 117, 22,
+ /* 1010 */ 73, 251, 252, 192, 19, 192, 230, 239, 24, 24,
+ /* 1020 */ 27, 261, 210, 211, 99, 192, 215, 216, 225, 251,
+ /* 1030 */ 192, 192, 263, 142, 19, 42, 215, 216, 43, 44,
/* 1040 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- /* 1050 */ 55, 56, 57, 160, 19, 211, 116, 192, 43, 44,
+ /* 1050 */ 55, 56, 57, 59, 19, 291, 63, 132, 43, 44,
/* 1060 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- /* 1070 */ 55, 56, 57, 192, 192, 22, 192, 266, 43, 44,
+ /* 1070 */ 55, 56, 57, 252, 22, 23, 22, 25, 43, 44,
/* 1080 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- /* 1090 */ 55, 56, 57, 192, 282, 192, 282, 102, 103, 104,
+ /* 1090 */ 55, 56, 57, 106, 107, 283, 263, 102, 103, 104,
/* 1100 */ 105, 106, 107, 108, 109, 110, 111, 112, 59, 192,
- /* 1110 */ 101, 279, 192, 192, 230, 283, 192, 102, 103, 104,
- /* 1120 */ 105, 106, 107, 108, 109, 110, 111, 112, 204, 211,
- /* 1130 */ 66, 214, 215, 289, 214, 215, 108, 102, 103, 104,
- /* 1140 */ 105, 106, 107, 108, 109, 110, 111, 112, 266, 85,
- /* 1150 */ 226, 192, 228, 22, 23, 106, 107, 19, 94, 106,
- /* 1160 */ 107, 192, 134, 114, 115, 116, 117, 139, 119, 266,
- /* 1170 */ 203, 206, 207, 214, 215, 192, 127, 192, 206, 207,
+ /* 1110 */ 116, 144, 29, 59, 291, 192, 33, 102, 103, 104,
+ /* 1120 */ 105, 106, 107, 108, 109, 110, 111, 112, 192, 291,
+ /* 1130 */ 163, 19, 215, 216, 15, 192, 108, 102, 103, 104,
+ /* 1140 */ 105, 106, 107, 108, 109, 110, 111, 112, 65, 192,
+ /* 1150 */ 66, 215, 216, 101, 231, 106, 107, 19, 215, 216,
+ /* 1160 */ 192, 212, 134, 114, 115, 116, 117, 139, 119, 85,
+ /* 1170 */ 116, 207, 208, 230, 192, 19, 127, 192, 94, 60,
/* 1180 */ 59, 192, 44, 45, 46, 47, 48, 49, 50, 51,
- /* 1190 */ 52, 53, 54, 55, 56, 57, 192, 76, 192, 214,
- /* 1200 */ 215, 152, 284, 154, 237, 238, 192, 289, 87, 145,
- /* 1210 */ 89, 19, 20, 92, 22, 22, 23, 250, 307, 236,
- /* 1220 */ 214, 215, 311, 203, 12, 247, 192, 249, 36, 307,
- /* 1230 */ 192, 262, 101, 311, 137, 138, 115, 116, 117, 27,
+ /* 1190 */ 52, 53, 54, 55, 56, 57, 192, 76, 192, 31,
+ /* 1200 */ 192, 152, 46, 154, 215, 216, 192, 39, 87, 192,
+ /* 1210 */ 89, 19, 20, 92, 22, 192, 22, 23, 22, 230,
+ /* 1220 */ 263, 215, 216, 215, 216, 137, 138, 115, 36, 145,
+ /* 1230 */ 128, 192, 215, 216, 22, 23, 115, 116, 117, 290,
/* 1240 */ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- /* 1250 */ 112, 59, 214, 215, 42, 203, 307, 237, 238, 192,
- /* 1260 */ 311, 192, 26, 71, 192, 144, 262, 297, 298, 203,
- /* 1270 */ 250, 19, 20, 81, 22, 63, 262, 254, 255, 15,
- /* 1280 */ 26, 214, 215, 214, 215, 26, 214, 215, 36, 237,
- /* 1290 */ 238, 192, 100, 114, 101, 192, 262, 192, 106, 107,
- /* 1300 */ 48, 134, 250, 237, 238, 113, 139, 115, 116, 117,
- /* 1310 */ 192, 59, 120, 214, 215, 242, 250, 214, 215, 214,
- /* 1320 */ 215, 148, 149, 71, 60, 252, 242, 192, 149, 137,
- /* 1330 */ 138, 192, 214, 215, 192, 19, 252, 85, 192, 59,
- /* 1340 */ 192, 157, 90, 159, 152, 153, 154, 155, 156, 214,
- /* 1350 */ 215, 192, 100, 214, 215, 19, 214, 215, 106, 107,
- /* 1360 */ 214, 215, 214, 215, 22, 113, 192, 115, 116, 117,
- /* 1370 */ 192, 242, 120, 214, 215, 192, 24, 192, 31, 192,
- /* 1380 */ 144, 252, 26, 192, 125, 99, 39, 192, 214, 215,
- /* 1390 */ 192, 59, 214, 215, 192, 141, 116, 214, 215, 214,
- /* 1400 */ 215, 214, 215, 61, 152, 153, 154, 155, 156, 0,
- /* 1410 */ 1, 2, 214, 215, 5, 192, 214, 215, 132, 10,
- /* 1420 */ 11, 12, 13, 14, 1, 2, 17, 192, 5, 19,
- /* 1430 */ 20, 115, 22, 10, 11, 12, 13, 14, 192, 30,
- /* 1440 */ 17, 32, 23, 192, 23, 26, 36, 26, 116, 40,
- /* 1450 */ 192, 115, 192, 30, 192, 32, 119, 120, 59, 5,
- /* 1460 */ 214, 215, 128, 40, 10, 11, 12, 13, 14, 59,
- /* 1470 */ 19, 17, 214, 215, 214, 215, 214, 215, 120, 70,
- /* 1480 */ 192, 71, 22, 192, 30, 151, 32, 78, 130, 128,
- /* 1490 */ 81, 192, 140, 70, 40, 85, 192, 141, 7, 8,
- /* 1500 */ 90, 78, 214, 215, 81, 214, 215, 98, 83, 84,
- /* 1510 */ 100, 192, 151, 214, 215, 116, 106, 107, 214, 215,
- /* 1520 */ 192, 98, 192, 113, 70, 115, 116, 117, 23, 224,
- /* 1530 */ 120, 26, 78, 214, 215, 81, 19, 20, 152, 22,
- /* 1540 */ 154, 132, 214, 215, 214, 215, 137, 138, 97, 192,
- /* 1550 */ 256, 192, 98, 36, 23, 132, 192, 26, 192, 192,
- /* 1560 */ 137, 138, 152, 153, 154, 155, 156, 192, 192, 192,
- /* 1570 */ 161, 214, 215, 214, 215, 192, 59, 192, 214, 215,
- /* 1580 */ 214, 215, 192, 152, 161, 154, 132, 192, 71, 214,
- /* 1590 */ 215, 137, 138, 192, 192, 192, 19, 20, 192, 22,
- /* 1600 */ 140, 253, 85, 192, 214, 215, 192, 90, 23, 214,
- /* 1610 */ 215, 26, 192, 36, 192, 161, 23, 100, 192, 26,
- /* 1620 */ 214, 215, 192, 106, 107, 214, 215, 192, 23, 192,
- /* 1630 */ 113, 26, 115, 116, 117, 23, 59, 120, 26, 23,
- /* 1640 */ 23, 23, 26, 26, 26, 316, 234, 23, 71, 23,
- /* 1650 */ 26, 192, 26, 192, 192, 192, 192, 192, 192, 192,
- /* 1660 */ 192, 253, 212, 190, 286, 285, 253, 240, 253, 152,
- /* 1670 */ 153, 154, 155, 156, 241, 243, 295, 100, 291, 291,
- /* 1680 */ 223, 253, 227, 106, 107, 108, 269, 244, 244, 265,
- /* 1690 */ 113, 257, 115, 116, 117, 257, 243, 120, 269, 218,
- /* 1700 */ 217, 265, 217, 19, 20, 217, 22, 195, 269, 269,
- /* 1710 */ 60, 295, 140, 257, 243, 241, 247, 247, 199, 278,
- /* 1720 */ 36, 199, 199, 38, 19, 20, 150, 22, 149, 152,
- /* 1730 */ 153, 154, 155, 156, 22, 43, 232, 295, 292, 292,
- /* 1740 */ 18, 36, 235, 59, 268, 270, 235, 199, 235, 235,
- /* 1750 */ 18, 198, 148, 281, 244, 71, 270, 270, 268, 244,
- /* 1760 */ 232, 232, 244, 199, 59, 244, 198, 157, 288, 62,
- /* 1770 */ 199, 287, 198, 22, 219, 219, 71, 199, 198, 114,
- /* 1780 */ 199, 198, 216, 216, 100, 216, 225, 64, 22, 125,
- /* 1790 */ 106, 107, 222, 164, 219, 222, 24, 113, 216, 115,
- /* 1800 */ 116, 117, 218, 216, 120, 100, 216, 216, 310, 303,
- /* 1810 */ 112, 106, 107, 225, 280, 280, 219, 143, 113, 259,
- /* 1820 */ 115, 116, 117, 114, 259, 120, 199, 91, 82, 147,
- /* 1830 */ 144, 315, 22, 275, 199, 315, 152, 153, 154, 155,
- /* 1840 */ 156, 146, 145, 247, 258, 157, 25, 258, 245, 248,
- /* 1850 */ 244, 259, 258, 202, 259, 248, 258, 152, 153, 154,
- /* 1860 */ 155, 156, 263, 263, 26, 246, 13, 201, 193, 193,
- /* 1870 */ 6, 191, 191, 205, 191, 220, 220, 205, 211, 277,
- /* 1880 */ 211, 211, 211, 205, 4, 212, 3, 22, 162, 212,
- /* 1890 */ 211, 15, 23, 16, 23, 138, 129, 150, 26, 24,
- /* 1900 */ 141, 20, 16, 143, 1, 141, 129, 129, 61, 301,
- /* 1910 */ 301, 298, 150, 53, 53, 37, 53, 129, 115, 53,
- /* 1920 */ 140, 34, 1, 5, 22, 114, 68, 26, 160, 75,
- /* 1930 */ 68, 41, 140, 114, 24, 20, 19, 130, 124, 23,
- /* 1940 */ 67, 22, 22, 59, 22, 22, 67, 96, 24, 22,
- /* 1950 */ 37, 23, 67, 28, 148, 22, 26, 23, 23, 23,
- /* 1960 */ 23, 22, 140, 23, 97, 23, 34, 115, 22, 142,
- /* 1970 */ 26, 75, 34, 44, 75, 34, 88, 34, 86, 34,
- /* 1980 */ 23, 34, 93, 22, 24, 26, 34, 23, 26, 23,
- /* 1990 */ 23, 23, 23, 11, 23, 22, 26, 22, 22, 140,
- /* 2000 */ 23, 23, 22, 22, 134, 26, 23, 15, 140, 1,
- /* 2010 */ 1, 317, 317, 317, 140, 317, 317, 317, 317, 317,
- /* 2020 */ 317, 317, 140, 317, 317, 317, 317, 317, 317, 317,
- /* 2030 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2040 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2050 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2060 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2070 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2080 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2090 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2100 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2110 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2120 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2130 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2140 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2150 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2160 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2170 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2180 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2190 */ 317, 317, 317, 317, 317, 317, 317, 317, 317, 317,
- /* 2200 */ 317, 317, 317, 317, 317, 317, 317,
+ /* 1250 */ 112, 59, 192, 151, 215, 216, 192, 61, 203, 298,
+ /* 1260 */ 299, 192, 192, 71, 25, 144, 203, 192, 203, 230,
+ /* 1270 */ 114, 19, 20, 81, 22, 215, 216, 263, 192, 215,
+ /* 1280 */ 216, 255, 256, 203, 215, 216, 130, 19, 36, 192,
+ /* 1290 */ 215, 216, 100, 238, 239, 101, 25, 192, 106, 107,
+ /* 1300 */ 48, 238, 239, 238, 239, 113, 251, 115, 116, 117,
+ /* 1310 */ 192, 59, 120, 101, 251, 192, 251, 192, 238, 239,
+ /* 1320 */ 215, 216, 192, 71, 46, 243, 192, 25, 25, 137,
+ /* 1330 */ 138, 251, 192, 215, 216, 253, 25, 85, 215, 216,
+ /* 1340 */ 215, 216, 90, 243, 152, 153, 154, 155, 156, 215,
+ /* 1350 */ 216, 192, 100, 253, 243, 215, 216, 192, 106, 107,
+ /* 1360 */ 243, 192, 148, 149, 253, 113, 192, 115, 116, 117,
+ /* 1370 */ 253, 192, 120, 192, 215, 216, 192, 23, 192, 25,
+ /* 1380 */ 215, 216, 192, 115, 215, 216, 22, 148, 24, 215,
+ /* 1390 */ 216, 192, 114, 192, 215, 216, 215, 216, 134, 215,
+ /* 1400 */ 216, 215, 216, 139, 152, 153, 154, 155, 156, 0,
+ /* 1410 */ 1, 2, 141, 23, 5, 25, 215, 216, 24, 10,
+ /* 1420 */ 11, 12, 13, 14, 1, 2, 17, 125, 5, 19,
+ /* 1430 */ 20, 268, 22, 10, 11, 12, 13, 14, 192, 30,
+ /* 1440 */ 17, 32, 23, 23, 25, 25, 36, 144, 23, 40,
+ /* 1450 */ 25, 192, 141, 30, 192, 32, 23, 22, 25, 5,
+ /* 1460 */ 128, 215, 216, 40, 10, 11, 12, 13, 14, 59,
+ /* 1470 */ 23, 17, 25, 192, 215, 216, 192, 215, 216, 70,
+ /* 1480 */ 23, 71, 25, 151, 30, 192, 32, 78, 53, 192,
+ /* 1490 */ 81, 192, 192, 70, 40, 85, 215, 216, 119, 120,
+ /* 1500 */ 90, 78, 59, 254, 81, 192, 192, 98, 215, 216,
+ /* 1510 */ 100, 23, 59, 25, 215, 216, 106, 107, 23, 192,
+ /* 1520 */ 25, 98, 19, 113, 70, 115, 116, 117, 215, 216,
+ /* 1530 */ 120, 192, 78, 192, 140, 81, 19, 20, 23, 22,
+ /* 1540 */ 25, 132, 215, 216, 192, 192, 137, 138, 192, 23,
+ /* 1550 */ 192, 25, 98, 36, 192, 132, 215, 216, 192, 116,
+ /* 1560 */ 137, 138, 152, 153, 154, 155, 156, 215, 216, 116,
+ /* 1570 */ 161, 215, 216, 215, 216, 120, 59, 215, 216, 7,
+ /* 1580 */ 8, 215, 216, 192, 161, 130, 132, 192, 71, 83,
+ /* 1590 */ 84, 137, 138, 59, 192, 192, 19, 20, 192, 22,
+ /* 1600 */ 97, 225, 85, 192, 23, 192, 25, 90, 192, 192,
+ /* 1610 */ 215, 216, 152, 36, 154, 161, 192, 100, 215, 216,
+ /* 1620 */ 192, 215, 216, 106, 107, 225, 215, 216, 192, 192,
+ /* 1630 */ 113, 192, 115, 116, 117, 257, 59, 120, 192, 215,
+ /* 1640 */ 216, 152, 192, 154, 192, 23, 317, 25, 71, 235,
+ /* 1650 */ 116, 215, 216, 192, 215, 216, 192, 192, 192, 192,
+ /* 1660 */ 192, 192, 192, 192, 192, 215, 216, 215, 216, 152,
+ /* 1670 */ 153, 154, 155, 156, 192, 192, 287, 100, 286, 241,
+ /* 1680 */ 254, 254, 242, 106, 107, 108, 254, 213, 254, 190,
+ /* 1690 */ 113, 270, 115, 116, 117, 296, 266, 120, 219, 258,
+ /* 1700 */ 244, 270, 258, 19, 20, 228, 22, 292, 266, 224,
+ /* 1710 */ 292, 218, 218, 195, 218, 270, 258, 60, 245, 270,
+ /* 1720 */ 36, 245, 244, 248, 19, 20, 242, 22, 248, 152,
+ /* 1730 */ 153, 154, 155, 156, 244, 140, 199, 199, 279, 38,
+ /* 1740 */ 199, 36, 150, 59, 296, 149, 22, 296, 18, 43,
+ /* 1750 */ 236, 199, 233, 18, 198, 71, 293, 236, 271, 236,
+ /* 1760 */ 269, 236, 148, 271, 59, 245, 269, 245, 282, 271,
+ /* 1770 */ 199, 198, 233, 245, 293, 233, 71, 245, 157, 62,
+ /* 1780 */ 22, 199, 198, 220, 100, 199, 198, 220, 199, 289,
+ /* 1790 */ 106, 107, 288, 114, 226, 198, 217, 113, 64, 115,
+ /* 1800 */ 116, 117, 217, 22, 120, 100, 223, 217, 217, 164,
+ /* 1810 */ 223, 106, 107, 220, 125, 24, 217, 219, 113, 217,
+ /* 1820 */ 115, 116, 117, 217, 311, 120, 226, 112, 304, 281,
+ /* 1830 */ 281, 220, 114, 143, 260, 259, 152, 153, 154, 155,
+ /* 1840 */ 156, 199, 91, 316, 82, 316, 147, 144, 22, 199,
+ /* 1850 */ 249, 276, 157, 146, 260, 145, 278, 152, 153, 154,
+ /* 1860 */ 155, 156, 259, 248, 260, 260, 259, 259, 249, 245,
+ /* 1870 */ 247, 246, 25, 264, 264, 201, 13, 6, 193, 193,
+ /* 1880 */ 212, 206, 191, 191, 191, 212, 206, 221, 212, 212,
+ /* 1890 */ 221, 213, 4, 206, 213, 212, 3, 22, 162, 15,
+ /* 1900 */ 23, 16, 23, 138, 150, 129, 25, 24, 141, 20,
+ /* 1910 */ 16, 143, 1, 141, 302, 302, 299, 129, 129, 61,
+ /* 1920 */ 150, 53, 53, 37, 129, 53, 53, 115, 1, 34,
+ /* 1930 */ 140, 5, 22, 114, 160, 68, 75, 25, 68, 41,
+ /* 1940 */ 140, 114, 24, 20, 19, 130, 124, 67, 24, 67,
+ /* 1950 */ 22, 22, 22, 96, 23, 22, 59, 22, 67, 37,
+ /* 1960 */ 28, 23, 148, 22, 25, 23, 23, 23, 23, 22,
+ /* 1970 */ 140, 97, 23, 23, 115, 22, 142, 25, 88, 75,
+ /* 1980 */ 34, 44, 34, 75, 23, 34, 86, 22, 34, 34,
+ /* 1990 */ 34, 24, 93, 25, 25, 23, 34, 23, 23, 23,
+ /* 2000 */ 23, 11, 23, 25, 22, 22, 22, 1, 23, 23,
+ /* 2010 */ 22, 22, 25, 15, 23, 1, 140, 25, 140, 318,
+ /* 2020 */ 318, 134, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2030 */ 318, 318, 140, 318, 318, 318, 140, 318, 318, 318,
+ /* 2040 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2050 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2060 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2070 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2080 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2090 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2100 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2110 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2120 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2130 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2140 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2150 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2160 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2170 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2180 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2190 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2200 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2210 */ 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
+ /* 2220 */ 318,
};
-#define YY_SHIFT_COUNT (569)
+#define YY_SHIFT_COUNT (571)
#define YY_SHIFT_MIN (0)
-#define YY_SHIFT_MAX (2009)
+#define YY_SHIFT_MAX (2014)
static const unsigned short int yy_shift_ofst[] = {
- /* 0 */ 1423, 1409, 1454, 1192, 1192, 382, 1252, 1410, 1517, 1684,
- /* 10 */ 1684, 1684, 221, 0, 0, 180, 1015, 1684, 1684, 1684,
+ /* 0 */ 1423, 1409, 1454, 1192, 1192, 610, 1252, 1410, 1517, 1684,
+ /* 10 */ 1684, 1684, 276, 0, 0, 180, 1015, 1684, 1684, 1684,
/* 20 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
- /* 30 */ 1049, 1049, 1121, 1121, 54, 616, 382, 382, 382, 382,
- /* 40 */ 382, 40, 110, 219, 289, 396, 439, 509, 548, 618,
+ /* 30 */ 1049, 1049, 1121, 1121, 54, 487, 610, 610, 610, 610,
+ /* 40 */ 610, 40, 110, 219, 289, 396, 439, 509, 548, 618,
/* 50 */ 657, 727, 766, 836, 995, 1015, 1015, 1015, 1015, 1015,
/* 60 */ 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
/* 70 */ 1015, 1015, 1015, 1035, 1015, 1138, 880, 880, 1577, 1684,
@@ -159030,155 +160502,157 @@ static const unsigned short int yy_shift_ofst[] = {
/* 100 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
/* 110 */ 1684, 1684, 1684, 1705, 1684, 1684, 1684, 1684, 1684, 1684,
/* 120 */ 1684, 1684, 1684, 1684, 1684, 1684, 1684, 146, 84, 84,
- /* 130 */ 84, 84, 84, 274, 315, 125, 97, 357, 66, 66,
- /* 140 */ 893, 258, 66, 66, 371, 371, 66, 551, 551, 551,
- /* 150 */ 551, 192, 209, 209, 278, 127, 2023, 2023, 621, 621,
- /* 160 */ 621, 201, 398, 398, 398, 398, 939, 939, 442, 936,
- /* 170 */ 1009, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ /* 130 */ 84, 84, 84, 277, 315, 401, 97, 461, 251, 66,
+ /* 140 */ 66, 51, 1156, 66, 66, 324, 324, 66, 452, 452,
+ /* 150 */ 452, 452, 133, 114, 114, 4, 11, 2037, 2037, 621,
+ /* 160 */ 621, 621, 567, 398, 398, 398, 398, 937, 937, 228,
+ /* 170 */ 251, 331, 1052, 66, 66, 66, 66, 66, 66, 66,
/* 180 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
- /* 190 */ 66, 710, 710, 66, 776, 435, 435, 410, 410, 372,
- /* 200 */ 1097, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 250, 490,
- /* 210 */ 490, 511, 451, 516, 252, 566, 575, 781, 673, 66,
- /* 220 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 722,
- /* 230 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
- /* 240 */ 66, 66, 790, 790, 790, 66, 66, 66, 883, 66,
- /* 250 */ 66, 66, 891, 1064, 66, 66, 1212, 66, 66, 66,
- /* 260 */ 66, 66, 66, 66, 66, 725, 763, 177, 940, 940,
- /* 270 */ 940, 940, 337, 177, 177, 1028, 1053, 670, 1264, 1179,
- /* 280 */ 1173, 1254, 1316, 1173, 1316, 1336, 50, 1179, 1179, 50,
- /* 290 */ 1179, 1254, 1336, 1259, 732, 532, 1347, 1347, 1347, 1316,
- /* 300 */ 1236, 1236, 1184, 1356, 1167, 898, 1650, 1650, 1572, 1572,
- /* 310 */ 1685, 1685, 1572, 1576, 1579, 1712, 1692, 1722, 1722, 1722,
- /* 320 */ 1722, 1572, 1732, 1604, 1579, 1579, 1604, 1712, 1692, 1604,
- /* 330 */ 1692, 1604, 1572, 1732, 1610, 1707, 1572, 1732, 1751, 1572,
- /* 340 */ 1732, 1572, 1732, 1751, 1665, 1665, 1665, 1723, 1766, 1766,
- /* 350 */ 1751, 1665, 1664, 1665, 1723, 1665, 1665, 1629, 1772, 1698,
- /* 360 */ 1698, 1751, 1674, 1709, 1674, 1709, 1674, 1709, 1674, 1709,
- /* 370 */ 1572, 1736, 1736, 1746, 1746, 1682, 1686, 1810, 1572, 1688,
- /* 380 */ 1682, 1695, 1697, 1604, 1821, 1838, 1853, 1853, 1864, 1864,
- /* 390 */ 1864, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023,
- /* 400 */ 2023, 2023, 2023, 2023, 2023, 2023, 232, 101, 1131, 1193,
- /* 410 */ 619, 679, 841, 1421, 1286, 115, 1352, 1334, 1361, 1419,
- /* 420 */ 1342, 1505, 1531, 1585, 1593, 1605, 1612, 1280, 1337, 1491,
- /* 430 */ 1358, 1451, 1332, 1616, 1617, 1425, 1618, 1386, 1431, 1624,
- /* 440 */ 1626, 1399, 1460, 1880, 1883, 1865, 1726, 1876, 1877, 1869,
- /* 450 */ 1871, 1757, 1747, 1767, 1872, 1872, 1875, 1759, 1881, 1760,
- /* 460 */ 1886, 1903, 1764, 1777, 1872, 1778, 1847, 1878, 1872, 1762,
- /* 470 */ 1860, 1861, 1863, 1866, 1788, 1803, 1887, 1780, 1921, 1918,
- /* 480 */ 1902, 1811, 1768, 1858, 1901, 1862, 1854, 1890, 1792, 1819,
- /* 490 */ 1910, 1915, 1917, 1807, 1814, 1919, 1873, 1920, 1922, 1916,
- /* 500 */ 1923, 1879, 1884, 1924, 1851, 1925, 1927, 1885, 1913, 1928,
- /* 510 */ 1806, 1933, 1934, 1935, 1936, 1930, 1937, 1939, 1867, 1822,
- /* 520 */ 1940, 1942, 1852, 1932, 1946, 1827, 1944, 1938, 1941, 1943,
- /* 530 */ 1945, 1888, 1896, 1892, 1929, 1899, 1889, 1947, 1957, 1961,
- /* 540 */ 1960, 1959, 1962, 1952, 1964, 1944, 1966, 1967, 1968, 1969,
- /* 550 */ 1970, 1971, 1973, 1982, 1975, 1976, 1977, 1978, 1980, 1981,
- /* 560 */ 1979, 1870, 1859, 1868, 1874, 1882, 1983, 1992, 2008, 2009,
+ /* 190 */ 66, 66, 66, 557, 557, 66, 9, 25, 25, 745,
+ /* 200 */ 745, 967, 1088, 2037, 2037, 2037, 2037, 2037, 2037, 2037,
+ /* 210 */ 255, 317, 317, 514, 403, 620, 471, 672, 781, 891,
+ /* 220 */ 675, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ /* 230 */ 66, 508, 66, 66, 66, 66, 66, 66, 66, 66,
+ /* 240 */ 66, 66, 66, 66, 790, 790, 790, 66, 66, 66,
+ /* 250 */ 338, 66, 66, 66, 516, 1084, 66, 66, 993, 66,
+ /* 260 */ 66, 66, 66, 66, 66, 66, 66, 732, 1083, 563,
+ /* 270 */ 994, 994, 994, 994, 337, 563, 563, 1028, 987, 897,
+ /* 280 */ 1119, 262, 1214, 1271, 1112, 1214, 1112, 1268, 1239, 262,
+ /* 290 */ 262, 1239, 262, 1271, 1268, 1302, 1354, 1278, 1168, 1168,
+ /* 300 */ 1168, 1112, 1303, 1303, 815, 1311, 1264, 1364, 1657, 1657,
+ /* 310 */ 1595, 1595, 1701, 1701, 1595, 1592, 1596, 1724, 1706, 1730,
+ /* 320 */ 1730, 1730, 1730, 1595, 1735, 1614, 1596, 1596, 1614, 1724,
+ /* 330 */ 1706, 1614, 1706, 1614, 1595, 1735, 1621, 1717, 1595, 1735,
+ /* 340 */ 1758, 1595, 1735, 1595, 1735, 1758, 1679, 1679, 1679, 1734,
+ /* 350 */ 1781, 1781, 1758, 1679, 1689, 1679, 1734, 1679, 1679, 1645,
+ /* 360 */ 1791, 1715, 1715, 1758, 1690, 1718, 1690, 1718, 1690, 1718,
+ /* 370 */ 1690, 1718, 1595, 1751, 1751, 1762, 1762, 1699, 1703, 1826,
+ /* 380 */ 1595, 1695, 1699, 1707, 1710, 1614, 1847, 1863, 1863, 1871,
+ /* 390 */ 1871, 1871, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037,
+ /* 400 */ 2037, 2037, 2037, 2037, 2037, 2037, 2037, 193, 837, 1194,
+ /* 410 */ 1212, 506, 832, 1054, 1390, 925, 1435, 1394, 1102, 1332,
+ /* 420 */ 1419, 1196, 1420, 1425, 1433, 1447, 1457, 1488, 1443, 1379,
+ /* 430 */ 1572, 1455, 1503, 1453, 1495, 1515, 1506, 1526, 1460, 1489,
+ /* 440 */ 1581, 1622, 1534, 667, 1888, 1893, 1875, 1736, 1884, 1885,
+ /* 450 */ 1877, 1879, 1765, 1754, 1776, 1881, 1881, 1883, 1767, 1889,
+ /* 460 */ 1768, 1894, 1911, 1772, 1788, 1881, 1789, 1858, 1886, 1881,
+ /* 470 */ 1770, 1868, 1869, 1872, 1873, 1795, 1812, 1895, 1790, 1927,
+ /* 480 */ 1926, 1910, 1819, 1774, 1867, 1912, 1870, 1861, 1898, 1800,
+ /* 490 */ 1827, 1918, 1923, 1925, 1815, 1822, 1928, 1880, 1929, 1930,
+ /* 500 */ 1931, 1933, 1882, 1897, 1924, 1857, 1932, 1935, 1891, 1922,
+ /* 510 */ 1938, 1814, 1941, 1942, 1943, 1944, 1939, 1945, 1947, 1874,
+ /* 520 */ 1830, 1949, 1950, 1859, 1946, 1953, 1834, 1952, 1948, 1951,
+ /* 530 */ 1954, 1955, 1890, 1904, 1900, 1937, 1908, 1899, 1956, 1961,
+ /* 540 */ 1965, 1967, 1968, 1969, 1962, 1972, 1952, 1974, 1975, 1976,
+ /* 550 */ 1977, 1978, 1979, 1982, 1990, 1983, 1984, 1985, 1986, 1988,
+ /* 560 */ 1989, 1987, 1887, 1876, 1878, 1892, 1896, 1992, 1991, 1998,
+ /* 570 */ 2006, 2014,
};
-#define YY_REDUCE_COUNT (405)
-#define YY_REDUCE_MIN (-266)
-#define YY_REDUCE_MAX (1683)
+#define YY_REDUCE_COUNT (406)
+#define YY_REDUCE_MIN (-272)
+#define YY_REDUCE_MAX (1693)
static const short yy_reduce_ofst[] = {
- /* 0 */ 111, 168, 272, 760, -177, -175, -192, -190, -182, -179,
- /* 10 */ 216, 220, 481, -208, -205, -266, -140, -115, 241, 393,
- /* 20 */ 523, 325, 612, 632, 542, 651, 764, 757, 702, 762,
- /* 30 */ 812, 814, -188, 273, 924, 386, 758, 967, 1020, 1052,
- /* 40 */ 1066, -256, -256, -256, -256, -256, -256, -256, -256, -256,
- /* 50 */ -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
- /* 60 */ -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
- /* 70 */ -256, -256, -256, -256, -256, -256, -256, -256, 195, 222,
- /* 80 */ 813, 917, 920, 959, 985, 1006, 1038, 1067, 1069, 1072,
- /* 90 */ 1099, 1103, 1105, 1118, 1135, 1139, 1142, 1146, 1148, 1159,
- /* 100 */ 1174, 1178, 1183, 1185, 1187, 1198, 1202, 1246, 1258, 1260,
- /* 110 */ 1262, 1288, 1291, 1299, 1304, 1319, 1328, 1330, 1357, 1359,
- /* 120 */ 1364, 1366, 1375, 1390, 1395, 1406, 1411, -256, -256, -256,
- /* 130 */ -256, -256, -256, -256, -256, 447, -256, 555, -178, 605,
- /* 140 */ 832, -220, 606, -94, -168, 36, -122, 730, 780, 730,
- /* 150 */ 780, 918, -136, 338, -256, -256, -256, -256, 80, 80,
- /* 160 */ 80, 720, 703, 811, 882, 903, -213, -204, 106, 330,
- /* 170 */ 330, -77, 236, 320, 599, 67, 457, 675, 729, 395,
- /* 180 */ 268, 611, 969, 1004, 726, 1014, 983, 123, 884, 608,
- /* 190 */ 1034, 547, 911, 650, 844, 922, 949, 965, 972, 978,
- /* 200 */ 449, 970, 718, 784, 1073, 1084, 1023, 1129, -209, -180,
- /* 210 */ -113, 114, 183, 329, 345, 391, 446, 502, 609, 667,
- /* 220 */ 713, 817, 865, 881, 901, 921, 989, 1191, 1195, 214,
- /* 230 */ 1223, 1235, 1251, 1367, 1376, 1377, 1383, 1385, 1401, 1402,
- /* 240 */ 1403, 1414, 584, 638, 1305, 1420, 1422, 1426, 1294, 1430,
- /* 250 */ 1435, 1437, 1348, 1329, 1459, 1461, 1412, 1462, 345, 1463,
- /* 260 */ 1464, 1465, 1466, 1467, 1468, 1378, 1380, 1427, 1408, 1413,
- /* 270 */ 1415, 1428, 1294, 1427, 1427, 1433, 1450, 1473, 1381, 1417,
- /* 280 */ 1424, 1432, 1434, 1436, 1438, 1387, 1443, 1429, 1439, 1444,
- /* 290 */ 1440, 1453, 1388, 1481, 1455, 1457, 1483, 1485, 1488, 1456,
- /* 300 */ 1469, 1470, 1441, 1471, 1474, 1512, 1416, 1442, 1519, 1522,
- /* 310 */ 1446, 1447, 1523, 1472, 1475, 1476, 1504, 1507, 1511, 1513,
- /* 320 */ 1514, 1548, 1553, 1510, 1486, 1487, 1515, 1490, 1528, 1518,
- /* 330 */ 1529, 1521, 1564, 1568, 1480, 1484, 1571, 1574, 1555, 1578,
- /* 340 */ 1580, 1581, 1583, 1556, 1566, 1567, 1569, 1561, 1570, 1573,
- /* 350 */ 1575, 1582, 1584, 1587, 1588, 1590, 1591, 1498, 1506, 1534,
- /* 360 */ 1535, 1597, 1560, 1586, 1565, 1589, 1592, 1594, 1595, 1598,
- /* 370 */ 1627, 1516, 1520, 1599, 1600, 1601, 1596, 1558, 1635, 1602,
- /* 380 */ 1607, 1619, 1603, 1606, 1651, 1666, 1675, 1676, 1680, 1681,
- /* 390 */ 1683, 1608, 1609, 1613, 1668, 1667, 1669, 1670, 1671, 1672,
- /* 400 */ 1655, 1656, 1673, 1677, 1679, 1678,
+ /* 0 */ 109, 113, 272, 760, -178, -176, -192, -183, -180, -134,
+ /* 10 */ 213, 220, 371, -208, -205, -272, -197, 611, 632, 765,
+ /* 20 */ 786, 392, 943, 989, 503, 651, 1039, -18, 702, 821,
+ /* 30 */ 710, 812, -188, 380, -187, 555, 662, 1055, 1063, 1065,
+ /* 40 */ 1080, -267, -267, -267, -267, -267, -267, -267, -267, -267,
+ /* 50 */ -267, -267, -267, -267, -267, -267, -267, -267, -267, -267,
+ /* 60 */ -267, -267, -267, -267, -267, -267, -267, -267, -267, -267,
+ /* 70 */ -267, -267, -267, -267, -267, -267, -267, -267, 636, 811,
+ /* 80 */ 917, 936, 1006, 1008, 1017, 1060, 1064, 1069, 1075, 1105,
+ /* 90 */ 1118, 1123, 1125, 1134, 1140, 1159, 1165, 1169, 1174, 1179,
+ /* 100 */ 1181, 1184, 1186, 1201, 1246, 1259, 1262, 1281, 1293, 1299,
+ /* 110 */ 1313, 1327, 1341, 1352, 1356, 1358, 1362, 1366, 1395, 1403,
+ /* 120 */ 1406, 1411, 1424, 1436, 1439, 1450, 1452, -267, -267, -267,
+ /* 130 */ -267, -267, -267, -267, -267, 224, -267, 446, -24, 275,
+ /* 140 */ 546, 518, 573, 560, 53, -181, -111, 485, 606, 671,
+ /* 150 */ 606, 671, 683, 8, 93, -267, -267, -267, -267, 155,
+ /* 160 */ 155, 155, 181, 242, 264, 486, 489, -218, 393, 227,
+ /* 170 */ 604, 347, 347, -171, 431, 650, 715, -166, 562, 609,
+ /* 180 */ 716, 764, 18, 823, 769, 833, 838, 957, 759, 119,
+ /* 190 */ 923, 226, 1014, 542, 603, 451, 949, 654, 659, 762,
+ /* 200 */ 964, -4, 778, 961, 712, 1082, 1100, 1111, 1026, 1117,
+ /* 210 */ -204, -174, -151, -8, 77, 198, 305, 327, 388, 540,
+ /* 220 */ 839, 968, 982, 985, 1004, 1023, 1070, 1086, 1097, 1130,
+ /* 230 */ 1190, 1163, 1199, 1284, 1297, 1300, 1314, 1339, 1353, 1391,
+ /* 240 */ 1402, 1413, 1416, 1417, 803, 1376, 1400, 1428, 1437, 1446,
+ /* 250 */ 1378, 1461, 1464, 1465, 1249, 1329, 1466, 1467, 1414, 1468,
+ /* 260 */ 305, 1469, 1470, 1471, 1472, 1482, 1483, 1389, 1392, 1438,
+ /* 270 */ 1426, 1427, 1432, 1434, 1378, 1438, 1438, 1440, 1474, 1499,
+ /* 280 */ 1399, 1421, 1430, 1456, 1441, 1442, 1444, 1415, 1473, 1431,
+ /* 290 */ 1445, 1476, 1449, 1478, 1418, 1479, 1477, 1485, 1493, 1494,
+ /* 300 */ 1496, 1458, 1475, 1480, 1459, 1490, 1484, 1518, 1448, 1451,
+ /* 310 */ 1537, 1538, 1463, 1481, 1541, 1486, 1487, 1491, 1519, 1514,
+ /* 320 */ 1521, 1523, 1525, 1552, 1556, 1520, 1492, 1498, 1522, 1497,
+ /* 330 */ 1539, 1528, 1542, 1532, 1571, 1573, 1500, 1504, 1582, 1584,
+ /* 340 */ 1563, 1586, 1588, 1589, 1597, 1567, 1579, 1585, 1590, 1568,
+ /* 350 */ 1583, 1587, 1593, 1591, 1598, 1599, 1600, 1602, 1606, 1513,
+ /* 360 */ 1524, 1548, 1549, 1611, 1574, 1576, 1594, 1603, 1604, 1607,
+ /* 370 */ 1605, 1608, 1642, 1527, 1529, 1609, 1610, 1601, 1615, 1575,
+ /* 380 */ 1650, 1578, 1619, 1623, 1625, 1624, 1674, 1685, 1686, 1691,
+ /* 390 */ 1692, 1693, 1612, 1613, 1617, 1675, 1668, 1673, 1676, 1677,
+ /* 400 */ 1680, 1666, 1669, 1678, 1681, 1683, 1687,
};
static const YYACTIONTYPE yy_default[] = {
- /* 0 */ 1623, 1623, 1623, 1453, 1223, 1332, 1223, 1223, 1223, 1453,
- /* 10 */ 1453, 1453, 1223, 1362, 1362, 1506, 1254, 1223, 1223, 1223,
- /* 20 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1452, 1223, 1223,
- /* 30 */ 1223, 1223, 1541, 1541, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 40 */ 1223, 1223, 1371, 1223, 1378, 1223, 1223, 1223, 1223, 1223,
- /* 50 */ 1454, 1455, 1223, 1223, 1223, 1505, 1507, 1470, 1385, 1384,
- /* 60 */ 1383, 1382, 1488, 1349, 1376, 1369, 1373, 1448, 1449, 1447,
- /* 70 */ 1451, 1455, 1454, 1223, 1372, 1419, 1433, 1418, 1223, 1223,
- /* 80 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 90 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 100 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 110 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 120 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1427, 1432, 1438,
- /* 130 */ 1431, 1428, 1421, 1420, 1422, 1223, 1423, 1223, 1223, 1223,
- /* 140 */ 1244, 1296, 1223, 1223, 1223, 1223, 1223, 1525, 1524, 1223,
- /* 150 */ 1223, 1254, 1413, 1412, 1424, 1425, 1435, 1434, 1513, 1576,
- /* 160 */ 1575, 1471, 1223, 1223, 1223, 1223, 1223, 1223, 1541, 1223,
- /* 170 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 180 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 190 */ 1223, 1541, 1541, 1223, 1254, 1541, 1541, 1250, 1250, 1356,
- /* 200 */ 1223, 1520, 1323, 1323, 1323, 1323, 1332, 1323, 1223, 1223,
- /* 210 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 220 */ 1223, 1223, 1223, 1510, 1508, 1223, 1223, 1223, 1223, 1223,
- /* 230 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 240 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 250 */ 1223, 1223, 1328, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 260 */ 1223, 1223, 1223, 1223, 1570, 1223, 1483, 1310, 1328, 1328,
- /* 270 */ 1328, 1328, 1330, 1311, 1309, 1322, 1255, 1230, 1615, 1388,
- /* 280 */ 1377, 1329, 1351, 1377, 1351, 1612, 1375, 1388, 1388, 1375,
- /* 290 */ 1388, 1329, 1612, 1271, 1592, 1266, 1362, 1362, 1362, 1351,
- /* 300 */ 1356, 1356, 1450, 1329, 1322, 1223, 1615, 1615, 1337, 1337,
- /* 310 */ 1614, 1614, 1337, 1471, 1599, 1397, 1299, 1305, 1305, 1305,
- /* 320 */ 1305, 1337, 1241, 1375, 1599, 1599, 1375, 1397, 1299, 1375,
- /* 330 */ 1299, 1375, 1337, 1241, 1487, 1609, 1337, 1241, 1461, 1337,
- /* 340 */ 1241, 1337, 1241, 1461, 1297, 1297, 1297, 1286, 1223, 1223,
- /* 350 */ 1461, 1297, 1271, 1297, 1286, 1297, 1297, 1559, 1223, 1465,
- /* 360 */ 1465, 1461, 1355, 1350, 1355, 1350, 1355, 1350, 1355, 1350,
- /* 370 */ 1337, 1551, 1551, 1365, 1365, 1370, 1356, 1456, 1337, 1223,
- /* 380 */ 1370, 1368, 1366, 1375, 1247, 1289, 1573, 1573, 1569, 1569,
- /* 390 */ 1569, 1620, 1620, 1520, 1585, 1254, 1254, 1254, 1254, 1585,
- /* 400 */ 1273, 1273, 1255, 1255, 1254, 1585, 1223, 1223, 1223, 1223,
- /* 410 */ 1223, 1223, 1580, 1223, 1515, 1472, 1341, 1223, 1223, 1223,
- /* 420 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 430 */ 1223, 1526, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 440 */ 1223, 1223, 1402, 1223, 1226, 1517, 1223, 1223, 1223, 1223,
- /* 450 */ 1223, 1223, 1223, 1223, 1379, 1380, 1342, 1223, 1223, 1223,
- /* 460 */ 1223, 1223, 1223, 1223, 1394, 1223, 1223, 1223, 1389, 1223,
- /* 470 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1611, 1223, 1223,
- /* 480 */ 1223, 1223, 1223, 1223, 1486, 1485, 1223, 1223, 1339, 1223,
- /* 490 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 500 */ 1223, 1223, 1269, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 510 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 520 */ 1223, 1223, 1223, 1223, 1223, 1223, 1367, 1223, 1223, 1223,
- /* 530 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 540 */ 1223, 1556, 1357, 1223, 1223, 1602, 1223, 1223, 1223, 1223,
- /* 550 */ 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
- /* 560 */ 1596, 1313, 1404, 1223, 1403, 1407, 1223, 1235, 1223, 1223,
+ /* 0 */ 1633, 1633, 1633, 1462, 1230, 1341, 1230, 1230, 1230, 1462,
+ /* 10 */ 1462, 1462, 1230, 1371, 1371, 1515, 1263, 1230, 1230, 1230,
+ /* 20 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1461, 1230, 1230,
+ /* 30 */ 1230, 1230, 1550, 1550, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 40 */ 1230, 1230, 1380, 1230, 1387, 1230, 1230, 1230, 1230, 1230,
+ /* 50 */ 1463, 1464, 1230, 1230, 1230, 1514, 1516, 1479, 1394, 1393,
+ /* 60 */ 1392, 1391, 1497, 1358, 1385, 1378, 1382, 1457, 1458, 1456,
+ /* 70 */ 1460, 1464, 1463, 1230, 1381, 1428, 1442, 1427, 1230, 1230,
+ /* 80 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 90 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 100 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 110 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 120 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1436, 1441, 1447,
+ /* 130 */ 1440, 1437, 1430, 1429, 1431, 1230, 1432, 1230, 1254, 1230,
+ /* 140 */ 1230, 1251, 1305, 1230, 1230, 1230, 1230, 1230, 1534, 1533,
+ /* 150 */ 1230, 1230, 1263, 1422, 1421, 1433, 1434, 1444, 1443, 1522,
+ /* 160 */ 1586, 1585, 1480, 1230, 1230, 1230, 1230, 1230, 1230, 1550,
+ /* 170 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 180 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 190 */ 1230, 1230, 1230, 1550, 1550, 1230, 1263, 1550, 1550, 1259,
+ /* 200 */ 1259, 1365, 1230, 1529, 1332, 1332, 1332, 1332, 1341, 1332,
+ /* 210 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 220 */ 1230, 1230, 1230, 1230, 1230, 1519, 1517, 1230, 1230, 1230,
+ /* 230 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 240 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 250 */ 1230, 1230, 1230, 1230, 1337, 1230, 1230, 1230, 1230, 1230,
+ /* 260 */ 1230, 1230, 1230, 1230, 1230, 1230, 1579, 1230, 1492, 1319,
+ /* 270 */ 1337, 1337, 1337, 1337, 1339, 1320, 1318, 1331, 1264, 1237,
+ /* 280 */ 1625, 1397, 1386, 1338, 1360, 1386, 1360, 1622, 1384, 1397,
+ /* 290 */ 1397, 1384, 1397, 1338, 1622, 1280, 1602, 1275, 1371, 1371,
+ /* 300 */ 1371, 1360, 1365, 1365, 1459, 1338, 1331, 1230, 1625, 1625,
+ /* 310 */ 1346, 1346, 1624, 1624, 1346, 1480, 1609, 1406, 1308, 1314,
+ /* 320 */ 1314, 1314, 1314, 1346, 1248, 1384, 1609, 1609, 1384, 1406,
+ /* 330 */ 1308, 1384, 1308, 1384, 1346, 1248, 1496, 1619, 1346, 1248,
+ /* 340 */ 1470, 1346, 1248, 1346, 1248, 1470, 1306, 1306, 1306, 1295,
+ /* 350 */ 1230, 1230, 1470, 1306, 1280, 1306, 1295, 1306, 1306, 1568,
+ /* 360 */ 1230, 1474, 1474, 1470, 1364, 1359, 1364, 1359, 1364, 1359,
+ /* 370 */ 1364, 1359, 1346, 1560, 1560, 1374, 1374, 1379, 1365, 1465,
+ /* 380 */ 1346, 1230, 1379, 1377, 1375, 1384, 1298, 1582, 1582, 1578,
+ /* 390 */ 1578, 1578, 1630, 1630, 1529, 1595, 1263, 1263, 1263, 1263,
+ /* 400 */ 1595, 1282, 1282, 1264, 1264, 1263, 1595, 1230, 1230, 1230,
+ /* 410 */ 1230, 1230, 1230, 1590, 1230, 1524, 1481, 1350, 1230, 1230,
+ /* 420 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 430 */ 1230, 1230, 1535, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 440 */ 1230, 1230, 1230, 1411, 1230, 1233, 1526, 1230, 1230, 1230,
+ /* 450 */ 1230, 1230, 1230, 1230, 1230, 1388, 1389, 1351, 1230, 1230,
+ /* 460 */ 1230, 1230, 1230, 1230, 1230, 1403, 1230, 1230, 1230, 1398,
+ /* 470 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1621, 1230,
+ /* 480 */ 1230, 1230, 1230, 1230, 1230, 1495, 1494, 1230, 1230, 1348,
+ /* 490 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 500 */ 1230, 1230, 1230, 1278, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 510 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 520 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1376, 1230, 1230,
+ /* 530 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 540 */ 1230, 1230, 1565, 1366, 1230, 1230, 1612, 1230, 1230, 1230,
+ /* 550 */ 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
+ /* 560 */ 1230, 1606, 1322, 1413, 1230, 1412, 1416, 1252, 1230, 1242,
+ /* 570 */ 1230, 1230,
};
/********** End of lemon-generated parsing tables *****************************/
@@ -159223,8 +160697,8 @@ static const YYCODETYPE yyFallback[] = {
0, /* LP => nothing */
0, /* RP => nothing */
0, /* AS => nothing */
- 59, /* WITHOUT => ID */
0, /* COMMA => nothing */
+ 59, /* WITHOUT => ID */
59, /* ABORT => ID */
59, /* ACTION => ID */
59, /* AFTER => ID */
@@ -159433,9 +160907,9 @@ struct yyParser {
};
typedef struct yyParser yyParser;
+/* #include <assert.h> */
#ifndef NDEBUG
/* #include <stdio.h> */
-/* #include <assert.h> */
static FILE *yyTraceFILE = 0;
static char *yyTracePrompt = 0;
#endif /* NDEBUG */
@@ -159495,8 +160969,8 @@ static const char *const yyTokenName[] = {
/* 22 */ "LP",
/* 23 */ "RP",
/* 24 */ "AS",
- /* 25 */ "WITHOUT",
- /* 26 */ "COMMA",
+ /* 25 */ "COMMA",
+ /* 26 */ "WITHOUT",
/* 27 */ "ABORT",
/* 28 */ "ACTION",
/* 29 */ "AFTER",
@@ -159672,121 +161146,122 @@ static const char *const yyTokenName[] = {
/* 199 */ "dbnm",
/* 200 */ "columnlist",
/* 201 */ "conslist_opt",
- /* 202 */ "table_options",
+ /* 202 */ "table_option_set",
/* 203 */ "select",
- /* 204 */ "columnname",
- /* 205 */ "carglist",
- /* 206 */ "typetoken",
- /* 207 */ "typename",
- /* 208 */ "signed",
- /* 209 */ "plus_num",
- /* 210 */ "minus_num",
- /* 211 */ "scanpt",
- /* 212 */ "scantok",
- /* 213 */ "ccons",
- /* 214 */ "term",
- /* 215 */ "expr",
- /* 216 */ "onconf",
- /* 217 */ "sortorder",
- /* 218 */ "autoinc",
- /* 219 */ "eidlist_opt",
- /* 220 */ "refargs",
- /* 221 */ "defer_subclause",
- /* 222 */ "generated",
- /* 223 */ "refarg",
- /* 224 */ "refact",
- /* 225 */ "init_deferred_pred_opt",
- /* 226 */ "conslist",
- /* 227 */ "tconscomma",
- /* 228 */ "tcons",
- /* 229 */ "sortlist",
- /* 230 */ "eidlist",
- /* 231 */ "defer_subclause_opt",
- /* 232 */ "orconf",
- /* 233 */ "resolvetype",
- /* 234 */ "raisetype",
- /* 235 */ "ifexists",
- /* 236 */ "fullname",
- /* 237 */ "selectnowith",
- /* 238 */ "oneselect",
- /* 239 */ "wqlist",
- /* 240 */ "multiselect_op",
- /* 241 */ "distinct",
- /* 242 */ "selcollist",
- /* 243 */ "from",
- /* 244 */ "where_opt",
- /* 245 */ "groupby_opt",
- /* 246 */ "having_opt",
- /* 247 */ "orderby_opt",
- /* 248 */ "limit_opt",
- /* 249 */ "window_clause",
- /* 250 */ "values",
- /* 251 */ "nexprlist",
- /* 252 */ "sclp",
- /* 253 */ "as",
- /* 254 */ "seltablist",
- /* 255 */ "stl_prefix",
- /* 256 */ "joinop",
- /* 257 */ "indexed_opt",
- /* 258 */ "on_opt",
- /* 259 */ "using_opt",
- /* 260 */ "exprlist",
- /* 261 */ "xfullname",
- /* 262 */ "idlist",
- /* 263 */ "nulls",
- /* 264 */ "with",
- /* 265 */ "where_opt_ret",
- /* 266 */ "setlist",
- /* 267 */ "insert_cmd",
- /* 268 */ "idlist_opt",
- /* 269 */ "upsert",
- /* 270 */ "returning",
- /* 271 */ "filter_over",
- /* 272 */ "likeop",
- /* 273 */ "between_op",
- /* 274 */ "in_op",
- /* 275 */ "paren_exprlist",
- /* 276 */ "case_operand",
- /* 277 */ "case_exprlist",
- /* 278 */ "case_else",
- /* 279 */ "uniqueflag",
- /* 280 */ "collate",
- /* 281 */ "vinto",
- /* 282 */ "nmnum",
- /* 283 */ "trigger_decl",
- /* 284 */ "trigger_cmd_list",
- /* 285 */ "trigger_time",
- /* 286 */ "trigger_event",
- /* 287 */ "foreach_clause",
- /* 288 */ "when_clause",
- /* 289 */ "trigger_cmd",
- /* 290 */ "trnm",
- /* 291 */ "tridxby",
- /* 292 */ "database_kw_opt",
- /* 293 */ "key_opt",
- /* 294 */ "add_column_fullname",
- /* 295 */ "kwcolumn_opt",
- /* 296 */ "create_vtab",
- /* 297 */ "vtabarglist",
- /* 298 */ "vtabarg",
- /* 299 */ "vtabargtoken",
- /* 300 */ "lp",
- /* 301 */ "anylist",
- /* 302 */ "wqitem",
- /* 303 */ "wqas",
- /* 304 */ "windowdefn_list",
- /* 305 */ "windowdefn",
- /* 306 */ "window",
- /* 307 */ "frame_opt",
- /* 308 */ "part_opt",
- /* 309 */ "filter_clause",
- /* 310 */ "over_clause",
- /* 311 */ "range_or_rows",
- /* 312 */ "frame_bound",
- /* 313 */ "frame_bound_s",
- /* 314 */ "frame_bound_e",
- /* 315 */ "frame_exclude_opt",
- /* 316 */ "frame_exclude",
+ /* 204 */ "table_option",
+ /* 205 */ "columnname",
+ /* 206 */ "carglist",
+ /* 207 */ "typetoken",
+ /* 208 */ "typename",
+ /* 209 */ "signed",
+ /* 210 */ "plus_num",
+ /* 211 */ "minus_num",
+ /* 212 */ "scanpt",
+ /* 213 */ "scantok",
+ /* 214 */ "ccons",
+ /* 215 */ "term",
+ /* 216 */ "expr",
+ /* 217 */ "onconf",
+ /* 218 */ "sortorder",
+ /* 219 */ "autoinc",
+ /* 220 */ "eidlist_opt",
+ /* 221 */ "refargs",
+ /* 222 */ "defer_subclause",
+ /* 223 */ "generated",
+ /* 224 */ "refarg",
+ /* 225 */ "refact",
+ /* 226 */ "init_deferred_pred_opt",
+ /* 227 */ "conslist",
+ /* 228 */ "tconscomma",
+ /* 229 */ "tcons",
+ /* 230 */ "sortlist",
+ /* 231 */ "eidlist",
+ /* 232 */ "defer_subclause_opt",
+ /* 233 */ "orconf",
+ /* 234 */ "resolvetype",
+ /* 235 */ "raisetype",
+ /* 236 */ "ifexists",
+ /* 237 */ "fullname",
+ /* 238 */ "selectnowith",
+ /* 239 */ "oneselect",
+ /* 240 */ "wqlist",
+ /* 241 */ "multiselect_op",
+ /* 242 */ "distinct",
+ /* 243 */ "selcollist",
+ /* 244 */ "from",
+ /* 245 */ "where_opt",
+ /* 246 */ "groupby_opt",
+ /* 247 */ "having_opt",
+ /* 248 */ "orderby_opt",
+ /* 249 */ "limit_opt",
+ /* 250 */ "window_clause",
+ /* 251 */ "values",
+ /* 252 */ "nexprlist",
+ /* 253 */ "sclp",
+ /* 254 */ "as",
+ /* 255 */ "seltablist",
+ /* 256 */ "stl_prefix",
+ /* 257 */ "joinop",
+ /* 258 */ "indexed_opt",
+ /* 259 */ "on_opt",
+ /* 260 */ "using_opt",
+ /* 261 */ "exprlist",
+ /* 262 */ "xfullname",
+ /* 263 */ "idlist",
+ /* 264 */ "nulls",
+ /* 265 */ "with",
+ /* 266 */ "where_opt_ret",
+ /* 267 */ "setlist",
+ /* 268 */ "insert_cmd",
+ /* 269 */ "idlist_opt",
+ /* 270 */ "upsert",
+ /* 271 */ "returning",
+ /* 272 */ "filter_over",
+ /* 273 */ "likeop",
+ /* 274 */ "between_op",
+ /* 275 */ "in_op",
+ /* 276 */ "paren_exprlist",
+ /* 277 */ "case_operand",
+ /* 278 */ "case_exprlist",
+ /* 279 */ "case_else",
+ /* 280 */ "uniqueflag",
+ /* 281 */ "collate",
+ /* 282 */ "vinto",
+ /* 283 */ "nmnum",
+ /* 284 */ "trigger_decl",
+ /* 285 */ "trigger_cmd_list",
+ /* 286 */ "trigger_time",
+ /* 287 */ "trigger_event",
+ /* 288 */ "foreach_clause",
+ /* 289 */ "when_clause",
+ /* 290 */ "trigger_cmd",
+ /* 291 */ "trnm",
+ /* 292 */ "tridxby",
+ /* 293 */ "database_kw_opt",
+ /* 294 */ "key_opt",
+ /* 295 */ "add_column_fullname",
+ /* 296 */ "kwcolumn_opt",
+ /* 297 */ "create_vtab",
+ /* 298 */ "vtabarglist",
+ /* 299 */ "vtabarg",
+ /* 300 */ "vtabargtoken",
+ /* 301 */ "lp",
+ /* 302 */ "anylist",
+ /* 303 */ "wqitem",
+ /* 304 */ "wqas",
+ /* 305 */ "windowdefn_list",
+ /* 306 */ "windowdefn",
+ /* 307 */ "window",
+ /* 308 */ "frame_opt",
+ /* 309 */ "part_opt",
+ /* 310 */ "filter_clause",
+ /* 311 */ "over_clause",
+ /* 312 */ "range_or_rows",
+ /* 313 */ "frame_bound",
+ /* 314 */ "frame_bound_s",
+ /* 315 */ "frame_bound_e",
+ /* 316 */ "frame_exclude_opt",
+ /* 317 */ "frame_exclude",
};
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
@@ -159813,385 +161288,388 @@ static const char *const yyRuleName[] = {
/* 16 */ "ifnotexists ::= IF NOT EXISTS",
/* 17 */ "temp ::= TEMP",
/* 18 */ "temp ::=",
- /* 19 */ "create_table_args ::= LP columnlist conslist_opt RP table_options",
+ /* 19 */ "create_table_args ::= LP columnlist conslist_opt RP table_option_set",
/* 20 */ "create_table_args ::= AS select",
- /* 21 */ "table_options ::=",
- /* 22 */ "table_options ::= WITHOUT nm",
- /* 23 */ "columnname ::= nm typetoken",
- /* 24 */ "typetoken ::=",
- /* 25 */ "typetoken ::= typename LP signed RP",
- /* 26 */ "typetoken ::= typename LP signed COMMA signed RP",
- /* 27 */ "typename ::= typename ID|STRING",
- /* 28 */ "scanpt ::=",
- /* 29 */ "scantok ::=",
- /* 30 */ "ccons ::= CONSTRAINT nm",
- /* 31 */ "ccons ::= DEFAULT scantok term",
- /* 32 */ "ccons ::= DEFAULT LP expr RP",
- /* 33 */ "ccons ::= DEFAULT PLUS scantok term",
- /* 34 */ "ccons ::= DEFAULT MINUS scantok term",
- /* 35 */ "ccons ::= DEFAULT scantok ID|INDEXED",
- /* 36 */ "ccons ::= NOT NULL onconf",
- /* 37 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
- /* 38 */ "ccons ::= UNIQUE onconf",
- /* 39 */ "ccons ::= CHECK LP expr RP",
- /* 40 */ "ccons ::= REFERENCES nm eidlist_opt refargs",
- /* 41 */ "ccons ::= defer_subclause",
- /* 42 */ "ccons ::= COLLATE ID|STRING",
- /* 43 */ "generated ::= LP expr RP",
- /* 44 */ "generated ::= LP expr RP ID",
- /* 45 */ "autoinc ::=",
- /* 46 */ "autoinc ::= AUTOINCR",
- /* 47 */ "refargs ::=",
- /* 48 */ "refargs ::= refargs refarg",
- /* 49 */ "refarg ::= MATCH nm",
- /* 50 */ "refarg ::= ON INSERT refact",
- /* 51 */ "refarg ::= ON DELETE refact",
- /* 52 */ "refarg ::= ON UPDATE refact",
- /* 53 */ "refact ::= SET NULL",
- /* 54 */ "refact ::= SET DEFAULT",
- /* 55 */ "refact ::= CASCADE",
- /* 56 */ "refact ::= RESTRICT",
- /* 57 */ "refact ::= NO ACTION",
- /* 58 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
- /* 59 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
- /* 60 */ "init_deferred_pred_opt ::=",
- /* 61 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
- /* 62 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
- /* 63 */ "conslist_opt ::=",
- /* 64 */ "tconscomma ::= COMMA",
- /* 65 */ "tcons ::= CONSTRAINT nm",
- /* 66 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
- /* 67 */ "tcons ::= UNIQUE LP sortlist RP onconf",
- /* 68 */ "tcons ::= CHECK LP expr RP onconf",
- /* 69 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
- /* 70 */ "defer_subclause_opt ::=",
- /* 71 */ "onconf ::=",
- /* 72 */ "onconf ::= ON CONFLICT resolvetype",
- /* 73 */ "orconf ::=",
- /* 74 */ "orconf ::= OR resolvetype",
- /* 75 */ "resolvetype ::= IGNORE",
- /* 76 */ "resolvetype ::= REPLACE",
- /* 77 */ "cmd ::= DROP TABLE ifexists fullname",
- /* 78 */ "ifexists ::= IF EXISTS",
- /* 79 */ "ifexists ::=",
- /* 80 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select",
- /* 81 */ "cmd ::= DROP VIEW ifexists fullname",
- /* 82 */ "cmd ::= select",
- /* 83 */ "select ::= WITH wqlist selectnowith",
- /* 84 */ "select ::= WITH RECURSIVE wqlist selectnowith",
- /* 85 */ "select ::= selectnowith",
- /* 86 */ "selectnowith ::= selectnowith multiselect_op oneselect",
- /* 87 */ "multiselect_op ::= UNION",
- /* 88 */ "multiselect_op ::= UNION ALL",
- /* 89 */ "multiselect_op ::= EXCEPT|INTERSECT",
- /* 90 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
- /* 91 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
- /* 92 */ "values ::= VALUES LP nexprlist RP",
- /* 93 */ "values ::= values COMMA LP nexprlist RP",
- /* 94 */ "distinct ::= DISTINCT",
- /* 95 */ "distinct ::= ALL",
- /* 96 */ "distinct ::=",
- /* 97 */ "sclp ::=",
- /* 98 */ "selcollist ::= sclp scanpt expr scanpt as",
- /* 99 */ "selcollist ::= sclp scanpt STAR",
- /* 100 */ "selcollist ::= sclp scanpt nm DOT STAR",
- /* 101 */ "as ::= AS nm",
- /* 102 */ "as ::=",
- /* 103 */ "from ::=",
- /* 104 */ "from ::= FROM seltablist",
- /* 105 */ "stl_prefix ::= seltablist joinop",
- /* 106 */ "stl_prefix ::=",
- /* 107 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt",
- /* 108 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt",
- /* 109 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt",
- /* 110 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt",
- /* 111 */ "dbnm ::=",
- /* 112 */ "dbnm ::= DOT nm",
- /* 113 */ "fullname ::= nm",
- /* 114 */ "fullname ::= nm DOT nm",
- /* 115 */ "xfullname ::= nm",
- /* 116 */ "xfullname ::= nm DOT nm",
- /* 117 */ "xfullname ::= nm DOT nm AS nm",
- /* 118 */ "xfullname ::= nm AS nm",
- /* 119 */ "joinop ::= COMMA|JOIN",
- /* 120 */ "joinop ::= JOIN_KW JOIN",
- /* 121 */ "joinop ::= JOIN_KW nm JOIN",
- /* 122 */ "joinop ::= JOIN_KW nm nm JOIN",
- /* 123 */ "on_opt ::= ON expr",
- /* 124 */ "on_opt ::=",
- /* 125 */ "indexed_opt ::=",
- /* 126 */ "indexed_opt ::= INDEXED BY nm",
- /* 127 */ "indexed_opt ::= NOT INDEXED",
- /* 128 */ "using_opt ::= USING LP idlist RP",
- /* 129 */ "using_opt ::=",
- /* 130 */ "orderby_opt ::=",
- /* 131 */ "orderby_opt ::= ORDER BY sortlist",
- /* 132 */ "sortlist ::= sortlist COMMA expr sortorder nulls",
- /* 133 */ "sortlist ::= expr sortorder nulls",
- /* 134 */ "sortorder ::= ASC",
- /* 135 */ "sortorder ::= DESC",
- /* 136 */ "sortorder ::=",
- /* 137 */ "nulls ::= NULLS FIRST",
- /* 138 */ "nulls ::= NULLS LAST",
- /* 139 */ "nulls ::=",
- /* 140 */ "groupby_opt ::=",
- /* 141 */ "groupby_opt ::= GROUP BY nexprlist",
- /* 142 */ "having_opt ::=",
- /* 143 */ "having_opt ::= HAVING expr",
- /* 144 */ "limit_opt ::=",
- /* 145 */ "limit_opt ::= LIMIT expr",
- /* 146 */ "limit_opt ::= LIMIT expr OFFSET expr",
- /* 147 */ "limit_opt ::= LIMIT expr COMMA expr",
- /* 148 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret",
- /* 149 */ "where_opt ::=",
- /* 150 */ "where_opt ::= WHERE expr",
- /* 151 */ "where_opt_ret ::=",
- /* 152 */ "where_opt_ret ::= WHERE expr",
- /* 153 */ "where_opt_ret ::= RETURNING selcollist",
- /* 154 */ "where_opt_ret ::= WHERE expr RETURNING selcollist",
- /* 155 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret",
- /* 156 */ "setlist ::= setlist COMMA nm EQ expr",
- /* 157 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
- /* 158 */ "setlist ::= nm EQ expr",
- /* 159 */ "setlist ::= LP idlist RP EQ expr",
- /* 160 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
- /* 161 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning",
- /* 162 */ "upsert ::=",
- /* 163 */ "upsert ::= RETURNING selcollist",
- /* 164 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
- /* 165 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
- /* 166 */ "upsert ::= ON CONFLICT DO NOTHING returning",
- /* 167 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning",
- /* 168 */ "returning ::= RETURNING selcollist",
- /* 169 */ "insert_cmd ::= INSERT orconf",
- /* 170 */ "insert_cmd ::= REPLACE",
- /* 171 */ "idlist_opt ::=",
- /* 172 */ "idlist_opt ::= LP idlist RP",
- /* 173 */ "idlist ::= idlist COMMA nm",
- /* 174 */ "idlist ::= nm",
- /* 175 */ "expr ::= LP expr RP",
- /* 176 */ "expr ::= ID|INDEXED",
- /* 177 */ "expr ::= JOIN_KW",
- /* 178 */ "expr ::= nm DOT nm",
- /* 179 */ "expr ::= nm DOT nm DOT nm",
- /* 180 */ "term ::= NULL|FLOAT|BLOB",
- /* 181 */ "term ::= STRING",
- /* 182 */ "term ::= INTEGER",
- /* 183 */ "expr ::= VARIABLE",
- /* 184 */ "expr ::= expr COLLATE ID|STRING",
- /* 185 */ "expr ::= CAST LP expr AS typetoken RP",
- /* 186 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
- /* 187 */ "expr ::= ID|INDEXED LP STAR RP",
- /* 188 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over",
- /* 189 */ "expr ::= ID|INDEXED LP STAR RP filter_over",
- /* 190 */ "term ::= CTIME_KW",
- /* 191 */ "expr ::= LP nexprlist COMMA expr RP",
- /* 192 */ "expr ::= expr AND expr",
- /* 193 */ "expr ::= expr OR expr",
- /* 194 */ "expr ::= expr LT|GT|GE|LE expr",
- /* 195 */ "expr ::= expr EQ|NE expr",
- /* 196 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
- /* 197 */ "expr ::= expr PLUS|MINUS expr",
- /* 198 */ "expr ::= expr STAR|SLASH|REM expr",
- /* 199 */ "expr ::= expr CONCAT expr",
- /* 200 */ "likeop ::= NOT LIKE_KW|MATCH",
- /* 201 */ "expr ::= expr likeop expr",
- /* 202 */ "expr ::= expr likeop expr ESCAPE expr",
- /* 203 */ "expr ::= expr ISNULL|NOTNULL",
- /* 204 */ "expr ::= expr NOT NULL",
- /* 205 */ "expr ::= expr IS expr",
- /* 206 */ "expr ::= expr IS NOT expr",
- /* 207 */ "expr ::= NOT expr",
- /* 208 */ "expr ::= BITNOT expr",
- /* 209 */ "expr ::= PLUS|MINUS expr",
- /* 210 */ "between_op ::= BETWEEN",
- /* 211 */ "between_op ::= NOT BETWEEN",
- /* 212 */ "expr ::= expr between_op expr AND expr",
- /* 213 */ "in_op ::= IN",
- /* 214 */ "in_op ::= NOT IN",
- /* 215 */ "expr ::= expr in_op LP exprlist RP",
- /* 216 */ "expr ::= LP select RP",
- /* 217 */ "expr ::= expr in_op LP select RP",
- /* 218 */ "expr ::= expr in_op nm dbnm paren_exprlist",
- /* 219 */ "expr ::= EXISTS LP select RP",
- /* 220 */ "expr ::= CASE case_operand case_exprlist case_else END",
- /* 221 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
- /* 222 */ "case_exprlist ::= WHEN expr THEN expr",
- /* 223 */ "case_else ::= ELSE expr",
- /* 224 */ "case_else ::=",
- /* 225 */ "case_operand ::= expr",
- /* 226 */ "case_operand ::=",
- /* 227 */ "exprlist ::=",
- /* 228 */ "nexprlist ::= nexprlist COMMA expr",
- /* 229 */ "nexprlist ::= expr",
- /* 230 */ "paren_exprlist ::=",
- /* 231 */ "paren_exprlist ::= LP exprlist RP",
- /* 232 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
- /* 233 */ "uniqueflag ::= UNIQUE",
- /* 234 */ "uniqueflag ::=",
- /* 235 */ "eidlist_opt ::=",
- /* 236 */ "eidlist_opt ::= LP eidlist RP",
- /* 237 */ "eidlist ::= eidlist COMMA nm collate sortorder",
- /* 238 */ "eidlist ::= nm collate sortorder",
- /* 239 */ "collate ::=",
- /* 240 */ "collate ::= COLLATE ID|STRING",
- /* 241 */ "cmd ::= DROP INDEX ifexists fullname",
- /* 242 */ "cmd ::= VACUUM vinto",
- /* 243 */ "cmd ::= VACUUM nm vinto",
- /* 244 */ "vinto ::= INTO expr",
- /* 245 */ "vinto ::=",
- /* 246 */ "cmd ::= PRAGMA nm dbnm",
- /* 247 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
- /* 248 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
- /* 249 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
- /* 250 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
- /* 251 */ "plus_num ::= PLUS INTEGER|FLOAT",
- /* 252 */ "minus_num ::= MINUS INTEGER|FLOAT",
- /* 253 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
- /* 254 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
- /* 255 */ "trigger_time ::= BEFORE|AFTER",
- /* 256 */ "trigger_time ::= INSTEAD OF",
- /* 257 */ "trigger_time ::=",
- /* 258 */ "trigger_event ::= DELETE|INSERT",
- /* 259 */ "trigger_event ::= UPDATE",
- /* 260 */ "trigger_event ::= UPDATE OF idlist",
- /* 261 */ "when_clause ::=",
- /* 262 */ "when_clause ::= WHEN expr",
- /* 263 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
- /* 264 */ "trigger_cmd_list ::= trigger_cmd SEMI",
- /* 265 */ "trnm ::= nm DOT nm",
- /* 266 */ "tridxby ::= INDEXED BY nm",
- /* 267 */ "tridxby ::= NOT INDEXED",
- /* 268 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
- /* 269 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
- /* 270 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
- /* 271 */ "trigger_cmd ::= scanpt select scanpt",
- /* 272 */ "expr ::= RAISE LP IGNORE RP",
- /* 273 */ "expr ::= RAISE LP raisetype COMMA nm RP",
- /* 274 */ "raisetype ::= ROLLBACK",
- /* 275 */ "raisetype ::= ABORT",
- /* 276 */ "raisetype ::= FAIL",
- /* 277 */ "cmd ::= DROP TRIGGER ifexists fullname",
- /* 278 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
- /* 279 */ "cmd ::= DETACH database_kw_opt expr",
- /* 280 */ "key_opt ::=",
- /* 281 */ "key_opt ::= KEY expr",
- /* 282 */ "cmd ::= REINDEX",
- /* 283 */ "cmd ::= REINDEX nm dbnm",
- /* 284 */ "cmd ::= ANALYZE",
- /* 285 */ "cmd ::= ANALYZE nm dbnm",
- /* 286 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
- /* 287 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
- /* 288 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
- /* 289 */ "add_column_fullname ::= fullname",
- /* 290 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
- /* 291 */ "cmd ::= create_vtab",
- /* 292 */ "cmd ::= create_vtab LP vtabarglist RP",
- /* 293 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
- /* 294 */ "vtabarg ::=",
- /* 295 */ "vtabargtoken ::= ANY",
- /* 296 */ "vtabargtoken ::= lp anylist RP",
- /* 297 */ "lp ::= LP",
- /* 298 */ "with ::= WITH wqlist",
- /* 299 */ "with ::= WITH RECURSIVE wqlist",
- /* 300 */ "wqas ::= AS",
- /* 301 */ "wqas ::= AS MATERIALIZED",
- /* 302 */ "wqas ::= AS NOT MATERIALIZED",
- /* 303 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
- /* 304 */ "wqlist ::= wqitem",
- /* 305 */ "wqlist ::= wqlist COMMA wqitem",
- /* 306 */ "windowdefn_list ::= windowdefn",
- /* 307 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
- /* 308 */ "windowdefn ::= nm AS LP window RP",
- /* 309 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
- /* 310 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
- /* 311 */ "window ::= ORDER BY sortlist frame_opt",
- /* 312 */ "window ::= nm ORDER BY sortlist frame_opt",
- /* 313 */ "window ::= frame_opt",
- /* 314 */ "window ::= nm frame_opt",
- /* 315 */ "frame_opt ::=",
- /* 316 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
- /* 317 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
- /* 318 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
- /* 319 */ "frame_bound_s ::= frame_bound",
- /* 320 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
- /* 321 */ "frame_bound_e ::= frame_bound",
- /* 322 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
- /* 323 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
- /* 324 */ "frame_bound ::= CURRENT ROW",
- /* 325 */ "frame_exclude_opt ::=",
- /* 326 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
- /* 327 */ "frame_exclude ::= NO OTHERS",
- /* 328 */ "frame_exclude ::= CURRENT ROW",
- /* 329 */ "frame_exclude ::= GROUP|TIES",
- /* 330 */ "window_clause ::= WINDOW windowdefn_list",
- /* 331 */ "filter_over ::= filter_clause over_clause",
- /* 332 */ "filter_over ::= over_clause",
- /* 333 */ "filter_over ::= filter_clause",
- /* 334 */ "over_clause ::= OVER LP window RP",
- /* 335 */ "over_clause ::= OVER nm",
- /* 336 */ "filter_clause ::= FILTER LP WHERE expr RP",
- /* 337 */ "input ::= cmdlist",
- /* 338 */ "cmdlist ::= cmdlist ecmd",
- /* 339 */ "cmdlist ::= ecmd",
- /* 340 */ "ecmd ::= SEMI",
- /* 341 */ "ecmd ::= cmdx SEMI",
- /* 342 */ "ecmd ::= explain cmdx SEMI",
- /* 343 */ "trans_opt ::=",
- /* 344 */ "trans_opt ::= TRANSACTION",
- /* 345 */ "trans_opt ::= TRANSACTION nm",
- /* 346 */ "savepoint_opt ::= SAVEPOINT",
- /* 347 */ "savepoint_opt ::=",
- /* 348 */ "cmd ::= create_table create_table_args",
- /* 349 */ "columnlist ::= columnlist COMMA columnname carglist",
- /* 350 */ "columnlist ::= columnname carglist",
- /* 351 */ "nm ::= ID|INDEXED",
- /* 352 */ "nm ::= STRING",
- /* 353 */ "nm ::= JOIN_KW",
- /* 354 */ "typetoken ::= typename",
- /* 355 */ "typename ::= ID|STRING",
- /* 356 */ "signed ::= plus_num",
- /* 357 */ "signed ::= minus_num",
- /* 358 */ "carglist ::= carglist ccons",
- /* 359 */ "carglist ::=",
- /* 360 */ "ccons ::= NULL onconf",
- /* 361 */ "ccons ::= GENERATED ALWAYS AS generated",
- /* 362 */ "ccons ::= AS generated",
- /* 363 */ "conslist_opt ::= COMMA conslist",
- /* 364 */ "conslist ::= conslist tconscomma tcons",
- /* 365 */ "conslist ::= tcons",
- /* 366 */ "tconscomma ::=",
- /* 367 */ "defer_subclause_opt ::= defer_subclause",
- /* 368 */ "resolvetype ::= raisetype",
- /* 369 */ "selectnowith ::= oneselect",
- /* 370 */ "oneselect ::= values",
- /* 371 */ "sclp ::= selcollist COMMA",
- /* 372 */ "as ::= ID|STRING",
- /* 373 */ "returning ::=",
- /* 374 */ "expr ::= term",
- /* 375 */ "likeop ::= LIKE_KW|MATCH",
- /* 376 */ "exprlist ::= nexprlist",
- /* 377 */ "nmnum ::= plus_num",
- /* 378 */ "nmnum ::= nm",
- /* 379 */ "nmnum ::= ON",
- /* 380 */ "nmnum ::= DELETE",
- /* 381 */ "nmnum ::= DEFAULT",
- /* 382 */ "plus_num ::= INTEGER|FLOAT",
- /* 383 */ "foreach_clause ::=",
- /* 384 */ "foreach_clause ::= FOR EACH ROW",
- /* 385 */ "trnm ::= nm",
- /* 386 */ "tridxby ::=",
- /* 387 */ "database_kw_opt ::= DATABASE",
- /* 388 */ "database_kw_opt ::=",
- /* 389 */ "kwcolumn_opt ::=",
- /* 390 */ "kwcolumn_opt ::= COLUMNKW",
- /* 391 */ "vtabarglist ::= vtabarg",
- /* 392 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
- /* 393 */ "vtabarg ::= vtabarg vtabargtoken",
- /* 394 */ "anylist ::=",
- /* 395 */ "anylist ::= anylist LP anylist RP",
- /* 396 */ "anylist ::= anylist ANY",
- /* 397 */ "with ::=",
+ /* 21 */ "table_option_set ::=",
+ /* 22 */ "table_option_set ::= table_option_set COMMA table_option",
+ /* 23 */ "table_option ::= WITHOUT nm",
+ /* 24 */ "table_option ::= nm",
+ /* 25 */ "columnname ::= nm typetoken",
+ /* 26 */ "typetoken ::=",
+ /* 27 */ "typetoken ::= typename LP signed RP",
+ /* 28 */ "typetoken ::= typename LP signed COMMA signed RP",
+ /* 29 */ "typename ::= typename ID|STRING",
+ /* 30 */ "scanpt ::=",
+ /* 31 */ "scantok ::=",
+ /* 32 */ "ccons ::= CONSTRAINT nm",
+ /* 33 */ "ccons ::= DEFAULT scantok term",
+ /* 34 */ "ccons ::= DEFAULT LP expr RP",
+ /* 35 */ "ccons ::= DEFAULT PLUS scantok term",
+ /* 36 */ "ccons ::= DEFAULT MINUS scantok term",
+ /* 37 */ "ccons ::= DEFAULT scantok ID|INDEXED",
+ /* 38 */ "ccons ::= NOT NULL onconf",
+ /* 39 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
+ /* 40 */ "ccons ::= UNIQUE onconf",
+ /* 41 */ "ccons ::= CHECK LP expr RP",
+ /* 42 */ "ccons ::= REFERENCES nm eidlist_opt refargs",
+ /* 43 */ "ccons ::= defer_subclause",
+ /* 44 */ "ccons ::= COLLATE ID|STRING",
+ /* 45 */ "generated ::= LP expr RP",
+ /* 46 */ "generated ::= LP expr RP ID",
+ /* 47 */ "autoinc ::=",
+ /* 48 */ "autoinc ::= AUTOINCR",
+ /* 49 */ "refargs ::=",
+ /* 50 */ "refargs ::= refargs refarg",
+ /* 51 */ "refarg ::= MATCH nm",
+ /* 52 */ "refarg ::= ON INSERT refact",
+ /* 53 */ "refarg ::= ON DELETE refact",
+ /* 54 */ "refarg ::= ON UPDATE refact",
+ /* 55 */ "refact ::= SET NULL",
+ /* 56 */ "refact ::= SET DEFAULT",
+ /* 57 */ "refact ::= CASCADE",
+ /* 58 */ "refact ::= RESTRICT",
+ /* 59 */ "refact ::= NO ACTION",
+ /* 60 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
+ /* 61 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
+ /* 62 */ "init_deferred_pred_opt ::=",
+ /* 63 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
+ /* 64 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
+ /* 65 */ "conslist_opt ::=",
+ /* 66 */ "tconscomma ::= COMMA",
+ /* 67 */ "tcons ::= CONSTRAINT nm",
+ /* 68 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
+ /* 69 */ "tcons ::= UNIQUE LP sortlist RP onconf",
+ /* 70 */ "tcons ::= CHECK LP expr RP onconf",
+ /* 71 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
+ /* 72 */ "defer_subclause_opt ::=",
+ /* 73 */ "onconf ::=",
+ /* 74 */ "onconf ::= ON CONFLICT resolvetype",
+ /* 75 */ "orconf ::=",
+ /* 76 */ "orconf ::= OR resolvetype",
+ /* 77 */ "resolvetype ::= IGNORE",
+ /* 78 */ "resolvetype ::= REPLACE",
+ /* 79 */ "cmd ::= DROP TABLE ifexists fullname",
+ /* 80 */ "ifexists ::= IF EXISTS",
+ /* 81 */ "ifexists ::=",
+ /* 82 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select",
+ /* 83 */ "cmd ::= DROP VIEW ifexists fullname",
+ /* 84 */ "cmd ::= select",
+ /* 85 */ "select ::= WITH wqlist selectnowith",
+ /* 86 */ "select ::= WITH RECURSIVE wqlist selectnowith",
+ /* 87 */ "select ::= selectnowith",
+ /* 88 */ "selectnowith ::= selectnowith multiselect_op oneselect",
+ /* 89 */ "multiselect_op ::= UNION",
+ /* 90 */ "multiselect_op ::= UNION ALL",
+ /* 91 */ "multiselect_op ::= EXCEPT|INTERSECT",
+ /* 92 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
+ /* 93 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
+ /* 94 */ "values ::= VALUES LP nexprlist RP",
+ /* 95 */ "values ::= values COMMA LP nexprlist RP",
+ /* 96 */ "distinct ::= DISTINCT",
+ /* 97 */ "distinct ::= ALL",
+ /* 98 */ "distinct ::=",
+ /* 99 */ "sclp ::=",
+ /* 100 */ "selcollist ::= sclp scanpt expr scanpt as",
+ /* 101 */ "selcollist ::= sclp scanpt STAR",
+ /* 102 */ "selcollist ::= sclp scanpt nm DOT STAR",
+ /* 103 */ "as ::= AS nm",
+ /* 104 */ "as ::=",
+ /* 105 */ "from ::=",
+ /* 106 */ "from ::= FROM seltablist",
+ /* 107 */ "stl_prefix ::= seltablist joinop",
+ /* 108 */ "stl_prefix ::=",
+ /* 109 */ "seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt",
+ /* 110 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt",
+ /* 111 */ "seltablist ::= stl_prefix LP select RP as on_opt using_opt",
+ /* 112 */ "seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt",
+ /* 113 */ "dbnm ::=",
+ /* 114 */ "dbnm ::= DOT nm",
+ /* 115 */ "fullname ::= nm",
+ /* 116 */ "fullname ::= nm DOT nm",
+ /* 117 */ "xfullname ::= nm",
+ /* 118 */ "xfullname ::= nm DOT nm",
+ /* 119 */ "xfullname ::= nm DOT nm AS nm",
+ /* 120 */ "xfullname ::= nm AS nm",
+ /* 121 */ "joinop ::= COMMA|JOIN",
+ /* 122 */ "joinop ::= JOIN_KW JOIN",
+ /* 123 */ "joinop ::= JOIN_KW nm JOIN",
+ /* 124 */ "joinop ::= JOIN_KW nm nm JOIN",
+ /* 125 */ "on_opt ::= ON expr",
+ /* 126 */ "on_opt ::=",
+ /* 127 */ "indexed_opt ::=",
+ /* 128 */ "indexed_opt ::= INDEXED BY nm",
+ /* 129 */ "indexed_opt ::= NOT INDEXED",
+ /* 130 */ "using_opt ::= USING LP idlist RP",
+ /* 131 */ "using_opt ::=",
+ /* 132 */ "orderby_opt ::=",
+ /* 133 */ "orderby_opt ::= ORDER BY sortlist",
+ /* 134 */ "sortlist ::= sortlist COMMA expr sortorder nulls",
+ /* 135 */ "sortlist ::= expr sortorder nulls",
+ /* 136 */ "sortorder ::= ASC",
+ /* 137 */ "sortorder ::= DESC",
+ /* 138 */ "sortorder ::=",
+ /* 139 */ "nulls ::= NULLS FIRST",
+ /* 140 */ "nulls ::= NULLS LAST",
+ /* 141 */ "nulls ::=",
+ /* 142 */ "groupby_opt ::=",
+ /* 143 */ "groupby_opt ::= GROUP BY nexprlist",
+ /* 144 */ "having_opt ::=",
+ /* 145 */ "having_opt ::= HAVING expr",
+ /* 146 */ "limit_opt ::=",
+ /* 147 */ "limit_opt ::= LIMIT expr",
+ /* 148 */ "limit_opt ::= LIMIT expr OFFSET expr",
+ /* 149 */ "limit_opt ::= LIMIT expr COMMA expr",
+ /* 150 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret",
+ /* 151 */ "where_opt ::=",
+ /* 152 */ "where_opt ::= WHERE expr",
+ /* 153 */ "where_opt_ret ::=",
+ /* 154 */ "where_opt_ret ::= WHERE expr",
+ /* 155 */ "where_opt_ret ::= RETURNING selcollist",
+ /* 156 */ "where_opt_ret ::= WHERE expr RETURNING selcollist",
+ /* 157 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret",
+ /* 158 */ "setlist ::= setlist COMMA nm EQ expr",
+ /* 159 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
+ /* 160 */ "setlist ::= nm EQ expr",
+ /* 161 */ "setlist ::= LP idlist RP EQ expr",
+ /* 162 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
+ /* 163 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning",
+ /* 164 */ "upsert ::=",
+ /* 165 */ "upsert ::= RETURNING selcollist",
+ /* 166 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
+ /* 167 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
+ /* 168 */ "upsert ::= ON CONFLICT DO NOTHING returning",
+ /* 169 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning",
+ /* 170 */ "returning ::= RETURNING selcollist",
+ /* 171 */ "insert_cmd ::= INSERT orconf",
+ /* 172 */ "insert_cmd ::= REPLACE",
+ /* 173 */ "idlist_opt ::=",
+ /* 174 */ "idlist_opt ::= LP idlist RP",
+ /* 175 */ "idlist ::= idlist COMMA nm",
+ /* 176 */ "idlist ::= nm",
+ /* 177 */ "expr ::= LP expr RP",
+ /* 178 */ "expr ::= ID|INDEXED",
+ /* 179 */ "expr ::= JOIN_KW",
+ /* 180 */ "expr ::= nm DOT nm",
+ /* 181 */ "expr ::= nm DOT nm DOT nm",
+ /* 182 */ "term ::= NULL|FLOAT|BLOB",
+ /* 183 */ "term ::= STRING",
+ /* 184 */ "term ::= INTEGER",
+ /* 185 */ "expr ::= VARIABLE",
+ /* 186 */ "expr ::= expr COLLATE ID|STRING",
+ /* 187 */ "expr ::= CAST LP expr AS typetoken RP",
+ /* 188 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
+ /* 189 */ "expr ::= ID|INDEXED LP STAR RP",
+ /* 190 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over",
+ /* 191 */ "expr ::= ID|INDEXED LP STAR RP filter_over",
+ /* 192 */ "term ::= CTIME_KW",
+ /* 193 */ "expr ::= LP nexprlist COMMA expr RP",
+ /* 194 */ "expr ::= expr AND expr",
+ /* 195 */ "expr ::= expr OR expr",
+ /* 196 */ "expr ::= expr LT|GT|GE|LE expr",
+ /* 197 */ "expr ::= expr EQ|NE expr",
+ /* 198 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
+ /* 199 */ "expr ::= expr PLUS|MINUS expr",
+ /* 200 */ "expr ::= expr STAR|SLASH|REM expr",
+ /* 201 */ "expr ::= expr CONCAT expr",
+ /* 202 */ "likeop ::= NOT LIKE_KW|MATCH",
+ /* 203 */ "expr ::= expr likeop expr",
+ /* 204 */ "expr ::= expr likeop expr ESCAPE expr",
+ /* 205 */ "expr ::= expr ISNULL|NOTNULL",
+ /* 206 */ "expr ::= expr NOT NULL",
+ /* 207 */ "expr ::= expr IS expr",
+ /* 208 */ "expr ::= expr IS NOT expr",
+ /* 209 */ "expr ::= NOT expr",
+ /* 210 */ "expr ::= BITNOT expr",
+ /* 211 */ "expr ::= PLUS|MINUS expr",
+ /* 212 */ "between_op ::= BETWEEN",
+ /* 213 */ "between_op ::= NOT BETWEEN",
+ /* 214 */ "expr ::= expr between_op expr AND expr",
+ /* 215 */ "in_op ::= IN",
+ /* 216 */ "in_op ::= NOT IN",
+ /* 217 */ "expr ::= expr in_op LP exprlist RP",
+ /* 218 */ "expr ::= LP select RP",
+ /* 219 */ "expr ::= expr in_op LP select RP",
+ /* 220 */ "expr ::= expr in_op nm dbnm paren_exprlist",
+ /* 221 */ "expr ::= EXISTS LP select RP",
+ /* 222 */ "expr ::= CASE case_operand case_exprlist case_else END",
+ /* 223 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
+ /* 224 */ "case_exprlist ::= WHEN expr THEN expr",
+ /* 225 */ "case_else ::= ELSE expr",
+ /* 226 */ "case_else ::=",
+ /* 227 */ "case_operand ::= expr",
+ /* 228 */ "case_operand ::=",
+ /* 229 */ "exprlist ::=",
+ /* 230 */ "nexprlist ::= nexprlist COMMA expr",
+ /* 231 */ "nexprlist ::= expr",
+ /* 232 */ "paren_exprlist ::=",
+ /* 233 */ "paren_exprlist ::= LP exprlist RP",
+ /* 234 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
+ /* 235 */ "uniqueflag ::= UNIQUE",
+ /* 236 */ "uniqueflag ::=",
+ /* 237 */ "eidlist_opt ::=",
+ /* 238 */ "eidlist_opt ::= LP eidlist RP",
+ /* 239 */ "eidlist ::= eidlist COMMA nm collate sortorder",
+ /* 240 */ "eidlist ::= nm collate sortorder",
+ /* 241 */ "collate ::=",
+ /* 242 */ "collate ::= COLLATE ID|STRING",
+ /* 243 */ "cmd ::= DROP INDEX ifexists fullname",
+ /* 244 */ "cmd ::= VACUUM vinto",
+ /* 245 */ "cmd ::= VACUUM nm vinto",
+ /* 246 */ "vinto ::= INTO expr",
+ /* 247 */ "vinto ::=",
+ /* 248 */ "cmd ::= PRAGMA nm dbnm",
+ /* 249 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
+ /* 250 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
+ /* 251 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
+ /* 252 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
+ /* 253 */ "plus_num ::= PLUS INTEGER|FLOAT",
+ /* 254 */ "minus_num ::= MINUS INTEGER|FLOAT",
+ /* 255 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
+ /* 256 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
+ /* 257 */ "trigger_time ::= BEFORE|AFTER",
+ /* 258 */ "trigger_time ::= INSTEAD OF",
+ /* 259 */ "trigger_time ::=",
+ /* 260 */ "trigger_event ::= DELETE|INSERT",
+ /* 261 */ "trigger_event ::= UPDATE",
+ /* 262 */ "trigger_event ::= UPDATE OF idlist",
+ /* 263 */ "when_clause ::=",
+ /* 264 */ "when_clause ::= WHEN expr",
+ /* 265 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
+ /* 266 */ "trigger_cmd_list ::= trigger_cmd SEMI",
+ /* 267 */ "trnm ::= nm DOT nm",
+ /* 268 */ "tridxby ::= INDEXED BY nm",
+ /* 269 */ "tridxby ::= NOT INDEXED",
+ /* 270 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
+ /* 271 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
+ /* 272 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
+ /* 273 */ "trigger_cmd ::= scanpt select scanpt",
+ /* 274 */ "expr ::= RAISE LP IGNORE RP",
+ /* 275 */ "expr ::= RAISE LP raisetype COMMA nm RP",
+ /* 276 */ "raisetype ::= ROLLBACK",
+ /* 277 */ "raisetype ::= ABORT",
+ /* 278 */ "raisetype ::= FAIL",
+ /* 279 */ "cmd ::= DROP TRIGGER ifexists fullname",
+ /* 280 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
+ /* 281 */ "cmd ::= DETACH database_kw_opt expr",
+ /* 282 */ "key_opt ::=",
+ /* 283 */ "key_opt ::= KEY expr",
+ /* 284 */ "cmd ::= REINDEX",
+ /* 285 */ "cmd ::= REINDEX nm dbnm",
+ /* 286 */ "cmd ::= ANALYZE",
+ /* 287 */ "cmd ::= ANALYZE nm dbnm",
+ /* 288 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
+ /* 289 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
+ /* 290 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
+ /* 291 */ "add_column_fullname ::= fullname",
+ /* 292 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
+ /* 293 */ "cmd ::= create_vtab",
+ /* 294 */ "cmd ::= create_vtab LP vtabarglist RP",
+ /* 295 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
+ /* 296 */ "vtabarg ::=",
+ /* 297 */ "vtabargtoken ::= ANY",
+ /* 298 */ "vtabargtoken ::= lp anylist RP",
+ /* 299 */ "lp ::= LP",
+ /* 300 */ "with ::= WITH wqlist",
+ /* 301 */ "with ::= WITH RECURSIVE wqlist",
+ /* 302 */ "wqas ::= AS",
+ /* 303 */ "wqas ::= AS MATERIALIZED",
+ /* 304 */ "wqas ::= AS NOT MATERIALIZED",
+ /* 305 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
+ /* 306 */ "wqlist ::= wqitem",
+ /* 307 */ "wqlist ::= wqlist COMMA wqitem",
+ /* 308 */ "windowdefn_list ::= windowdefn",
+ /* 309 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
+ /* 310 */ "windowdefn ::= nm AS LP window RP",
+ /* 311 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
+ /* 312 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
+ /* 313 */ "window ::= ORDER BY sortlist frame_opt",
+ /* 314 */ "window ::= nm ORDER BY sortlist frame_opt",
+ /* 315 */ "window ::= frame_opt",
+ /* 316 */ "window ::= nm frame_opt",
+ /* 317 */ "frame_opt ::=",
+ /* 318 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
+ /* 319 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
+ /* 320 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
+ /* 321 */ "frame_bound_s ::= frame_bound",
+ /* 322 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
+ /* 323 */ "frame_bound_e ::= frame_bound",
+ /* 324 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
+ /* 325 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
+ /* 326 */ "frame_bound ::= CURRENT ROW",
+ /* 327 */ "frame_exclude_opt ::=",
+ /* 328 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
+ /* 329 */ "frame_exclude ::= NO OTHERS",
+ /* 330 */ "frame_exclude ::= CURRENT ROW",
+ /* 331 */ "frame_exclude ::= GROUP|TIES",
+ /* 332 */ "window_clause ::= WINDOW windowdefn_list",
+ /* 333 */ "filter_over ::= filter_clause over_clause",
+ /* 334 */ "filter_over ::= over_clause",
+ /* 335 */ "filter_over ::= filter_clause",
+ /* 336 */ "over_clause ::= OVER LP window RP",
+ /* 337 */ "over_clause ::= OVER nm",
+ /* 338 */ "filter_clause ::= FILTER LP WHERE expr RP",
+ /* 339 */ "input ::= cmdlist",
+ /* 340 */ "cmdlist ::= cmdlist ecmd",
+ /* 341 */ "cmdlist ::= ecmd",
+ /* 342 */ "ecmd ::= SEMI",
+ /* 343 */ "ecmd ::= cmdx SEMI",
+ /* 344 */ "ecmd ::= explain cmdx SEMI",
+ /* 345 */ "trans_opt ::=",
+ /* 346 */ "trans_opt ::= TRANSACTION",
+ /* 347 */ "trans_opt ::= TRANSACTION nm",
+ /* 348 */ "savepoint_opt ::= SAVEPOINT",
+ /* 349 */ "savepoint_opt ::=",
+ /* 350 */ "cmd ::= create_table create_table_args",
+ /* 351 */ "table_option_set ::= table_option",
+ /* 352 */ "columnlist ::= columnlist COMMA columnname carglist",
+ /* 353 */ "columnlist ::= columnname carglist",
+ /* 354 */ "nm ::= ID|INDEXED",
+ /* 355 */ "nm ::= STRING",
+ /* 356 */ "nm ::= JOIN_KW",
+ /* 357 */ "typetoken ::= typename",
+ /* 358 */ "typename ::= ID|STRING",
+ /* 359 */ "signed ::= plus_num",
+ /* 360 */ "signed ::= minus_num",
+ /* 361 */ "carglist ::= carglist ccons",
+ /* 362 */ "carglist ::=",
+ /* 363 */ "ccons ::= NULL onconf",
+ /* 364 */ "ccons ::= GENERATED ALWAYS AS generated",
+ /* 365 */ "ccons ::= AS generated",
+ /* 366 */ "conslist_opt ::= COMMA conslist",
+ /* 367 */ "conslist ::= conslist tconscomma tcons",
+ /* 368 */ "conslist ::= tcons",
+ /* 369 */ "tconscomma ::=",
+ /* 370 */ "defer_subclause_opt ::= defer_subclause",
+ /* 371 */ "resolvetype ::= raisetype",
+ /* 372 */ "selectnowith ::= oneselect",
+ /* 373 */ "oneselect ::= values",
+ /* 374 */ "sclp ::= selcollist COMMA",
+ /* 375 */ "as ::= ID|STRING",
+ /* 376 */ "returning ::=",
+ /* 377 */ "expr ::= term",
+ /* 378 */ "likeop ::= LIKE_KW|MATCH",
+ /* 379 */ "exprlist ::= nexprlist",
+ /* 380 */ "nmnum ::= plus_num",
+ /* 381 */ "nmnum ::= nm",
+ /* 382 */ "nmnum ::= ON",
+ /* 383 */ "nmnum ::= DELETE",
+ /* 384 */ "nmnum ::= DEFAULT",
+ /* 385 */ "plus_num ::= INTEGER|FLOAT",
+ /* 386 */ "foreach_clause ::=",
+ /* 387 */ "foreach_clause ::= FOR EACH ROW",
+ /* 388 */ "trnm ::= nm",
+ /* 389 */ "tridxby ::=",
+ /* 390 */ "database_kw_opt ::= DATABASE",
+ /* 391 */ "database_kw_opt ::=",
+ /* 392 */ "kwcolumn_opt ::=",
+ /* 393 */ "kwcolumn_opt ::= COLUMNKW",
+ /* 394 */ "vtabarglist ::= vtabarg",
+ /* 395 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
+ /* 396 */ "vtabarg ::= vtabarg vtabargtoken",
+ /* 397 */ "anylist ::=",
+ /* 398 */ "anylist ::= anylist LP anylist RP",
+ /* 399 */ "anylist ::= anylist ANY",
+ /* 400 */ "with ::=",
};
#endif /* NDEBUG */
@@ -160318,98 +161796,98 @@ static void yy_destructor(
*/
/********* Begin destructor definitions ***************************************/
case 203: /* select */
- case 237: /* selectnowith */
- case 238: /* oneselect */
- case 250: /* values */
+ case 238: /* selectnowith */
+ case 239: /* oneselect */
+ case 251: /* values */
{
-sqlite3SelectDelete(pParse->db, (yypminor->yy81));
-}
- break;
- case 214: /* term */
- case 215: /* expr */
- case 244: /* where_opt */
- case 246: /* having_opt */
- case 258: /* on_opt */
- case 265: /* where_opt_ret */
- case 276: /* case_operand */
- case 278: /* case_else */
- case 281: /* vinto */
- case 288: /* when_clause */
- case 293: /* key_opt */
- case 309: /* filter_clause */
+sqlite3SelectDelete(pParse->db, (yypminor->yy303));
+}
+ break;
+ case 215: /* term */
+ case 216: /* expr */
+ case 245: /* where_opt */
+ case 247: /* having_opt */
+ case 259: /* on_opt */
+ case 266: /* where_opt_ret */
+ case 277: /* case_operand */
+ case 279: /* case_else */
+ case 282: /* vinto */
+ case 289: /* when_clause */
+ case 294: /* key_opt */
+ case 310: /* filter_clause */
{
-sqlite3ExprDelete(pParse->db, (yypminor->yy404));
-}
- break;
- case 219: /* eidlist_opt */
- case 229: /* sortlist */
- case 230: /* eidlist */
- case 242: /* selcollist */
- case 245: /* groupby_opt */
- case 247: /* orderby_opt */
- case 251: /* nexprlist */
- case 252: /* sclp */
- case 260: /* exprlist */
- case 266: /* setlist */
- case 275: /* paren_exprlist */
- case 277: /* case_exprlist */
- case 308: /* part_opt */
+sqlite3ExprDelete(pParse->db, (yypminor->yy626));
+}
+ break;
+ case 220: /* eidlist_opt */
+ case 230: /* sortlist */
+ case 231: /* eidlist */
+ case 243: /* selcollist */
+ case 246: /* groupby_opt */
+ case 248: /* orderby_opt */
+ case 252: /* nexprlist */
+ case 253: /* sclp */
+ case 261: /* exprlist */
+ case 267: /* setlist */
+ case 276: /* paren_exprlist */
+ case 278: /* case_exprlist */
+ case 309: /* part_opt */
{
-sqlite3ExprListDelete(pParse->db, (yypminor->yy70));
+sqlite3ExprListDelete(pParse->db, (yypminor->yy562));
}
break;
- case 236: /* fullname */
- case 243: /* from */
- case 254: /* seltablist */
- case 255: /* stl_prefix */
- case 261: /* xfullname */
+ case 237: /* fullname */
+ case 244: /* from */
+ case 255: /* seltablist */
+ case 256: /* stl_prefix */
+ case 262: /* xfullname */
{
-sqlite3SrcListDelete(pParse->db, (yypminor->yy153));
+sqlite3SrcListDelete(pParse->db, (yypminor->yy607));
}
break;
- case 239: /* wqlist */
+ case 240: /* wqlist */
{
-sqlite3WithDelete(pParse->db, (yypminor->yy103));
+sqlite3WithDelete(pParse->db, (yypminor->yy43));
}
break;
- case 249: /* window_clause */
- case 304: /* windowdefn_list */
+ case 250: /* window_clause */
+ case 305: /* windowdefn_list */
{
-sqlite3WindowListDelete(pParse->db, (yypminor->yy49));
+sqlite3WindowListDelete(pParse->db, (yypminor->yy375));
}
break;
- case 259: /* using_opt */
- case 262: /* idlist */
- case 268: /* idlist_opt */
+ case 260: /* using_opt */
+ case 263: /* idlist */
+ case 269: /* idlist_opt */
{
-sqlite3IdListDelete(pParse->db, (yypminor->yy436));
+sqlite3IdListDelete(pParse->db, (yypminor->yy240));
}
break;
- case 271: /* filter_over */
- case 305: /* windowdefn */
- case 306: /* window */
- case 307: /* frame_opt */
- case 310: /* over_clause */
+ case 272: /* filter_over */
+ case 306: /* windowdefn */
+ case 307: /* window */
+ case 308: /* frame_opt */
+ case 311: /* over_clause */
{
-sqlite3WindowDelete(pParse->db, (yypminor->yy49));
+sqlite3WindowDelete(pParse->db, (yypminor->yy375));
}
break;
- case 284: /* trigger_cmd_list */
- case 289: /* trigger_cmd */
+ case 285: /* trigger_cmd_list */
+ case 290: /* trigger_cmd */
{
-sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy157));
+sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy95));
}
break;
- case 286: /* trigger_event */
+ case 287: /* trigger_event */
{
-sqlite3IdListDelete(pParse->db, (yypminor->yy262).b);
+sqlite3IdListDelete(pParse->db, (yypminor->yy570).b);
}
break;
- case 312: /* frame_bound */
- case 313: /* frame_bound_s */
- case 314: /* frame_bound_e */
+ case 313: /* frame_bound */
+ case 314: /* frame_bound_s */
+ case 315: /* frame_bound_e */
{
-sqlite3ExprDelete(pParse->db, (yypminor->yy117).pExpr);
+sqlite3ExprDelete(pParse->db, (yypminor->yy81).pExpr);
}
break;
/********* End destructor definitions *****************************************/
@@ -160719,385 +162197,388 @@ static const YYCODETYPE yyRuleInfoLhs[] = {
198, /* (16) ifnotexists ::= IF NOT EXISTS */
197, /* (17) temp ::= TEMP */
197, /* (18) temp ::= */
- 195, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
+ 195, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
195, /* (20) create_table_args ::= AS select */
- 202, /* (21) table_options ::= */
- 202, /* (22) table_options ::= WITHOUT nm */
- 204, /* (23) columnname ::= nm typetoken */
- 206, /* (24) typetoken ::= */
- 206, /* (25) typetoken ::= typename LP signed RP */
- 206, /* (26) typetoken ::= typename LP signed COMMA signed RP */
- 207, /* (27) typename ::= typename ID|STRING */
- 211, /* (28) scanpt ::= */
- 212, /* (29) scantok ::= */
- 213, /* (30) ccons ::= CONSTRAINT nm */
- 213, /* (31) ccons ::= DEFAULT scantok term */
- 213, /* (32) ccons ::= DEFAULT LP expr RP */
- 213, /* (33) ccons ::= DEFAULT PLUS scantok term */
- 213, /* (34) ccons ::= DEFAULT MINUS scantok term */
- 213, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
- 213, /* (36) ccons ::= NOT NULL onconf */
- 213, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
- 213, /* (38) ccons ::= UNIQUE onconf */
- 213, /* (39) ccons ::= CHECK LP expr RP */
- 213, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
- 213, /* (41) ccons ::= defer_subclause */
- 213, /* (42) ccons ::= COLLATE ID|STRING */
- 222, /* (43) generated ::= LP expr RP */
- 222, /* (44) generated ::= LP expr RP ID */
- 218, /* (45) autoinc ::= */
- 218, /* (46) autoinc ::= AUTOINCR */
- 220, /* (47) refargs ::= */
- 220, /* (48) refargs ::= refargs refarg */
- 223, /* (49) refarg ::= MATCH nm */
- 223, /* (50) refarg ::= ON INSERT refact */
- 223, /* (51) refarg ::= ON DELETE refact */
- 223, /* (52) refarg ::= ON UPDATE refact */
- 224, /* (53) refact ::= SET NULL */
- 224, /* (54) refact ::= SET DEFAULT */
- 224, /* (55) refact ::= CASCADE */
- 224, /* (56) refact ::= RESTRICT */
- 224, /* (57) refact ::= NO ACTION */
- 221, /* (58) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
- 221, /* (59) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
- 225, /* (60) init_deferred_pred_opt ::= */
- 225, /* (61) init_deferred_pred_opt ::= INITIALLY DEFERRED */
- 225, /* (62) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
- 201, /* (63) conslist_opt ::= */
- 227, /* (64) tconscomma ::= COMMA */
- 228, /* (65) tcons ::= CONSTRAINT nm */
- 228, /* (66) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
- 228, /* (67) tcons ::= UNIQUE LP sortlist RP onconf */
- 228, /* (68) tcons ::= CHECK LP expr RP onconf */
- 228, /* (69) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
- 231, /* (70) defer_subclause_opt ::= */
- 216, /* (71) onconf ::= */
- 216, /* (72) onconf ::= ON CONFLICT resolvetype */
- 232, /* (73) orconf ::= */
- 232, /* (74) orconf ::= OR resolvetype */
- 233, /* (75) resolvetype ::= IGNORE */
- 233, /* (76) resolvetype ::= REPLACE */
- 189, /* (77) cmd ::= DROP TABLE ifexists fullname */
- 235, /* (78) ifexists ::= IF EXISTS */
- 235, /* (79) ifexists ::= */
- 189, /* (80) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
- 189, /* (81) cmd ::= DROP VIEW ifexists fullname */
- 189, /* (82) cmd ::= select */
- 203, /* (83) select ::= WITH wqlist selectnowith */
- 203, /* (84) select ::= WITH RECURSIVE wqlist selectnowith */
- 203, /* (85) select ::= selectnowith */
- 237, /* (86) selectnowith ::= selectnowith multiselect_op oneselect */
- 240, /* (87) multiselect_op ::= UNION */
- 240, /* (88) multiselect_op ::= UNION ALL */
- 240, /* (89) multiselect_op ::= EXCEPT|INTERSECT */
- 238, /* (90) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
- 238, /* (91) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
- 250, /* (92) values ::= VALUES LP nexprlist RP */
- 250, /* (93) values ::= values COMMA LP nexprlist RP */
- 241, /* (94) distinct ::= DISTINCT */
- 241, /* (95) distinct ::= ALL */
- 241, /* (96) distinct ::= */
- 252, /* (97) sclp ::= */
- 242, /* (98) selcollist ::= sclp scanpt expr scanpt as */
- 242, /* (99) selcollist ::= sclp scanpt STAR */
- 242, /* (100) selcollist ::= sclp scanpt nm DOT STAR */
- 253, /* (101) as ::= AS nm */
- 253, /* (102) as ::= */
- 243, /* (103) from ::= */
- 243, /* (104) from ::= FROM seltablist */
- 255, /* (105) stl_prefix ::= seltablist joinop */
- 255, /* (106) stl_prefix ::= */
- 254, /* (107) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
- 254, /* (108) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
- 254, /* (109) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
- 254, /* (110) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
- 199, /* (111) dbnm ::= */
- 199, /* (112) dbnm ::= DOT nm */
- 236, /* (113) fullname ::= nm */
- 236, /* (114) fullname ::= nm DOT nm */
- 261, /* (115) xfullname ::= nm */
- 261, /* (116) xfullname ::= nm DOT nm */
- 261, /* (117) xfullname ::= nm DOT nm AS nm */
- 261, /* (118) xfullname ::= nm AS nm */
- 256, /* (119) joinop ::= COMMA|JOIN */
- 256, /* (120) joinop ::= JOIN_KW JOIN */
- 256, /* (121) joinop ::= JOIN_KW nm JOIN */
- 256, /* (122) joinop ::= JOIN_KW nm nm JOIN */
- 258, /* (123) on_opt ::= ON expr */
- 258, /* (124) on_opt ::= */
- 257, /* (125) indexed_opt ::= */
- 257, /* (126) indexed_opt ::= INDEXED BY nm */
- 257, /* (127) indexed_opt ::= NOT INDEXED */
- 259, /* (128) using_opt ::= USING LP idlist RP */
- 259, /* (129) using_opt ::= */
- 247, /* (130) orderby_opt ::= */
- 247, /* (131) orderby_opt ::= ORDER BY sortlist */
- 229, /* (132) sortlist ::= sortlist COMMA expr sortorder nulls */
- 229, /* (133) sortlist ::= expr sortorder nulls */
- 217, /* (134) sortorder ::= ASC */
- 217, /* (135) sortorder ::= DESC */
- 217, /* (136) sortorder ::= */
- 263, /* (137) nulls ::= NULLS FIRST */
- 263, /* (138) nulls ::= NULLS LAST */
- 263, /* (139) nulls ::= */
- 245, /* (140) groupby_opt ::= */
- 245, /* (141) groupby_opt ::= GROUP BY nexprlist */
- 246, /* (142) having_opt ::= */
- 246, /* (143) having_opt ::= HAVING expr */
- 248, /* (144) limit_opt ::= */
- 248, /* (145) limit_opt ::= LIMIT expr */
- 248, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
- 248, /* (147) limit_opt ::= LIMIT expr COMMA expr */
- 189, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
- 244, /* (149) where_opt ::= */
- 244, /* (150) where_opt ::= WHERE expr */
- 265, /* (151) where_opt_ret ::= */
- 265, /* (152) where_opt_ret ::= WHERE expr */
- 265, /* (153) where_opt_ret ::= RETURNING selcollist */
- 265, /* (154) where_opt_ret ::= WHERE expr RETURNING selcollist */
- 189, /* (155) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
- 266, /* (156) setlist ::= setlist COMMA nm EQ expr */
- 266, /* (157) setlist ::= setlist COMMA LP idlist RP EQ expr */
- 266, /* (158) setlist ::= nm EQ expr */
- 266, /* (159) setlist ::= LP idlist RP EQ expr */
- 189, /* (160) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
- 189, /* (161) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
- 269, /* (162) upsert ::= */
- 269, /* (163) upsert ::= RETURNING selcollist */
- 269, /* (164) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
- 269, /* (165) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
- 269, /* (166) upsert ::= ON CONFLICT DO NOTHING returning */
- 269, /* (167) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
- 270, /* (168) returning ::= RETURNING selcollist */
- 267, /* (169) insert_cmd ::= INSERT orconf */
- 267, /* (170) insert_cmd ::= REPLACE */
- 268, /* (171) idlist_opt ::= */
- 268, /* (172) idlist_opt ::= LP idlist RP */
- 262, /* (173) idlist ::= idlist COMMA nm */
- 262, /* (174) idlist ::= nm */
- 215, /* (175) expr ::= LP expr RP */
- 215, /* (176) expr ::= ID|INDEXED */
- 215, /* (177) expr ::= JOIN_KW */
- 215, /* (178) expr ::= nm DOT nm */
- 215, /* (179) expr ::= nm DOT nm DOT nm */
- 214, /* (180) term ::= NULL|FLOAT|BLOB */
- 214, /* (181) term ::= STRING */
- 214, /* (182) term ::= INTEGER */
- 215, /* (183) expr ::= VARIABLE */
- 215, /* (184) expr ::= expr COLLATE ID|STRING */
- 215, /* (185) expr ::= CAST LP expr AS typetoken RP */
- 215, /* (186) expr ::= ID|INDEXED LP distinct exprlist RP */
- 215, /* (187) expr ::= ID|INDEXED LP STAR RP */
- 215, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
- 215, /* (189) expr ::= ID|INDEXED LP STAR RP filter_over */
- 214, /* (190) term ::= CTIME_KW */
- 215, /* (191) expr ::= LP nexprlist COMMA expr RP */
- 215, /* (192) expr ::= expr AND expr */
- 215, /* (193) expr ::= expr OR expr */
- 215, /* (194) expr ::= expr LT|GT|GE|LE expr */
- 215, /* (195) expr ::= expr EQ|NE expr */
- 215, /* (196) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
- 215, /* (197) expr ::= expr PLUS|MINUS expr */
- 215, /* (198) expr ::= expr STAR|SLASH|REM expr */
- 215, /* (199) expr ::= expr CONCAT expr */
- 272, /* (200) likeop ::= NOT LIKE_KW|MATCH */
- 215, /* (201) expr ::= expr likeop expr */
- 215, /* (202) expr ::= expr likeop expr ESCAPE expr */
- 215, /* (203) expr ::= expr ISNULL|NOTNULL */
- 215, /* (204) expr ::= expr NOT NULL */
- 215, /* (205) expr ::= expr IS expr */
- 215, /* (206) expr ::= expr IS NOT expr */
- 215, /* (207) expr ::= NOT expr */
- 215, /* (208) expr ::= BITNOT expr */
- 215, /* (209) expr ::= PLUS|MINUS expr */
- 273, /* (210) between_op ::= BETWEEN */
- 273, /* (211) between_op ::= NOT BETWEEN */
- 215, /* (212) expr ::= expr between_op expr AND expr */
- 274, /* (213) in_op ::= IN */
- 274, /* (214) in_op ::= NOT IN */
- 215, /* (215) expr ::= expr in_op LP exprlist RP */
- 215, /* (216) expr ::= LP select RP */
- 215, /* (217) expr ::= expr in_op LP select RP */
- 215, /* (218) expr ::= expr in_op nm dbnm paren_exprlist */
- 215, /* (219) expr ::= EXISTS LP select RP */
- 215, /* (220) expr ::= CASE case_operand case_exprlist case_else END */
- 277, /* (221) case_exprlist ::= case_exprlist WHEN expr THEN expr */
- 277, /* (222) case_exprlist ::= WHEN expr THEN expr */
- 278, /* (223) case_else ::= ELSE expr */
- 278, /* (224) case_else ::= */
- 276, /* (225) case_operand ::= expr */
- 276, /* (226) case_operand ::= */
- 260, /* (227) exprlist ::= */
- 251, /* (228) nexprlist ::= nexprlist COMMA expr */
- 251, /* (229) nexprlist ::= expr */
- 275, /* (230) paren_exprlist ::= */
- 275, /* (231) paren_exprlist ::= LP exprlist RP */
- 189, /* (232) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
- 279, /* (233) uniqueflag ::= UNIQUE */
- 279, /* (234) uniqueflag ::= */
- 219, /* (235) eidlist_opt ::= */
- 219, /* (236) eidlist_opt ::= LP eidlist RP */
- 230, /* (237) eidlist ::= eidlist COMMA nm collate sortorder */
- 230, /* (238) eidlist ::= nm collate sortorder */
- 280, /* (239) collate ::= */
- 280, /* (240) collate ::= COLLATE ID|STRING */
- 189, /* (241) cmd ::= DROP INDEX ifexists fullname */
- 189, /* (242) cmd ::= VACUUM vinto */
- 189, /* (243) cmd ::= VACUUM nm vinto */
- 281, /* (244) vinto ::= INTO expr */
- 281, /* (245) vinto ::= */
- 189, /* (246) cmd ::= PRAGMA nm dbnm */
- 189, /* (247) cmd ::= PRAGMA nm dbnm EQ nmnum */
- 189, /* (248) cmd ::= PRAGMA nm dbnm LP nmnum RP */
- 189, /* (249) cmd ::= PRAGMA nm dbnm EQ minus_num */
- 189, /* (250) cmd ::= PRAGMA nm dbnm LP minus_num RP */
- 209, /* (251) plus_num ::= PLUS INTEGER|FLOAT */
- 210, /* (252) minus_num ::= MINUS INTEGER|FLOAT */
- 189, /* (253) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
- 283, /* (254) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
- 285, /* (255) trigger_time ::= BEFORE|AFTER */
- 285, /* (256) trigger_time ::= INSTEAD OF */
- 285, /* (257) trigger_time ::= */
- 286, /* (258) trigger_event ::= DELETE|INSERT */
- 286, /* (259) trigger_event ::= UPDATE */
- 286, /* (260) trigger_event ::= UPDATE OF idlist */
- 288, /* (261) when_clause ::= */
- 288, /* (262) when_clause ::= WHEN expr */
- 284, /* (263) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
- 284, /* (264) trigger_cmd_list ::= trigger_cmd SEMI */
- 290, /* (265) trnm ::= nm DOT nm */
- 291, /* (266) tridxby ::= INDEXED BY nm */
- 291, /* (267) tridxby ::= NOT INDEXED */
- 289, /* (268) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
- 289, /* (269) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
- 289, /* (270) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
- 289, /* (271) trigger_cmd ::= scanpt select scanpt */
- 215, /* (272) expr ::= RAISE LP IGNORE RP */
- 215, /* (273) expr ::= RAISE LP raisetype COMMA nm RP */
- 234, /* (274) raisetype ::= ROLLBACK */
- 234, /* (275) raisetype ::= ABORT */
- 234, /* (276) raisetype ::= FAIL */
- 189, /* (277) cmd ::= DROP TRIGGER ifexists fullname */
- 189, /* (278) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
- 189, /* (279) cmd ::= DETACH database_kw_opt expr */
- 293, /* (280) key_opt ::= */
- 293, /* (281) key_opt ::= KEY expr */
- 189, /* (282) cmd ::= REINDEX */
- 189, /* (283) cmd ::= REINDEX nm dbnm */
- 189, /* (284) cmd ::= ANALYZE */
- 189, /* (285) cmd ::= ANALYZE nm dbnm */
- 189, /* (286) cmd ::= ALTER TABLE fullname RENAME TO nm */
- 189, /* (287) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
- 189, /* (288) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
- 294, /* (289) add_column_fullname ::= fullname */
- 189, /* (290) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
- 189, /* (291) cmd ::= create_vtab */
- 189, /* (292) cmd ::= create_vtab LP vtabarglist RP */
- 296, /* (293) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
- 298, /* (294) vtabarg ::= */
- 299, /* (295) vtabargtoken ::= ANY */
- 299, /* (296) vtabargtoken ::= lp anylist RP */
- 300, /* (297) lp ::= LP */
- 264, /* (298) with ::= WITH wqlist */
- 264, /* (299) with ::= WITH RECURSIVE wqlist */
- 303, /* (300) wqas ::= AS */
- 303, /* (301) wqas ::= AS MATERIALIZED */
- 303, /* (302) wqas ::= AS NOT MATERIALIZED */
- 302, /* (303) wqitem ::= nm eidlist_opt wqas LP select RP */
- 239, /* (304) wqlist ::= wqitem */
- 239, /* (305) wqlist ::= wqlist COMMA wqitem */
- 304, /* (306) windowdefn_list ::= windowdefn */
- 304, /* (307) windowdefn_list ::= windowdefn_list COMMA windowdefn */
- 305, /* (308) windowdefn ::= nm AS LP window RP */
- 306, /* (309) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
- 306, /* (310) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
- 306, /* (311) window ::= ORDER BY sortlist frame_opt */
- 306, /* (312) window ::= nm ORDER BY sortlist frame_opt */
- 306, /* (313) window ::= frame_opt */
- 306, /* (314) window ::= nm frame_opt */
- 307, /* (315) frame_opt ::= */
- 307, /* (316) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
- 307, /* (317) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
- 311, /* (318) range_or_rows ::= RANGE|ROWS|GROUPS */
- 313, /* (319) frame_bound_s ::= frame_bound */
- 313, /* (320) frame_bound_s ::= UNBOUNDED PRECEDING */
- 314, /* (321) frame_bound_e ::= frame_bound */
- 314, /* (322) frame_bound_e ::= UNBOUNDED FOLLOWING */
- 312, /* (323) frame_bound ::= expr PRECEDING|FOLLOWING */
- 312, /* (324) frame_bound ::= CURRENT ROW */
- 315, /* (325) frame_exclude_opt ::= */
- 315, /* (326) frame_exclude_opt ::= EXCLUDE frame_exclude */
- 316, /* (327) frame_exclude ::= NO OTHERS */
- 316, /* (328) frame_exclude ::= CURRENT ROW */
- 316, /* (329) frame_exclude ::= GROUP|TIES */
- 249, /* (330) window_clause ::= WINDOW windowdefn_list */
- 271, /* (331) filter_over ::= filter_clause over_clause */
- 271, /* (332) filter_over ::= over_clause */
- 271, /* (333) filter_over ::= filter_clause */
- 310, /* (334) over_clause ::= OVER LP window RP */
- 310, /* (335) over_clause ::= OVER nm */
- 309, /* (336) filter_clause ::= FILTER LP WHERE expr RP */
- 184, /* (337) input ::= cmdlist */
- 185, /* (338) cmdlist ::= cmdlist ecmd */
- 185, /* (339) cmdlist ::= ecmd */
- 186, /* (340) ecmd ::= SEMI */
- 186, /* (341) ecmd ::= cmdx SEMI */
- 186, /* (342) ecmd ::= explain cmdx SEMI */
- 191, /* (343) trans_opt ::= */
- 191, /* (344) trans_opt ::= TRANSACTION */
- 191, /* (345) trans_opt ::= TRANSACTION nm */
- 193, /* (346) savepoint_opt ::= SAVEPOINT */
- 193, /* (347) savepoint_opt ::= */
- 189, /* (348) cmd ::= create_table create_table_args */
- 200, /* (349) columnlist ::= columnlist COMMA columnname carglist */
- 200, /* (350) columnlist ::= columnname carglist */
- 192, /* (351) nm ::= ID|INDEXED */
- 192, /* (352) nm ::= STRING */
- 192, /* (353) nm ::= JOIN_KW */
- 206, /* (354) typetoken ::= typename */
- 207, /* (355) typename ::= ID|STRING */
- 208, /* (356) signed ::= plus_num */
- 208, /* (357) signed ::= minus_num */
- 205, /* (358) carglist ::= carglist ccons */
- 205, /* (359) carglist ::= */
- 213, /* (360) ccons ::= NULL onconf */
- 213, /* (361) ccons ::= GENERATED ALWAYS AS generated */
- 213, /* (362) ccons ::= AS generated */
- 201, /* (363) conslist_opt ::= COMMA conslist */
- 226, /* (364) conslist ::= conslist tconscomma tcons */
- 226, /* (365) conslist ::= tcons */
- 227, /* (366) tconscomma ::= */
- 231, /* (367) defer_subclause_opt ::= defer_subclause */
- 233, /* (368) resolvetype ::= raisetype */
- 237, /* (369) selectnowith ::= oneselect */
- 238, /* (370) oneselect ::= values */
- 252, /* (371) sclp ::= selcollist COMMA */
- 253, /* (372) as ::= ID|STRING */
- 270, /* (373) returning ::= */
- 215, /* (374) expr ::= term */
- 272, /* (375) likeop ::= LIKE_KW|MATCH */
- 260, /* (376) exprlist ::= nexprlist */
- 282, /* (377) nmnum ::= plus_num */
- 282, /* (378) nmnum ::= nm */
- 282, /* (379) nmnum ::= ON */
- 282, /* (380) nmnum ::= DELETE */
- 282, /* (381) nmnum ::= DEFAULT */
- 209, /* (382) plus_num ::= INTEGER|FLOAT */
- 287, /* (383) foreach_clause ::= */
- 287, /* (384) foreach_clause ::= FOR EACH ROW */
- 290, /* (385) trnm ::= nm */
- 291, /* (386) tridxby ::= */
- 292, /* (387) database_kw_opt ::= DATABASE */
- 292, /* (388) database_kw_opt ::= */
- 295, /* (389) kwcolumn_opt ::= */
- 295, /* (390) kwcolumn_opt ::= COLUMNKW */
- 297, /* (391) vtabarglist ::= vtabarg */
- 297, /* (392) vtabarglist ::= vtabarglist COMMA vtabarg */
- 298, /* (393) vtabarg ::= vtabarg vtabargtoken */
- 301, /* (394) anylist ::= */
- 301, /* (395) anylist ::= anylist LP anylist RP */
- 301, /* (396) anylist ::= anylist ANY */
- 264, /* (397) with ::= */
+ 202, /* (21) table_option_set ::= */
+ 202, /* (22) table_option_set ::= table_option_set COMMA table_option */
+ 204, /* (23) table_option ::= WITHOUT nm */
+ 204, /* (24) table_option ::= nm */
+ 205, /* (25) columnname ::= nm typetoken */
+ 207, /* (26) typetoken ::= */
+ 207, /* (27) typetoken ::= typename LP signed RP */
+ 207, /* (28) typetoken ::= typename LP signed COMMA signed RP */
+ 208, /* (29) typename ::= typename ID|STRING */
+ 212, /* (30) scanpt ::= */
+ 213, /* (31) scantok ::= */
+ 214, /* (32) ccons ::= CONSTRAINT nm */
+ 214, /* (33) ccons ::= DEFAULT scantok term */
+ 214, /* (34) ccons ::= DEFAULT LP expr RP */
+ 214, /* (35) ccons ::= DEFAULT PLUS scantok term */
+ 214, /* (36) ccons ::= DEFAULT MINUS scantok term */
+ 214, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
+ 214, /* (38) ccons ::= NOT NULL onconf */
+ 214, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
+ 214, /* (40) ccons ::= UNIQUE onconf */
+ 214, /* (41) ccons ::= CHECK LP expr RP */
+ 214, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
+ 214, /* (43) ccons ::= defer_subclause */
+ 214, /* (44) ccons ::= COLLATE ID|STRING */
+ 223, /* (45) generated ::= LP expr RP */
+ 223, /* (46) generated ::= LP expr RP ID */
+ 219, /* (47) autoinc ::= */
+ 219, /* (48) autoinc ::= AUTOINCR */
+ 221, /* (49) refargs ::= */
+ 221, /* (50) refargs ::= refargs refarg */
+ 224, /* (51) refarg ::= MATCH nm */
+ 224, /* (52) refarg ::= ON INSERT refact */
+ 224, /* (53) refarg ::= ON DELETE refact */
+ 224, /* (54) refarg ::= ON UPDATE refact */
+ 225, /* (55) refact ::= SET NULL */
+ 225, /* (56) refact ::= SET DEFAULT */
+ 225, /* (57) refact ::= CASCADE */
+ 225, /* (58) refact ::= RESTRICT */
+ 225, /* (59) refact ::= NO ACTION */
+ 222, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
+ 222, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
+ 226, /* (62) init_deferred_pred_opt ::= */
+ 226, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
+ 226, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
+ 201, /* (65) conslist_opt ::= */
+ 228, /* (66) tconscomma ::= COMMA */
+ 229, /* (67) tcons ::= CONSTRAINT nm */
+ 229, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
+ 229, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
+ 229, /* (70) tcons ::= CHECK LP expr RP onconf */
+ 229, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
+ 232, /* (72) defer_subclause_opt ::= */
+ 217, /* (73) onconf ::= */
+ 217, /* (74) onconf ::= ON CONFLICT resolvetype */
+ 233, /* (75) orconf ::= */
+ 233, /* (76) orconf ::= OR resolvetype */
+ 234, /* (77) resolvetype ::= IGNORE */
+ 234, /* (78) resolvetype ::= REPLACE */
+ 189, /* (79) cmd ::= DROP TABLE ifexists fullname */
+ 236, /* (80) ifexists ::= IF EXISTS */
+ 236, /* (81) ifexists ::= */
+ 189, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
+ 189, /* (83) cmd ::= DROP VIEW ifexists fullname */
+ 189, /* (84) cmd ::= select */
+ 203, /* (85) select ::= WITH wqlist selectnowith */
+ 203, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
+ 203, /* (87) select ::= selectnowith */
+ 238, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
+ 241, /* (89) multiselect_op ::= UNION */
+ 241, /* (90) multiselect_op ::= UNION ALL */
+ 241, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
+ 239, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
+ 239, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
+ 251, /* (94) values ::= VALUES LP nexprlist RP */
+ 251, /* (95) values ::= values COMMA LP nexprlist RP */
+ 242, /* (96) distinct ::= DISTINCT */
+ 242, /* (97) distinct ::= ALL */
+ 242, /* (98) distinct ::= */
+ 253, /* (99) sclp ::= */
+ 243, /* (100) selcollist ::= sclp scanpt expr scanpt as */
+ 243, /* (101) selcollist ::= sclp scanpt STAR */
+ 243, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
+ 254, /* (103) as ::= AS nm */
+ 254, /* (104) as ::= */
+ 244, /* (105) from ::= */
+ 244, /* (106) from ::= FROM seltablist */
+ 256, /* (107) stl_prefix ::= seltablist joinop */
+ 256, /* (108) stl_prefix ::= */
+ 255, /* (109) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
+ 255, /* (110) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
+ 255, /* (111) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
+ 255, /* (112) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
+ 199, /* (113) dbnm ::= */
+ 199, /* (114) dbnm ::= DOT nm */
+ 237, /* (115) fullname ::= nm */
+ 237, /* (116) fullname ::= nm DOT nm */
+ 262, /* (117) xfullname ::= nm */
+ 262, /* (118) xfullname ::= nm DOT nm */
+ 262, /* (119) xfullname ::= nm DOT nm AS nm */
+ 262, /* (120) xfullname ::= nm AS nm */
+ 257, /* (121) joinop ::= COMMA|JOIN */
+ 257, /* (122) joinop ::= JOIN_KW JOIN */
+ 257, /* (123) joinop ::= JOIN_KW nm JOIN */
+ 257, /* (124) joinop ::= JOIN_KW nm nm JOIN */
+ 259, /* (125) on_opt ::= ON expr */
+ 259, /* (126) on_opt ::= */
+ 258, /* (127) indexed_opt ::= */
+ 258, /* (128) indexed_opt ::= INDEXED BY nm */
+ 258, /* (129) indexed_opt ::= NOT INDEXED */
+ 260, /* (130) using_opt ::= USING LP idlist RP */
+ 260, /* (131) using_opt ::= */
+ 248, /* (132) orderby_opt ::= */
+ 248, /* (133) orderby_opt ::= ORDER BY sortlist */
+ 230, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
+ 230, /* (135) sortlist ::= expr sortorder nulls */
+ 218, /* (136) sortorder ::= ASC */
+ 218, /* (137) sortorder ::= DESC */
+ 218, /* (138) sortorder ::= */
+ 264, /* (139) nulls ::= NULLS FIRST */
+ 264, /* (140) nulls ::= NULLS LAST */
+ 264, /* (141) nulls ::= */
+ 246, /* (142) groupby_opt ::= */
+ 246, /* (143) groupby_opt ::= GROUP BY nexprlist */
+ 247, /* (144) having_opt ::= */
+ 247, /* (145) having_opt ::= HAVING expr */
+ 249, /* (146) limit_opt ::= */
+ 249, /* (147) limit_opt ::= LIMIT expr */
+ 249, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
+ 249, /* (149) limit_opt ::= LIMIT expr COMMA expr */
+ 189, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
+ 245, /* (151) where_opt ::= */
+ 245, /* (152) where_opt ::= WHERE expr */
+ 266, /* (153) where_opt_ret ::= */
+ 266, /* (154) where_opt_ret ::= WHERE expr */
+ 266, /* (155) where_opt_ret ::= RETURNING selcollist */
+ 266, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
+ 189, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
+ 267, /* (158) setlist ::= setlist COMMA nm EQ expr */
+ 267, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
+ 267, /* (160) setlist ::= nm EQ expr */
+ 267, /* (161) setlist ::= LP idlist RP EQ expr */
+ 189, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
+ 189, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
+ 270, /* (164) upsert ::= */
+ 270, /* (165) upsert ::= RETURNING selcollist */
+ 270, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
+ 270, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
+ 270, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
+ 270, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
+ 271, /* (170) returning ::= RETURNING selcollist */
+ 268, /* (171) insert_cmd ::= INSERT orconf */
+ 268, /* (172) insert_cmd ::= REPLACE */
+ 269, /* (173) idlist_opt ::= */
+ 269, /* (174) idlist_opt ::= LP idlist RP */
+ 263, /* (175) idlist ::= idlist COMMA nm */
+ 263, /* (176) idlist ::= nm */
+ 216, /* (177) expr ::= LP expr RP */
+ 216, /* (178) expr ::= ID|INDEXED */
+ 216, /* (179) expr ::= JOIN_KW */
+ 216, /* (180) expr ::= nm DOT nm */
+ 216, /* (181) expr ::= nm DOT nm DOT nm */
+ 215, /* (182) term ::= NULL|FLOAT|BLOB */
+ 215, /* (183) term ::= STRING */
+ 215, /* (184) term ::= INTEGER */
+ 216, /* (185) expr ::= VARIABLE */
+ 216, /* (186) expr ::= expr COLLATE ID|STRING */
+ 216, /* (187) expr ::= CAST LP expr AS typetoken RP */
+ 216, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */
+ 216, /* (189) expr ::= ID|INDEXED LP STAR RP */
+ 216, /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
+ 216, /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */
+ 215, /* (192) term ::= CTIME_KW */
+ 216, /* (193) expr ::= LP nexprlist COMMA expr RP */
+ 216, /* (194) expr ::= expr AND expr */
+ 216, /* (195) expr ::= expr OR expr */
+ 216, /* (196) expr ::= expr LT|GT|GE|LE expr */
+ 216, /* (197) expr ::= expr EQ|NE expr */
+ 216, /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
+ 216, /* (199) expr ::= expr PLUS|MINUS expr */
+ 216, /* (200) expr ::= expr STAR|SLASH|REM expr */
+ 216, /* (201) expr ::= expr CONCAT expr */
+ 273, /* (202) likeop ::= NOT LIKE_KW|MATCH */
+ 216, /* (203) expr ::= expr likeop expr */
+ 216, /* (204) expr ::= expr likeop expr ESCAPE expr */
+ 216, /* (205) expr ::= expr ISNULL|NOTNULL */
+ 216, /* (206) expr ::= expr NOT NULL */
+ 216, /* (207) expr ::= expr IS expr */
+ 216, /* (208) expr ::= expr IS NOT expr */
+ 216, /* (209) expr ::= NOT expr */
+ 216, /* (210) expr ::= BITNOT expr */
+ 216, /* (211) expr ::= PLUS|MINUS expr */
+ 274, /* (212) between_op ::= BETWEEN */
+ 274, /* (213) between_op ::= NOT BETWEEN */
+ 216, /* (214) expr ::= expr between_op expr AND expr */
+ 275, /* (215) in_op ::= IN */
+ 275, /* (216) in_op ::= NOT IN */
+ 216, /* (217) expr ::= expr in_op LP exprlist RP */
+ 216, /* (218) expr ::= LP select RP */
+ 216, /* (219) expr ::= expr in_op LP select RP */
+ 216, /* (220) expr ::= expr in_op nm dbnm paren_exprlist */
+ 216, /* (221) expr ::= EXISTS LP select RP */
+ 216, /* (222) expr ::= CASE case_operand case_exprlist case_else END */
+ 278, /* (223) case_exprlist ::= case_exprlist WHEN expr THEN expr */
+ 278, /* (224) case_exprlist ::= WHEN expr THEN expr */
+ 279, /* (225) case_else ::= ELSE expr */
+ 279, /* (226) case_else ::= */
+ 277, /* (227) case_operand ::= expr */
+ 277, /* (228) case_operand ::= */
+ 261, /* (229) exprlist ::= */
+ 252, /* (230) nexprlist ::= nexprlist COMMA expr */
+ 252, /* (231) nexprlist ::= expr */
+ 276, /* (232) paren_exprlist ::= */
+ 276, /* (233) paren_exprlist ::= LP exprlist RP */
+ 189, /* (234) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
+ 280, /* (235) uniqueflag ::= UNIQUE */
+ 280, /* (236) uniqueflag ::= */
+ 220, /* (237) eidlist_opt ::= */
+ 220, /* (238) eidlist_opt ::= LP eidlist RP */
+ 231, /* (239) eidlist ::= eidlist COMMA nm collate sortorder */
+ 231, /* (240) eidlist ::= nm collate sortorder */
+ 281, /* (241) collate ::= */
+ 281, /* (242) collate ::= COLLATE ID|STRING */
+ 189, /* (243) cmd ::= DROP INDEX ifexists fullname */
+ 189, /* (244) cmd ::= VACUUM vinto */
+ 189, /* (245) cmd ::= VACUUM nm vinto */
+ 282, /* (246) vinto ::= INTO expr */
+ 282, /* (247) vinto ::= */
+ 189, /* (248) cmd ::= PRAGMA nm dbnm */
+ 189, /* (249) cmd ::= PRAGMA nm dbnm EQ nmnum */
+ 189, /* (250) cmd ::= PRAGMA nm dbnm LP nmnum RP */
+ 189, /* (251) cmd ::= PRAGMA nm dbnm EQ minus_num */
+ 189, /* (252) cmd ::= PRAGMA nm dbnm LP minus_num RP */
+ 210, /* (253) plus_num ::= PLUS INTEGER|FLOAT */
+ 211, /* (254) minus_num ::= MINUS INTEGER|FLOAT */
+ 189, /* (255) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
+ 284, /* (256) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
+ 286, /* (257) trigger_time ::= BEFORE|AFTER */
+ 286, /* (258) trigger_time ::= INSTEAD OF */
+ 286, /* (259) trigger_time ::= */
+ 287, /* (260) trigger_event ::= DELETE|INSERT */
+ 287, /* (261) trigger_event ::= UPDATE */
+ 287, /* (262) trigger_event ::= UPDATE OF idlist */
+ 289, /* (263) when_clause ::= */
+ 289, /* (264) when_clause ::= WHEN expr */
+ 285, /* (265) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
+ 285, /* (266) trigger_cmd_list ::= trigger_cmd SEMI */
+ 291, /* (267) trnm ::= nm DOT nm */
+ 292, /* (268) tridxby ::= INDEXED BY nm */
+ 292, /* (269) tridxby ::= NOT INDEXED */
+ 290, /* (270) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
+ 290, /* (271) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
+ 290, /* (272) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
+ 290, /* (273) trigger_cmd ::= scanpt select scanpt */
+ 216, /* (274) expr ::= RAISE LP IGNORE RP */
+ 216, /* (275) expr ::= RAISE LP raisetype COMMA nm RP */
+ 235, /* (276) raisetype ::= ROLLBACK */
+ 235, /* (277) raisetype ::= ABORT */
+ 235, /* (278) raisetype ::= FAIL */
+ 189, /* (279) cmd ::= DROP TRIGGER ifexists fullname */
+ 189, /* (280) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+ 189, /* (281) cmd ::= DETACH database_kw_opt expr */
+ 294, /* (282) key_opt ::= */
+ 294, /* (283) key_opt ::= KEY expr */
+ 189, /* (284) cmd ::= REINDEX */
+ 189, /* (285) cmd ::= REINDEX nm dbnm */
+ 189, /* (286) cmd ::= ANALYZE */
+ 189, /* (287) cmd ::= ANALYZE nm dbnm */
+ 189, /* (288) cmd ::= ALTER TABLE fullname RENAME TO nm */
+ 189, /* (289) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
+ 189, /* (290) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
+ 295, /* (291) add_column_fullname ::= fullname */
+ 189, /* (292) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
+ 189, /* (293) cmd ::= create_vtab */
+ 189, /* (294) cmd ::= create_vtab LP vtabarglist RP */
+ 297, /* (295) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+ 299, /* (296) vtabarg ::= */
+ 300, /* (297) vtabargtoken ::= ANY */
+ 300, /* (298) vtabargtoken ::= lp anylist RP */
+ 301, /* (299) lp ::= LP */
+ 265, /* (300) with ::= WITH wqlist */
+ 265, /* (301) with ::= WITH RECURSIVE wqlist */
+ 304, /* (302) wqas ::= AS */
+ 304, /* (303) wqas ::= AS MATERIALIZED */
+ 304, /* (304) wqas ::= AS NOT MATERIALIZED */
+ 303, /* (305) wqitem ::= nm eidlist_opt wqas LP select RP */
+ 240, /* (306) wqlist ::= wqitem */
+ 240, /* (307) wqlist ::= wqlist COMMA wqitem */
+ 305, /* (308) windowdefn_list ::= windowdefn */
+ 305, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
+ 306, /* (310) windowdefn ::= nm AS LP window RP */
+ 307, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+ 307, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+ 307, /* (313) window ::= ORDER BY sortlist frame_opt */
+ 307, /* (314) window ::= nm ORDER BY sortlist frame_opt */
+ 307, /* (315) window ::= frame_opt */
+ 307, /* (316) window ::= nm frame_opt */
+ 308, /* (317) frame_opt ::= */
+ 308, /* (318) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+ 308, /* (319) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+ 312, /* (320) range_or_rows ::= RANGE|ROWS|GROUPS */
+ 314, /* (321) frame_bound_s ::= frame_bound */
+ 314, /* (322) frame_bound_s ::= UNBOUNDED PRECEDING */
+ 315, /* (323) frame_bound_e ::= frame_bound */
+ 315, /* (324) frame_bound_e ::= UNBOUNDED FOLLOWING */
+ 313, /* (325) frame_bound ::= expr PRECEDING|FOLLOWING */
+ 313, /* (326) frame_bound ::= CURRENT ROW */
+ 316, /* (327) frame_exclude_opt ::= */
+ 316, /* (328) frame_exclude_opt ::= EXCLUDE frame_exclude */
+ 317, /* (329) frame_exclude ::= NO OTHERS */
+ 317, /* (330) frame_exclude ::= CURRENT ROW */
+ 317, /* (331) frame_exclude ::= GROUP|TIES */
+ 250, /* (332) window_clause ::= WINDOW windowdefn_list */
+ 272, /* (333) filter_over ::= filter_clause over_clause */
+ 272, /* (334) filter_over ::= over_clause */
+ 272, /* (335) filter_over ::= filter_clause */
+ 311, /* (336) over_clause ::= OVER LP window RP */
+ 311, /* (337) over_clause ::= OVER nm */
+ 310, /* (338) filter_clause ::= FILTER LP WHERE expr RP */
+ 184, /* (339) input ::= cmdlist */
+ 185, /* (340) cmdlist ::= cmdlist ecmd */
+ 185, /* (341) cmdlist ::= ecmd */
+ 186, /* (342) ecmd ::= SEMI */
+ 186, /* (343) ecmd ::= cmdx SEMI */
+ 186, /* (344) ecmd ::= explain cmdx SEMI */
+ 191, /* (345) trans_opt ::= */
+ 191, /* (346) trans_opt ::= TRANSACTION */
+ 191, /* (347) trans_opt ::= TRANSACTION nm */
+ 193, /* (348) savepoint_opt ::= SAVEPOINT */
+ 193, /* (349) savepoint_opt ::= */
+ 189, /* (350) cmd ::= create_table create_table_args */
+ 202, /* (351) table_option_set ::= table_option */
+ 200, /* (352) columnlist ::= columnlist COMMA columnname carglist */
+ 200, /* (353) columnlist ::= columnname carglist */
+ 192, /* (354) nm ::= ID|INDEXED */
+ 192, /* (355) nm ::= STRING */
+ 192, /* (356) nm ::= JOIN_KW */
+ 207, /* (357) typetoken ::= typename */
+ 208, /* (358) typename ::= ID|STRING */
+ 209, /* (359) signed ::= plus_num */
+ 209, /* (360) signed ::= minus_num */
+ 206, /* (361) carglist ::= carglist ccons */
+ 206, /* (362) carglist ::= */
+ 214, /* (363) ccons ::= NULL onconf */
+ 214, /* (364) ccons ::= GENERATED ALWAYS AS generated */
+ 214, /* (365) ccons ::= AS generated */
+ 201, /* (366) conslist_opt ::= COMMA conslist */
+ 227, /* (367) conslist ::= conslist tconscomma tcons */
+ 227, /* (368) conslist ::= tcons */
+ 228, /* (369) tconscomma ::= */
+ 232, /* (370) defer_subclause_opt ::= defer_subclause */
+ 234, /* (371) resolvetype ::= raisetype */
+ 238, /* (372) selectnowith ::= oneselect */
+ 239, /* (373) oneselect ::= values */
+ 253, /* (374) sclp ::= selcollist COMMA */
+ 254, /* (375) as ::= ID|STRING */
+ 271, /* (376) returning ::= */
+ 216, /* (377) expr ::= term */
+ 273, /* (378) likeop ::= LIKE_KW|MATCH */
+ 261, /* (379) exprlist ::= nexprlist */
+ 283, /* (380) nmnum ::= plus_num */
+ 283, /* (381) nmnum ::= nm */
+ 283, /* (382) nmnum ::= ON */
+ 283, /* (383) nmnum ::= DELETE */
+ 283, /* (384) nmnum ::= DEFAULT */
+ 210, /* (385) plus_num ::= INTEGER|FLOAT */
+ 288, /* (386) foreach_clause ::= */
+ 288, /* (387) foreach_clause ::= FOR EACH ROW */
+ 291, /* (388) trnm ::= nm */
+ 292, /* (389) tridxby ::= */
+ 293, /* (390) database_kw_opt ::= DATABASE */
+ 293, /* (391) database_kw_opt ::= */
+ 296, /* (392) kwcolumn_opt ::= */
+ 296, /* (393) kwcolumn_opt ::= COLUMNKW */
+ 298, /* (394) vtabarglist ::= vtabarg */
+ 298, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
+ 299, /* (396) vtabarg ::= vtabarg vtabargtoken */
+ 302, /* (397) anylist ::= */
+ 302, /* (398) anylist ::= anylist LP anylist RP */
+ 302, /* (399) anylist ::= anylist ANY */
+ 265, /* (400) with ::= */
};
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
@@ -161122,385 +162603,388 @@ static const signed char yyRuleInfoNRhs[] = {
-3, /* (16) ifnotexists ::= IF NOT EXISTS */
-1, /* (17) temp ::= TEMP */
0, /* (18) temp ::= */
- -5, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
+ -5, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
-2, /* (20) create_table_args ::= AS select */
- 0, /* (21) table_options ::= */
- -2, /* (22) table_options ::= WITHOUT nm */
- -2, /* (23) columnname ::= nm typetoken */
- 0, /* (24) typetoken ::= */
- -4, /* (25) typetoken ::= typename LP signed RP */
- -6, /* (26) typetoken ::= typename LP signed COMMA signed RP */
- -2, /* (27) typename ::= typename ID|STRING */
- 0, /* (28) scanpt ::= */
- 0, /* (29) scantok ::= */
- -2, /* (30) ccons ::= CONSTRAINT nm */
- -3, /* (31) ccons ::= DEFAULT scantok term */
- -4, /* (32) ccons ::= DEFAULT LP expr RP */
- -4, /* (33) ccons ::= DEFAULT PLUS scantok term */
- -4, /* (34) ccons ::= DEFAULT MINUS scantok term */
- -3, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
- -3, /* (36) ccons ::= NOT NULL onconf */
- -5, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
- -2, /* (38) ccons ::= UNIQUE onconf */
- -4, /* (39) ccons ::= CHECK LP expr RP */
- -4, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
- -1, /* (41) ccons ::= defer_subclause */
- -2, /* (42) ccons ::= COLLATE ID|STRING */
- -3, /* (43) generated ::= LP expr RP */
- -4, /* (44) generated ::= LP expr RP ID */
- 0, /* (45) autoinc ::= */
- -1, /* (46) autoinc ::= AUTOINCR */
- 0, /* (47) refargs ::= */
- -2, /* (48) refargs ::= refargs refarg */
- -2, /* (49) refarg ::= MATCH nm */
- -3, /* (50) refarg ::= ON INSERT refact */
- -3, /* (51) refarg ::= ON DELETE refact */
- -3, /* (52) refarg ::= ON UPDATE refact */
- -2, /* (53) refact ::= SET NULL */
- -2, /* (54) refact ::= SET DEFAULT */
- -1, /* (55) refact ::= CASCADE */
- -1, /* (56) refact ::= RESTRICT */
- -2, /* (57) refact ::= NO ACTION */
- -3, /* (58) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
- -2, /* (59) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
- 0, /* (60) init_deferred_pred_opt ::= */
- -2, /* (61) init_deferred_pred_opt ::= INITIALLY DEFERRED */
- -2, /* (62) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
- 0, /* (63) conslist_opt ::= */
- -1, /* (64) tconscomma ::= COMMA */
- -2, /* (65) tcons ::= CONSTRAINT nm */
- -7, /* (66) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
- -5, /* (67) tcons ::= UNIQUE LP sortlist RP onconf */
- -5, /* (68) tcons ::= CHECK LP expr RP onconf */
- -10, /* (69) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
- 0, /* (70) defer_subclause_opt ::= */
- 0, /* (71) onconf ::= */
- -3, /* (72) onconf ::= ON CONFLICT resolvetype */
- 0, /* (73) orconf ::= */
- -2, /* (74) orconf ::= OR resolvetype */
- -1, /* (75) resolvetype ::= IGNORE */
- -1, /* (76) resolvetype ::= REPLACE */
- -4, /* (77) cmd ::= DROP TABLE ifexists fullname */
- -2, /* (78) ifexists ::= IF EXISTS */
- 0, /* (79) ifexists ::= */
- -9, /* (80) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
- -4, /* (81) cmd ::= DROP VIEW ifexists fullname */
- -1, /* (82) cmd ::= select */
- -3, /* (83) select ::= WITH wqlist selectnowith */
- -4, /* (84) select ::= WITH RECURSIVE wqlist selectnowith */
- -1, /* (85) select ::= selectnowith */
- -3, /* (86) selectnowith ::= selectnowith multiselect_op oneselect */
- -1, /* (87) multiselect_op ::= UNION */
- -2, /* (88) multiselect_op ::= UNION ALL */
- -1, /* (89) multiselect_op ::= EXCEPT|INTERSECT */
- -9, /* (90) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
- -10, /* (91) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
- -4, /* (92) values ::= VALUES LP nexprlist RP */
- -5, /* (93) values ::= values COMMA LP nexprlist RP */
- -1, /* (94) distinct ::= DISTINCT */
- -1, /* (95) distinct ::= ALL */
- 0, /* (96) distinct ::= */
- 0, /* (97) sclp ::= */
- -5, /* (98) selcollist ::= sclp scanpt expr scanpt as */
- -3, /* (99) selcollist ::= sclp scanpt STAR */
- -5, /* (100) selcollist ::= sclp scanpt nm DOT STAR */
- -2, /* (101) as ::= AS nm */
- 0, /* (102) as ::= */
- 0, /* (103) from ::= */
- -2, /* (104) from ::= FROM seltablist */
- -2, /* (105) stl_prefix ::= seltablist joinop */
- 0, /* (106) stl_prefix ::= */
- -7, /* (107) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
- -9, /* (108) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
- -7, /* (109) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
- -7, /* (110) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
- 0, /* (111) dbnm ::= */
- -2, /* (112) dbnm ::= DOT nm */
- -1, /* (113) fullname ::= nm */
- -3, /* (114) fullname ::= nm DOT nm */
- -1, /* (115) xfullname ::= nm */
- -3, /* (116) xfullname ::= nm DOT nm */
- -5, /* (117) xfullname ::= nm DOT nm AS nm */
- -3, /* (118) xfullname ::= nm AS nm */
- -1, /* (119) joinop ::= COMMA|JOIN */
- -2, /* (120) joinop ::= JOIN_KW JOIN */
- -3, /* (121) joinop ::= JOIN_KW nm JOIN */
- -4, /* (122) joinop ::= JOIN_KW nm nm JOIN */
- -2, /* (123) on_opt ::= ON expr */
- 0, /* (124) on_opt ::= */
- 0, /* (125) indexed_opt ::= */
- -3, /* (126) indexed_opt ::= INDEXED BY nm */
- -2, /* (127) indexed_opt ::= NOT INDEXED */
- -4, /* (128) using_opt ::= USING LP idlist RP */
- 0, /* (129) using_opt ::= */
- 0, /* (130) orderby_opt ::= */
- -3, /* (131) orderby_opt ::= ORDER BY sortlist */
- -5, /* (132) sortlist ::= sortlist COMMA expr sortorder nulls */
- -3, /* (133) sortlist ::= expr sortorder nulls */
- -1, /* (134) sortorder ::= ASC */
- -1, /* (135) sortorder ::= DESC */
- 0, /* (136) sortorder ::= */
- -2, /* (137) nulls ::= NULLS FIRST */
- -2, /* (138) nulls ::= NULLS LAST */
- 0, /* (139) nulls ::= */
- 0, /* (140) groupby_opt ::= */
- -3, /* (141) groupby_opt ::= GROUP BY nexprlist */
- 0, /* (142) having_opt ::= */
- -2, /* (143) having_opt ::= HAVING expr */
- 0, /* (144) limit_opt ::= */
- -2, /* (145) limit_opt ::= LIMIT expr */
- -4, /* (146) limit_opt ::= LIMIT expr OFFSET expr */
- -4, /* (147) limit_opt ::= LIMIT expr COMMA expr */
- -6, /* (148) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
- 0, /* (149) where_opt ::= */
- -2, /* (150) where_opt ::= WHERE expr */
- 0, /* (151) where_opt_ret ::= */
- -2, /* (152) where_opt_ret ::= WHERE expr */
- -2, /* (153) where_opt_ret ::= RETURNING selcollist */
- -4, /* (154) where_opt_ret ::= WHERE expr RETURNING selcollist */
- -9, /* (155) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
- -5, /* (156) setlist ::= setlist COMMA nm EQ expr */
- -7, /* (157) setlist ::= setlist COMMA LP idlist RP EQ expr */
- -3, /* (158) setlist ::= nm EQ expr */
- -5, /* (159) setlist ::= LP idlist RP EQ expr */
- -7, /* (160) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
- -8, /* (161) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
- 0, /* (162) upsert ::= */
- -2, /* (163) upsert ::= RETURNING selcollist */
- -12, /* (164) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
- -9, /* (165) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
- -5, /* (166) upsert ::= ON CONFLICT DO NOTHING returning */
- -8, /* (167) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
- -2, /* (168) returning ::= RETURNING selcollist */
- -2, /* (169) insert_cmd ::= INSERT orconf */
- -1, /* (170) insert_cmd ::= REPLACE */
- 0, /* (171) idlist_opt ::= */
- -3, /* (172) idlist_opt ::= LP idlist RP */
- -3, /* (173) idlist ::= idlist COMMA nm */
- -1, /* (174) idlist ::= nm */
- -3, /* (175) expr ::= LP expr RP */
- -1, /* (176) expr ::= ID|INDEXED */
- -1, /* (177) expr ::= JOIN_KW */
- -3, /* (178) expr ::= nm DOT nm */
- -5, /* (179) expr ::= nm DOT nm DOT nm */
- -1, /* (180) term ::= NULL|FLOAT|BLOB */
- -1, /* (181) term ::= STRING */
- -1, /* (182) term ::= INTEGER */
- -1, /* (183) expr ::= VARIABLE */
- -3, /* (184) expr ::= expr COLLATE ID|STRING */
- -6, /* (185) expr ::= CAST LP expr AS typetoken RP */
- -5, /* (186) expr ::= ID|INDEXED LP distinct exprlist RP */
- -4, /* (187) expr ::= ID|INDEXED LP STAR RP */
- -6, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
- -5, /* (189) expr ::= ID|INDEXED LP STAR RP filter_over */
- -1, /* (190) term ::= CTIME_KW */
- -5, /* (191) expr ::= LP nexprlist COMMA expr RP */
- -3, /* (192) expr ::= expr AND expr */
- -3, /* (193) expr ::= expr OR expr */
- -3, /* (194) expr ::= expr LT|GT|GE|LE expr */
- -3, /* (195) expr ::= expr EQ|NE expr */
- -3, /* (196) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
- -3, /* (197) expr ::= expr PLUS|MINUS expr */
- -3, /* (198) expr ::= expr STAR|SLASH|REM expr */
- -3, /* (199) expr ::= expr CONCAT expr */
- -2, /* (200) likeop ::= NOT LIKE_KW|MATCH */
- -3, /* (201) expr ::= expr likeop expr */
- -5, /* (202) expr ::= expr likeop expr ESCAPE expr */
- -2, /* (203) expr ::= expr ISNULL|NOTNULL */
- -3, /* (204) expr ::= expr NOT NULL */
- -3, /* (205) expr ::= expr IS expr */
- -4, /* (206) expr ::= expr IS NOT expr */
- -2, /* (207) expr ::= NOT expr */
- -2, /* (208) expr ::= BITNOT expr */
- -2, /* (209) expr ::= PLUS|MINUS expr */
- -1, /* (210) between_op ::= BETWEEN */
- -2, /* (211) between_op ::= NOT BETWEEN */
- -5, /* (212) expr ::= expr between_op expr AND expr */
- -1, /* (213) in_op ::= IN */
- -2, /* (214) in_op ::= NOT IN */
- -5, /* (215) expr ::= expr in_op LP exprlist RP */
- -3, /* (216) expr ::= LP select RP */
- -5, /* (217) expr ::= expr in_op LP select RP */
- -5, /* (218) expr ::= expr in_op nm dbnm paren_exprlist */
- -4, /* (219) expr ::= EXISTS LP select RP */
- -5, /* (220) expr ::= CASE case_operand case_exprlist case_else END */
- -5, /* (221) case_exprlist ::= case_exprlist WHEN expr THEN expr */
- -4, /* (222) case_exprlist ::= WHEN expr THEN expr */
- -2, /* (223) case_else ::= ELSE expr */
- 0, /* (224) case_else ::= */
- -1, /* (225) case_operand ::= expr */
- 0, /* (226) case_operand ::= */
- 0, /* (227) exprlist ::= */
- -3, /* (228) nexprlist ::= nexprlist COMMA expr */
- -1, /* (229) nexprlist ::= expr */
- 0, /* (230) paren_exprlist ::= */
- -3, /* (231) paren_exprlist ::= LP exprlist RP */
- -12, /* (232) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
- -1, /* (233) uniqueflag ::= UNIQUE */
- 0, /* (234) uniqueflag ::= */
- 0, /* (235) eidlist_opt ::= */
- -3, /* (236) eidlist_opt ::= LP eidlist RP */
- -5, /* (237) eidlist ::= eidlist COMMA nm collate sortorder */
- -3, /* (238) eidlist ::= nm collate sortorder */
- 0, /* (239) collate ::= */
- -2, /* (240) collate ::= COLLATE ID|STRING */
- -4, /* (241) cmd ::= DROP INDEX ifexists fullname */
- -2, /* (242) cmd ::= VACUUM vinto */
- -3, /* (243) cmd ::= VACUUM nm vinto */
- -2, /* (244) vinto ::= INTO expr */
- 0, /* (245) vinto ::= */
- -3, /* (246) cmd ::= PRAGMA nm dbnm */
- -5, /* (247) cmd ::= PRAGMA nm dbnm EQ nmnum */
- -6, /* (248) cmd ::= PRAGMA nm dbnm LP nmnum RP */
- -5, /* (249) cmd ::= PRAGMA nm dbnm EQ minus_num */
- -6, /* (250) cmd ::= PRAGMA nm dbnm LP minus_num RP */
- -2, /* (251) plus_num ::= PLUS INTEGER|FLOAT */
- -2, /* (252) minus_num ::= MINUS INTEGER|FLOAT */
- -5, /* (253) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
- -11, /* (254) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
- -1, /* (255) trigger_time ::= BEFORE|AFTER */
- -2, /* (256) trigger_time ::= INSTEAD OF */
- 0, /* (257) trigger_time ::= */
- -1, /* (258) trigger_event ::= DELETE|INSERT */
- -1, /* (259) trigger_event ::= UPDATE */
- -3, /* (260) trigger_event ::= UPDATE OF idlist */
- 0, /* (261) when_clause ::= */
- -2, /* (262) when_clause ::= WHEN expr */
- -3, /* (263) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
- -2, /* (264) trigger_cmd_list ::= trigger_cmd SEMI */
- -3, /* (265) trnm ::= nm DOT nm */
- -3, /* (266) tridxby ::= INDEXED BY nm */
- -2, /* (267) tridxby ::= NOT INDEXED */
- -9, /* (268) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
- -8, /* (269) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
- -6, /* (270) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
- -3, /* (271) trigger_cmd ::= scanpt select scanpt */
- -4, /* (272) expr ::= RAISE LP IGNORE RP */
- -6, /* (273) expr ::= RAISE LP raisetype COMMA nm RP */
- -1, /* (274) raisetype ::= ROLLBACK */
- -1, /* (275) raisetype ::= ABORT */
- -1, /* (276) raisetype ::= FAIL */
- -4, /* (277) cmd ::= DROP TRIGGER ifexists fullname */
- -6, /* (278) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
- -3, /* (279) cmd ::= DETACH database_kw_opt expr */
- 0, /* (280) key_opt ::= */
- -2, /* (281) key_opt ::= KEY expr */
- -1, /* (282) cmd ::= REINDEX */
- -3, /* (283) cmd ::= REINDEX nm dbnm */
- -1, /* (284) cmd ::= ANALYZE */
- -3, /* (285) cmd ::= ANALYZE nm dbnm */
- -6, /* (286) cmd ::= ALTER TABLE fullname RENAME TO nm */
- -7, /* (287) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
- -6, /* (288) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
- -1, /* (289) add_column_fullname ::= fullname */
- -8, /* (290) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
- -1, /* (291) cmd ::= create_vtab */
- -4, /* (292) cmd ::= create_vtab LP vtabarglist RP */
- -8, /* (293) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
- 0, /* (294) vtabarg ::= */
- -1, /* (295) vtabargtoken ::= ANY */
- -3, /* (296) vtabargtoken ::= lp anylist RP */
- -1, /* (297) lp ::= LP */
- -2, /* (298) with ::= WITH wqlist */
- -3, /* (299) with ::= WITH RECURSIVE wqlist */
- -1, /* (300) wqas ::= AS */
- -2, /* (301) wqas ::= AS MATERIALIZED */
- -3, /* (302) wqas ::= AS NOT MATERIALIZED */
- -6, /* (303) wqitem ::= nm eidlist_opt wqas LP select RP */
- -1, /* (304) wqlist ::= wqitem */
- -3, /* (305) wqlist ::= wqlist COMMA wqitem */
- -1, /* (306) windowdefn_list ::= windowdefn */
- -3, /* (307) windowdefn_list ::= windowdefn_list COMMA windowdefn */
- -5, /* (308) windowdefn ::= nm AS LP window RP */
- -5, /* (309) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
- -6, /* (310) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
- -4, /* (311) window ::= ORDER BY sortlist frame_opt */
- -5, /* (312) window ::= nm ORDER BY sortlist frame_opt */
- -1, /* (313) window ::= frame_opt */
- -2, /* (314) window ::= nm frame_opt */
- 0, /* (315) frame_opt ::= */
- -3, /* (316) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
- -6, /* (317) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
- -1, /* (318) range_or_rows ::= RANGE|ROWS|GROUPS */
- -1, /* (319) frame_bound_s ::= frame_bound */
- -2, /* (320) frame_bound_s ::= UNBOUNDED PRECEDING */
- -1, /* (321) frame_bound_e ::= frame_bound */
- -2, /* (322) frame_bound_e ::= UNBOUNDED FOLLOWING */
- -2, /* (323) frame_bound ::= expr PRECEDING|FOLLOWING */
- -2, /* (324) frame_bound ::= CURRENT ROW */
- 0, /* (325) frame_exclude_opt ::= */
- -2, /* (326) frame_exclude_opt ::= EXCLUDE frame_exclude */
- -2, /* (327) frame_exclude ::= NO OTHERS */
- -2, /* (328) frame_exclude ::= CURRENT ROW */
- -1, /* (329) frame_exclude ::= GROUP|TIES */
- -2, /* (330) window_clause ::= WINDOW windowdefn_list */
- -2, /* (331) filter_over ::= filter_clause over_clause */
- -1, /* (332) filter_over ::= over_clause */
- -1, /* (333) filter_over ::= filter_clause */
- -4, /* (334) over_clause ::= OVER LP window RP */
- -2, /* (335) over_clause ::= OVER nm */
- -5, /* (336) filter_clause ::= FILTER LP WHERE expr RP */
- -1, /* (337) input ::= cmdlist */
- -2, /* (338) cmdlist ::= cmdlist ecmd */
- -1, /* (339) cmdlist ::= ecmd */
- -1, /* (340) ecmd ::= SEMI */
- -2, /* (341) ecmd ::= cmdx SEMI */
- -3, /* (342) ecmd ::= explain cmdx SEMI */
- 0, /* (343) trans_opt ::= */
- -1, /* (344) trans_opt ::= TRANSACTION */
- -2, /* (345) trans_opt ::= TRANSACTION nm */
- -1, /* (346) savepoint_opt ::= SAVEPOINT */
- 0, /* (347) savepoint_opt ::= */
- -2, /* (348) cmd ::= create_table create_table_args */
- -4, /* (349) columnlist ::= columnlist COMMA columnname carglist */
- -2, /* (350) columnlist ::= columnname carglist */
- -1, /* (351) nm ::= ID|INDEXED */
- -1, /* (352) nm ::= STRING */
- -1, /* (353) nm ::= JOIN_KW */
- -1, /* (354) typetoken ::= typename */
- -1, /* (355) typename ::= ID|STRING */
- -1, /* (356) signed ::= plus_num */
- -1, /* (357) signed ::= minus_num */
- -2, /* (358) carglist ::= carglist ccons */
- 0, /* (359) carglist ::= */
- -2, /* (360) ccons ::= NULL onconf */
- -4, /* (361) ccons ::= GENERATED ALWAYS AS generated */
- -2, /* (362) ccons ::= AS generated */
- -2, /* (363) conslist_opt ::= COMMA conslist */
- -3, /* (364) conslist ::= conslist tconscomma tcons */
- -1, /* (365) conslist ::= tcons */
- 0, /* (366) tconscomma ::= */
- -1, /* (367) defer_subclause_opt ::= defer_subclause */
- -1, /* (368) resolvetype ::= raisetype */
- -1, /* (369) selectnowith ::= oneselect */
- -1, /* (370) oneselect ::= values */
- -2, /* (371) sclp ::= selcollist COMMA */
- -1, /* (372) as ::= ID|STRING */
- 0, /* (373) returning ::= */
- -1, /* (374) expr ::= term */
- -1, /* (375) likeop ::= LIKE_KW|MATCH */
- -1, /* (376) exprlist ::= nexprlist */
- -1, /* (377) nmnum ::= plus_num */
- -1, /* (378) nmnum ::= nm */
- -1, /* (379) nmnum ::= ON */
- -1, /* (380) nmnum ::= DELETE */
- -1, /* (381) nmnum ::= DEFAULT */
- -1, /* (382) plus_num ::= INTEGER|FLOAT */
- 0, /* (383) foreach_clause ::= */
- -3, /* (384) foreach_clause ::= FOR EACH ROW */
- -1, /* (385) trnm ::= nm */
- 0, /* (386) tridxby ::= */
- -1, /* (387) database_kw_opt ::= DATABASE */
- 0, /* (388) database_kw_opt ::= */
- 0, /* (389) kwcolumn_opt ::= */
- -1, /* (390) kwcolumn_opt ::= COLUMNKW */
- -1, /* (391) vtabarglist ::= vtabarg */
- -3, /* (392) vtabarglist ::= vtabarglist COMMA vtabarg */
- -2, /* (393) vtabarg ::= vtabarg vtabargtoken */
- 0, /* (394) anylist ::= */
- -4, /* (395) anylist ::= anylist LP anylist RP */
- -2, /* (396) anylist ::= anylist ANY */
- 0, /* (397) with ::= */
+ 0, /* (21) table_option_set ::= */
+ -3, /* (22) table_option_set ::= table_option_set COMMA table_option */
+ -2, /* (23) table_option ::= WITHOUT nm */
+ -1, /* (24) table_option ::= nm */
+ -2, /* (25) columnname ::= nm typetoken */
+ 0, /* (26) typetoken ::= */
+ -4, /* (27) typetoken ::= typename LP signed RP */
+ -6, /* (28) typetoken ::= typename LP signed COMMA signed RP */
+ -2, /* (29) typename ::= typename ID|STRING */
+ 0, /* (30) scanpt ::= */
+ 0, /* (31) scantok ::= */
+ -2, /* (32) ccons ::= CONSTRAINT nm */
+ -3, /* (33) ccons ::= DEFAULT scantok term */
+ -4, /* (34) ccons ::= DEFAULT LP expr RP */
+ -4, /* (35) ccons ::= DEFAULT PLUS scantok term */
+ -4, /* (36) ccons ::= DEFAULT MINUS scantok term */
+ -3, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
+ -3, /* (38) ccons ::= NOT NULL onconf */
+ -5, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
+ -2, /* (40) ccons ::= UNIQUE onconf */
+ -4, /* (41) ccons ::= CHECK LP expr RP */
+ -4, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
+ -1, /* (43) ccons ::= defer_subclause */
+ -2, /* (44) ccons ::= COLLATE ID|STRING */
+ -3, /* (45) generated ::= LP expr RP */
+ -4, /* (46) generated ::= LP expr RP ID */
+ 0, /* (47) autoinc ::= */
+ -1, /* (48) autoinc ::= AUTOINCR */
+ 0, /* (49) refargs ::= */
+ -2, /* (50) refargs ::= refargs refarg */
+ -2, /* (51) refarg ::= MATCH nm */
+ -3, /* (52) refarg ::= ON INSERT refact */
+ -3, /* (53) refarg ::= ON DELETE refact */
+ -3, /* (54) refarg ::= ON UPDATE refact */
+ -2, /* (55) refact ::= SET NULL */
+ -2, /* (56) refact ::= SET DEFAULT */
+ -1, /* (57) refact ::= CASCADE */
+ -1, /* (58) refact ::= RESTRICT */
+ -2, /* (59) refact ::= NO ACTION */
+ -3, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
+ -2, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
+ 0, /* (62) init_deferred_pred_opt ::= */
+ -2, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
+ -2, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
+ 0, /* (65) conslist_opt ::= */
+ -1, /* (66) tconscomma ::= COMMA */
+ -2, /* (67) tcons ::= CONSTRAINT nm */
+ -7, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
+ -5, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
+ -5, /* (70) tcons ::= CHECK LP expr RP onconf */
+ -10, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
+ 0, /* (72) defer_subclause_opt ::= */
+ 0, /* (73) onconf ::= */
+ -3, /* (74) onconf ::= ON CONFLICT resolvetype */
+ 0, /* (75) orconf ::= */
+ -2, /* (76) orconf ::= OR resolvetype */
+ -1, /* (77) resolvetype ::= IGNORE */
+ -1, /* (78) resolvetype ::= REPLACE */
+ -4, /* (79) cmd ::= DROP TABLE ifexists fullname */
+ -2, /* (80) ifexists ::= IF EXISTS */
+ 0, /* (81) ifexists ::= */
+ -9, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
+ -4, /* (83) cmd ::= DROP VIEW ifexists fullname */
+ -1, /* (84) cmd ::= select */
+ -3, /* (85) select ::= WITH wqlist selectnowith */
+ -4, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
+ -1, /* (87) select ::= selectnowith */
+ -3, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
+ -1, /* (89) multiselect_op ::= UNION */
+ -2, /* (90) multiselect_op ::= UNION ALL */
+ -1, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
+ -9, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
+ -10, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
+ -4, /* (94) values ::= VALUES LP nexprlist RP */
+ -5, /* (95) values ::= values COMMA LP nexprlist RP */
+ -1, /* (96) distinct ::= DISTINCT */
+ -1, /* (97) distinct ::= ALL */
+ 0, /* (98) distinct ::= */
+ 0, /* (99) sclp ::= */
+ -5, /* (100) selcollist ::= sclp scanpt expr scanpt as */
+ -3, /* (101) selcollist ::= sclp scanpt STAR */
+ -5, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
+ -2, /* (103) as ::= AS nm */
+ 0, /* (104) as ::= */
+ 0, /* (105) from ::= */
+ -2, /* (106) from ::= FROM seltablist */
+ -2, /* (107) stl_prefix ::= seltablist joinop */
+ 0, /* (108) stl_prefix ::= */
+ -7, /* (109) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
+ -9, /* (110) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
+ -7, /* (111) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
+ -7, /* (112) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
+ 0, /* (113) dbnm ::= */
+ -2, /* (114) dbnm ::= DOT nm */
+ -1, /* (115) fullname ::= nm */
+ -3, /* (116) fullname ::= nm DOT nm */
+ -1, /* (117) xfullname ::= nm */
+ -3, /* (118) xfullname ::= nm DOT nm */
+ -5, /* (119) xfullname ::= nm DOT nm AS nm */
+ -3, /* (120) xfullname ::= nm AS nm */
+ -1, /* (121) joinop ::= COMMA|JOIN */
+ -2, /* (122) joinop ::= JOIN_KW JOIN */
+ -3, /* (123) joinop ::= JOIN_KW nm JOIN */
+ -4, /* (124) joinop ::= JOIN_KW nm nm JOIN */
+ -2, /* (125) on_opt ::= ON expr */
+ 0, /* (126) on_opt ::= */
+ 0, /* (127) indexed_opt ::= */
+ -3, /* (128) indexed_opt ::= INDEXED BY nm */
+ -2, /* (129) indexed_opt ::= NOT INDEXED */
+ -4, /* (130) using_opt ::= USING LP idlist RP */
+ 0, /* (131) using_opt ::= */
+ 0, /* (132) orderby_opt ::= */
+ -3, /* (133) orderby_opt ::= ORDER BY sortlist */
+ -5, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
+ -3, /* (135) sortlist ::= expr sortorder nulls */
+ -1, /* (136) sortorder ::= ASC */
+ -1, /* (137) sortorder ::= DESC */
+ 0, /* (138) sortorder ::= */
+ -2, /* (139) nulls ::= NULLS FIRST */
+ -2, /* (140) nulls ::= NULLS LAST */
+ 0, /* (141) nulls ::= */
+ 0, /* (142) groupby_opt ::= */
+ -3, /* (143) groupby_opt ::= GROUP BY nexprlist */
+ 0, /* (144) having_opt ::= */
+ -2, /* (145) having_opt ::= HAVING expr */
+ 0, /* (146) limit_opt ::= */
+ -2, /* (147) limit_opt ::= LIMIT expr */
+ -4, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
+ -4, /* (149) limit_opt ::= LIMIT expr COMMA expr */
+ -6, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
+ 0, /* (151) where_opt ::= */
+ -2, /* (152) where_opt ::= WHERE expr */
+ 0, /* (153) where_opt_ret ::= */
+ -2, /* (154) where_opt_ret ::= WHERE expr */
+ -2, /* (155) where_opt_ret ::= RETURNING selcollist */
+ -4, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
+ -9, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
+ -5, /* (158) setlist ::= setlist COMMA nm EQ expr */
+ -7, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
+ -3, /* (160) setlist ::= nm EQ expr */
+ -5, /* (161) setlist ::= LP idlist RP EQ expr */
+ -7, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
+ -8, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
+ 0, /* (164) upsert ::= */
+ -2, /* (165) upsert ::= RETURNING selcollist */
+ -12, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
+ -9, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
+ -5, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
+ -8, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
+ -2, /* (170) returning ::= RETURNING selcollist */
+ -2, /* (171) insert_cmd ::= INSERT orconf */
+ -1, /* (172) insert_cmd ::= REPLACE */
+ 0, /* (173) idlist_opt ::= */
+ -3, /* (174) idlist_opt ::= LP idlist RP */
+ -3, /* (175) idlist ::= idlist COMMA nm */
+ -1, /* (176) idlist ::= nm */
+ -3, /* (177) expr ::= LP expr RP */
+ -1, /* (178) expr ::= ID|INDEXED */
+ -1, /* (179) expr ::= JOIN_KW */
+ -3, /* (180) expr ::= nm DOT nm */
+ -5, /* (181) expr ::= nm DOT nm DOT nm */
+ -1, /* (182) term ::= NULL|FLOAT|BLOB */
+ -1, /* (183) term ::= STRING */
+ -1, /* (184) term ::= INTEGER */
+ -1, /* (185) expr ::= VARIABLE */
+ -3, /* (186) expr ::= expr COLLATE ID|STRING */
+ -6, /* (187) expr ::= CAST LP expr AS typetoken RP */
+ -5, /* (188) expr ::= ID|INDEXED LP distinct exprlist RP */
+ -4, /* (189) expr ::= ID|INDEXED LP STAR RP */
+ -6, /* (190) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
+ -5, /* (191) expr ::= ID|INDEXED LP STAR RP filter_over */
+ -1, /* (192) term ::= CTIME_KW */
+ -5, /* (193) expr ::= LP nexprlist COMMA expr RP */
+ -3, /* (194) expr ::= expr AND expr */
+ -3, /* (195) expr ::= expr OR expr */
+ -3, /* (196) expr ::= expr LT|GT|GE|LE expr */
+ -3, /* (197) expr ::= expr EQ|NE expr */
+ -3, /* (198) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
+ -3, /* (199) expr ::= expr PLUS|MINUS expr */
+ -3, /* (200) expr ::= expr STAR|SLASH|REM expr */
+ -3, /* (201) expr ::= expr CONCAT expr */
+ -2, /* (202) likeop ::= NOT LIKE_KW|MATCH */
+ -3, /* (203) expr ::= expr likeop expr */
+ -5, /* (204) expr ::= expr likeop expr ESCAPE expr */
+ -2, /* (205) expr ::= expr ISNULL|NOTNULL */
+ -3, /* (206) expr ::= expr NOT NULL */
+ -3, /* (207) expr ::= expr IS expr */
+ -4, /* (208) expr ::= expr IS NOT expr */
+ -2, /* (209) expr ::= NOT expr */
+ -2, /* (210) expr ::= BITNOT expr */
+ -2, /* (211) expr ::= PLUS|MINUS expr */
+ -1, /* (212) between_op ::= BETWEEN */
+ -2, /* (213) between_op ::= NOT BETWEEN */
+ -5, /* (214) expr ::= expr between_op expr AND expr */
+ -1, /* (215) in_op ::= IN */
+ -2, /* (216) in_op ::= NOT IN */
+ -5, /* (217) expr ::= expr in_op LP exprlist RP */
+ -3, /* (218) expr ::= LP select RP */
+ -5, /* (219) expr ::= expr in_op LP select RP */
+ -5, /* (220) expr ::= expr in_op nm dbnm paren_exprlist */
+ -4, /* (221) expr ::= EXISTS LP select RP */
+ -5, /* (222) expr ::= CASE case_operand case_exprlist case_else END */
+ -5, /* (223) case_exprlist ::= case_exprlist WHEN expr THEN expr */
+ -4, /* (224) case_exprlist ::= WHEN expr THEN expr */
+ -2, /* (225) case_else ::= ELSE expr */
+ 0, /* (226) case_else ::= */
+ -1, /* (227) case_operand ::= expr */
+ 0, /* (228) case_operand ::= */
+ 0, /* (229) exprlist ::= */
+ -3, /* (230) nexprlist ::= nexprlist COMMA expr */
+ -1, /* (231) nexprlist ::= expr */
+ 0, /* (232) paren_exprlist ::= */
+ -3, /* (233) paren_exprlist ::= LP exprlist RP */
+ -12, /* (234) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
+ -1, /* (235) uniqueflag ::= UNIQUE */
+ 0, /* (236) uniqueflag ::= */
+ 0, /* (237) eidlist_opt ::= */
+ -3, /* (238) eidlist_opt ::= LP eidlist RP */
+ -5, /* (239) eidlist ::= eidlist COMMA nm collate sortorder */
+ -3, /* (240) eidlist ::= nm collate sortorder */
+ 0, /* (241) collate ::= */
+ -2, /* (242) collate ::= COLLATE ID|STRING */
+ -4, /* (243) cmd ::= DROP INDEX ifexists fullname */
+ -2, /* (244) cmd ::= VACUUM vinto */
+ -3, /* (245) cmd ::= VACUUM nm vinto */
+ -2, /* (246) vinto ::= INTO expr */
+ 0, /* (247) vinto ::= */
+ -3, /* (248) cmd ::= PRAGMA nm dbnm */
+ -5, /* (249) cmd ::= PRAGMA nm dbnm EQ nmnum */
+ -6, /* (250) cmd ::= PRAGMA nm dbnm LP nmnum RP */
+ -5, /* (251) cmd ::= PRAGMA nm dbnm EQ minus_num */
+ -6, /* (252) cmd ::= PRAGMA nm dbnm LP minus_num RP */
+ -2, /* (253) plus_num ::= PLUS INTEGER|FLOAT */
+ -2, /* (254) minus_num ::= MINUS INTEGER|FLOAT */
+ -5, /* (255) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
+ -11, /* (256) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
+ -1, /* (257) trigger_time ::= BEFORE|AFTER */
+ -2, /* (258) trigger_time ::= INSTEAD OF */
+ 0, /* (259) trigger_time ::= */
+ -1, /* (260) trigger_event ::= DELETE|INSERT */
+ -1, /* (261) trigger_event ::= UPDATE */
+ -3, /* (262) trigger_event ::= UPDATE OF idlist */
+ 0, /* (263) when_clause ::= */
+ -2, /* (264) when_clause ::= WHEN expr */
+ -3, /* (265) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
+ -2, /* (266) trigger_cmd_list ::= trigger_cmd SEMI */
+ -3, /* (267) trnm ::= nm DOT nm */
+ -3, /* (268) tridxby ::= INDEXED BY nm */
+ -2, /* (269) tridxby ::= NOT INDEXED */
+ -9, /* (270) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
+ -8, /* (271) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
+ -6, /* (272) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
+ -3, /* (273) trigger_cmd ::= scanpt select scanpt */
+ -4, /* (274) expr ::= RAISE LP IGNORE RP */
+ -6, /* (275) expr ::= RAISE LP raisetype COMMA nm RP */
+ -1, /* (276) raisetype ::= ROLLBACK */
+ -1, /* (277) raisetype ::= ABORT */
+ -1, /* (278) raisetype ::= FAIL */
+ -4, /* (279) cmd ::= DROP TRIGGER ifexists fullname */
+ -6, /* (280) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+ -3, /* (281) cmd ::= DETACH database_kw_opt expr */
+ 0, /* (282) key_opt ::= */
+ -2, /* (283) key_opt ::= KEY expr */
+ -1, /* (284) cmd ::= REINDEX */
+ -3, /* (285) cmd ::= REINDEX nm dbnm */
+ -1, /* (286) cmd ::= ANALYZE */
+ -3, /* (287) cmd ::= ANALYZE nm dbnm */
+ -6, /* (288) cmd ::= ALTER TABLE fullname RENAME TO nm */
+ -7, /* (289) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
+ -6, /* (290) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
+ -1, /* (291) add_column_fullname ::= fullname */
+ -8, /* (292) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
+ -1, /* (293) cmd ::= create_vtab */
+ -4, /* (294) cmd ::= create_vtab LP vtabarglist RP */
+ -8, /* (295) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+ 0, /* (296) vtabarg ::= */
+ -1, /* (297) vtabargtoken ::= ANY */
+ -3, /* (298) vtabargtoken ::= lp anylist RP */
+ -1, /* (299) lp ::= LP */
+ -2, /* (300) with ::= WITH wqlist */
+ -3, /* (301) with ::= WITH RECURSIVE wqlist */
+ -1, /* (302) wqas ::= AS */
+ -2, /* (303) wqas ::= AS MATERIALIZED */
+ -3, /* (304) wqas ::= AS NOT MATERIALIZED */
+ -6, /* (305) wqitem ::= nm eidlist_opt wqas LP select RP */
+ -1, /* (306) wqlist ::= wqitem */
+ -3, /* (307) wqlist ::= wqlist COMMA wqitem */
+ -1, /* (308) windowdefn_list ::= windowdefn */
+ -3, /* (309) windowdefn_list ::= windowdefn_list COMMA windowdefn */
+ -5, /* (310) windowdefn ::= nm AS LP window RP */
+ -5, /* (311) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+ -6, /* (312) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+ -4, /* (313) window ::= ORDER BY sortlist frame_opt */
+ -5, /* (314) window ::= nm ORDER BY sortlist frame_opt */
+ -1, /* (315) window ::= frame_opt */
+ -2, /* (316) window ::= nm frame_opt */
+ 0, /* (317) frame_opt ::= */
+ -3, /* (318) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+ -6, /* (319) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+ -1, /* (320) range_or_rows ::= RANGE|ROWS|GROUPS */
+ -1, /* (321) frame_bound_s ::= frame_bound */
+ -2, /* (322) frame_bound_s ::= UNBOUNDED PRECEDING */
+ -1, /* (323) frame_bound_e ::= frame_bound */
+ -2, /* (324) frame_bound_e ::= UNBOUNDED FOLLOWING */
+ -2, /* (325) frame_bound ::= expr PRECEDING|FOLLOWING */
+ -2, /* (326) frame_bound ::= CURRENT ROW */
+ 0, /* (327) frame_exclude_opt ::= */
+ -2, /* (328) frame_exclude_opt ::= EXCLUDE frame_exclude */
+ -2, /* (329) frame_exclude ::= NO OTHERS */
+ -2, /* (330) frame_exclude ::= CURRENT ROW */
+ -1, /* (331) frame_exclude ::= GROUP|TIES */
+ -2, /* (332) window_clause ::= WINDOW windowdefn_list */
+ -2, /* (333) filter_over ::= filter_clause over_clause */
+ -1, /* (334) filter_over ::= over_clause */
+ -1, /* (335) filter_over ::= filter_clause */
+ -4, /* (336) over_clause ::= OVER LP window RP */
+ -2, /* (337) over_clause ::= OVER nm */
+ -5, /* (338) filter_clause ::= FILTER LP WHERE expr RP */
+ -1, /* (339) input ::= cmdlist */
+ -2, /* (340) cmdlist ::= cmdlist ecmd */
+ -1, /* (341) cmdlist ::= ecmd */
+ -1, /* (342) ecmd ::= SEMI */
+ -2, /* (343) ecmd ::= cmdx SEMI */
+ -3, /* (344) ecmd ::= explain cmdx SEMI */
+ 0, /* (345) trans_opt ::= */
+ -1, /* (346) trans_opt ::= TRANSACTION */
+ -2, /* (347) trans_opt ::= TRANSACTION nm */
+ -1, /* (348) savepoint_opt ::= SAVEPOINT */
+ 0, /* (349) savepoint_opt ::= */
+ -2, /* (350) cmd ::= create_table create_table_args */
+ -1, /* (351) table_option_set ::= table_option */
+ -4, /* (352) columnlist ::= columnlist COMMA columnname carglist */
+ -2, /* (353) columnlist ::= columnname carglist */
+ -1, /* (354) nm ::= ID|INDEXED */
+ -1, /* (355) nm ::= STRING */
+ -1, /* (356) nm ::= JOIN_KW */
+ -1, /* (357) typetoken ::= typename */
+ -1, /* (358) typename ::= ID|STRING */
+ -1, /* (359) signed ::= plus_num */
+ -1, /* (360) signed ::= minus_num */
+ -2, /* (361) carglist ::= carglist ccons */
+ 0, /* (362) carglist ::= */
+ -2, /* (363) ccons ::= NULL onconf */
+ -4, /* (364) ccons ::= GENERATED ALWAYS AS generated */
+ -2, /* (365) ccons ::= AS generated */
+ -2, /* (366) conslist_opt ::= COMMA conslist */
+ -3, /* (367) conslist ::= conslist tconscomma tcons */
+ -1, /* (368) conslist ::= tcons */
+ 0, /* (369) tconscomma ::= */
+ -1, /* (370) defer_subclause_opt ::= defer_subclause */
+ -1, /* (371) resolvetype ::= raisetype */
+ -1, /* (372) selectnowith ::= oneselect */
+ -1, /* (373) oneselect ::= values */
+ -2, /* (374) sclp ::= selcollist COMMA */
+ -1, /* (375) as ::= ID|STRING */
+ 0, /* (376) returning ::= */
+ -1, /* (377) expr ::= term */
+ -1, /* (378) likeop ::= LIKE_KW|MATCH */
+ -1, /* (379) exprlist ::= nexprlist */
+ -1, /* (380) nmnum ::= plus_num */
+ -1, /* (381) nmnum ::= nm */
+ -1, /* (382) nmnum ::= ON */
+ -1, /* (383) nmnum ::= DELETE */
+ -1, /* (384) nmnum ::= DEFAULT */
+ -1, /* (385) plus_num ::= INTEGER|FLOAT */
+ 0, /* (386) foreach_clause ::= */
+ -3, /* (387) foreach_clause ::= FOR EACH ROW */
+ -1, /* (388) trnm ::= nm */
+ 0, /* (389) tridxby ::= */
+ -1, /* (390) database_kw_opt ::= DATABASE */
+ 0, /* (391) database_kw_opt ::= */
+ 0, /* (392) kwcolumn_opt ::= */
+ -1, /* (393) kwcolumn_opt ::= COLUMNKW */
+ -1, /* (394) vtabarglist ::= vtabarg */
+ -3, /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */
+ -2, /* (396) vtabarg ::= vtabarg vtabargtoken */
+ 0, /* (397) anylist ::= */
+ -4, /* (398) anylist ::= anylist LP anylist RP */
+ -2, /* (399) anylist ::= anylist ANY */
+ 0, /* (400) with ::= */
};
static void yy_accept(yyParser*); /* Forward Declaration */
@@ -161552,16 +163036,16 @@ static YYACTIONTYPE yy_reduce(
{ sqlite3FinishCoding(pParse); }
break;
case 3: /* cmd ::= BEGIN transtype trans_opt */
-{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy376);}
+{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy64);}
break;
case 4: /* transtype ::= */
-{yymsp[1].minor.yy376 = TK_DEFERRED;}
+{yymsp[1].minor.yy64 = TK_DEFERRED;}
break;
case 5: /* transtype ::= DEFERRED */
case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
- case 318: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==318);
-{yymsp[0].minor.yy376 = yymsp[0].major; /*A-overwrites-X*/}
+ case 320: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==320);
+{yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-X*/}
break;
case 8: /* cmd ::= COMMIT|END trans_opt */
case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
@@ -161584,7 +163068,7 @@ static YYACTIONTYPE yy_reduce(
break;
case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
{
- sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy376,0,0,yymsp[-2].minor.yy376);
+ sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy64,0,0,yymsp[-2].minor.yy64);
}
break;
case 14: /* createkw ::= CREATE */
@@ -161592,95 +163076,112 @@ static YYACTIONTYPE yy_reduce(
break;
case 15: /* ifnotexists ::= */
case 18: /* temp ::= */ yytestcase(yyruleno==18);
- case 21: /* table_options ::= */ yytestcase(yyruleno==21);
- case 45: /* autoinc ::= */ yytestcase(yyruleno==45);
- case 60: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==60);
- case 70: /* defer_subclause_opt ::= */ yytestcase(yyruleno==70);
- case 79: /* ifexists ::= */ yytestcase(yyruleno==79);
- case 96: /* distinct ::= */ yytestcase(yyruleno==96);
- case 239: /* collate ::= */ yytestcase(yyruleno==239);
-{yymsp[1].minor.yy376 = 0;}
+ case 47: /* autoinc ::= */ yytestcase(yyruleno==47);
+ case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62);
+ case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72);
+ case 81: /* ifexists ::= */ yytestcase(yyruleno==81);
+ case 98: /* distinct ::= */ yytestcase(yyruleno==98);
+ case 241: /* collate ::= */ yytestcase(yyruleno==241);
+{yymsp[1].minor.yy64 = 0;}
break;
case 16: /* ifnotexists ::= IF NOT EXISTS */
-{yymsp[-2].minor.yy376 = 1;}
+{yymsp[-2].minor.yy64 = 1;}
break;
case 17: /* temp ::= TEMP */
-{yymsp[0].minor.yy376 = pParse->db->init.busy==0;}
+{yymsp[0].minor.yy64 = pParse->db->init.busy==0;}
break;
- case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */
+ case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_option_set */
{
- sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy376,0);
+ sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy51,0);
}
break;
case 20: /* create_table_args ::= AS select */
{
- sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy81);
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy81);
+ sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy303);
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy303);
}
break;
- case 22: /* table_options ::= WITHOUT nm */
+ case 21: /* table_option_set ::= */
+{yymsp[1].minor.yy51 = 0;}
+ break;
+ case 22: /* table_option_set ::= table_option_set COMMA table_option */
+{yylhsminor.yy51 = yymsp[-2].minor.yy51|yymsp[0].minor.yy51;}
+ yymsp[-2].minor.yy51 = yylhsminor.yy51;
+ break;
+ case 23: /* table_option ::= WITHOUT nm */
{
if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
- yymsp[-1].minor.yy376 = TF_WithoutRowid | TF_NoVisibleRowid;
+ yymsp[-1].minor.yy51 = TF_WithoutRowid | TF_NoVisibleRowid;
+ }else{
+ yymsp[-1].minor.yy51 = 0;
+ sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
+ }
+}
+ break;
+ case 24: /* table_option ::= nm */
+{
+ if( yymsp[0].minor.yy0.n==6 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"strict",6)==0 ){
+ yylhsminor.yy51 = TF_Strict;
}else{
- yymsp[-1].minor.yy376 = 0;
+ yylhsminor.yy51 = 0;
sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
}
}
+ yymsp[0].minor.yy51 = yylhsminor.yy51;
break;
- case 23: /* columnname ::= nm typetoken */
-{sqlite3AddColumn(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0);}
+ case 25: /* columnname ::= nm typetoken */
+{sqlite3AddColumn(pParse,yymsp[-1].minor.yy0,yymsp[0].minor.yy0);}
break;
- case 24: /* typetoken ::= */
- case 63: /* conslist_opt ::= */ yytestcase(yyruleno==63);
- case 102: /* as ::= */ yytestcase(yyruleno==102);
+ case 26: /* typetoken ::= */
+ case 65: /* conslist_opt ::= */ yytestcase(yyruleno==65);
+ case 104: /* as ::= */ yytestcase(yyruleno==104);
{yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;}
break;
- case 25: /* typetoken ::= typename LP signed RP */
+ case 27: /* typetoken ::= typename LP signed RP */
{
yymsp[-3].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z);
}
break;
- case 26: /* typetoken ::= typename LP signed COMMA signed RP */
+ case 28: /* typetoken ::= typename LP signed COMMA signed RP */
{
yymsp[-5].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy0.z);
}
break;
- case 27: /* typename ::= typename ID|STRING */
+ case 29: /* typename ::= typename ID|STRING */
{yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);}
break;
- case 28: /* scanpt ::= */
+ case 30: /* scanpt ::= */
{
assert( yyLookahead!=YYNOCODE );
- yymsp[1].minor.yy504 = yyLookaheadToken.z;
+ yymsp[1].minor.yy600 = yyLookaheadToken.z;
}
break;
- case 29: /* scantok ::= */
+ case 31: /* scantok ::= */
{
assert( yyLookahead!=YYNOCODE );
yymsp[1].minor.yy0 = yyLookaheadToken;
}
break;
- case 30: /* ccons ::= CONSTRAINT nm */
- case 65: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==65);
+ case 32: /* ccons ::= CONSTRAINT nm */
+ case 67: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==67);
{pParse->constraintName = yymsp[0].minor.yy0;}
break;
- case 31: /* ccons ::= DEFAULT scantok term */
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy404,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
+ case 33: /* ccons ::= DEFAULT scantok term */
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy626,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
break;
- case 32: /* ccons ::= DEFAULT LP expr RP */
-{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy404,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
+ case 34: /* ccons ::= DEFAULT LP expr RP */
+{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy626,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
break;
- case 33: /* ccons ::= DEFAULT PLUS scantok term */
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy404,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
+ case 35: /* ccons ::= DEFAULT PLUS scantok term */
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy626,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
break;
- case 34: /* ccons ::= DEFAULT MINUS scantok term */
+ case 36: /* ccons ::= DEFAULT MINUS scantok term */
{
- Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy404, 0);
+ Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy626, 0);
sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
}
break;
- case 35: /* ccons ::= DEFAULT scantok ID|INDEXED */
+ case 37: /* ccons ::= DEFAULT scantok ID|INDEXED */
{
Expr *p = tokenExpr(pParse, TK_STRING, yymsp[0].minor.yy0);
if( p ){
@@ -161690,162 +163191,162 @@ static YYACTIONTYPE yy_reduce(
sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n);
}
break;
- case 36: /* ccons ::= NOT NULL onconf */
-{sqlite3AddNotNull(pParse, yymsp[0].minor.yy376);}
+ case 38: /* ccons ::= NOT NULL onconf */
+{sqlite3AddNotNull(pParse, yymsp[0].minor.yy64);}
break;
- case 37: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
-{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy376,yymsp[0].minor.yy376,yymsp[-2].minor.yy376);}
+ case 39: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
+{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy64,yymsp[0].minor.yy64,yymsp[-2].minor.yy64);}
break;
- case 38: /* ccons ::= UNIQUE onconf */
-{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy376,0,0,0,0,
+ case 40: /* ccons ::= UNIQUE onconf */
+{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy64,0,0,0,0,
SQLITE_IDXTYPE_UNIQUE);}
break;
- case 39: /* ccons ::= CHECK LP expr RP */
-{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy404,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
+ case 41: /* ccons ::= CHECK LP expr RP */
+{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy626,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);}
break;
- case 40: /* ccons ::= REFERENCES nm eidlist_opt refargs */
-{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy70,yymsp[0].minor.yy376);}
+ case 42: /* ccons ::= REFERENCES nm eidlist_opt refargs */
+{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy562,yymsp[0].minor.yy64);}
break;
- case 41: /* ccons ::= defer_subclause */
-{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy376);}
+ case 43: /* ccons ::= defer_subclause */
+{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy64);}
break;
- case 42: /* ccons ::= COLLATE ID|STRING */
+ case 44: /* ccons ::= COLLATE ID|STRING */
{sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
break;
- case 43: /* generated ::= LP expr RP */
-{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy404,0);}
+ case 45: /* generated ::= LP expr RP */
+{sqlite3AddGenerated(pParse,yymsp[-1].minor.yy626,0);}
break;
- case 44: /* generated ::= LP expr RP ID */
-{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy404,&yymsp[0].minor.yy0);}
+ case 46: /* generated ::= LP expr RP ID */
+{sqlite3AddGenerated(pParse,yymsp[-2].minor.yy626,&yymsp[0].minor.yy0);}
break;
- case 46: /* autoinc ::= AUTOINCR */
-{yymsp[0].minor.yy376 = 1;}
+ case 48: /* autoinc ::= AUTOINCR */
+{yymsp[0].minor.yy64 = 1;}
break;
- case 47: /* refargs ::= */
-{ yymsp[1].minor.yy376 = OE_None*0x0101; /* EV: R-19803-45884 */}
+ case 49: /* refargs ::= */
+{ yymsp[1].minor.yy64 = OE_None*0x0101; /* EV: R-19803-45884 */}
break;
- case 48: /* refargs ::= refargs refarg */
-{ yymsp[-1].minor.yy376 = (yymsp[-1].minor.yy376 & ~yymsp[0].minor.yy139.mask) | yymsp[0].minor.yy139.value; }
+ case 50: /* refargs ::= refargs refarg */
+{ yymsp[-1].minor.yy64 = (yymsp[-1].minor.yy64 & ~yymsp[0].minor.yy83.mask) | yymsp[0].minor.yy83.value; }
break;
- case 49: /* refarg ::= MATCH nm */
-{ yymsp[-1].minor.yy139.value = 0; yymsp[-1].minor.yy139.mask = 0x000000; }
+ case 51: /* refarg ::= MATCH nm */
+{ yymsp[-1].minor.yy83.value = 0; yymsp[-1].minor.yy83.mask = 0x000000; }
break;
- case 50: /* refarg ::= ON INSERT refact */
-{ yymsp[-2].minor.yy139.value = 0; yymsp[-2].minor.yy139.mask = 0x000000; }
+ case 52: /* refarg ::= ON INSERT refact */
+{ yymsp[-2].minor.yy83.value = 0; yymsp[-2].minor.yy83.mask = 0x000000; }
break;
- case 51: /* refarg ::= ON DELETE refact */
-{ yymsp[-2].minor.yy139.value = yymsp[0].minor.yy376; yymsp[-2].minor.yy139.mask = 0x0000ff; }
+ case 53: /* refarg ::= ON DELETE refact */
+{ yymsp[-2].minor.yy83.value = yymsp[0].minor.yy64; yymsp[-2].minor.yy83.mask = 0x0000ff; }
break;
- case 52: /* refarg ::= ON UPDATE refact */
-{ yymsp[-2].minor.yy139.value = yymsp[0].minor.yy376<<8; yymsp[-2].minor.yy139.mask = 0x00ff00; }
+ case 54: /* refarg ::= ON UPDATE refact */
+{ yymsp[-2].minor.yy83.value = yymsp[0].minor.yy64<<8; yymsp[-2].minor.yy83.mask = 0x00ff00; }
break;
- case 53: /* refact ::= SET NULL */
-{ yymsp[-1].minor.yy376 = OE_SetNull; /* EV: R-33326-45252 */}
+ case 55: /* refact ::= SET NULL */
+{ yymsp[-1].minor.yy64 = OE_SetNull; /* EV: R-33326-45252 */}
break;
- case 54: /* refact ::= SET DEFAULT */
-{ yymsp[-1].minor.yy376 = OE_SetDflt; /* EV: R-33326-45252 */}
+ case 56: /* refact ::= SET DEFAULT */
+{ yymsp[-1].minor.yy64 = OE_SetDflt; /* EV: R-33326-45252 */}
break;
- case 55: /* refact ::= CASCADE */
-{ yymsp[0].minor.yy376 = OE_Cascade; /* EV: R-33326-45252 */}
+ case 57: /* refact ::= CASCADE */
+{ yymsp[0].minor.yy64 = OE_Cascade; /* EV: R-33326-45252 */}
break;
- case 56: /* refact ::= RESTRICT */
-{ yymsp[0].minor.yy376 = OE_Restrict; /* EV: R-33326-45252 */}
+ case 58: /* refact ::= RESTRICT */
+{ yymsp[0].minor.yy64 = OE_Restrict; /* EV: R-33326-45252 */}
break;
- case 57: /* refact ::= NO ACTION */
-{ yymsp[-1].minor.yy376 = OE_None; /* EV: R-33326-45252 */}
+ case 59: /* refact ::= NO ACTION */
+{ yymsp[-1].minor.yy64 = OE_None; /* EV: R-33326-45252 */}
break;
- case 58: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
-{yymsp[-2].minor.yy376 = 0;}
+ case 60: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
+{yymsp[-2].minor.yy64 = 0;}
break;
- case 59: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
- case 74: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==74);
- case 169: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==169);
-{yymsp[-1].minor.yy376 = yymsp[0].minor.yy376;}
+ case 61: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
+ case 76: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==76);
+ case 171: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171);
+{yymsp[-1].minor.yy64 = yymsp[0].minor.yy64;}
break;
- case 61: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
- case 78: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==78);
- case 211: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==211);
- case 214: /* in_op ::= NOT IN */ yytestcase(yyruleno==214);
- case 240: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==240);
-{yymsp[-1].minor.yy376 = 1;}
+ case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
+ case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
+ case 213: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==213);
+ case 216: /* in_op ::= NOT IN */ yytestcase(yyruleno==216);
+ case 242: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==242);
+{yymsp[-1].minor.yy64 = 1;}
break;
- case 62: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
-{yymsp[-1].minor.yy376 = 0;}
+ case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
+{yymsp[-1].minor.yy64 = 0;}
break;
- case 64: /* tconscomma ::= COMMA */
+ case 66: /* tconscomma ::= COMMA */
{pParse->constraintName.n = 0;}
break;
- case 66: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
-{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy70,yymsp[0].minor.yy376,yymsp[-2].minor.yy376,0);}
+ case 68: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
+{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy562,yymsp[0].minor.yy64,yymsp[-2].minor.yy64,0);}
break;
- case 67: /* tcons ::= UNIQUE LP sortlist RP onconf */
-{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy70,yymsp[0].minor.yy376,0,0,0,0,
+ case 69: /* tcons ::= UNIQUE LP sortlist RP onconf */
+{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy562,yymsp[0].minor.yy64,0,0,0,0,
SQLITE_IDXTYPE_UNIQUE);}
break;
- case 68: /* tcons ::= CHECK LP expr RP onconf */
-{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy404,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
+ case 70: /* tcons ::= CHECK LP expr RP onconf */
+{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy626,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);}
break;
- case 69: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
+ case 71: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
{
- sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy70, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy70, yymsp[-1].minor.yy376);
- sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy376);
+ sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy562, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy562, yymsp[-1].minor.yy64);
+ sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy64);
}
break;
- case 71: /* onconf ::= */
- case 73: /* orconf ::= */ yytestcase(yyruleno==73);
-{yymsp[1].minor.yy376 = OE_Default;}
+ case 73: /* onconf ::= */
+ case 75: /* orconf ::= */ yytestcase(yyruleno==75);
+{yymsp[1].minor.yy64 = OE_Default;}
break;
- case 72: /* onconf ::= ON CONFLICT resolvetype */
-{yymsp[-2].minor.yy376 = yymsp[0].minor.yy376;}
+ case 74: /* onconf ::= ON CONFLICT resolvetype */
+{yymsp[-2].minor.yy64 = yymsp[0].minor.yy64;}
break;
- case 75: /* resolvetype ::= IGNORE */
-{yymsp[0].minor.yy376 = OE_Ignore;}
+ case 77: /* resolvetype ::= IGNORE */
+{yymsp[0].minor.yy64 = OE_Ignore;}
break;
- case 76: /* resolvetype ::= REPLACE */
- case 170: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==170);
-{yymsp[0].minor.yy376 = OE_Replace;}
+ case 78: /* resolvetype ::= REPLACE */
+ case 172: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==172);
+{yymsp[0].minor.yy64 = OE_Replace;}
break;
- case 77: /* cmd ::= DROP TABLE ifexists fullname */
+ case 79: /* cmd ::= DROP TABLE ifexists fullname */
{
- sqlite3DropTable(pParse, yymsp[0].minor.yy153, 0, yymsp[-1].minor.yy376);
+ sqlite3DropTable(pParse, yymsp[0].minor.yy607, 0, yymsp[-1].minor.yy64);
}
break;
- case 80: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
+ case 82: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
{
- sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy70, yymsp[0].minor.yy81, yymsp[-7].minor.yy376, yymsp[-5].minor.yy376);
+ sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy562, yymsp[0].minor.yy303, yymsp[-7].minor.yy64, yymsp[-5].minor.yy64);
}
break;
- case 81: /* cmd ::= DROP VIEW ifexists fullname */
+ case 83: /* cmd ::= DROP VIEW ifexists fullname */
{
- sqlite3DropTable(pParse, yymsp[0].minor.yy153, 1, yymsp[-1].minor.yy376);
+ sqlite3DropTable(pParse, yymsp[0].minor.yy607, 1, yymsp[-1].minor.yy64);
}
break;
- case 82: /* cmd ::= select */
+ case 84: /* cmd ::= select */
{
SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0};
- sqlite3Select(pParse, yymsp[0].minor.yy81, &dest);
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy81);
+ sqlite3Select(pParse, yymsp[0].minor.yy303, &dest);
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy303);
}
break;
- case 83: /* select ::= WITH wqlist selectnowith */
-{yymsp[-2].minor.yy81 = attachWithToSelect(pParse,yymsp[0].minor.yy81,yymsp[-1].minor.yy103);}
+ case 85: /* select ::= WITH wqlist selectnowith */
+{yymsp[-2].minor.yy303 = attachWithToSelect(pParse,yymsp[0].minor.yy303,yymsp[-1].minor.yy43);}
break;
- case 84: /* select ::= WITH RECURSIVE wqlist selectnowith */
-{yymsp[-3].minor.yy81 = attachWithToSelect(pParse,yymsp[0].minor.yy81,yymsp[-1].minor.yy103);}
+ case 86: /* select ::= WITH RECURSIVE wqlist selectnowith */
+{yymsp[-3].minor.yy303 = attachWithToSelect(pParse,yymsp[0].minor.yy303,yymsp[-1].minor.yy43);}
break;
- case 85: /* select ::= selectnowith */
+ case 87: /* select ::= selectnowith */
{
- Select *p = yymsp[0].minor.yy81;
+ Select *p = yymsp[0].minor.yy303;
if( p ){
parserDoubleLinkSelect(pParse, p);
}
- yymsp[0].minor.yy81 = p; /*A-overwrites-X*/
+ yymsp[0].minor.yy303 = p; /*A-overwrites-X*/
}
break;
- case 86: /* selectnowith ::= selectnowith multiselect_op oneselect */
+ case 88: /* selectnowith ::= selectnowith multiselect_op oneselect */
{
- Select *pRhs = yymsp[0].minor.yy81;
- Select *pLhs = yymsp[-2].minor.yy81;
+ Select *pRhs = yymsp[0].minor.yy303;
+ Select *pLhs = yymsp[-2].minor.yy303;
if( pRhs && pRhs->pPrior ){
SrcList *pFrom;
Token x;
@@ -161855,140 +163356,140 @@ static YYACTIONTYPE yy_reduce(
pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
}
if( pRhs ){
- pRhs->op = (u8)yymsp[-1].minor.yy376;
+ pRhs->op = (u8)yymsp[-1].minor.yy64;
pRhs->pPrior = pLhs;
if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
pRhs->selFlags &= ~SF_MultiValue;
- if( yymsp[-1].minor.yy376!=TK_ALL ) pParse->hasCompound = 1;
+ if( yymsp[-1].minor.yy64!=TK_ALL ) pParse->hasCompound = 1;
}else{
sqlite3SelectDelete(pParse->db, pLhs);
}
- yymsp[-2].minor.yy81 = pRhs;
+ yymsp[-2].minor.yy303 = pRhs;
}
break;
- case 87: /* multiselect_op ::= UNION */
- case 89: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==89);
-{yymsp[0].minor.yy376 = yymsp[0].major; /*A-overwrites-OP*/}
+ case 89: /* multiselect_op ::= UNION */
+ case 91: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==91);
+{yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-OP*/}
break;
- case 88: /* multiselect_op ::= UNION ALL */
-{yymsp[-1].minor.yy376 = TK_ALL;}
+ case 90: /* multiselect_op ::= UNION ALL */
+{yymsp[-1].minor.yy64 = TK_ALL;}
break;
- case 90: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
+ case 92: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
{
- yymsp[-8].minor.yy81 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy70,yymsp[-5].minor.yy153,yymsp[-4].minor.yy404,yymsp[-3].minor.yy70,yymsp[-2].minor.yy404,yymsp[-1].minor.yy70,yymsp[-7].minor.yy376,yymsp[0].minor.yy404);
+ yymsp[-8].minor.yy303 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy562,yymsp[-5].minor.yy607,yymsp[-4].minor.yy626,yymsp[-3].minor.yy562,yymsp[-2].minor.yy626,yymsp[-1].minor.yy562,yymsp[-7].minor.yy64,yymsp[0].minor.yy626);
}
break;
- case 91: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
+ case 93: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
{
- yymsp[-9].minor.yy81 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy70,yymsp[-6].minor.yy153,yymsp[-5].minor.yy404,yymsp[-4].minor.yy70,yymsp[-3].minor.yy404,yymsp[-1].minor.yy70,yymsp[-8].minor.yy376,yymsp[0].minor.yy404);
- if( yymsp[-9].minor.yy81 ){
- yymsp[-9].minor.yy81->pWinDefn = yymsp[-2].minor.yy49;
+ yymsp[-9].minor.yy303 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy562,yymsp[-6].minor.yy607,yymsp[-5].minor.yy626,yymsp[-4].minor.yy562,yymsp[-3].minor.yy626,yymsp[-1].minor.yy562,yymsp[-8].minor.yy64,yymsp[0].minor.yy626);
+ if( yymsp[-9].minor.yy303 ){
+ yymsp[-9].minor.yy303->pWinDefn = yymsp[-2].minor.yy375;
}else{
- sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy49);
+ sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy375);
}
}
break;
- case 92: /* values ::= VALUES LP nexprlist RP */
+ case 94: /* values ::= VALUES LP nexprlist RP */
{
- yymsp[-3].minor.yy81 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy70,0,0,0,0,0,SF_Values,0);
+ yymsp[-3].minor.yy303 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy562,0,0,0,0,0,SF_Values,0);
}
break;
- case 93: /* values ::= values COMMA LP nexprlist RP */
+ case 95: /* values ::= values COMMA LP nexprlist RP */
{
- Select *pRight, *pLeft = yymsp[-4].minor.yy81;
- pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy70,0,0,0,0,0,SF_Values|SF_MultiValue,0);
+ Select *pRight, *pLeft = yymsp[-4].minor.yy303;
+ pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy562,0,0,0,0,0,SF_Values|SF_MultiValue,0);
if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
if( pRight ){
pRight->op = TK_ALL;
pRight->pPrior = pLeft;
- yymsp[-4].minor.yy81 = pRight;
+ yymsp[-4].minor.yy303 = pRight;
}else{
- yymsp[-4].minor.yy81 = pLeft;
+ yymsp[-4].minor.yy303 = pLeft;
}
}
break;
- case 94: /* distinct ::= DISTINCT */
-{yymsp[0].minor.yy376 = SF_Distinct;}
+ case 96: /* distinct ::= DISTINCT */
+{yymsp[0].minor.yy64 = SF_Distinct;}
break;
- case 95: /* distinct ::= ALL */
-{yymsp[0].minor.yy376 = SF_All;}
+ case 97: /* distinct ::= ALL */
+{yymsp[0].minor.yy64 = SF_All;}
break;
- case 97: /* sclp ::= */
- case 130: /* orderby_opt ::= */ yytestcase(yyruleno==130);
- case 140: /* groupby_opt ::= */ yytestcase(yyruleno==140);
- case 227: /* exprlist ::= */ yytestcase(yyruleno==227);
- case 230: /* paren_exprlist ::= */ yytestcase(yyruleno==230);
- case 235: /* eidlist_opt ::= */ yytestcase(yyruleno==235);
-{yymsp[1].minor.yy70 = 0;}
+ case 99: /* sclp ::= */
+ case 132: /* orderby_opt ::= */ yytestcase(yyruleno==132);
+ case 142: /* groupby_opt ::= */ yytestcase(yyruleno==142);
+ case 229: /* exprlist ::= */ yytestcase(yyruleno==229);
+ case 232: /* paren_exprlist ::= */ yytestcase(yyruleno==232);
+ case 237: /* eidlist_opt ::= */ yytestcase(yyruleno==237);
+{yymsp[1].minor.yy562 = 0;}
break;
- case 98: /* selcollist ::= sclp scanpt expr scanpt as */
+ case 100: /* selcollist ::= sclp scanpt expr scanpt as */
{
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy70, yymsp[-2].minor.yy404);
- if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy70, &yymsp[0].minor.yy0, 1);
- sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy70,yymsp[-3].minor.yy504,yymsp[-1].minor.yy504);
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy562, yymsp[-2].minor.yy626);
+ if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy562, &yymsp[0].minor.yy0, 1);
+ sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy562,yymsp[-3].minor.yy600,yymsp[-1].minor.yy600);
}
break;
- case 99: /* selcollist ::= sclp scanpt STAR */
+ case 101: /* selcollist ::= sclp scanpt STAR */
{
Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
- yymsp[-2].minor.yy70 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy70, p);
+ yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy562, p);
}
break;
- case 100: /* selcollist ::= sclp scanpt nm DOT STAR */
+ case 102: /* selcollist ::= sclp scanpt nm DOT STAR */
{
Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70, pDot);
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, pDot);
}
break;
- case 101: /* as ::= AS nm */
- case 112: /* dbnm ::= DOT nm */ yytestcase(yyruleno==112);
- case 251: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==251);
- case 252: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==252);
+ case 103: /* as ::= AS nm */
+ case 114: /* dbnm ::= DOT nm */ yytestcase(yyruleno==114);
+ case 253: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==253);
+ case 254: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==254);
{yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
break;
- case 103: /* from ::= */
- case 106: /* stl_prefix ::= */ yytestcase(yyruleno==106);
-{yymsp[1].minor.yy153 = 0;}
+ case 105: /* from ::= */
+ case 108: /* stl_prefix ::= */ yytestcase(yyruleno==108);
+{yymsp[1].minor.yy607 = 0;}
break;
- case 104: /* from ::= FROM seltablist */
+ case 106: /* from ::= FROM seltablist */
{
- yymsp[-1].minor.yy153 = yymsp[0].minor.yy153;
- sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy153);
+ yymsp[-1].minor.yy607 = yymsp[0].minor.yy607;
+ sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy607);
}
break;
- case 105: /* stl_prefix ::= seltablist joinop */
+ case 107: /* stl_prefix ::= seltablist joinop */
{
- if( ALWAYS(yymsp[-1].minor.yy153 && yymsp[-1].minor.yy153->nSrc>0) ) yymsp[-1].minor.yy153->a[yymsp[-1].minor.yy153->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy376;
+ if( ALWAYS(yymsp[-1].minor.yy607 && yymsp[-1].minor.yy607->nSrc>0) ) yymsp[-1].minor.yy607->a[yymsp[-1].minor.yy607->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy64;
}
break;
- case 107: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
+ case 109: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
{
- yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
- sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy153, &yymsp[-2].minor.yy0);
+ yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
+ sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy607, &yymsp[-2].minor.yy0);
}
break;
- case 108: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
+ case 110: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
{
- yymsp[-8].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy153,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
- sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy153, yymsp[-4].minor.yy70);
+ yymsp[-8].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy607,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
+ sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy607, yymsp[-4].minor.yy562);
}
break;
- case 109: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
+ case 111: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
{
- yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy81,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
+ yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy303,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
}
break;
- case 110: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
+ case 112: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
{
- if( yymsp[-6].minor.yy153==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy404==0 && yymsp[0].minor.yy436==0 ){
- yymsp[-6].minor.yy153 = yymsp[-4].minor.yy153;
- }else if( yymsp[-4].minor.yy153->nSrc==1 ){
- yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
- if( yymsp[-6].minor.yy153 ){
- SrcItem *pNew = &yymsp[-6].minor.yy153->a[yymsp[-6].minor.yy153->nSrc-1];
- SrcItem *pOld = yymsp[-4].minor.yy153->a;
+ if( yymsp[-6].minor.yy607==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy626==0 && yymsp[0].minor.yy240==0 ){
+ yymsp[-6].minor.yy607 = yymsp[-4].minor.yy607;
+ }else if( yymsp[-4].minor.yy607->nSrc==1 ){
+ yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
+ if( yymsp[-6].minor.yy607 ){
+ SrcItem *pNew = &yymsp[-6].minor.yy607->a[yymsp[-6].minor.yy607->nSrc-1];
+ SrcItem *pOld = yymsp[-4].minor.yy607->a;
pNew->zName = pOld->zName;
pNew->zDatabase = pOld->zDatabase;
pNew->pSelect = pOld->pSelect;
@@ -162001,226 +163502,226 @@ static YYACTIONTYPE yy_reduce(
pOld->zName = pOld->zDatabase = 0;
pOld->pSelect = 0;
}
- sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy153);
+ sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy607);
}else{
Select *pSubquery;
- sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy153);
- pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy153,0,0,0,0,SF_NestedFrom,0);
- yymsp[-6].minor.yy153 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy153,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy404,yymsp[0].minor.yy436);
+ sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy607);
+ pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy607,0,0,0,0,SF_NestedFrom,0);
+ yymsp[-6].minor.yy607 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy607,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy626,yymsp[0].minor.yy240);
}
}
break;
- case 111: /* dbnm ::= */
- case 125: /* indexed_opt ::= */ yytestcase(yyruleno==125);
+ case 113: /* dbnm ::= */
+ case 127: /* indexed_opt ::= */ yytestcase(yyruleno==127);
{yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;}
break;
- case 113: /* fullname ::= nm */
+ case 115: /* fullname ::= nm */
{
- yylhsminor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
- if( IN_RENAME_OBJECT && yylhsminor.yy153 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy153->a[0].zName, &yymsp[0].minor.yy0);
+ yylhsminor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
+ if( IN_RENAME_OBJECT && yylhsminor.yy607 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy607->a[0].zName, &yymsp[0].minor.yy0);
}
- yymsp[0].minor.yy153 = yylhsminor.yy153;
+ yymsp[0].minor.yy607 = yylhsminor.yy607;
break;
- case 114: /* fullname ::= nm DOT nm */
+ case 116: /* fullname ::= nm DOT nm */
{
- yylhsminor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
- if( IN_RENAME_OBJECT && yylhsminor.yy153 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy153->a[0].zName, &yymsp[0].minor.yy0);
+ yylhsminor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
+ if( IN_RENAME_OBJECT && yylhsminor.yy607 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy607->a[0].zName, &yymsp[0].minor.yy0);
}
- yymsp[-2].minor.yy153 = yylhsminor.yy153;
+ yymsp[-2].minor.yy607 = yylhsminor.yy607;
break;
- case 115: /* xfullname ::= nm */
-{yymsp[0].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
+ case 117: /* xfullname ::= nm */
+{yymsp[0].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
break;
- case 116: /* xfullname ::= nm DOT nm */
-{yymsp[-2].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
+ case 118: /* xfullname ::= nm DOT nm */
+{yymsp[-2].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
break;
- case 117: /* xfullname ::= nm DOT nm AS nm */
+ case 119: /* xfullname ::= nm DOT nm AS nm */
{
- yymsp[-4].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
- if( yymsp[-4].minor.yy153 ) yymsp[-4].minor.yy153->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
+ yymsp[-4].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
+ if( yymsp[-4].minor.yy607 ) yymsp[-4].minor.yy607->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
}
break;
- case 118: /* xfullname ::= nm AS nm */
+ case 120: /* xfullname ::= nm AS nm */
{
- yymsp[-2].minor.yy153 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
- if( yymsp[-2].minor.yy153 ) yymsp[-2].minor.yy153->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
+ yymsp[-2].minor.yy607 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
+ if( yymsp[-2].minor.yy607 ) yymsp[-2].minor.yy607->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
}
break;
- case 119: /* joinop ::= COMMA|JOIN */
-{ yymsp[0].minor.yy376 = JT_INNER; }
+ case 121: /* joinop ::= COMMA|JOIN */
+{ yymsp[0].minor.yy64 = JT_INNER; }
break;
- case 120: /* joinop ::= JOIN_KW JOIN */
-{yymsp[-1].minor.yy376 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
+ case 122: /* joinop ::= JOIN_KW JOIN */
+{yymsp[-1].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
break;
- case 121: /* joinop ::= JOIN_KW nm JOIN */
-{yymsp[-2].minor.yy376 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
+ case 123: /* joinop ::= JOIN_KW nm JOIN */
+{yymsp[-2].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
break;
- case 122: /* joinop ::= JOIN_KW nm nm JOIN */
-{yymsp[-3].minor.yy376 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
+ case 124: /* joinop ::= JOIN_KW nm nm JOIN */
+{yymsp[-3].minor.yy64 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
break;
- case 123: /* on_opt ::= ON expr */
- case 143: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==143);
- case 150: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==150);
- case 152: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==152);
- case 223: /* case_else ::= ELSE expr */ yytestcase(yyruleno==223);
- case 244: /* vinto ::= INTO expr */ yytestcase(yyruleno==244);
-{yymsp[-1].minor.yy404 = yymsp[0].minor.yy404;}
+ case 125: /* on_opt ::= ON expr */
+ case 145: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==145);
+ case 152: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==152);
+ case 154: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154);
+ case 225: /* case_else ::= ELSE expr */ yytestcase(yyruleno==225);
+ case 246: /* vinto ::= INTO expr */ yytestcase(yyruleno==246);
+{yymsp[-1].minor.yy626 = yymsp[0].minor.yy626;}
break;
- case 124: /* on_opt ::= */
- case 142: /* having_opt ::= */ yytestcase(yyruleno==142);
- case 144: /* limit_opt ::= */ yytestcase(yyruleno==144);
- case 149: /* where_opt ::= */ yytestcase(yyruleno==149);
- case 151: /* where_opt_ret ::= */ yytestcase(yyruleno==151);
- case 224: /* case_else ::= */ yytestcase(yyruleno==224);
- case 226: /* case_operand ::= */ yytestcase(yyruleno==226);
- case 245: /* vinto ::= */ yytestcase(yyruleno==245);
-{yymsp[1].minor.yy404 = 0;}
+ case 126: /* on_opt ::= */
+ case 144: /* having_opt ::= */ yytestcase(yyruleno==144);
+ case 146: /* limit_opt ::= */ yytestcase(yyruleno==146);
+ case 151: /* where_opt ::= */ yytestcase(yyruleno==151);
+ case 153: /* where_opt_ret ::= */ yytestcase(yyruleno==153);
+ case 226: /* case_else ::= */ yytestcase(yyruleno==226);
+ case 228: /* case_operand ::= */ yytestcase(yyruleno==228);
+ case 247: /* vinto ::= */ yytestcase(yyruleno==247);
+{yymsp[1].minor.yy626 = 0;}
break;
- case 126: /* indexed_opt ::= INDEXED BY nm */
+ case 128: /* indexed_opt ::= INDEXED BY nm */
{yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
break;
- case 127: /* indexed_opt ::= NOT INDEXED */
+ case 129: /* indexed_opt ::= NOT INDEXED */
{yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
break;
- case 128: /* using_opt ::= USING LP idlist RP */
-{yymsp[-3].minor.yy436 = yymsp[-1].minor.yy436;}
+ case 130: /* using_opt ::= USING LP idlist RP */
+{yymsp[-3].minor.yy240 = yymsp[-1].minor.yy240;}
break;
- case 129: /* using_opt ::= */
- case 171: /* idlist_opt ::= */ yytestcase(yyruleno==171);
-{yymsp[1].minor.yy436 = 0;}
+ case 131: /* using_opt ::= */
+ case 173: /* idlist_opt ::= */ yytestcase(yyruleno==173);
+{yymsp[1].minor.yy240 = 0;}
break;
- case 131: /* orderby_opt ::= ORDER BY sortlist */
- case 141: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==141);
-{yymsp[-2].minor.yy70 = yymsp[0].minor.yy70;}
+ case 133: /* orderby_opt ::= ORDER BY sortlist */
+ case 143: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==143);
+{yymsp[-2].minor.yy562 = yymsp[0].minor.yy562;}
break;
- case 132: /* sortlist ::= sortlist COMMA expr sortorder nulls */
+ case 134: /* sortlist ::= sortlist COMMA expr sortorder nulls */
{
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70,yymsp[-2].minor.yy404);
- sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy70,yymsp[-1].minor.yy376,yymsp[0].minor.yy376);
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562,yymsp[-2].minor.yy626);
+ sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy562,yymsp[-1].minor.yy64,yymsp[0].minor.yy64);
}
break;
- case 133: /* sortlist ::= expr sortorder nulls */
+ case 135: /* sortlist ::= expr sortorder nulls */
{
- yymsp[-2].minor.yy70 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy404); /*A-overwrites-Y*/
- sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy70,yymsp[-1].minor.yy376,yymsp[0].minor.yy376);
+ yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy626); /*A-overwrites-Y*/
+ sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy562,yymsp[-1].minor.yy64,yymsp[0].minor.yy64);
}
break;
- case 134: /* sortorder ::= ASC */
-{yymsp[0].minor.yy376 = SQLITE_SO_ASC;}
+ case 136: /* sortorder ::= ASC */
+{yymsp[0].minor.yy64 = SQLITE_SO_ASC;}
break;
- case 135: /* sortorder ::= DESC */
-{yymsp[0].minor.yy376 = SQLITE_SO_DESC;}
+ case 137: /* sortorder ::= DESC */
+{yymsp[0].minor.yy64 = SQLITE_SO_DESC;}
break;
- case 136: /* sortorder ::= */
- case 139: /* nulls ::= */ yytestcase(yyruleno==139);
-{yymsp[1].minor.yy376 = SQLITE_SO_UNDEFINED;}
+ case 138: /* sortorder ::= */
+ case 141: /* nulls ::= */ yytestcase(yyruleno==141);
+{yymsp[1].minor.yy64 = SQLITE_SO_UNDEFINED;}
break;
- case 137: /* nulls ::= NULLS FIRST */
-{yymsp[-1].minor.yy376 = SQLITE_SO_ASC;}
+ case 139: /* nulls ::= NULLS FIRST */
+{yymsp[-1].minor.yy64 = SQLITE_SO_ASC;}
break;
- case 138: /* nulls ::= NULLS LAST */
-{yymsp[-1].minor.yy376 = SQLITE_SO_DESC;}
+ case 140: /* nulls ::= NULLS LAST */
+{yymsp[-1].minor.yy64 = SQLITE_SO_DESC;}
break;
- case 145: /* limit_opt ::= LIMIT expr */
-{yymsp[-1].minor.yy404 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy404,0);}
+ case 147: /* limit_opt ::= LIMIT expr */
+{yymsp[-1].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy626,0);}
break;
- case 146: /* limit_opt ::= LIMIT expr OFFSET expr */
-{yymsp[-3].minor.yy404 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);}
+ case 148: /* limit_opt ::= LIMIT expr OFFSET expr */
+{yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
break;
- case 147: /* limit_opt ::= LIMIT expr COMMA expr */
-{yymsp[-3].minor.yy404 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy404,yymsp[-2].minor.yy404);}
+ case 149: /* limit_opt ::= LIMIT expr COMMA expr */
+{yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy626,yymsp[-2].minor.yy626);}
break;
- case 148: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
+ case 150: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
{
- sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy153, &yymsp[-1].minor.yy0);
- sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy153,yymsp[0].minor.yy404,0,0);
+ sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy607, &yymsp[-1].minor.yy0);
+ sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy607,yymsp[0].minor.yy626,0,0);
}
break;
- case 153: /* where_opt_ret ::= RETURNING selcollist */
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy70); yymsp[-1].minor.yy404 = 0;}
+ case 155: /* where_opt_ret ::= RETURNING selcollist */
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy562); yymsp[-1].minor.yy626 = 0;}
break;
- case 154: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy70); yymsp[-3].minor.yy404 = yymsp[-2].minor.yy404;}
+ case 156: /* where_opt_ret ::= WHERE expr RETURNING selcollist */
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy562); yymsp[-3].minor.yy626 = yymsp[-2].minor.yy626;}
break;
- case 155: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
+ case 157: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
{
- sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy153, &yymsp[-4].minor.yy0);
- sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy70,"set list");
- yymsp[-5].minor.yy153 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy153, yymsp[-1].minor.yy153);
- sqlite3Update(pParse,yymsp[-5].minor.yy153,yymsp[-2].minor.yy70,yymsp[0].minor.yy404,yymsp[-6].minor.yy376,0,0,0);
+ sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy607, &yymsp[-4].minor.yy0);
+ sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy562,"set list");
+ yymsp[-5].minor.yy607 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy607, yymsp[-1].minor.yy607);
+ sqlite3Update(pParse,yymsp[-5].minor.yy607,yymsp[-2].minor.yy562,yymsp[0].minor.yy626,yymsp[-6].minor.yy64,0,0,0);
}
break;
- case 156: /* setlist ::= setlist COMMA nm EQ expr */
+ case 158: /* setlist ::= setlist COMMA nm EQ expr */
{
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy70, yymsp[0].minor.yy404);
- sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy70, &yymsp[-2].minor.yy0, 1);
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy562, yymsp[0].minor.yy626);
+ sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy562, &yymsp[-2].minor.yy0, 1);
}
break;
- case 157: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
+ case 159: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
{
- yymsp[-6].minor.yy70 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy70, yymsp[-3].minor.yy436, yymsp[0].minor.yy404);
+ yymsp[-6].minor.yy562 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy562, yymsp[-3].minor.yy240, yymsp[0].minor.yy626);
}
break;
- case 158: /* setlist ::= nm EQ expr */
+ case 160: /* setlist ::= nm EQ expr */
{
- yylhsminor.yy70 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy404);
- sqlite3ExprListSetName(pParse, yylhsminor.yy70, &yymsp[-2].minor.yy0, 1);
+ yylhsminor.yy562 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy626);
+ sqlite3ExprListSetName(pParse, yylhsminor.yy562, &yymsp[-2].minor.yy0, 1);
}
- yymsp[-2].minor.yy70 = yylhsminor.yy70;
+ yymsp[-2].minor.yy562 = yylhsminor.yy562;
break;
- case 159: /* setlist ::= LP idlist RP EQ expr */
+ case 161: /* setlist ::= LP idlist RP EQ expr */
{
- yymsp[-4].minor.yy70 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy436, yymsp[0].minor.yy404);
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy240, yymsp[0].minor.yy626);
}
break;
- case 160: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
+ case 162: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
{
- sqlite3Insert(pParse, yymsp[-3].minor.yy153, yymsp[-1].minor.yy81, yymsp[-2].minor.yy436, yymsp[-5].minor.yy376, yymsp[0].minor.yy190);
+ sqlite3Insert(pParse, yymsp[-3].minor.yy607, yymsp[-1].minor.yy303, yymsp[-2].minor.yy240, yymsp[-5].minor.yy64, yymsp[0].minor.yy138);
}
break;
- case 161: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
+ case 163: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
{
- sqlite3Insert(pParse, yymsp[-4].minor.yy153, 0, yymsp[-3].minor.yy436, yymsp[-6].minor.yy376, 0);
+ sqlite3Insert(pParse, yymsp[-4].minor.yy607, 0, yymsp[-3].minor.yy240, yymsp[-6].minor.yy64, 0);
}
break;
- case 162: /* upsert ::= */
-{ yymsp[1].minor.yy190 = 0; }
+ case 164: /* upsert ::= */
+{ yymsp[1].minor.yy138 = 0; }
break;
- case 163: /* upsert ::= RETURNING selcollist */
-{ yymsp[-1].minor.yy190 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy70); }
+ case 165: /* upsert ::= RETURNING selcollist */
+{ yymsp[-1].minor.yy138 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy562); }
break;
- case 164: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
-{ yymsp[-11].minor.yy190 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy70,yymsp[-6].minor.yy404,yymsp[-2].minor.yy70,yymsp[-1].minor.yy404,yymsp[0].minor.yy190);}
+ case 166: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
+{ yymsp[-11].minor.yy138 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy562,yymsp[-6].minor.yy626,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626,yymsp[0].minor.yy138);}
break;
- case 165: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
-{ yymsp[-8].minor.yy190 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy70,yymsp[-3].minor.yy404,0,0,yymsp[0].minor.yy190); }
+ case 167: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
+{ yymsp[-8].minor.yy138 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy562,yymsp[-3].minor.yy626,0,0,yymsp[0].minor.yy138); }
break;
- case 166: /* upsert ::= ON CONFLICT DO NOTHING returning */
-{ yymsp[-4].minor.yy190 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
+ case 168: /* upsert ::= ON CONFLICT DO NOTHING returning */
+{ yymsp[-4].minor.yy138 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); }
break;
- case 167: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
-{ yymsp[-7].minor.yy190 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy70,yymsp[-1].minor.yy404,0);}
+ case 169: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
+{ yymsp[-7].minor.yy138 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626,0);}
break;
- case 168: /* returning ::= RETURNING selcollist */
-{sqlite3AddReturning(pParse,yymsp[0].minor.yy70);}
+ case 170: /* returning ::= RETURNING selcollist */
+{sqlite3AddReturning(pParse,yymsp[0].minor.yy562);}
break;
- case 172: /* idlist_opt ::= LP idlist RP */
-{yymsp[-2].minor.yy436 = yymsp[-1].minor.yy436;}
+ case 174: /* idlist_opt ::= LP idlist RP */
+{yymsp[-2].minor.yy240 = yymsp[-1].minor.yy240;}
break;
- case 173: /* idlist ::= idlist COMMA nm */
-{yymsp[-2].minor.yy436 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy436,&yymsp[0].minor.yy0);}
+ case 175: /* idlist ::= idlist COMMA nm */
+{yymsp[-2].minor.yy240 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy240,&yymsp[0].minor.yy0);}
break;
- case 174: /* idlist ::= nm */
-{yymsp[0].minor.yy436 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
+ case 176: /* idlist ::= nm */
+{yymsp[0].minor.yy240 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
break;
- case 175: /* expr ::= LP expr RP */
-{yymsp[-2].minor.yy404 = yymsp[-1].minor.yy404;}
+ case 177: /* expr ::= LP expr RP */
+{yymsp[-2].minor.yy626 = yymsp[-1].minor.yy626;}
break;
- case 176: /* expr ::= ID|INDEXED */
- case 177: /* expr ::= JOIN_KW */ yytestcase(yyruleno==177);
-{yymsp[0].minor.yy404=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
+ case 178: /* expr ::= ID|INDEXED */
+ case 179: /* expr ::= JOIN_KW */ yytestcase(yyruleno==179);
+{yymsp[0].minor.yy626=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
break;
- case 178: /* expr ::= nm DOT nm */
+ case 180: /* expr ::= nm DOT nm */
{
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
@@ -162228,11 +163729,11 @@ static YYACTIONTYPE yy_reduce(
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
}
- yylhsminor.yy404 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
+ yylhsminor.yy626 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
}
- yymsp[-2].minor.yy404 = yylhsminor.yy404;
+ yymsp[-2].minor.yy626 = yylhsminor.yy626;
break;
- case 179: /* expr ::= nm DOT nm DOT nm */
+ case 181: /* expr ::= nm DOT nm DOT nm */
{
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
@@ -162242,26 +163743,26 @@ static YYACTIONTYPE yy_reduce(
sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
}
- yylhsminor.yy404 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
+ yylhsminor.yy626 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
}
- yymsp[-4].minor.yy404 = yylhsminor.yy404;
+ yymsp[-4].minor.yy626 = yylhsminor.yy626;
break;
- case 180: /* term ::= NULL|FLOAT|BLOB */
- case 181: /* term ::= STRING */ yytestcase(yyruleno==181);
-{yymsp[0].minor.yy404=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
+ case 182: /* term ::= NULL|FLOAT|BLOB */
+ case 183: /* term ::= STRING */ yytestcase(yyruleno==183);
+{yymsp[0].minor.yy626=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
break;
- case 182: /* term ::= INTEGER */
+ case 184: /* term ::= INTEGER */
{
- yylhsminor.yy404 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
+ yylhsminor.yy626 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
}
- yymsp[0].minor.yy404 = yylhsminor.yy404;
+ yymsp[0].minor.yy626 = yylhsminor.yy626;
break;
- case 183: /* expr ::= VARIABLE */
+ case 185: /* expr ::= VARIABLE */
{
if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
u32 n = yymsp[0].minor.yy0.n;
- yymsp[0].minor.yy404 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
- sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy404, n);
+ yymsp[0].minor.yy626 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
+ sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy626, n);
}else{
/* When doing a nested parse, one can include terms in an expression
** that look like this: #1 #2 ... These terms refer to registers
@@ -162270,159 +163771,159 @@ static YYACTIONTYPE yy_reduce(
assert( t.n>=2 );
if( pParse->nested==0 ){
sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
- yymsp[0].minor.yy404 = 0;
+ yymsp[0].minor.yy626 = 0;
}else{
- yymsp[0].minor.yy404 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
- if( yymsp[0].minor.yy404 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy404->iTable);
+ yymsp[0].minor.yy626 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
+ if( yymsp[0].minor.yy626 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy626->iTable);
}
}
}
break;
- case 184: /* expr ::= expr COLLATE ID|STRING */
+ case 186: /* expr ::= expr COLLATE ID|STRING */
{
- yymsp[-2].minor.yy404 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy404, &yymsp[0].minor.yy0, 1);
+ yymsp[-2].minor.yy626 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy626, &yymsp[0].minor.yy0, 1);
}
break;
- case 185: /* expr ::= CAST LP expr AS typetoken RP */
+ case 187: /* expr ::= CAST LP expr AS typetoken RP */
{
- yymsp[-5].minor.yy404 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
- sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy404, yymsp[-3].minor.yy404, 0);
+ yymsp[-5].minor.yy626 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
+ sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy626, yymsp[-3].minor.yy626, 0);
}
break;
- case 186: /* expr ::= ID|INDEXED LP distinct exprlist RP */
+ case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP */
{
- yylhsminor.yy404 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy70, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy376);
+ yylhsminor.yy626 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy562, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy64);
}
- yymsp[-4].minor.yy404 = yylhsminor.yy404;
+ yymsp[-4].minor.yy626 = yylhsminor.yy626;
break;
- case 187: /* expr ::= ID|INDEXED LP STAR RP */
+ case 189: /* expr ::= ID|INDEXED LP STAR RP */
{
- yylhsminor.yy404 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
+ yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
}
- yymsp[-3].minor.yy404 = yylhsminor.yy404;
+ yymsp[-3].minor.yy626 = yylhsminor.yy626;
break;
- case 188: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
+ case 190: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
{
- yylhsminor.yy404 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy70, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy376);
- sqlite3WindowAttach(pParse, yylhsminor.yy404, yymsp[0].minor.yy49);
+ yylhsminor.yy626 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy562, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy64);
+ sqlite3WindowAttach(pParse, yylhsminor.yy626, yymsp[0].minor.yy375);
}
- yymsp[-5].minor.yy404 = yylhsminor.yy404;
+ yymsp[-5].minor.yy626 = yylhsminor.yy626;
break;
- case 189: /* expr ::= ID|INDEXED LP STAR RP filter_over */
+ case 191: /* expr ::= ID|INDEXED LP STAR RP filter_over */
{
- yylhsminor.yy404 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
- sqlite3WindowAttach(pParse, yylhsminor.yy404, yymsp[0].minor.yy49);
+ yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
+ sqlite3WindowAttach(pParse, yylhsminor.yy626, yymsp[0].minor.yy375);
}
- yymsp[-4].minor.yy404 = yylhsminor.yy404;
+ yymsp[-4].minor.yy626 = yylhsminor.yy626;
break;
- case 190: /* term ::= CTIME_KW */
+ case 192: /* term ::= CTIME_KW */
{
- yylhsminor.yy404 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
+ yylhsminor.yy626 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
}
- yymsp[0].minor.yy404 = yylhsminor.yy404;
+ yymsp[0].minor.yy626 = yylhsminor.yy626;
break;
- case 191: /* expr ::= LP nexprlist COMMA expr RP */
+ case 193: /* expr ::= LP nexprlist COMMA expr RP */
{
- ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy70, yymsp[-1].minor.yy404);
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
- if( yymsp[-4].minor.yy404 ){
- yymsp[-4].minor.yy404->x.pList = pList;
+ ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy562, yymsp[-1].minor.yy626);
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
+ if( yymsp[-4].minor.yy626 ){
+ yymsp[-4].minor.yy626->x.pList = pList;
if( ALWAYS(pList->nExpr) ){
- yymsp[-4].minor.yy404->flags |= pList->a[0].pExpr->flags & EP_Propagate;
+ yymsp[-4].minor.yy626->flags |= pList->a[0].pExpr->flags & EP_Propagate;
}
}else{
sqlite3ExprListDelete(pParse->db, pList);
}
}
break;
- case 192: /* expr ::= expr AND expr */
-{yymsp[-2].minor.yy404=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);}
+ case 194: /* expr ::= expr AND expr */
+{yymsp[-2].minor.yy626=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
break;
- case 193: /* expr ::= expr OR expr */
- case 194: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==194);
- case 195: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==195);
- case 196: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==196);
- case 197: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==197);
- case 198: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==198);
- case 199: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==199);
-{yymsp[-2].minor.yy404=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);}
+ case 195: /* expr ::= expr OR expr */
+ case 196: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==196);
+ case 197: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==197);
+ case 198: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==198);
+ case 199: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==199);
+ case 200: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==200);
+ case 201: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==201);
+{yymsp[-2].minor.yy626=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);}
break;
- case 200: /* likeop ::= NOT LIKE_KW|MATCH */
+ case 202: /* likeop ::= NOT LIKE_KW|MATCH */
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
break;
- case 201: /* expr ::= expr likeop expr */
+ case 203: /* expr ::= expr likeop expr */
{
ExprList *pList;
int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
yymsp[-1].minor.yy0.n &= 0x7fffffff;
- pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy404);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy404);
- yymsp[-2].minor.yy404 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
- if( bNot ) yymsp[-2].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy404, 0);
- if( yymsp[-2].minor.yy404 ) yymsp[-2].minor.yy404->flags |= EP_InfixFunc;
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy626);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy626);
+ yymsp[-2].minor.yy626 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
+ if( bNot ) yymsp[-2].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy626, 0);
+ if( yymsp[-2].minor.yy626 ) yymsp[-2].minor.yy626->flags |= EP_InfixFunc;
}
break;
- case 202: /* expr ::= expr likeop expr ESCAPE expr */
+ case 204: /* expr ::= expr likeop expr ESCAPE expr */
{
ExprList *pList;
int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
yymsp[-3].minor.yy0.n &= 0x7fffffff;
- pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy404);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy404);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy404);
- yymsp[-4].minor.yy404 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
- if( bNot ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
- if( yymsp[-4].minor.yy404 ) yymsp[-4].minor.yy404->flags |= EP_InfixFunc;
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy626);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy626);
+ yymsp[-4].minor.yy626 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
+ if( bNot ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
+ if( yymsp[-4].minor.yy626 ) yymsp[-4].minor.yy626->flags |= EP_InfixFunc;
}
break;
- case 203: /* expr ::= expr ISNULL|NOTNULL */
-{yymsp[-1].minor.yy404 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy404,0);}
+ case 205: /* expr ::= expr ISNULL|NOTNULL */
+{yymsp[-1].minor.yy626 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy626,0);}
break;
- case 204: /* expr ::= expr NOT NULL */
-{yymsp[-2].minor.yy404 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy404,0);}
+ case 206: /* expr ::= expr NOT NULL */
+{yymsp[-2].minor.yy626 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy626,0);}
break;
- case 205: /* expr ::= expr IS expr */
+ case 207: /* expr ::= expr IS expr */
{
- yymsp[-2].minor.yy404 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy404,yymsp[0].minor.yy404);
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy404, yymsp[-2].minor.yy404, TK_ISNULL);
+ yymsp[-2].minor.yy626 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy626,yymsp[0].minor.yy626);
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy626, yymsp[-2].minor.yy626, TK_ISNULL);
}
break;
- case 206: /* expr ::= expr IS NOT expr */
+ case 208: /* expr ::= expr IS NOT expr */
{
- yymsp[-3].minor.yy404 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy404,yymsp[0].minor.yy404);
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy404, yymsp[-3].minor.yy404, TK_NOTNULL);
+ yymsp[-3].minor.yy626 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy626,yymsp[0].minor.yy626);
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy626, yymsp[-3].minor.yy626, TK_NOTNULL);
}
break;
- case 207: /* expr ::= NOT expr */
- case 208: /* expr ::= BITNOT expr */ yytestcase(yyruleno==208);
-{yymsp[-1].minor.yy404 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy404, 0);/*A-overwrites-B*/}
+ case 209: /* expr ::= NOT expr */
+ case 210: /* expr ::= BITNOT expr */ yytestcase(yyruleno==210);
+{yymsp[-1].minor.yy626 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy626, 0);/*A-overwrites-B*/}
break;
- case 209: /* expr ::= PLUS|MINUS expr */
+ case 211: /* expr ::= PLUS|MINUS expr */
{
- yymsp[-1].minor.yy404 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy404, 0);
+ yymsp[-1].minor.yy626 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy626, 0);
/*A-overwrites-B*/
}
break;
- case 210: /* between_op ::= BETWEEN */
- case 213: /* in_op ::= IN */ yytestcase(yyruleno==213);
-{yymsp[0].minor.yy376 = 0;}
+ case 212: /* between_op ::= BETWEEN */
+ case 215: /* in_op ::= IN */ yytestcase(yyruleno==215);
+{yymsp[0].minor.yy64 = 0;}
break;
- case 212: /* expr ::= expr between_op expr AND expr */
+ case 214: /* expr ::= expr between_op expr AND expr */
{
- ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy404);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy404);
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy404, 0);
- if( yymsp[-4].minor.yy404 ){
- yymsp[-4].minor.yy404->x.pList = pList;
+ ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy626);
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy626, 0);
+ if( yymsp[-4].minor.yy626 ){
+ yymsp[-4].minor.yy626->x.pList = pList;
}else{
sqlite3ExprListDelete(pParse->db, pList);
}
- if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
+ if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
}
break;
- case 215: /* expr ::= expr in_op LP exprlist RP */
+ case 217: /* expr ::= expr in_op LP exprlist RP */
{
- if( yymsp[-1].minor.yy70==0 ){
+ if( yymsp[-1].minor.yy562==0 ){
/* Expressions of the form
**
** expr1 IN ()
@@ -162431,197 +163932,205 @@ static YYACTIONTYPE yy_reduce(
** simplify to constants 0 (false) and 1 (true), respectively,
** regardless of the value of expr1.
*/
- sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy404);
- yymsp[-4].minor.yy404 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy376 ? "1" : "0");
- }else if( yymsp[-1].minor.yy70->nExpr==1 && sqlite3ExprIsConstant(yymsp[-1].minor.yy70->a[0].pExpr) ){
- Expr *pRHS = yymsp[-1].minor.yy70->a[0].pExpr;
- yymsp[-1].minor.yy70->a[0].pExpr = 0;
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy70);
- pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy404, pRHS);
- if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
- }else{
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy404, 0);
- if( yymsp[-4].minor.yy404 ){
- yymsp[-4].minor.yy404->x.pList = yymsp[-1].minor.yy70;
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy404);
+ sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy626);
+ yymsp[-4].minor.yy626 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy64 ? "1" : "0");
+ }else{
+ Expr *pRHS = yymsp[-1].minor.yy562->a[0].pExpr;
+ if( yymsp[-1].minor.yy562->nExpr==1 && sqlite3ExprIsConstant(pRHS) && yymsp[-4].minor.yy626->op!=TK_VECTOR ){
+ yymsp[-1].minor.yy562->a[0].pExpr = 0;
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy562);
+ pRHS = sqlite3PExpr(pParse, TK_UPLUS, pRHS, 0);
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_EQ, yymsp[-4].minor.yy626, pRHS);
}else{
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy70);
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
+ if( yymsp[-4].minor.yy626==0 ){
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy562);
+ }else if( yymsp[-4].minor.yy626->pLeft->op==TK_VECTOR ){
+ int nExpr = yymsp[-4].minor.yy626->pLeft->x.pList->nExpr;
+ Select *pSelectRHS = sqlite3ExprListToValues(pParse, nExpr, yymsp[-1].minor.yy562);
+ if( pSelectRHS ){
+ parserDoubleLinkSelect(pParse, pSelectRHS);
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, pSelectRHS);
+ }
+ }else{
+ yymsp[-4].minor.yy626->x.pList = yymsp[-1].minor.yy562;
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy626);
+ }
}
- if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
+ if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
}
}
break;
- case 216: /* expr ::= LP select RP */
+ case 218: /* expr ::= LP select RP */
{
- yymsp[-2].minor.yy404 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
- sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy404, yymsp[-1].minor.yy81);
+ yymsp[-2].minor.yy626 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
+ sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy626, yymsp[-1].minor.yy303);
}
break;
- case 217: /* expr ::= expr in_op LP select RP */
+ case 219: /* expr ::= expr in_op LP select RP */
{
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy404, 0);
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy404, yymsp[-1].minor.yy81);
- if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, yymsp[-1].minor.yy303);
+ if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
}
break;
- case 218: /* expr ::= expr in_op nm dbnm paren_exprlist */
+ case 220: /* expr ::= expr in_op nm dbnm paren_exprlist */
{
SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
- if( yymsp[0].minor.yy70 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy70);
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy404, 0);
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy404, pSelect);
- if( yymsp[-3].minor.yy376 ) yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy404, 0);
+ if( yymsp[0].minor.yy562 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy562);
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy626, 0);
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy626, pSelect);
+ if( yymsp[-3].minor.yy64 ) yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy626, 0);
}
break;
- case 219: /* expr ::= EXISTS LP select RP */
+ case 221: /* expr ::= EXISTS LP select RP */
{
Expr *p;
- p = yymsp[-3].minor.yy404 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
- sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy81);
+ p = yymsp[-3].minor.yy626 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
+ sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy303);
}
break;
- case 220: /* expr ::= CASE case_operand case_exprlist case_else END */
+ case 222: /* expr ::= CASE case_operand case_exprlist case_else END */
{
- yymsp[-4].minor.yy404 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy404, 0);
- if( yymsp[-4].minor.yy404 ){
- yymsp[-4].minor.yy404->x.pList = yymsp[-1].minor.yy404 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy70,yymsp[-1].minor.yy404) : yymsp[-2].minor.yy70;
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy404);
+ yymsp[-4].minor.yy626 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy626, 0);
+ if( yymsp[-4].minor.yy626 ){
+ yymsp[-4].minor.yy626->x.pList = yymsp[-1].minor.yy626 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy562,yymsp[-1].minor.yy626) : yymsp[-2].minor.yy562;
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy626);
}else{
- sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy70);
- sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy404);
+ sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy562);
+ sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy626);
}
}
break;
- case 221: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
+ case 223: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
{
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70, yymsp[-2].minor.yy404);
- yymsp[-4].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy70, yymsp[0].minor.yy404);
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, yymsp[-2].minor.yy626);
+ yymsp[-4].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy562, yymsp[0].minor.yy626);
}
break;
- case 222: /* case_exprlist ::= WHEN expr THEN expr */
+ case 224: /* case_exprlist ::= WHEN expr THEN expr */
{
- yymsp[-3].minor.yy70 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy404);
- yymsp[-3].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy70, yymsp[0].minor.yy404);
+ yymsp[-3].minor.yy562 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy626);
+ yymsp[-3].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy562, yymsp[0].minor.yy626);
}
break;
- case 225: /* case_operand ::= expr */
-{yymsp[0].minor.yy404 = yymsp[0].minor.yy404; /*A-overwrites-X*/}
+ case 227: /* case_operand ::= expr */
+{yymsp[0].minor.yy626 = yymsp[0].minor.yy626; /*A-overwrites-X*/}
break;
- case 228: /* nexprlist ::= nexprlist COMMA expr */
-{yymsp[-2].minor.yy70 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy70,yymsp[0].minor.yy404);}
+ case 230: /* nexprlist ::= nexprlist COMMA expr */
+{yymsp[-2].minor.yy562 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy562,yymsp[0].minor.yy626);}
break;
- case 229: /* nexprlist ::= expr */
-{yymsp[0].minor.yy70 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy404); /*A-overwrites-Y*/}
+ case 231: /* nexprlist ::= expr */
+{yymsp[0].minor.yy562 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy626); /*A-overwrites-Y*/}
break;
- case 231: /* paren_exprlist ::= LP exprlist RP */
- case 236: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==236);
-{yymsp[-2].minor.yy70 = yymsp[-1].minor.yy70;}
+ case 233: /* paren_exprlist ::= LP exprlist RP */
+ case 238: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==238);
+{yymsp[-2].minor.yy562 = yymsp[-1].minor.yy562;}
break;
- case 232: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
+ case 234: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
{
sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
- sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy70, yymsp[-10].minor.yy376,
- &yymsp[-11].minor.yy0, yymsp[0].minor.yy404, SQLITE_SO_ASC, yymsp[-8].minor.yy376, SQLITE_IDXTYPE_APPDEF);
+ sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy562, yymsp[-10].minor.yy64,
+ &yymsp[-11].minor.yy0, yymsp[0].minor.yy626, SQLITE_SO_ASC, yymsp[-8].minor.yy64, SQLITE_IDXTYPE_APPDEF);
if( IN_RENAME_OBJECT && pParse->pNewIndex ){
sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
}
}
break;
- case 233: /* uniqueflag ::= UNIQUE */
- case 275: /* raisetype ::= ABORT */ yytestcase(yyruleno==275);
-{yymsp[0].minor.yy376 = OE_Abort;}
+ case 235: /* uniqueflag ::= UNIQUE */
+ case 277: /* raisetype ::= ABORT */ yytestcase(yyruleno==277);
+{yymsp[0].minor.yy64 = OE_Abort;}
break;
- case 234: /* uniqueflag ::= */
-{yymsp[1].minor.yy376 = OE_None;}
+ case 236: /* uniqueflag ::= */
+{yymsp[1].minor.yy64 = OE_None;}
break;
- case 237: /* eidlist ::= eidlist COMMA nm collate sortorder */
+ case 239: /* eidlist ::= eidlist COMMA nm collate sortorder */
{
- yymsp[-4].minor.yy70 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy70, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy376, yymsp[0].minor.yy376);
+ yymsp[-4].minor.yy562 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy562, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy64, yymsp[0].minor.yy64);
}
break;
- case 238: /* eidlist ::= nm collate sortorder */
+ case 240: /* eidlist ::= nm collate sortorder */
{
- yymsp[-2].minor.yy70 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy376, yymsp[0].minor.yy376); /*A-overwrites-Y*/
+ yymsp[-2].minor.yy562 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy64, yymsp[0].minor.yy64); /*A-overwrites-Y*/
}
break;
- case 241: /* cmd ::= DROP INDEX ifexists fullname */
-{sqlite3DropIndex(pParse, yymsp[0].minor.yy153, yymsp[-1].minor.yy376);}
+ case 243: /* cmd ::= DROP INDEX ifexists fullname */
+{sqlite3DropIndex(pParse, yymsp[0].minor.yy607, yymsp[-1].minor.yy64);}
break;
- case 242: /* cmd ::= VACUUM vinto */
-{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy404);}
+ case 244: /* cmd ::= VACUUM vinto */
+{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy626);}
break;
- case 243: /* cmd ::= VACUUM nm vinto */
-{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy404);}
+ case 245: /* cmd ::= VACUUM nm vinto */
+{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy626);}
break;
- case 246: /* cmd ::= PRAGMA nm dbnm */
+ case 248: /* cmd ::= PRAGMA nm dbnm */
{sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
break;
- case 247: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
+ case 249: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
break;
- case 248: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
+ case 250: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
break;
- case 249: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
+ case 251: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
break;
- case 250: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
+ case 252: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
break;
- case 253: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
+ case 255: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
{
Token all;
all.z = yymsp[-3].minor.yy0.z;
all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
- sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy157, &all);
+ sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy95, &all);
}
break;
- case 254: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
+ case 256: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
{
- sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy376, yymsp[-4].minor.yy262.a, yymsp[-4].minor.yy262.b, yymsp[-2].minor.yy153, yymsp[0].minor.yy404, yymsp[-10].minor.yy376, yymsp[-8].minor.yy376);
+ sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy64, yymsp[-4].minor.yy570.a, yymsp[-4].minor.yy570.b, yymsp[-2].minor.yy607, yymsp[0].minor.yy626, yymsp[-10].minor.yy64, yymsp[-8].minor.yy64);
yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
}
break;
- case 255: /* trigger_time ::= BEFORE|AFTER */
-{ yymsp[0].minor.yy376 = yymsp[0].major; /*A-overwrites-X*/ }
+ case 257: /* trigger_time ::= BEFORE|AFTER */
+{ yymsp[0].minor.yy64 = yymsp[0].major; /*A-overwrites-X*/ }
break;
- case 256: /* trigger_time ::= INSTEAD OF */
-{ yymsp[-1].minor.yy376 = TK_INSTEAD;}
+ case 258: /* trigger_time ::= INSTEAD OF */
+{ yymsp[-1].minor.yy64 = TK_INSTEAD;}
break;
- case 257: /* trigger_time ::= */
-{ yymsp[1].minor.yy376 = TK_BEFORE; }
+ case 259: /* trigger_time ::= */
+{ yymsp[1].minor.yy64 = TK_BEFORE; }
break;
- case 258: /* trigger_event ::= DELETE|INSERT */
- case 259: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==259);
-{yymsp[0].minor.yy262.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy262.b = 0;}
+ case 260: /* trigger_event ::= DELETE|INSERT */
+ case 261: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==261);
+{yymsp[0].minor.yy570.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy570.b = 0;}
break;
- case 260: /* trigger_event ::= UPDATE OF idlist */
-{yymsp[-2].minor.yy262.a = TK_UPDATE; yymsp[-2].minor.yy262.b = yymsp[0].minor.yy436;}
+ case 262: /* trigger_event ::= UPDATE OF idlist */
+{yymsp[-2].minor.yy570.a = TK_UPDATE; yymsp[-2].minor.yy570.b = yymsp[0].minor.yy240;}
break;
- case 261: /* when_clause ::= */
- case 280: /* key_opt ::= */ yytestcase(yyruleno==280);
-{ yymsp[1].minor.yy404 = 0; }
+ case 263: /* when_clause ::= */
+ case 282: /* key_opt ::= */ yytestcase(yyruleno==282);
+{ yymsp[1].minor.yy626 = 0; }
break;
- case 262: /* when_clause ::= WHEN expr */
- case 281: /* key_opt ::= KEY expr */ yytestcase(yyruleno==281);
-{ yymsp[-1].minor.yy404 = yymsp[0].minor.yy404; }
+ case 264: /* when_clause ::= WHEN expr */
+ case 283: /* key_opt ::= KEY expr */ yytestcase(yyruleno==283);
+{ yymsp[-1].minor.yy626 = yymsp[0].minor.yy626; }
break;
- case 263: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
+ case 265: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
{
- assert( yymsp[-2].minor.yy157!=0 );
- yymsp[-2].minor.yy157->pLast->pNext = yymsp[-1].minor.yy157;
- yymsp[-2].minor.yy157->pLast = yymsp[-1].minor.yy157;
+ assert( yymsp[-2].minor.yy95!=0 );
+ yymsp[-2].minor.yy95->pLast->pNext = yymsp[-1].minor.yy95;
+ yymsp[-2].minor.yy95->pLast = yymsp[-1].minor.yy95;
}
break;
- case 264: /* trigger_cmd_list ::= trigger_cmd SEMI */
+ case 266: /* trigger_cmd_list ::= trigger_cmd SEMI */
{
- assert( yymsp[-1].minor.yy157!=0 );
- yymsp[-1].minor.yy157->pLast = yymsp[-1].minor.yy157;
+ assert( yymsp[-1].minor.yy95!=0 );
+ yymsp[-1].minor.yy95->pLast = yymsp[-1].minor.yy95;
}
break;
- case 265: /* trnm ::= nm DOT nm */
+ case 267: /* trnm ::= nm DOT nm */
{
yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
sqlite3ErrorMsg(pParse,
@@ -162629,368 +164138,369 @@ static YYACTIONTYPE yy_reduce(
"statements within triggers");
}
break;
- case 266: /* tridxby ::= INDEXED BY nm */
+ case 268: /* tridxby ::= INDEXED BY nm */
{
sqlite3ErrorMsg(pParse,
"the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
"within triggers");
}
break;
- case 267: /* tridxby ::= NOT INDEXED */
+ case 269: /* tridxby ::= NOT INDEXED */
{
sqlite3ErrorMsg(pParse,
"the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
"within triggers");
}
break;
- case 268: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
-{yylhsminor.yy157 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy153, yymsp[-3].minor.yy70, yymsp[-1].minor.yy404, yymsp[-7].minor.yy376, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy504);}
- yymsp[-8].minor.yy157 = yylhsminor.yy157;
+ case 270: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
+{yylhsminor.yy95 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy607, yymsp[-3].minor.yy562, yymsp[-1].minor.yy626, yymsp[-7].minor.yy64, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy600);}
+ yymsp[-8].minor.yy95 = yylhsminor.yy95;
break;
- case 269: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
+ case 271: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
{
- yylhsminor.yy157 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy436,yymsp[-2].minor.yy81,yymsp[-6].minor.yy376,yymsp[-1].minor.yy190,yymsp[-7].minor.yy504,yymsp[0].minor.yy504);/*yylhsminor.yy157-overwrites-yymsp[-6].minor.yy376*/
+ yylhsminor.yy95 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy240,yymsp[-2].minor.yy303,yymsp[-6].minor.yy64,yymsp[-1].minor.yy138,yymsp[-7].minor.yy600,yymsp[0].minor.yy600);/*yylhsminor.yy95-overwrites-yymsp[-6].minor.yy64*/
}
- yymsp[-7].minor.yy157 = yylhsminor.yy157;
+ yymsp[-7].minor.yy95 = yylhsminor.yy95;
break;
- case 270: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
-{yylhsminor.yy157 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy404, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy504);}
- yymsp[-5].minor.yy157 = yylhsminor.yy157;
+ case 272: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
+{yylhsminor.yy95 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy626, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy600);}
+ yymsp[-5].minor.yy95 = yylhsminor.yy95;
break;
- case 271: /* trigger_cmd ::= scanpt select scanpt */
-{yylhsminor.yy157 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy81, yymsp[-2].minor.yy504, yymsp[0].minor.yy504); /*yylhsminor.yy157-overwrites-yymsp[-1].minor.yy81*/}
- yymsp[-2].minor.yy157 = yylhsminor.yy157;
+ case 273: /* trigger_cmd ::= scanpt select scanpt */
+{yylhsminor.yy95 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy303, yymsp[-2].minor.yy600, yymsp[0].minor.yy600); /*yylhsminor.yy95-overwrites-yymsp[-1].minor.yy303*/}
+ yymsp[-2].minor.yy95 = yylhsminor.yy95;
break;
- case 272: /* expr ::= RAISE LP IGNORE RP */
+ case 274: /* expr ::= RAISE LP IGNORE RP */
{
- yymsp[-3].minor.yy404 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
- if( yymsp[-3].minor.yy404 ){
- yymsp[-3].minor.yy404->affExpr = OE_Ignore;
+ yymsp[-3].minor.yy626 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
+ if( yymsp[-3].minor.yy626 ){
+ yymsp[-3].minor.yy626->affExpr = OE_Ignore;
}
}
break;
- case 273: /* expr ::= RAISE LP raisetype COMMA nm RP */
+ case 275: /* expr ::= RAISE LP raisetype COMMA nm RP */
{
- yymsp[-5].minor.yy404 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
- if( yymsp[-5].minor.yy404 ) {
- yymsp[-5].minor.yy404->affExpr = (char)yymsp[-3].minor.yy376;
+ yymsp[-5].minor.yy626 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
+ if( yymsp[-5].minor.yy626 ) {
+ yymsp[-5].minor.yy626->affExpr = (char)yymsp[-3].minor.yy64;
}
}
break;
- case 274: /* raisetype ::= ROLLBACK */
-{yymsp[0].minor.yy376 = OE_Rollback;}
+ case 276: /* raisetype ::= ROLLBACK */
+{yymsp[0].minor.yy64 = OE_Rollback;}
break;
- case 276: /* raisetype ::= FAIL */
-{yymsp[0].minor.yy376 = OE_Fail;}
+ case 278: /* raisetype ::= FAIL */
+{yymsp[0].minor.yy64 = OE_Fail;}
break;
- case 277: /* cmd ::= DROP TRIGGER ifexists fullname */
+ case 279: /* cmd ::= DROP TRIGGER ifexists fullname */
{
- sqlite3DropTrigger(pParse,yymsp[0].minor.yy153,yymsp[-1].minor.yy376);
+ sqlite3DropTrigger(pParse,yymsp[0].minor.yy607,yymsp[-1].minor.yy64);
}
break;
- case 278: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+ case 280: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
{
- sqlite3Attach(pParse, yymsp[-3].minor.yy404, yymsp[-1].minor.yy404, yymsp[0].minor.yy404);
+ sqlite3Attach(pParse, yymsp[-3].minor.yy626, yymsp[-1].minor.yy626, yymsp[0].minor.yy626);
}
break;
- case 279: /* cmd ::= DETACH database_kw_opt expr */
+ case 281: /* cmd ::= DETACH database_kw_opt expr */
{
- sqlite3Detach(pParse, yymsp[0].minor.yy404);
+ sqlite3Detach(pParse, yymsp[0].minor.yy626);
}
break;
- case 282: /* cmd ::= REINDEX */
+ case 284: /* cmd ::= REINDEX */
{sqlite3Reindex(pParse, 0, 0);}
break;
- case 283: /* cmd ::= REINDEX nm dbnm */
+ case 285: /* cmd ::= REINDEX nm dbnm */
{sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
break;
- case 284: /* cmd ::= ANALYZE */
+ case 286: /* cmd ::= ANALYZE */
{sqlite3Analyze(pParse, 0, 0);}
break;
- case 285: /* cmd ::= ANALYZE nm dbnm */
+ case 287: /* cmd ::= ANALYZE nm dbnm */
{sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
break;
- case 286: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
+ case 288: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
{
- sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy153,&yymsp[0].minor.yy0);
+ sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy607,&yymsp[0].minor.yy0);
}
break;
- case 287: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
+ case 289: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
{
yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
}
break;
- case 288: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
+ case 290: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
{
- sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy153, &yymsp[0].minor.yy0);
+ sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy607, &yymsp[0].minor.yy0);
}
break;
- case 289: /* add_column_fullname ::= fullname */
+ case 291: /* add_column_fullname ::= fullname */
{
disableLookaside(pParse);
- sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy153);
+ sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy607);
}
break;
- case 290: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
+ case 292: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
{
- sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy153, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
+ sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy607, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
}
break;
- case 291: /* cmd ::= create_vtab */
+ case 293: /* cmd ::= create_vtab */
{sqlite3VtabFinishParse(pParse,0);}
break;
- case 292: /* cmd ::= create_vtab LP vtabarglist RP */
+ case 294: /* cmd ::= create_vtab LP vtabarglist RP */
{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
break;
- case 293: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+ case 295: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
{
- sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy376);
+ sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy64);
}
break;
- case 294: /* vtabarg ::= */
+ case 296: /* vtabarg ::= */
{sqlite3VtabArgInit(pParse);}
break;
- case 295: /* vtabargtoken ::= ANY */
- case 296: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==296);
- case 297: /* lp ::= LP */ yytestcase(yyruleno==297);
+ case 297: /* vtabargtoken ::= ANY */
+ case 298: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==298);
+ case 299: /* lp ::= LP */ yytestcase(yyruleno==299);
{sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
break;
- case 298: /* with ::= WITH wqlist */
- case 299: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==299);
-{ sqlite3WithPush(pParse, yymsp[0].minor.yy103, 1); }
+ case 300: /* with ::= WITH wqlist */
+ case 301: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==301);
+{ sqlite3WithPush(pParse, yymsp[0].minor.yy43, 1); }
break;
- case 300: /* wqas ::= AS */
-{yymsp[0].minor.yy552 = M10d_Any;}
+ case 302: /* wqas ::= AS */
+{yymsp[0].minor.yy534 = M10d_Any;}
break;
- case 301: /* wqas ::= AS MATERIALIZED */
-{yymsp[-1].minor.yy552 = M10d_Yes;}
+ case 303: /* wqas ::= AS MATERIALIZED */
+{yymsp[-1].minor.yy534 = M10d_Yes;}
break;
- case 302: /* wqas ::= AS NOT MATERIALIZED */
-{yymsp[-2].minor.yy552 = M10d_No;}
+ case 304: /* wqas ::= AS NOT MATERIALIZED */
+{yymsp[-2].minor.yy534 = M10d_No;}
break;
- case 303: /* wqitem ::= nm eidlist_opt wqas LP select RP */
+ case 305: /* wqitem ::= nm eidlist_opt wqas LP select RP */
{
- yymsp[-5].minor.yy329 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy70, yymsp[-1].minor.yy81, yymsp[-3].minor.yy552); /*A-overwrites-X*/
+ yymsp[-5].minor.yy255 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy562, yymsp[-1].minor.yy303, yymsp[-3].minor.yy534); /*A-overwrites-X*/
}
break;
- case 304: /* wqlist ::= wqitem */
+ case 306: /* wqlist ::= wqitem */
{
- yymsp[0].minor.yy103 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy329); /*A-overwrites-X*/
+ yymsp[0].minor.yy43 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy255); /*A-overwrites-X*/
}
break;
- case 305: /* wqlist ::= wqlist COMMA wqitem */
+ case 307: /* wqlist ::= wqlist COMMA wqitem */
{
- yymsp[-2].minor.yy103 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy103, yymsp[0].minor.yy329);
+ yymsp[-2].minor.yy43 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy43, yymsp[0].minor.yy255);
}
break;
- case 306: /* windowdefn_list ::= windowdefn */
-{ yylhsminor.yy49 = yymsp[0].minor.yy49; }
- yymsp[0].minor.yy49 = yylhsminor.yy49;
+ case 308: /* windowdefn_list ::= windowdefn */
+{ yylhsminor.yy375 = yymsp[0].minor.yy375; }
+ yymsp[0].minor.yy375 = yylhsminor.yy375;
break;
- case 307: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
+ case 309: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
{
- assert( yymsp[0].minor.yy49!=0 );
- sqlite3WindowChain(pParse, yymsp[0].minor.yy49, yymsp[-2].minor.yy49);
- yymsp[0].minor.yy49->pNextWin = yymsp[-2].minor.yy49;
- yylhsminor.yy49 = yymsp[0].minor.yy49;
+ assert( yymsp[0].minor.yy375!=0 );
+ sqlite3WindowChain(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy375);
+ yymsp[0].minor.yy375->pNextWin = yymsp[-2].minor.yy375;
+ yylhsminor.yy375 = yymsp[0].minor.yy375;
}
- yymsp[-2].minor.yy49 = yylhsminor.yy49;
+ yymsp[-2].minor.yy375 = yylhsminor.yy375;
break;
- case 308: /* windowdefn ::= nm AS LP window RP */
+ case 310: /* windowdefn ::= nm AS LP window RP */
{
- if( ALWAYS(yymsp[-1].minor.yy49) ){
- yymsp[-1].minor.yy49->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
+ if( ALWAYS(yymsp[-1].minor.yy375) ){
+ yymsp[-1].minor.yy375->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
}
- yylhsminor.yy49 = yymsp[-1].minor.yy49;
+ yylhsminor.yy375 = yymsp[-1].minor.yy375;
}
- yymsp[-4].minor.yy49 = yylhsminor.yy49;
+ yymsp[-4].minor.yy375 = yylhsminor.yy375;
break;
- case 309: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+ case 311: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
{
- yymsp[-4].minor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, yymsp[-2].minor.yy70, yymsp[-1].minor.yy70, 0);
+ yymsp[-4].minor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy562, yymsp[-1].minor.yy562, 0);
}
break;
- case 310: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+ case 312: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
{
- yylhsminor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, yymsp[-2].minor.yy70, yymsp[-1].minor.yy70, &yymsp[-5].minor.yy0);
+ yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, yymsp[-2].minor.yy562, yymsp[-1].minor.yy562, &yymsp[-5].minor.yy0);
}
- yymsp[-5].minor.yy49 = yylhsminor.yy49;
+ yymsp[-5].minor.yy375 = yylhsminor.yy375;
break;
- case 311: /* window ::= ORDER BY sortlist frame_opt */
+ case 313: /* window ::= ORDER BY sortlist frame_opt */
{
- yymsp[-3].minor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, 0, yymsp[-1].minor.yy70, 0);
+ yymsp[-3].minor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, yymsp[-1].minor.yy562, 0);
}
break;
- case 312: /* window ::= nm ORDER BY sortlist frame_opt */
+ case 314: /* window ::= nm ORDER BY sortlist frame_opt */
{
- yylhsminor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, 0, yymsp[-1].minor.yy70, &yymsp[-4].minor.yy0);
+ yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, yymsp[-1].minor.yy562, &yymsp[-4].minor.yy0);
}
- yymsp[-4].minor.yy49 = yylhsminor.yy49;
+ yymsp[-4].minor.yy375 = yylhsminor.yy375;
break;
- case 313: /* window ::= frame_opt */
- case 332: /* filter_over ::= over_clause */ yytestcase(yyruleno==332);
+ case 315: /* window ::= frame_opt */
+ case 334: /* filter_over ::= over_clause */ yytestcase(yyruleno==334);
{
- yylhsminor.yy49 = yymsp[0].minor.yy49;
+ yylhsminor.yy375 = yymsp[0].minor.yy375;
}
- yymsp[0].minor.yy49 = yylhsminor.yy49;
+ yymsp[0].minor.yy375 = yylhsminor.yy375;
break;
- case 314: /* window ::= nm frame_opt */
+ case 316: /* window ::= nm frame_opt */
{
- yylhsminor.yy49 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy49, 0, 0, &yymsp[-1].minor.yy0);
+ yylhsminor.yy375 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy375, 0, 0, &yymsp[-1].minor.yy0);
}
- yymsp[-1].minor.yy49 = yylhsminor.yy49;
+ yymsp[-1].minor.yy375 = yylhsminor.yy375;
break;
- case 315: /* frame_opt ::= */
+ case 317: /* frame_opt ::= */
{
- yymsp[1].minor.yy49 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
+ yymsp[1].minor.yy375 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
}
break;
- case 316: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+ case 318: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
{
- yylhsminor.yy49 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy376, yymsp[-1].minor.yy117.eType, yymsp[-1].minor.yy117.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy552);
+ yylhsminor.yy375 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy64, yymsp[-1].minor.yy81.eType, yymsp[-1].minor.yy81.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy534);
}
- yymsp[-2].minor.yy49 = yylhsminor.yy49;
+ yymsp[-2].minor.yy375 = yylhsminor.yy375;
break;
- case 317: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+ case 319: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
{
- yylhsminor.yy49 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy376, yymsp[-3].minor.yy117.eType, yymsp[-3].minor.yy117.pExpr, yymsp[-1].minor.yy117.eType, yymsp[-1].minor.yy117.pExpr, yymsp[0].minor.yy552);
+ yylhsminor.yy375 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy64, yymsp[-3].minor.yy81.eType, yymsp[-3].minor.yy81.pExpr, yymsp[-1].minor.yy81.eType, yymsp[-1].minor.yy81.pExpr, yymsp[0].minor.yy534);
}
- yymsp[-5].minor.yy49 = yylhsminor.yy49;
+ yymsp[-5].minor.yy375 = yylhsminor.yy375;
break;
- case 319: /* frame_bound_s ::= frame_bound */
- case 321: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==321);
-{yylhsminor.yy117 = yymsp[0].minor.yy117;}
- yymsp[0].minor.yy117 = yylhsminor.yy117;
+ case 321: /* frame_bound_s ::= frame_bound */
+ case 323: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==323);
+{yylhsminor.yy81 = yymsp[0].minor.yy81;}
+ yymsp[0].minor.yy81 = yylhsminor.yy81;
break;
- case 320: /* frame_bound_s ::= UNBOUNDED PRECEDING */
- case 322: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==322);
- case 324: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==324);
-{yylhsminor.yy117.eType = yymsp[-1].major; yylhsminor.yy117.pExpr = 0;}
- yymsp[-1].minor.yy117 = yylhsminor.yy117;
+ case 322: /* frame_bound_s ::= UNBOUNDED PRECEDING */
+ case 324: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==324);
+ case 326: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==326);
+{yylhsminor.yy81.eType = yymsp[-1].major; yylhsminor.yy81.pExpr = 0;}
+ yymsp[-1].minor.yy81 = yylhsminor.yy81;
break;
- case 323: /* frame_bound ::= expr PRECEDING|FOLLOWING */
-{yylhsminor.yy117.eType = yymsp[0].major; yylhsminor.yy117.pExpr = yymsp[-1].minor.yy404;}
- yymsp[-1].minor.yy117 = yylhsminor.yy117;
+ case 325: /* frame_bound ::= expr PRECEDING|FOLLOWING */
+{yylhsminor.yy81.eType = yymsp[0].major; yylhsminor.yy81.pExpr = yymsp[-1].minor.yy626;}
+ yymsp[-1].minor.yy81 = yylhsminor.yy81;
break;
- case 325: /* frame_exclude_opt ::= */
-{yymsp[1].minor.yy552 = 0;}
+ case 327: /* frame_exclude_opt ::= */
+{yymsp[1].minor.yy534 = 0;}
break;
- case 326: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
-{yymsp[-1].minor.yy552 = yymsp[0].minor.yy552;}
+ case 328: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
+{yymsp[-1].minor.yy534 = yymsp[0].minor.yy534;}
break;
- case 327: /* frame_exclude ::= NO OTHERS */
- case 328: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==328);
-{yymsp[-1].minor.yy552 = yymsp[-1].major; /*A-overwrites-X*/}
+ case 329: /* frame_exclude ::= NO OTHERS */
+ case 330: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==330);
+{yymsp[-1].minor.yy534 = yymsp[-1].major; /*A-overwrites-X*/}
break;
- case 329: /* frame_exclude ::= GROUP|TIES */
-{yymsp[0].minor.yy552 = yymsp[0].major; /*A-overwrites-X*/}
+ case 331: /* frame_exclude ::= GROUP|TIES */
+{yymsp[0].minor.yy534 = yymsp[0].major; /*A-overwrites-X*/}
break;
- case 330: /* window_clause ::= WINDOW windowdefn_list */
-{ yymsp[-1].minor.yy49 = yymsp[0].minor.yy49; }
+ case 332: /* window_clause ::= WINDOW windowdefn_list */
+{ yymsp[-1].minor.yy375 = yymsp[0].minor.yy375; }
break;
- case 331: /* filter_over ::= filter_clause over_clause */
+ case 333: /* filter_over ::= filter_clause over_clause */
{
- if( yymsp[0].minor.yy49 ){
- yymsp[0].minor.yy49->pFilter = yymsp[-1].minor.yy404;
+ if( yymsp[0].minor.yy375 ){
+ yymsp[0].minor.yy375->pFilter = yymsp[-1].minor.yy626;
}else{
- sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy404);
+ sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy626);
}
- yylhsminor.yy49 = yymsp[0].minor.yy49;
+ yylhsminor.yy375 = yymsp[0].minor.yy375;
}
- yymsp[-1].minor.yy49 = yylhsminor.yy49;
+ yymsp[-1].minor.yy375 = yylhsminor.yy375;
break;
- case 333: /* filter_over ::= filter_clause */
+ case 335: /* filter_over ::= filter_clause */
{
- yylhsminor.yy49 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
- if( yylhsminor.yy49 ){
- yylhsminor.yy49->eFrmType = TK_FILTER;
- yylhsminor.yy49->pFilter = yymsp[0].minor.yy404;
+ yylhsminor.yy375 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
+ if( yylhsminor.yy375 ){
+ yylhsminor.yy375->eFrmType = TK_FILTER;
+ yylhsminor.yy375->pFilter = yymsp[0].minor.yy626;
}else{
- sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy404);
+ sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy626);
}
}
- yymsp[0].minor.yy49 = yylhsminor.yy49;
+ yymsp[0].minor.yy375 = yylhsminor.yy375;
break;
- case 334: /* over_clause ::= OVER LP window RP */
+ case 336: /* over_clause ::= OVER LP window RP */
{
- yymsp[-3].minor.yy49 = yymsp[-1].minor.yy49;
- assert( yymsp[-3].minor.yy49!=0 );
+ yymsp[-3].minor.yy375 = yymsp[-1].minor.yy375;
+ assert( yymsp[-3].minor.yy375!=0 );
}
break;
- case 335: /* over_clause ::= OVER nm */
+ case 337: /* over_clause ::= OVER nm */
{
- yymsp[-1].minor.yy49 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
- if( yymsp[-1].minor.yy49 ){
- yymsp[-1].minor.yy49->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
+ yymsp[-1].minor.yy375 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
+ if( yymsp[-1].minor.yy375 ){
+ yymsp[-1].minor.yy375->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
}
}
break;
- case 336: /* filter_clause ::= FILTER LP WHERE expr RP */
-{ yymsp[-4].minor.yy404 = yymsp[-1].minor.yy404; }
+ case 338: /* filter_clause ::= FILTER LP WHERE expr RP */
+{ yymsp[-4].minor.yy626 = yymsp[-1].minor.yy626; }
break;
default:
- /* (337) input ::= cmdlist */ yytestcase(yyruleno==337);
- /* (338) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==338);
- /* (339) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=339);
- /* (340) ecmd ::= SEMI */ yytestcase(yyruleno==340);
- /* (341) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==341);
- /* (342) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=342);
- /* (343) trans_opt ::= */ yytestcase(yyruleno==343);
- /* (344) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==344);
- /* (345) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==345);
- /* (346) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==346);
- /* (347) savepoint_opt ::= */ yytestcase(yyruleno==347);
- /* (348) cmd ::= create_table create_table_args */ yytestcase(yyruleno==348);
- /* (349) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==349);
- /* (350) columnlist ::= columnname carglist */ yytestcase(yyruleno==350);
- /* (351) nm ::= ID|INDEXED */ yytestcase(yyruleno==351);
- /* (352) nm ::= STRING */ yytestcase(yyruleno==352);
- /* (353) nm ::= JOIN_KW */ yytestcase(yyruleno==353);
- /* (354) typetoken ::= typename */ yytestcase(yyruleno==354);
- /* (355) typename ::= ID|STRING */ yytestcase(yyruleno==355);
- /* (356) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=356);
- /* (357) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=357);
- /* (358) carglist ::= carglist ccons */ yytestcase(yyruleno==358);
- /* (359) carglist ::= */ yytestcase(yyruleno==359);
- /* (360) ccons ::= NULL onconf */ yytestcase(yyruleno==360);
- /* (361) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==361);
- /* (362) ccons ::= AS generated */ yytestcase(yyruleno==362);
- /* (363) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==363);
- /* (364) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==364);
- /* (365) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=365);
- /* (366) tconscomma ::= */ yytestcase(yyruleno==366);
- /* (367) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=367);
- /* (368) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=368);
- /* (369) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=369);
- /* (370) oneselect ::= values */ yytestcase(yyruleno==370);
- /* (371) sclp ::= selcollist COMMA */ yytestcase(yyruleno==371);
- /* (372) as ::= ID|STRING */ yytestcase(yyruleno==372);
- /* (373) returning ::= */ yytestcase(yyruleno==373);
- /* (374) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=374);
- /* (375) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==375);
- /* (376) exprlist ::= nexprlist */ yytestcase(yyruleno==376);
- /* (377) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=377);
- /* (378) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=378);
- /* (379) nmnum ::= ON */ yytestcase(yyruleno==379);
- /* (380) nmnum ::= DELETE */ yytestcase(yyruleno==380);
- /* (381) nmnum ::= DEFAULT */ yytestcase(yyruleno==381);
- /* (382) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==382);
- /* (383) foreach_clause ::= */ yytestcase(yyruleno==383);
- /* (384) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==384);
- /* (385) trnm ::= nm */ yytestcase(yyruleno==385);
- /* (386) tridxby ::= */ yytestcase(yyruleno==386);
- /* (387) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==387);
- /* (388) database_kw_opt ::= */ yytestcase(yyruleno==388);
- /* (389) kwcolumn_opt ::= */ yytestcase(yyruleno==389);
- /* (390) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==390);
- /* (391) vtabarglist ::= vtabarg */ yytestcase(yyruleno==391);
- /* (392) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==392);
- /* (393) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==393);
- /* (394) anylist ::= */ yytestcase(yyruleno==394);
- /* (395) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==395);
- /* (396) anylist ::= anylist ANY */ yytestcase(yyruleno==396);
- /* (397) with ::= */ yytestcase(yyruleno==397);
+ /* (339) input ::= cmdlist */ yytestcase(yyruleno==339);
+ /* (340) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==340);
+ /* (341) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=341);
+ /* (342) ecmd ::= SEMI */ yytestcase(yyruleno==342);
+ /* (343) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==343);
+ /* (344) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=344);
+ /* (345) trans_opt ::= */ yytestcase(yyruleno==345);
+ /* (346) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==346);
+ /* (347) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==347);
+ /* (348) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==348);
+ /* (349) savepoint_opt ::= */ yytestcase(yyruleno==349);
+ /* (350) cmd ::= create_table create_table_args */ yytestcase(yyruleno==350);
+ /* (351) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=351);
+ /* (352) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==352);
+ /* (353) columnlist ::= columnname carglist */ yytestcase(yyruleno==353);
+ /* (354) nm ::= ID|INDEXED */ yytestcase(yyruleno==354);
+ /* (355) nm ::= STRING */ yytestcase(yyruleno==355);
+ /* (356) nm ::= JOIN_KW */ yytestcase(yyruleno==356);
+ /* (357) typetoken ::= typename */ yytestcase(yyruleno==357);
+ /* (358) typename ::= ID|STRING */ yytestcase(yyruleno==358);
+ /* (359) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=359);
+ /* (360) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=360);
+ /* (361) carglist ::= carglist ccons */ yytestcase(yyruleno==361);
+ /* (362) carglist ::= */ yytestcase(yyruleno==362);
+ /* (363) ccons ::= NULL onconf */ yytestcase(yyruleno==363);
+ /* (364) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==364);
+ /* (365) ccons ::= AS generated */ yytestcase(yyruleno==365);
+ /* (366) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==366);
+ /* (367) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==367);
+ /* (368) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=368);
+ /* (369) tconscomma ::= */ yytestcase(yyruleno==369);
+ /* (370) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=370);
+ /* (371) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=371);
+ /* (372) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=372);
+ /* (373) oneselect ::= values */ yytestcase(yyruleno==373);
+ /* (374) sclp ::= selcollist COMMA */ yytestcase(yyruleno==374);
+ /* (375) as ::= ID|STRING */ yytestcase(yyruleno==375);
+ /* (376) returning ::= */ yytestcase(yyruleno==376);
+ /* (377) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=377);
+ /* (378) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==378);
+ /* (379) exprlist ::= nexprlist */ yytestcase(yyruleno==379);
+ /* (380) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=380);
+ /* (381) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=381);
+ /* (382) nmnum ::= ON */ yytestcase(yyruleno==382);
+ /* (383) nmnum ::= DELETE */ yytestcase(yyruleno==383);
+ /* (384) nmnum ::= DEFAULT */ yytestcase(yyruleno==384);
+ /* (385) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==385);
+ /* (386) foreach_clause ::= */ yytestcase(yyruleno==386);
+ /* (387) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==387);
+ /* (388) trnm ::= nm */ yytestcase(yyruleno==388);
+ /* (389) tridxby ::= */ yytestcase(yyruleno==389);
+ /* (390) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==390);
+ /* (391) database_kw_opt ::= */ yytestcase(yyruleno==391);
+ /* (392) kwcolumn_opt ::= */ yytestcase(yyruleno==392);
+ /* (393) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==393);
+ /* (394) vtabarglist ::= vtabarg */ yytestcase(yyruleno==394);
+ /* (395) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==395);
+ /* (396) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==396);
+ /* (397) anylist ::= */ yytestcase(yyruleno==397);
+ /* (398) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==398);
+ /* (399) anylist ::= anylist ANY */ yytestcase(yyruleno==399);
+ /* (400) with ::= */ yytestcase(yyruleno==400);
break;
/********** End reduce actions ************************************************/
};
@@ -163148,8 +164658,8 @@ SQLITE_PRIVATE void sqlite3Parser(
yyact = yy_find_shift_action((YYCODETYPE)yymajor,yyact);
if( yyact >= YY_MIN_REDUCE ){
unsigned int yyruleno = yyact - YY_MIN_REDUCE; /* Reduce by this rule */
- assert( yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) );
#ifndef NDEBUG
+ assert( yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) );
if( yyTraceFILE ){
int yysize = yyRuleInfoNRhs[yyruleno];
if( yysize ){
@@ -163247,14 +164757,13 @@ SQLITE_PRIVATE void sqlite3Parser(
yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion);
yymajor = YYNOCODE;
}else{
- while( yypParser->yytos >= yypParser->yystack
- && (yyact = yy_find_reduce_action(
- yypParser->yytos->stateno,
- YYERRORSYMBOL)) > YY_MAX_SHIFTREDUCE
- ){
+ while( yypParser->yytos > yypParser->yystack ){
+ yyact = yy_find_reduce_action(yypParser->yytos->stateno,
+ YYERRORSYMBOL);
+ if( yyact<=YY_MAX_SHIFTREDUCE ) break;
yy_pop_parser_stack(yypParser);
}
- if( yypParser->yytos < yypParser->yystack || yymajor==0 ){
+ if( yypParser->yytos <= yypParser->yystack || yymajor==0 ){
yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
yy_parse_failed(yypParser);
#ifndef YYNOERRORRECOVERY
@@ -164397,6 +165906,7 @@ SQLITE_PRIVATE int sqlite3RunParser(Parse *pParse, const char *zSql, char **pzEr
int lastTokenParsed = -1; /* type of the previous token */
sqlite3 *db = pParse->db; /* The database connection */
int mxSqlLen; /* Max length of an SQL string */
+ Parse *pParentParse = 0; /* Outer parse context, if any */
#ifdef sqlite3Parser_ENGINEALWAYSONSTACK
yyParser sEngine; /* Space to hold the Lemon-generated Parser object */
#endif
@@ -164432,7 +165942,7 @@ SQLITE_PRIVATE int sqlite3RunParser(Parse *pParse, const char *zSql, char **pzEr
assert( pParse->pNewTrigger==0 );
assert( pParse->nVar==0 );
assert( pParse->pVList==0 );
- pParse->pParentParse = db->pParse;
+ pParentParse = db->pParse;
db->pParse = pParse;
while( 1 ){
n = sqlite3GetToken((u8*)zSql, &tokenType);
@@ -164547,8 +166057,7 @@ SQLITE_PRIVATE int sqlite3RunParser(Parse *pParse, const char *zSql, char **pzEr
sqlite3DeleteTrigger(db, pParse->pNewTrigger);
}
sqlite3DbFree(db, pParse->pVList);
- db->pParse = pParse->pParentParse;
- pParse->pParentParse = 0;
+ db->pParse = pParentParse;
assert( nErr==0 || pParse->rc!=SQLITE_OK );
return nErr;
}
@@ -166165,7 +167674,7 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3 *db, sqlite3_int64 iRowid)
/*
** Return the number of changes in the most recent call to sqlite3_exec().
*/
-SQLITE_API int sqlite3_changes(sqlite3 *db){
+SQLITE_API sqlite3_int64 sqlite3_changes64(sqlite3 *db){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ){
(void)SQLITE_MISUSE_BKPT;
@@ -166174,11 +167683,14 @@ SQLITE_API int sqlite3_changes(sqlite3 *db){
#endif
return db->nChange;
}
+SQLITE_API int sqlite3_changes(sqlite3 *db){
+ return (int)sqlite3_changes64(db);
+}
/*
** Return the number of changes since the database handle was opened.
*/
-SQLITE_API int sqlite3_total_changes(sqlite3 *db){
+SQLITE_API sqlite3_int64 sqlite3_total_changes64(sqlite3 *db){
#ifdef SQLITE_ENABLE_API_ARMOR
if( !sqlite3SafetyCheckOk(db) ){
(void)SQLITE_MISUSE_BKPT;
@@ -166187,6 +167699,9 @@ SQLITE_API int sqlite3_total_changes(sqlite3 *db){
#endif
return db->nTotalChange;
}
+SQLITE_API int sqlite3_total_changes(sqlite3 *db){
+ return (int)sqlite3_total_changes64(db);
+}
/*
** Close all open savepoints. This function only manipulates fields of the
@@ -166211,7 +167726,9 @@ SQLITE_PRIVATE void sqlite3CloseSavepoints(sqlite3 *db){
** with SQLITE_ANY as the encoding.
*/
static void functionDestroy(sqlite3 *db, FuncDef *p){
- FuncDestructor *pDestructor = p->u.pDestructor;
+ FuncDestructor *pDestructor;
+ assert( (p->funcFlags & SQLITE_FUNC_BUILTIN)==0 );
+ pDestructor = p->u.pDestructor;
if( pDestructor ){
pDestructor->nRef--;
if( pDestructor->nRef==0 ){
@@ -166315,7 +167832,7 @@ static int sqlite3Close(sqlite3 *db, int forceZombie){
/* Convert the connection into a zombie and then close it.
*/
- db->magic = SQLITE_MAGIC_ZOMBIE;
+ db->eOpenState = SQLITE_STATE_ZOMBIE;
sqlite3LeaveMutexAndCloseZombie(db);
return SQLITE_OK;
}
@@ -166379,7 +167896,7 @@ SQLITE_PRIVATE void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){
** or if the connection has not yet been closed by sqlite3_close_v2(),
** then just leave the mutex and return.
*/
- if( db->magic!=SQLITE_MAGIC_ZOMBIE || connectionIsBusy(db) ){
+ if( db->eOpenState!=SQLITE_STATE_ZOMBIE || connectionIsBusy(db) ){
sqlite3_mutex_leave(db->mutex);
return;
}
@@ -166465,7 +167982,7 @@ SQLITE_PRIVATE void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){
sqlite3_free(db->auth.zAuthPW);
#endif
- db->magic = SQLITE_MAGIC_ERROR;
+ db->eOpenState = SQLITE_STATE_ERROR;
/* The temp-database schema is allocated differently from the other schema
** objects (using sqliteMalloc() directly, instead of sqlite3BtreeSchema()).
@@ -166474,8 +167991,11 @@ SQLITE_PRIVATE void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){
** structure?
*/
sqlite3DbFree(db, db->aDb[1].pSchema);
+ if( db->xAutovacDestr ){
+ db->xAutovacDestr(db->pAutovacPagesArg);
+ }
sqlite3_mutex_leave(db->mutex);
- db->magic = SQLITE_MAGIC_CLOSED;
+ db->eOpenState = SQLITE_STATE_CLOSED;
sqlite3_mutex_free(db->mutex);
assert( sqlite3LookasideUsed(db,0)==0 );
if( db->lookaside.bMalloced ){
@@ -166528,7 +168048,7 @@ SQLITE_PRIVATE void sqlite3RollbackAll(sqlite3 *db, int tripCode){
/* Any deferred constraint violations have now been resolved. */
db->nDeferredCons = 0;
db->nDeferredImmCons = 0;
- db->flags &= ~(u64)SQLITE_DeferFKs;
+ db->flags &= ~(u64)(SQLITE_DeferFKs|SQLITE_CorruptRdOnly);
/* If one has been configured, invoke the rollback-hook callback */
if( db->xRollbackCallback && (inTrans || !db->autoCommit) ){
@@ -166863,7 +168383,7 @@ SQLITE_API int sqlite3_busy_timeout(sqlite3 *db, int ms){
*/
SQLITE_API void sqlite3_interrupt(sqlite3 *db){
#ifdef SQLITE_ENABLE_API_ARMOR
- if( !sqlite3SafetyCheckOk(db) && (db==0 || db->magic!=SQLITE_MAGIC_ZOMBIE) ){
+ if( !sqlite3SafetyCheckOk(db) && (db==0 || db->eOpenState!=SQLITE_STATE_ZOMBIE) ){
(void)SQLITE_MISUSE_BKPT;
return;
}
@@ -166892,7 +168412,6 @@ SQLITE_PRIVATE int sqlite3CreateFunc(
FuncDestructor *pDestructor
){
FuncDef *p;
- int nName;
int extraFlags;
assert( sqlite3_mutex_held(db->mutex) );
@@ -166902,7 +168421,7 @@ SQLITE_PRIVATE int sqlite3CreateFunc(
|| ((xFinal==0)!=(xStep==0)) /* Both or neither of xFinal and xStep */
|| ((xValue==0)!=(xInverse==0)) /* Both or neither of xValue, xInverse */
|| (nArg<-1 || nArg>SQLITE_MAX_FUNCTION_ARG)
- || (255<(nName = sqlite3Strlen30( zFunctionName)))
+ || (255<sqlite3Strlen30(zFunctionName))
){
return SQLITE_MISUSE_BKPT;
}
@@ -166927,22 +168446,33 @@ SQLITE_PRIVATE int sqlite3CreateFunc(
** If SQLITE_ANY is specified, add three versions of the function
** to the hash table.
*/
- if( enc==SQLITE_UTF16 ){
- enc = SQLITE_UTF16NATIVE;
- }else if( enc==SQLITE_ANY ){
- int rc;
- rc = sqlite3CreateFunc(db, zFunctionName, nArg,
- (SQLITE_UTF8|extraFlags)^SQLITE_FUNC_UNSAFE,
- pUserData, xSFunc, xStep, xFinal, xValue, xInverse, pDestructor);
- if( rc==SQLITE_OK ){
+ switch( enc ){
+ case SQLITE_UTF16:
+ enc = SQLITE_UTF16NATIVE;
+ break;
+ case SQLITE_ANY: {
+ int rc;
rc = sqlite3CreateFunc(db, zFunctionName, nArg,
- (SQLITE_UTF16LE|extraFlags)^SQLITE_FUNC_UNSAFE,
+ (SQLITE_UTF8|extraFlags)^SQLITE_FUNC_UNSAFE,
pUserData, xSFunc, xStep, xFinal, xValue, xInverse, pDestructor);
+ if( rc==SQLITE_OK ){
+ rc = sqlite3CreateFunc(db, zFunctionName, nArg,
+ (SQLITE_UTF16LE|extraFlags)^SQLITE_FUNC_UNSAFE,
+ pUserData, xSFunc, xStep, xFinal, xValue, xInverse, pDestructor);
+ }
+ if( rc!=SQLITE_OK ){
+ return rc;
+ }
+ enc = SQLITE_UTF16BE;
+ break;
}
- if( rc!=SQLITE_OK ){
- return rc;
- }
- enc = SQLITE_UTF16BE;
+ case SQLITE_UTF8:
+ case SQLITE_UTF16LE:
+ case SQLITE_UTF16BE:
+ break;
+ default:
+ enc = SQLITE_UTF8;
+ break;
}
#else
enc = SQLITE_UTF8;
@@ -167039,7 +168569,7 @@ static int createFunctionApi(
xSFunc, xStep, xFinal, xValue, xInverse, pArg
);
if( pArg && pArg->nRef==0 ){
- assert( rc!=SQLITE_OK );
+ assert( rc!=SQLITE_OK || (xStep==0 && xFinal==0) );
xDestroy(p);
sqlite3_free(pArg);
}
@@ -167365,6 +168895,34 @@ SQLITE_API void *sqlite3_preupdate_hook(
}
#endif /* SQLITE_ENABLE_PREUPDATE_HOOK */
+/*
+** Register a function to be invoked prior to each autovacuum that
+** determines the number of pages to vacuum.
+*/
+SQLITE_API int sqlite3_autovacuum_pages(
+ sqlite3 *db, /* Attach the hook to this database */
+ unsigned int (*xCallback)(void*,const char*,u32,u32,u32),
+ void *pArg, /* Argument to the function */
+ void (*xDestructor)(void*) /* Destructor for pArg */
+){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ if( xDestructor ) xDestructor(pArg);
+ return SQLITE_MISUSE_BKPT;
+ }
+#endif
+ sqlite3_mutex_enter(db->mutex);
+ if( db->xAutovacDestr ){
+ db->xAutovacDestr(db->pAutovacPagesArg);
+ }
+ db->xAutovacPages = xCallback;
+ db->pAutovacPagesArg = pArg;
+ db->xAutovacDestr = xDestructor;
+ sqlite3_mutex_leave(db->mutex);
+ return SQLITE_OK;
+}
+
+
#ifndef SQLITE_OMIT_WAL
/*
** The sqlite3_wal_hook() callback registered by sqlite3_wal_autocheckpoint().
@@ -167887,6 +169445,8 @@ SQLITE_API int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){
if( newLimit>=0 ){ /* IMP: R-52476-28732 */
if( newLimit>aHardLimit[limitId] ){
newLimit = aHardLimit[limitId]; /* IMP: R-51463-25634 */
+ }else if( newLimit<1 && limitId==SQLITE_LIMIT_LENGTH ){
+ newLimit = 1;
}
db->aLimit[limitId] = newLimit;
}
@@ -168158,7 +169718,7 @@ SQLITE_PRIVATE int sqlite3ParseUri(
*/
static const char *uriParameter(const char *zFilename, const char *zParam){
zFilename += sqlite3Strlen30(zFilename) + 1;
- while( zFilename[0] ){
+ while( ALWAYS(zFilename!=0) && zFilename[0] ){
int x = strcmp(zFilename, zParam);
zFilename += sqlite3Strlen30(zFilename) + 1;
if( x==0 ) return zFilename;
@@ -168218,8 +169778,8 @@ static int openDatabase(
** dealt with in the previous code block. Besides these, the only
** valid input flags for sqlite3_open_v2() are SQLITE_OPEN_READONLY,
** SQLITE_OPEN_READWRITE, SQLITE_OPEN_CREATE, SQLITE_OPEN_SHAREDCACHE,
- ** SQLITE_OPEN_PRIVATECACHE, and some reserved bits. Silently mask
- ** off all other flags.
+ ** SQLITE_OPEN_PRIVATECACHE, SQLITE_OPEN_EXRESCODE, and some reserved
+ ** bits. Silently mask off all other flags.
*/
flags &= ~( SQLITE_OPEN_DELETEONCLOSE |
SQLITE_OPEN_EXCLUSIVE |
@@ -168254,9 +169814,9 @@ static int openDatabase(
}
}
sqlite3_mutex_enter(db->mutex);
- db->errMask = 0xff;
+ db->errMask = (flags & SQLITE_OPEN_EXRESCODE)!=0 ? 0xffffffff : 0xff;
db->nDb = 2;
- db->magic = SQLITE_MAGIC_BUSY;
+ db->eOpenState = SQLITE_STATE_BUSY;
db->aDb = db->aDbStatic;
db->lookaside.bDisable = 1;
db->lookaside.sz = 0;
@@ -168268,7 +169828,15 @@ static int openDatabase(
db->nextAutovac = -1;
db->szMmap = sqlite3GlobalConfig.szMmap;
db->nextPagesize = 0;
+ db->init.azInit = sqlite3StdType; /* Any array of string ptrs will do */
+#ifdef SQLITE_ENABLE_SORTER_MMAP
+ /* Beginning with version 3.37.0, using the VFS xFetch() API to memory-map
+ ** the temporary files used to do external sorts (see code in vdbesort.c)
+ ** is disabled. It can still be used either by defining
+ ** SQLITE_ENABLE_SORTER_MMAP at compile time or by using the
+ ** SQLITE_TESTCTRL_SORTER_MMAP test-control at runtime. */
db->nMaxSorterMmap = 0x7FFFFFFF;
+#endif
db->flags |= SQLITE_ShortColNames
| SQLITE_EnableTrigger
| SQLITE_EnableView
@@ -168416,7 +169984,7 @@ static int openDatabase(
db->aDb[1].zDbSName = "temp";
db->aDb[1].safety_level = PAGER_SYNCHRONOUS_OFF;
- db->magic = SQLITE_MAGIC_OPEN;
+ db->eOpenState = SQLITE_STATE_OPEN;
if( db->mallocFailed ){
goto opendb_out;
}
@@ -168478,12 +170046,12 @@ opendb_out:
sqlite3_mutex_leave(db->mutex);
}
rc = sqlite3_errcode(db);
- assert( db!=0 || rc==SQLITE_NOMEM );
- if( rc==SQLITE_NOMEM ){
+ assert( db!=0 || (rc&0xff)==SQLITE_NOMEM );
+ if( (rc&0xff)==SQLITE_NOMEM ){
sqlite3_close(db);
db = 0;
}else if( rc!=SQLITE_OK ){
- db->magic = SQLITE_MAGIC_SICK;
+ db->eOpenState = SQLITE_STATE_SICK;
}
*ppDb = db;
#ifdef SQLITE_ENABLE_SQLLOG
@@ -168494,7 +170062,7 @@ opendb_out:
}
#endif
sqlite3_free_filename(zOpen);
- return rc & 0xff;
+ return rc;
}
@@ -168794,7 +170362,7 @@ SQLITE_API int sqlite3_table_column_metadata(
/* Locate the table in question */
pTab = sqlite3FindTable(db, zTableName, zDbName);
- if( !pTab || pTab->pSelect ){
+ if( !pTab || IsView(pTab) ){
pTab = 0;
goto error_out;
}
@@ -168805,7 +170373,7 @@ SQLITE_API int sqlite3_table_column_metadata(
}else{
for(iCol=0; iCol<pTab->nCol; iCol++){
pCol = &pTab->aCol[iCol];
- if( 0==sqlite3StrICmp(pCol->zName, zColumnName) ){
+ if( 0==sqlite3StrICmp(pCol->zCnName, zColumnName) ){
break;
}
}
@@ -168832,7 +170400,7 @@ SQLITE_API int sqlite3_table_column_metadata(
*/
if( pCol ){
zDataType = sqlite3ColumnType(pCol,0);
- zCollSeq = pCol->zColl;
+ zCollSeq = sqlite3ColumnColl(pCol);
notnull = pCol->notNull!=0;
primarykey = (pCol->colFlags & COLFLAG_PRIMKEY)!=0;
autoinc = pTab->iPKey==iCol && (pTab->tabFlags & TF_Autoincrement)!=0;
@@ -169282,12 +170850,16 @@ SQLITE_API int sqlite3_test_control(int op, ...){
*/
case SQLITE_TESTCTRL_IMPOSTER: {
sqlite3 *db = va_arg(ap, sqlite3*);
+ int iDb;
sqlite3_mutex_enter(db->mutex);
- db->init.iDb = sqlite3FindDbName(db, va_arg(ap,const char*));
- db->init.busy = db->init.imposterTable = va_arg(ap,int);
- db->init.newTnum = va_arg(ap,int);
- if( db->init.busy==0 && db->init.newTnum>0 ){
- sqlite3ResetAllSchemasOfConnection(db);
+ iDb = sqlite3FindDbName(db, va_arg(ap,const char*));
+ if( iDb>=0 ){
+ db->init.iDb = iDb;
+ db->init.busy = db->init.imposterTable = va_arg(ap,int);
+ db->init.newTnum = va_arg(ap,int);
+ if( db->init.busy==0 && db->init.newTnum>0 ){
+ sqlite3ResetAllSchemasOfConnection(db);
+ }
}
sqlite3_mutex_leave(db->mutex);
break;
@@ -169499,7 +171071,7 @@ SQLITE_API const char *sqlite3_uri_key(const char *zFilename, int N){
if( zFilename==0 || N<0 ) return 0;
zFilename = databaseName(zFilename);
zFilename += sqlite3Strlen30(zFilename) + 1;
- while( zFilename[0] && (N--)>0 ){
+ while( ALWAYS(zFilename) && zFilename[0] && (N--)>0 ){
zFilename += sqlite3Strlen30(zFilename) + 1;
zFilename += sqlite3Strlen30(zFilename) + 1;
}
@@ -169542,12 +171114,14 @@ SQLITE_API sqlite3_int64 sqlite3_uri_int64(
** corruption.
*/
SQLITE_API const char *sqlite3_filename_database(const char *zFilename){
+ if( zFilename==0 ) return 0;
return databaseName(zFilename);
}
SQLITE_API const char *sqlite3_filename_journal(const char *zFilename){
+ if( zFilename==0 ) return 0;
zFilename = databaseName(zFilename);
zFilename += sqlite3Strlen30(zFilename) + 1;
- while( zFilename[0] ){
+ while( ALWAYS(zFilename) && zFilename[0] ){
zFilename += sqlite3Strlen30(zFilename) + 1;
zFilename += sqlite3Strlen30(zFilename) + 1;
}
@@ -169558,7 +171132,7 @@ SQLITE_API const char *sqlite3_filename_wal(const char *zFilename){
return 0;
#else
zFilename = sqlite3_filename_journal(zFilename);
- zFilename += sqlite3Strlen30(zFilename) + 1;
+ if( zFilename ) zFilename += sqlite3Strlen30(zFilename) + 1;
return zFilename;
#endif
}
@@ -170851,17 +172425,18 @@ SQLITE_API extern int sqlite3_fts3_may_be_corrupt;
** Macros indicating that conditional expressions are always true or
** false.
*/
-#ifdef SQLITE_COVERAGE_TEST
-# define ALWAYS(x) (1)
-# define NEVER(X) (0)
-#elif defined(SQLITE_DEBUG)
-# define ALWAYS(x) sqlite3Fts3Always((x)!=0)
-# define NEVER(x) sqlite3Fts3Never((x)!=0)
-SQLITE_PRIVATE int sqlite3Fts3Always(int b);
-SQLITE_PRIVATE int sqlite3Fts3Never(int b);
+#if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_MUTATION_TEST)
+# define SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS 1
+#endif
+#if defined(SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS)
+# define ALWAYS(X) (1)
+# define NEVER(X) (0)
+#elif !defined(NDEBUG)
+# define ALWAYS(X) ((X)?1:(assert(0),0))
+# define NEVER(X) ((X)?(assert(0),1):0)
#else
-# define ALWAYS(x) (x)
-# define NEVER(x) (x)
+# define ALWAYS(X) (X)
+# define NEVER(X) (X)
#endif
/*
@@ -171320,6 +172895,7 @@ SQLITE_PRIVATE void sqlite3Fts3ExprFree(Fts3Expr *);
SQLITE_PRIVATE int sqlite3Fts3ExprInitTestInterface(sqlite3 *db, Fts3Hash*);
SQLITE_PRIVATE int sqlite3Fts3InitTerm(sqlite3 *db);
#endif
+SQLITE_PRIVATE void *sqlite3Fts3MallocZero(i64 nByte);
SQLITE_PRIVATE int sqlite3Fts3OpenTokenizer(sqlite3_tokenizer *, int, const char *, int,
sqlite3_tokenizer_cursor **
@@ -171377,13 +172953,6 @@ static int fts3EvalStart(Fts3Cursor *pCsr);
static int fts3TermSegReaderCursor(
Fts3Cursor *, const char *, int, int, Fts3MultiSegReader **);
-#ifndef SQLITE_AMALGAMATION
-# if defined(SQLITE_DEBUG)
-SQLITE_PRIVATE int sqlite3Fts3Always(int b) { assert( b ); return b; }
-SQLITE_PRIVATE int sqlite3Fts3Never(int b) { assert( !b ); return b; }
-# endif
-#endif
-
/*
** This variable is set to false when running tests for which the on disk
** structures should not be corrupt. Otherwise, true. If it is false, extra
@@ -175544,7 +177113,7 @@ SQLITE_PRIVATE void sqlite3Fts3DoclistPrev(
assert( nDoclist>0 );
assert( *pbEof==0 );
- assert( p || *piDocid==0 );
+ assert_fts3_nc( p || *piDocid==0 );
assert( !p || (p>aDoclist && p<&aDoclist[nDoclist]) );
if( p==0 ){
@@ -176408,8 +177977,8 @@ static void fts3EvalNextRow(
Fts3Expr *pRight = pExpr->pRight;
sqlite3_int64 iCmp = DOCID_CMP(pLeft->iDocid, pRight->iDocid);
- assert( pLeft->bStart || pLeft->iDocid==pRight->iDocid );
- assert( pRight->bStart || pLeft->iDocid==pRight->iDocid );
+ assert_fts3_nc( pLeft->bStart || pLeft->iDocid==pRight->iDocid );
+ assert_fts3_nc( pRight->bStart || pLeft->iDocid==pRight->iDocid );
if( pRight->bEof || (pLeft->bEof==0 && iCmp<0) ){
fts3EvalNextRow(pCsr, pLeft, pRc);
@@ -177047,6 +178616,9 @@ SQLITE_PRIVATE int sqlite3Fts3EvalPhrasePoslist(
if( bEofSave==0 && pNear->iDocid==iDocid ) break;
}
assert( rc!=SQLITE_OK || pPhrase->bIncr==0 );
+ if( rc==SQLITE_OK && pNear->bEof!=bEofSave ){
+ rc = FTS_CORRUPT_VTAB;
+ }
}
if( bTreeEof ){
while( rc==SQLITE_OK && !pNear->bEof ){
@@ -177469,6 +179041,7 @@ static int fts3auxNextMethod(sqlite3_vtab_cursor *pCursor){
if( fts3auxGrowStatArray(pCsr, 2) ) return SQLITE_NOMEM;
memset(pCsr->aStat, 0, sizeof(struct Fts3auxColstats) * pCsr->nStat);
iCol = 0;
+ rc = SQLITE_OK;
while( i<nDoclist ){
sqlite3_int64 v = 0;
@@ -177512,6 +179085,10 @@ static int fts3auxNextMethod(sqlite3_vtab_cursor *pCursor){
/* State 3. The integer just read is a column number. */
default: assert( eState==3 );
iCol = (int)v;
+ if( iCol<1 ){
+ rc = SQLITE_CORRUPT_VTAB;
+ break;
+ }
if( fts3auxGrowStatArray(pCsr, iCol+2) ) return SQLITE_NOMEM;
pCsr->aStat[iCol+1].nDoc++;
eState = 2;
@@ -177520,7 +179097,6 @@ static int fts3auxNextMethod(sqlite3_vtab_cursor *pCursor){
}
pCsr->iCol = 0;
- rc = SQLITE_OK;
}else{
pCsr->isEof = 1;
}
@@ -177849,7 +179425,7 @@ static int fts3isspace(char c){
** zero the memory before returning a pointer to it. If unsuccessful,
** return NULL.
*/
-static void *fts3MallocZero(sqlite3_int64 nByte){
+SQLITE_PRIVATE void *sqlite3Fts3MallocZero(sqlite3_int64 nByte){
void *pRet = sqlite3_malloc64(nByte);
if( pRet ) memset(pRet, 0, nByte);
return pRet;
@@ -177930,7 +179506,7 @@ static int getNextToken(
rc = pModule->xNext(pCursor, &zToken, &nToken, &iStart, &iEnd, &iPosition);
if( rc==SQLITE_OK ){
nByte = sizeof(Fts3Expr) + sizeof(Fts3Phrase) + nToken;
- pRet = (Fts3Expr *)fts3MallocZero(nByte);
+ pRet = (Fts3Expr *)sqlite3Fts3MallocZero(nByte);
if( !pRet ){
rc = SQLITE_NOMEM;
}else{
@@ -178185,7 +179761,7 @@ static int getNextNode(
if( fts3isspace(cNext)
|| cNext=='"' || cNext=='(' || cNext==')' || cNext==0
){
- pRet = (Fts3Expr *)fts3MallocZero(sizeof(Fts3Expr));
+ pRet = (Fts3Expr *)sqlite3Fts3MallocZero(sizeof(Fts3Expr));
if( !pRet ){
return SQLITE_NOMEM;
}
@@ -178364,7 +179940,7 @@ static int fts3ExprParse(
&& p->eType==FTSQUERY_PHRASE && pParse->isNot
){
/* Create an implicit NOT operator. */
- Fts3Expr *pNot = fts3MallocZero(sizeof(Fts3Expr));
+ Fts3Expr *pNot = sqlite3Fts3MallocZero(sizeof(Fts3Expr));
if( !pNot ){
sqlite3Fts3ExprFree(p);
rc = SQLITE_NOMEM;
@@ -178398,7 +179974,7 @@ static int fts3ExprParse(
/* Insert an implicit AND operator. */
Fts3Expr *pAnd;
assert( pRet && pPrev );
- pAnd = fts3MallocZero(sizeof(Fts3Expr));
+ pAnd = sqlite3Fts3MallocZero(sizeof(Fts3Expr));
if( !pAnd ){
sqlite3Fts3ExprFree(p);
rc = SQLITE_NOMEM;
@@ -182628,8 +184204,18 @@ static int fts3SegReaderNext(
char *aCopy;
PendingList *pList = (PendingList *)fts3HashData(pElem);
int nCopy = pList->nData+1;
- pReader->zTerm = (char *)fts3HashKey(pElem);
- pReader->nTerm = fts3HashKeysize(pElem);
+
+ int nTerm = fts3HashKeysize(pElem);
+ if( (nTerm+1)>pReader->nTermAlloc ){
+ sqlite3_free(pReader->zTerm);
+ pReader->zTerm = (char*)sqlite3_malloc((nTerm+1)*2);
+ if( !pReader->zTerm ) return SQLITE_NOMEM;
+ pReader->nTermAlloc = (nTerm+1)*2;
+ }
+ memcpy(pReader->zTerm, fts3HashKey(pElem), nTerm);
+ pReader->zTerm[nTerm] = '\0';
+ pReader->nTerm = nTerm;
+
aCopy = (char*)sqlite3_malloc(nCopy);
if( !aCopy ) return SQLITE_NOMEM;
memcpy(aCopy, pList->aData, nCopy);
@@ -182882,9 +184468,7 @@ SQLITE_PRIVATE int sqlite3Fts3MsrOvfl(
*/
SQLITE_PRIVATE void sqlite3Fts3SegReaderFree(Fts3SegReader *pReader){
if( pReader ){
- if( !fts3SegReaderIsPending(pReader) ){
- sqlite3_free(pReader->zTerm);
- }
+ sqlite3_free(pReader->zTerm);
if( !fts3SegReaderIsRootOnly(pReader) ){
sqlite3_free(pReader->aNode);
}
@@ -185076,7 +186660,7 @@ static int nodeReaderNext(NodeReader *p){
return FTS_CORRUPT_VTAB;
}
blobGrowBuffer(&p->term, nPrefix+nSuffix, &rc);
- if( rc==SQLITE_OK ){
+ if( rc==SQLITE_OK && ALWAYS(p->term.a!=0) ){
memcpy(&p->term.a[nPrefix], &p->aNode[p->iOff], nSuffix);
p->term.n = nPrefix+nSuffix;
p->iOff += nSuffix;
@@ -185470,7 +187054,11 @@ static int fts3TermCmp(
int nCmp = MIN(nLhs, nRhs);
int res;
- res = (nCmp ? memcmp(zLhs, zRhs, nCmp) : 0);
+ if( nCmp && ALWAYS(zLhs) && ALWAYS(zRhs) ){
+ res = memcmp(zLhs, zRhs, nCmp);
+ }else{
+ res = 0;
+ }
if( res==0 ) res = nLhs - nRhs;
return res;
@@ -186114,7 +187702,7 @@ static int fts3IncrmergeHintLoad(Fts3Table *p, Blob *pHint){
if( aHint ){
blobGrowBuffer(pHint, nHint, &rc);
if( rc==SQLITE_OK ){
- memcpy(pHint->a, aHint, nHint);
+ if( ALWAYS(pHint->a!=0) ) memcpy(pHint->a, aHint, nHint);
pHint->n = nHint;
}
}
@@ -187231,9 +188819,8 @@ static MatchinfoBuffer *fts3MIBufferNew(size_t nElem, const char *zMatchinfo){
+ sizeof(MatchinfoBuffer);
sqlite3_int64 nStr = strlen(zMatchinfo);
- pRet = sqlite3_malloc64(nByte + nStr+1);
+ pRet = sqlite3Fts3MallocZero(nByte + nStr+1);
if( pRet ){
- memset(pRet, 0, nByte);
pRet->aMatchinfo[0] = (u8*)(&pRet->aMatchinfo[1]) - (u8*)pRet;
pRet->aMatchinfo[1+nElem] = pRet->aMatchinfo[0]
+ sizeof(u32)*((int)nElem+1);
@@ -187637,11 +189224,10 @@ static int fts3BestSnippet(
** the required space using malloc().
*/
nByte = sizeof(SnippetPhrase) * nList;
- sIter.aPhrase = (SnippetPhrase *)sqlite3_malloc64(nByte);
+ sIter.aPhrase = (SnippetPhrase *)sqlite3Fts3MallocZero(nByte);
if( !sIter.aPhrase ){
return SQLITE_NOMEM;
}
- memset(sIter.aPhrase, 0, nByte);
/* Initialize the contents of the SnippetIter object. Then iterate through
** the set of phrases in the expression to populate the aPhrase[] array.
@@ -188205,10 +189791,12 @@ static int fts3MatchinfoLcsCb(
** position list for the next column.
*/
static int fts3LcsIteratorAdvance(LcsIterator *pIter){
- char *pRead = pIter->pRead;
+ char *pRead;
sqlite3_int64 iRead;
int rc = 0;
+ if( NEVER(pIter==0) ) return 1;
+ pRead = pIter->pRead;
pRead += sqlite3Fts3GetVarint(pRead, &iRead);
if( iRead==0 || iRead==1 ){
pRead = 0;
@@ -188242,9 +189830,8 @@ static int fts3MatchinfoLcs(Fts3Cursor *pCsr, MatchInfo *pInfo){
/* Allocate and populate the array of LcsIterator objects. The array
** contains one element for each matchable phrase in the query.
**/
- aIter = sqlite3_malloc64(sizeof(LcsIterator) * pCsr->nPhrase);
+ aIter = sqlite3Fts3MallocZero(sizeof(LcsIterator) * pCsr->nPhrase);
if( !aIter ) return SQLITE_NOMEM;
- memset(aIter, 0, sizeof(LcsIterator) * pCsr->nPhrase);
(void)fts3ExprIterate(pCsr->pExpr, fts3MatchinfoLcsCb, (void*)aIter);
for(i=0; i<pInfo->nPhrase; i++){
@@ -188705,7 +190292,7 @@ SQLITE_PRIVATE void sqlite3Fts3Offsets(
if( rc!=SQLITE_OK ) goto offsets_out;
/* Allocate the array of TermOffset iterators. */
- sCtx.aTerm = (TermOffset *)sqlite3_malloc64(sizeof(TermOffset)*nToken);
+ sCtx.aTerm = (TermOffset *)sqlite3Fts3MallocZero(sizeof(TermOffset)*nToken);
if( 0==sCtx.aTerm ){
rc = SQLITE_NOMEM;
goto offsets_out;
@@ -188726,13 +190313,13 @@ SQLITE_PRIVATE void sqlite3Fts3Offsets(
const char *zDoc;
int nDoc;
- /* Initialize the contents of sCtx.aTerm[] for column iCol. There is
- ** no way that this operation can fail, so the return code from
- ** fts3ExprIterate() can be discarded.
+ /* Initialize the contents of sCtx.aTerm[] for column iCol. This
+ ** operation may fail if the database contains corrupt records.
*/
sCtx.iCol = iCol;
sCtx.iTerm = 0;
- (void)fts3ExprIterate(pCsr->pExpr, fts3ExprTermOffsetInit, (void*)&sCtx);
+ rc = fts3ExprIterate(pCsr->pExpr, fts3ExprTermOffsetInit, (void*)&sCtx);
+ if( rc!=SQLITE_OK ) goto offsets_out;
/* Retreive the text stored in column iCol. If an SQL NULL is stored
** in column iCol, jump immediately to the next iteration of the loop.
@@ -189730,7 +191317,34 @@ static const char jsonIsSpace[] = {
typedef unsigned int u32;
typedef unsigned short int u16;
typedef unsigned char u8;
+# if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_MUTATION_TEST)
+# define SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS 1
+# endif
+# if defined(SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS)
+# define ALWAYS(X) (1)
+# define NEVER(X) (0)
+# elif !defined(NDEBUG)
+# define ALWAYS(X) ((X)?1:(assert(0),0))
+# define NEVER(X) ((X)?(assert(0),1):0)
+# else
+# define ALWAYS(X) (X)
+# define NEVER(X) (X)
+# endif
+# define testcase(X)
#endif
+#if !defined(SQLITE_DEBUG) && !defined(SQLITE_COVERAGE_TEST)
+# define VVA(X)
+#else
+# define VVA(X) X
+#endif
+
+/*
+** Some of the testcase() macros in this file are problematic for gcov
+** in that they generate false-miss errors randomly. This is a gcov problem,
+** not a problem in this case. But to work around it, we disable the
+** problematic test cases for production builds.
+*/
+#define json_testcase(X)
/* Objects */
typedef struct JsonString JsonString;
@@ -189788,13 +191402,14 @@ static const char * const jsonType[] = {
struct JsonNode {
u8 eType; /* One of the JSON_ type values */
u8 jnFlags; /* JNODE flags */
+ u8 eU; /* Which union element to use */
u32 n; /* Bytes of content, or number of sub-nodes */
union {
- const char *zJContent; /* Content for INT, REAL, and STRING */
- u32 iAppend; /* More terms for ARRAY and OBJECT */
- u32 iKey; /* Key for ARRAY objects in json_tree() */
- u32 iReplace; /* Replacement content for JNODE_REPLACE */
- JsonNode *pPatch; /* Node chain of patch for JNODE_PATCH */
+ const char *zJContent; /* 1: Content for INT, REAL, and STRING */
+ u32 iAppend; /* 2: More terms for ARRAY and OBJECT */
+ u32 iKey; /* 3: Key for ARRAY objects in json_tree() */
+ u32 iReplace; /* 4: Replacement content for JNODE_REPLACE */
+ JsonNode *pPatch; /* 5: Node chain of patch for JNODE_PATCH */
} u;
};
@@ -190072,11 +191687,14 @@ static void jsonRenderNode(
JsonString *pOut, /* Write JSON here */
sqlite3_value **aReplace /* Replacement values */
){
+ assert( pNode!=0 );
if( pNode->jnFlags & (JNODE_REPLACE|JNODE_PATCH) ){
- if( pNode->jnFlags & JNODE_REPLACE ){
+ if( (pNode->jnFlags & JNODE_REPLACE)!=0 && ALWAYS(aReplace!=0) ){
+ assert( pNode->eU==4 );
jsonAppendValue(pOut, aReplace[pNode->u.iReplace]);
return;
}
+ assert( pNode->eU==5 );
pNode = pNode->u.pPatch;
}
switch( pNode->eType ){
@@ -190095,6 +191713,7 @@ static void jsonRenderNode(
}
case JSON_STRING: {
if( pNode->jnFlags & JNODE_RAW ){
+ assert( pNode->eU==1 );
jsonAppendString(pOut, pNode->u.zJContent, pNode->n);
break;
}
@@ -190102,6 +191721,7 @@ static void jsonRenderNode(
}
case JSON_REAL:
case JSON_INT: {
+ assert( pNode->eU==1 );
jsonAppendRaw(pOut, pNode->u.zJContent, pNode->n);
break;
}
@@ -190117,6 +191737,7 @@ static void jsonRenderNode(
j += jsonNodeSize(&pNode[j]);
}
if( (pNode->jnFlags & JNODE_APPEND)==0 ) break;
+ assert( pNode->eU==2 );
pNode = &pNode[pNode->u.iAppend];
j = 1;
}
@@ -190137,6 +191758,7 @@ static void jsonRenderNode(
j += 1 + jsonNodeSize(&pNode[j+1]);
}
if( (pNode->jnFlags & JNODE_APPEND)==0 ) break;
+ assert( pNode->eU==2 );
pNode = &pNode[pNode->u.iAppend];
j = 1;
}
@@ -190216,7 +191838,9 @@ static void jsonReturn(
}
case JSON_INT: {
sqlite3_int64 i = 0;
- const char *z = pNode->u.zJContent;
+ const char *z;
+ assert( pNode->eU==1 );
+ z = pNode->u.zJContent;
if( z[0]=='-' ){ z++; }
while( z[0]>='0' && z[0]<='9' ){
unsigned v = *(z++) - '0';
@@ -190239,14 +191863,17 @@ static void jsonReturn(
sqlite3_result_int64(pCtx, i);
int_done:
break;
- int_as_real: i=0; /* no break */ deliberate_fall_through
+ int_as_real: ; /* no break */ deliberate_fall_through
}
case JSON_REAL: {
double r;
#ifdef SQLITE_AMALGAMATION
- const char *z = pNode->u.zJContent;
+ const char *z;
+ assert( pNode->eU==1 );
+ z = pNode->u.zJContent;
sqlite3AtoF(z, &r, sqlite3Strlen30(z), SQLITE_UTF8);
#else
+ assert( pNode->eU==1 );
r = strtod(pNode->u.zJContent, 0);
#endif
sqlite3_result_double(pCtx, r);
@@ -190257,6 +191884,7 @@ static void jsonReturn(
** json_insert() and json_replace() and those routines do not
** call jsonReturn() */
if( pNode->jnFlags & JNODE_RAW ){
+ assert( pNode->eU==1 );
sqlite3_result_text(pCtx, pNode->u.zJContent, pNode->n,
SQLITE_TRANSIENT);
}else
@@ -190264,15 +191892,18 @@ static void jsonReturn(
assert( (pNode->jnFlags & JNODE_RAW)==0 );
if( (pNode->jnFlags & JNODE_ESCAPE)==0 ){
/* JSON formatted without any backslash-escapes */
+ assert( pNode->eU==1 );
sqlite3_result_text(pCtx, pNode->u.zJContent+1, pNode->n-2,
SQLITE_TRANSIENT);
}else{
/* Translate JSON formatted string into raw text */
u32 i;
u32 n = pNode->n;
- const char *z = pNode->u.zJContent;
+ const char *z;
char *zOut;
u32 j;
+ assert( pNode->eU==1 );
+ z = pNode->u.zJContent;
zOut = sqlite3_malloc( n+1 );
if( zOut==0 ){
sqlite3_result_error_nomem(pCtx);
@@ -190393,12 +192024,13 @@ static int jsonParseAddNode(
const char *zContent /* Content */
){
JsonNode *p;
- if( pParse->nNode>=pParse->nAlloc ){
+ if( pParse->aNode==0 || pParse->nNode>=pParse->nAlloc ){
return jsonParseAddNodeExpand(pParse, eType, n, zContent);
}
p = &pParse->aNode[pParse->nNode];
p->eType = (u8)eType;
p->jnFlags = 0;
+ VVA( p->eU = zContent ? 1 : 0 );
p->n = n;
p->u.zJContent = zContent;
return pParse->nNode++;
@@ -190466,6 +192098,7 @@ static int jsonParseValue(JsonParse *pParse, u32 i){
/* Parse array */
iThis = jsonParseAddNode(pParse, JSON_ARRAY, 0, 0);
if( iThis<0 ) return -1;
+ memset(&pParse->aNode[iThis].u, 0, sizeof(pParse->aNode[iThis].u));
for(j=i+1;;j++){
while( safe_isspace(z[j]) ){ j++; }
if( ++pParse->iDepth > JSON_MAX_DEPTH ) return -1;
@@ -190730,6 +192363,7 @@ static JsonParse *jsonParseCached(
** a match.
*/
static int jsonLabelCompare(JsonNode *pNode, const char *zKey, u32 nKey){
+ assert( pNode->eU==1 );
if( pNode->jnFlags & JNODE_RAW ){
if( pNode->n!=nKey ) return 0;
return strncmp(pNode->u.zJContent, zKey, nKey)==0;
@@ -190795,6 +192429,7 @@ static JsonNode *jsonLookupStep(
j += jsonNodeSize(&pRoot[j]);
}
if( (pRoot->jnFlags & JNODE_APPEND)==0 ) break;
+ assert( pRoot->eU==2 );
iRoot += pRoot->u.iAppend;
pRoot = &pParse->aNode[iRoot];
j = 1;
@@ -190809,8 +192444,10 @@ static JsonNode *jsonLookupStep(
if( pParse->oom ) return 0;
if( pNode ){
pRoot = &pParse->aNode[iRoot];
+ assert( pRoot->eU==0 );
pRoot->u.iAppend = iStart - iRoot;
pRoot->jnFlags |= JNODE_APPEND;
+ VVA( pRoot->eU = 2 );
pParse->aNode[iLabel].jnFlags |= JNODE_RAW;
}
return pNode;
@@ -190833,6 +192470,7 @@ static JsonNode *jsonLookupStep(
j += jsonNodeSize(&pBase[j]);
}
if( (pBase->jnFlags & JNODE_APPEND)==0 ) break;
+ assert( pBase->eU==2 );
iBase += pBase->u.iAppend;
pBase = &pParse->aNode[iBase];
j = 1;
@@ -190866,6 +192504,7 @@ static JsonNode *jsonLookupStep(
j += jsonNodeSize(&pRoot[j]);
}
if( (pRoot->jnFlags & JNODE_APPEND)==0 ) break;
+ assert( pRoot->eU==2 );
iRoot += pRoot->u.iAppend;
pRoot = &pParse->aNode[iRoot];
j = 1;
@@ -190881,8 +192520,10 @@ static JsonNode *jsonLookupStep(
if( pParse->oom ) return 0;
if( pNode ){
pRoot = &pParse->aNode[iRoot];
+ assert( pRoot->eU==0 );
pRoot->u.iAppend = iStart - iRoot;
pRoot->jnFlags |= JNODE_APPEND;
+ VVA( pRoot->eU = 2 );
}
return pNode;
}
@@ -191036,9 +192677,13 @@ static void jsonParseFunc(
}
jsonPrintf(100, &s,"node %3u: %7s n=%-4d up=%-4d",
i, zType, x.aNode[i].n, x.aUp[i]);
+ assert( x.aNode[i].eU==0 || x.aNode[i].eU==1 );
if( x.aNode[i].u.zJContent!=0 ){
+ assert( x.aNode[i].eU==1 );
jsonAppendRaw(&s, " ", 1);
jsonAppendRaw(&s, x.aNode[i].u.zJContent, x.aNode[i].n);
+ }else{
+ assert( x.aNode[i].eU==0 );
}
jsonAppendRaw(&s, "\n", 1);
}
@@ -191221,6 +192866,7 @@ static JsonNode *jsonMergePatch(
const char *zKey;
assert( pPatch[i].eType==JSON_STRING );
assert( pPatch[i].jnFlags & JNODE_LABEL );
+ assert( pPatch[i].eU==1 );
nKey = pPatch[i].n;
zKey = pPatch[i].u.zJContent;
assert( (pPatch[i].jnFlags & JNODE_RAW)==0 );
@@ -191237,6 +192883,12 @@ static JsonNode *jsonMergePatch(
if( pNew==0 ) return 0;
pTarget = &pParse->aNode[iTarget];
if( pNew!=&pTarget[j+1] ){
+ assert( pTarget[j+1].eU==0
+ || pTarget[j+1].eU==1
+ || pTarget[j+1].eU==2 );
+ testcase( pTarget[j+1].eU==1 );
+ testcase( pTarget[j+1].eU==2 );
+ VVA( pTarget[j+1].eU = 5 );
pTarget[j+1].u.pPatch = pNew;
pTarget[j+1].jnFlags |= JNODE_PATCH;
}
@@ -191252,9 +192904,14 @@ static JsonNode *jsonMergePatch(
if( pParse->oom ) return 0;
jsonRemoveAllNulls(pPatch);
pTarget = &pParse->aNode[iTarget];
+ assert( pParse->aNode[iRoot].eU==0 || pParse->aNode[iRoot].eU==2 );
+ testcase( pParse->aNode[iRoot].eU==2 );
pParse->aNode[iRoot].jnFlags |= JNODE_APPEND;
+ VVA( pParse->aNode[iRoot].eU = 2 );
pParse->aNode[iRoot].u.iAppend = iStart - iRoot;
iRoot = iStart;
+ assert( pParse->aNode[iPatch].eU==0 );
+ VVA( pParse->aNode[iPatch].eU = 5 );
pParse->aNode[iPatch].jnFlags |= JNODE_PATCH;
pParse->aNode[iPatch].u.pPatch = &pPatch[i+1];
}
@@ -191396,11 +193053,15 @@ static void jsonReplaceFunc(
pNode = jsonLookup(&x, zPath, 0, ctx);
if( x.nErr ) goto replace_err;
if( pNode ){
+ assert( pNode->eU==0 || pNode->eU==1 || pNode->eU==4 );
+ json_testcase( pNode->eU!=0 && pNode->eU!=1 );
pNode->jnFlags |= (u8)JNODE_REPLACE;
+ VVA( pNode->eU = 4 );
pNode->u.iReplace = i + 1;
}
}
if( x.aNode[0].jnFlags & JNODE_REPLACE ){
+ assert( x.aNode[0].eU==4 );
sqlite3_result_value(ctx, argv[x.aNode[0].u.iReplace]);
}else{
jsonReturnJson(x.aNode, ctx, argv);
@@ -191450,11 +193111,15 @@ static void jsonSetFunc(
}else if( x.nErr ){
goto jsonSetDone;
}else if( pNode && (bApnd || bIsSet) ){
+ json_testcase( pNode->eU!=0 && pNode->eU!=1 && pNode->eU!=4 );
+ assert( pNode->eU!=3 || pNode->eU!=5 );
+ VVA( pNode->eU = 4 );
pNode->jnFlags |= (u8)JNODE_REPLACE;
pNode->u.iReplace = i + 1;
}
}
if( x.aNode[0].jnFlags & JNODE_REPLACE ){
+ assert( x.aNode[0].eU==4 );
sqlite3_result_value(ctx, argv[x.aNode[0].u.iReplace]);
}else{
jsonReturnJson(x.aNode, ctx, argv);
@@ -191805,6 +193470,9 @@ static int jsonEachNext(sqlite3_vtab_cursor *cur){
JsonNode *pUp = &p->sParse.aNode[iUp];
p->eType = pUp->eType;
if( pUp->eType==JSON_ARRAY ){
+ assert( pUp->eU==0 || pUp->eU==3 );
+ json_testcase( pUp->eU==3 );
+ VVA( pUp->eU = 3 );
if( iUp==p->i-1 ){
pUp->u.iKey = 0;
}else{
@@ -191851,12 +193519,15 @@ static void jsonEachComputePath(
pNode = &p->sParse.aNode[i];
pUp = &p->sParse.aNode[iUp];
if( pUp->eType==JSON_ARRAY ){
+ assert( pUp->eU==3 || (pUp->eU==0 && pUp->u.iKey==0) );
+ testcase( pUp->eU==0 );
jsonPrintf(30, pStr, "[%d]", pUp->u.iKey);
}else{
assert( pUp->eType==JSON_OBJECT );
if( (pNode->jnFlags & JNODE_LABEL)==0 ) pNode--;
assert( pNode->eType==JSON_STRING );
assert( pNode->jnFlags & JNODE_LABEL );
+ assert( pNode->eU==1 );
jsonPrintf(pNode->n+1, pStr, ".%.*s", pNode->n-2, pNode->u.zJContent+1);
}
}
@@ -191878,6 +193549,7 @@ static int jsonEachColumn(
u32 iKey;
if( p->bRecursive ){
if( p->iRowid==0 ) break;
+ assert( p->sParse.aNode[p->sParse.aUp[p->i]].eU==3 );
iKey = p->sParse.aNode[p->sParse.aUp[p->i]].u.iKey;
}else{
iKey = p->iRowid;
@@ -191927,6 +193599,7 @@ static int jsonEachColumn(
if( p->eType==JSON_ARRAY ){
jsonPrintf(30, &x, "[%d]", p->iRowid);
}else if( p->eType==JSON_OBJECT ){
+ assert( pThis->eU==1 );
jsonPrintf(pThis->n, &x, ".%.*s", pThis->n-2, pThis->u.zJContent+1);
}
}
@@ -191994,6 +193667,7 @@ static int jsonEachBestIndex(
if( pConstraint->iColumn < JEACH_JSON ) continue;
iCol = pConstraint->iColumn - JEACH_JSON;
assert( iCol==0 || iCol==1 );
+ testcase( iCol==0 );
iMask = 1 << iCol;
if( pConstraint->usable==0 ){
unusableMask |= iMask;
@@ -192091,6 +193765,8 @@ static int jsonEachFilter(
p->iBegin = p->i = (int)(pNode - p->sParse.aNode);
p->eType = pNode->eType;
if( p->eType>=JSON_ARRAY ){
+ assert( pNode->eU==0 );
+ VVA( pNode->eU = 3 );
pNode->u.iKey = 0;
p->iEnd = p->i + pNode->n + 1;
if( p->bRecursive ){
@@ -192333,7 +194009,11 @@ SQLITE_API int sqlite3_json_init(
#endif
SQLITE_PRIVATE int sqlite3GetToken(const unsigned char*,int*); /* In the SQLite core */
-#ifndef SQLITE_AMALGAMATION
+/*
+** If building separately, we will need some setup that is normally
+** found in sqliteInt.h
+*/
+#if !defined(SQLITE_AMALGAMATION)
#include "sqlite3rtree.h"
typedef sqlite3_int64 i64;
typedef sqlite3_uint64 u64;
@@ -192346,7 +194026,20 @@ typedef unsigned int u32;
#if defined(NDEBUG) && defined(SQLITE_DEBUG)
# undef NDEBUG
#endif
+#if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_MUTATION_TEST)
+# define SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS 1
+#endif
+#if defined(SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS)
+# define ALWAYS(X) (1)
+# define NEVER(X) (0)
+#elif !defined(NDEBUG)
+# define ALWAYS(X) ((X)?1:(assert(0),0))
+# define NEVER(X) ((X)?(assert(0),1):0)
+#else
+# define ALWAYS(X) (X)
+# define NEVER(X) (X)
#endif
+#endif /* !defined(SQLITE_AMALGAMATION) */
/* #include <string.h> */
/* #include <stdio.h> */
@@ -192404,7 +194097,9 @@ struct Rtree {
u8 nBytesPerCell; /* Bytes consumed per cell */
u8 inWrTrans; /* True if inside write transaction */
u8 nAux; /* # of auxiliary columns in %_rowid */
+#ifdef SQLITE_ENABLE_GEOPOLY
u8 nAuxNotNull; /* Number of initial not-null aux columns */
+#endif
#ifdef SQLITE_DEBUG
u8 bCorrupt; /* Shadow table corruption detected */
#endif
@@ -192686,7 +194381,12 @@ struct RtreeMatchArg {
** it is not, make it a no-op.
*/
#ifndef SQLITE_AMALGAMATION
-# define testcase(X)
+# if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_DEBUG)
+ unsigned int sqlite3RtreeTestcase = 0;
+# define testcase(X) if( X ){ sqlite3RtreeTestcase += __LINE__; }
+# else
+# define testcase(X)
+# endif
#endif
/*
@@ -192936,18 +194636,6 @@ static void nodeBlobReset(Rtree *pRtree){
}
/*
-** Check to see if pNode is the same as pParent or any of the parents
-** of pParent.
-*/
-static int nodeInParentChain(const RtreeNode *pNode, const RtreeNode *pParent){
- do{
- if( pNode==pParent ) return 1;
- pParent = pParent->pParent;
- }while( pParent );
- return 0;
-}
-
-/*
** Obtain a reference to an r-tree node.
*/
static int nodeAcquire(
@@ -192963,14 +194651,7 @@ static int nodeAcquire(
** increase its reference count and return it.
*/
if( (pNode = nodeHashLookup(pRtree, iNode))!=0 ){
- if( pParent && !pNode->pParent ){
- if( nodeInParentChain(pNode, pParent) ){
- RTREE_IS_CORRUPT(pRtree);
- return SQLITE_CORRUPT_VTAB;
- }
- pParent->nRef++;
- pNode->pParent = pParent;
- }else if( pParent && pNode->pParent && pParent!=pNode->pParent ){
+ if( pParent && pParent!=pNode->pParent ){
RTREE_IS_CORRUPT(pRtree);
return SQLITE_CORRUPT_VTAB;
}
@@ -193028,7 +194709,7 @@ static int nodeAcquire(
** are the leaves, and so on. If the depth as specified on the root node
** is greater than RTREE_MAX_DEPTH, the r-tree structure must be corrupt.
*/
- if( pNode && rc==SQLITE_OK && iNode==1 ){
+ if( rc==SQLITE_OK && pNode && iNode==1 ){
pRtree->iDepth = readInt16(pNode->zData);
if( pRtree->iDepth>RTREE_MAX_DEPTH ){
rc = SQLITE_CORRUPT_VTAB;
@@ -193551,20 +195232,29 @@ static void rtreeNonleafConstraint(
switch( p->op ){
case RTREE_TRUE: return; /* Always satisfied */
case RTREE_FALSE: break; /* Never satisfied */
+ case RTREE_EQ:
+ RTREE_DECODE_COORD(eInt, pCellData, val);
+ /* val now holds the lower bound of the coordinate pair */
+ if( p->u.rValue>=val ){
+ pCellData += 4;
+ RTREE_DECODE_COORD(eInt, pCellData, val);
+ /* val now holds the upper bound of the coordinate pair */
+ if( p->u.rValue<=val ) return;
+ }
+ break;
case RTREE_LE:
case RTREE_LT:
- case RTREE_EQ:
RTREE_DECODE_COORD(eInt, pCellData, val);
/* val now holds the lower bound of the coordinate pair */
if( p->u.rValue>=val ) return;
- if( p->op!=RTREE_EQ ) break; /* RTREE_LE and RTREE_LT end here */
- /* Fall through for the RTREE_EQ case */
+ break;
- default: /* RTREE_GT or RTREE_GE, or fallthrough of RTREE_EQ */
+ default:
pCellData += 4;
RTREE_DECODE_COORD(eInt, pCellData, val);
/* val now holds the upper bound of the coordinate pair */
if( p->u.rValue<=val ) return;
+ break;
}
*peWithin = NOT_WITHIN;
}
@@ -193634,11 +195324,12 @@ static int nodeRowidIndex(
*/
static int nodeParentIndex(Rtree *pRtree, RtreeNode *pNode, int *piIndex){
RtreeNode *pParent = pNode->pParent;
- if( pParent ){
+ if( ALWAYS(pParent) ){
return nodeRowidIndex(pRtree, pParent, pNode->iNode, piIndex);
+ }else{
+ *piIndex = -1;
+ return SQLITE_OK;
}
- *piIndex = -1;
- return SQLITE_OK;
}
/*
@@ -193761,7 +195452,8 @@ static RtreeSearchPoint *rtreeSearchPointNew(
pNew = rtreeEnqueue(pCur, rScore, iLevel);
if( pNew==0 ) return 0;
ii = (int)(pNew - pCur->aPoint) + 1;
- if( ii<RTREE_CACHE_SZ ){
+ assert( ii==1 );
+ if( ALWAYS(ii<RTREE_CACHE_SZ) ){
assert( pCur->aNode[ii]==0 );
pCur->aNode[ii] = pCur->aNode[0];
}else{
@@ -193822,7 +195514,7 @@ static void rtreeSearchPointPop(RtreeCursor *p){
if( p->bPoint ){
p->anQueue[p->sPoint.iLevel]--;
p->bPoint = 0;
- }else if( p->nPoint ){
+ }else if( ALWAYS(p->nPoint) ){
p->anQueue[p->aPoint[0].iLevel]--;
n = --p->nPoint;
p->aPoint[0] = p->aPoint[n];
@@ -193963,7 +195655,7 @@ static int rtreeRowid(sqlite3_vtab_cursor *pVtabCursor, sqlite_int64 *pRowid){
RtreeSearchPoint *p = rtreeSearchPointFirst(pCsr);
int rc = SQLITE_OK;
RtreeNode *pNode = rtreeNodeOfFirstSearchPoint(pCsr, &rc);
- if( rc==SQLITE_OK && p ){
+ if( rc==SQLITE_OK && ALWAYS(p) ){
*pRowid = nodeGetRowid(RTREE_OF_CURSOR(pCsr), pNode, p->iCell);
}
return rc;
@@ -193981,7 +195673,7 @@ static int rtreeColumn(sqlite3_vtab_cursor *cur, sqlite3_context *ctx, int i){
RtreeNode *pNode = rtreeNodeOfFirstSearchPoint(pCsr, &rc);
if( rc ) return rc;
- if( p==0 ) return SQLITE_OK;
+ if( NEVER(p==0) ) return SQLITE_OK;
if( i==0 ){
sqlite3_result_int64(ctx, nodeGetRowid(pRtree, pNode, p->iCell));
}else if( i<=pRtree->nDim2 ){
@@ -194180,8 +195872,11 @@ static int rtreeFilter(
}
if( rc==SQLITE_OK ){
RtreeSearchPoint *pNew;
+ assert( pCsr->bPoint==0 ); /* Due to the resetCursor() call above */
pNew = rtreeSearchPointNew(pCsr, RTREE_ZERO, (u8)(pRtree->iDepth+1));
- if( pNew==0 ) return SQLITE_NOMEM;
+ if( NEVER(pNew==0) ){ /* Because pCsr->bPoint was FALSE */
+ return SQLITE_NOMEM;
+ }
pNew->id = 1;
pNew->iCell = 0;
pNew->eWithin = PARTLY_WITHIN;
@@ -194258,7 +195953,7 @@ static int rtreeBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){
struct sqlite3_index_constraint *p = &pIdxInfo->aConstraint[ii];
if( bMatch==0 && p->usable
- && p->iColumn==0 && p->op==SQLITE_INDEX_CONSTRAINT_EQ
+ && p->iColumn<=0 && p->op==SQLITE_INDEX_CONSTRAINT_EQ
){
/* We have an equality constraint on the rowid. Use strategy 1. */
int jj;
@@ -194464,7 +196159,7 @@ static int ChooseLeaf(
int nCell = NCELL(pNode);
RtreeCell cell;
- RtreeNode *pChild;
+ RtreeNode *pChild = 0;
RtreeCell *aCell = 0;
@@ -194511,12 +196206,19 @@ static int AdjustTree(
){
RtreeNode *p = pNode;
int cnt = 0;
+ int rc;
while( p->pParent ){
RtreeNode *pParent = p->pParent;
RtreeCell cell;
int iCell;
- if( (++cnt)>1000 || nodeParentIndex(pRtree, p, &iCell) ){
+ cnt++;
+ if( NEVER(cnt>100) ){
+ RTREE_IS_CORRUPT(pRtree);
+ return SQLITE_CORRUPT_VTAB;
+ }
+ rc = nodeParentIndex(pRtree, p, &iCell);
+ if( NEVER(rc!=SQLITE_OK) ){
RTREE_IS_CORRUPT(pRtree);
return SQLITE_CORRUPT_VTAB;
}
@@ -194805,12 +196507,17 @@ static int updateMapping(
xSetMapping = ((iHeight==0)?rowidWrite:parentWrite);
if( iHeight>0 ){
RtreeNode *pChild = nodeHashLookup(pRtree, iRowid);
+ RtreeNode *p;
+ for(p=pNode; p; p=p->pParent){
+ if( p==pChild ) return SQLITE_CORRUPT_VTAB;
+ }
if( pChild ){
nodeRelease(pRtree, pChild->pParent);
nodeReference(pNode);
pChild->pParent = pNode;
}
}
+ if( NEVER(pNode==0) ) return SQLITE_ERROR;
return xSetMapping(pRtree, iRowid, pNode->iNode);
}
@@ -194900,11 +196607,12 @@ static int SplitNode(
RtreeNode *pParent = pLeft->pParent;
int iCell;
rc = nodeParentIndex(pRtree, pLeft, &iCell);
- if( rc==SQLITE_OK ){
+ if( ALWAYS(rc==SQLITE_OK) ){
nodeOverwriteCell(pRtree, pParent, &leftbbox, iCell);
rc = AdjustTree(pRtree, pParent, &leftbbox);
+ assert( rc==SQLITE_OK );
}
- if( rc!=SQLITE_OK ){
+ if( NEVER(rc!=SQLITE_OK) ){
goto splitnode_out;
}
}
@@ -194979,7 +196687,7 @@ static int fixLeafParent(Rtree *pRtree, RtreeNode *pLeaf){
*/
iNode = sqlite3_column_int64(pRtree->pReadParent, 0);
for(pTest=pLeaf; pTest && pTest->iNode!=iNode; pTest=pTest->pParent);
- if( !pTest ){
+ if( pTest==0 ){
rc2 = nodeAcquire(pRtree, iNode, 0, &pChild->pParent);
}
}
@@ -195010,6 +196718,7 @@ static int removeNode(Rtree *pRtree, RtreeNode *pNode, int iHeight){
pParent = pNode->pParent;
pNode->pParent = 0;
rc = deleteCell(pRtree, pParent, iCell, iHeight+1);
+ testcase( rc!=SQLITE_OK );
}
rc2 = nodeRelease(pRtree, pParent);
if( rc==SQLITE_OK ){
@@ -195232,7 +196941,7 @@ static int rtreeInsertCell(
}
}else{
rc = AdjustTree(pRtree, pNode, pCell);
- if( rc==SQLITE_OK ){
+ if( ALWAYS(rc==SQLITE_OK) ){
if( iHeight==0 ){
rc = rowidWrite(pRtree, pCell->iRowid, pNode->iNode);
}else{
@@ -195338,7 +197047,7 @@ static int rtreeDeleteRowid(Rtree *pRtree, sqlite3_int64 iDelete){
int rc2;
RtreeNode *pChild = 0;
i64 iChild = nodeGetRowid(pRtree, pRoot, 0);
- rc = nodeAcquire(pRtree, iChild, pRoot, &pChild);
+ rc = nodeAcquire(pRtree, iChild, pRoot, &pChild); /* tag-20210916a */
if( rc==SQLITE_OK ){
rc = removeNode(pRtree, pChild, pRtree->iDepth-1);
}
@@ -195673,7 +197382,7 @@ static int rtreeQueryStat1(sqlite3 *db, Rtree *pRtree){
char *zSql;
sqlite3_stmt *p;
int rc;
- i64 nRow = 0;
+ i64 nRow = RTREE_MIN_ROWEST;
rc = sqlite3_table_column_metadata(
db, pRtree->zDb, "sqlite_stat1",0,0,0,0,0,0
@@ -195690,20 +197399,10 @@ static int rtreeQueryStat1(sqlite3 *db, Rtree *pRtree){
if( rc==SQLITE_OK ){
if( sqlite3_step(p)==SQLITE_ROW ) nRow = sqlite3_column_int64(p, 0);
rc = sqlite3_finalize(p);
- }else if( rc!=SQLITE_NOMEM ){
- rc = SQLITE_OK;
- }
-
- if( rc==SQLITE_OK ){
- if( nRow==0 ){
- pRtree->nRowEst = RTREE_DEFAULT_ROWEST;
- }else{
- pRtree->nRowEst = MAX(nRow, RTREE_MIN_ROWEST);
- }
}
sqlite3_free(zSql);
}
-
+ pRtree->nRowEst = MAX(nRow, RTREE_MIN_ROWEST);
return rc;
}
@@ -195853,9 +197552,12 @@ static int rtreeSqlInit(
sqlite3_str_appendf(p, "UPDATE \"%w\".\"%w_rowid\"SET ", zDb, zPrefix);
for(ii=0; ii<pRtree->nAux; ii++){
if( ii ) sqlite3_str_append(p, ",", 1);
+#ifdef SQLITE_ENABLE_GEOPOLY
if( ii<pRtree->nAuxNotNull ){
sqlite3_str_appendf(p,"a%d=coalesce(?%d,a%d)",ii,ii+2,ii);
- }else{
+ }else
+#endif
+ {
sqlite3_str_appendf(p,"a%d=?%d",ii,ii+2);
}
}
@@ -196120,6 +197822,7 @@ static void rtreenode(sqlite3_context *ctx, int nArg, sqlite3_value **apArg){
tree.nDim2 = tree.nDim*2;
tree.nBytesPerCell = 8 + 8 * tree.nDim;
node.zData = (u8 *)sqlite3_value_blob(apArg[1]);
+ if( node.zData==0 ) return;
nData = sqlite3_value_bytes(apArg[1]);
if( nData<4 ) return;
if( nData<NCELL(&node)*tree.nBytesPerCell ) return;
@@ -196534,8 +198237,10 @@ static int rtreeCheckTable(
if( pStmt ){
nAux = sqlite3_column_count(pStmt) - 2;
sqlite3_finalize(pStmt);
+ }else
+ if( check.rc!=SQLITE_NOMEM ){
+ check.rc = SQLITE_OK;
}
- check.rc = SQLITE_OK;
}
/* Find number of dimensions in the rtree table. */
@@ -196949,13 +198654,14 @@ static GeoPoly *geopolyFuncParam(
){
GeoPoly *p = 0;
int nByte;
+ testcase( pCtx==0 );
if( sqlite3_value_type(pVal)==SQLITE_BLOB
&& (nByte = sqlite3_value_bytes(pVal))>=(4+6*sizeof(GeoCoord))
){
const unsigned char *a = sqlite3_value_blob(pVal);
int nVertex;
if( a==0 ){
- sqlite3_result_error_nomem(pCtx);
+ if( pCtx ) sqlite3_result_error_nomem(pCtx);
return 0;
}
nVertex = (a[1]<<16) + (a[2]<<8) + a[3];
@@ -197782,11 +199488,11 @@ static int geopolyOverlap(GeoPoly *p1, GeoPoly *p2){
}else{
/* Remove a segment */
if( pActive==pThisEvent->pSeg ){
- pActive = pActive->pNext;
+ pActive = ALWAYS(pActive) ? pActive->pNext : 0;
}else{
for(pSeg=pActive; pSeg; pSeg=pSeg->pNext){
if( pSeg->pNext==pThisEvent->pSeg ){
- pSeg->pNext = pSeg->pNext->pNext;
+ pSeg->pNext = ALWAYS(pSeg->pNext) ? pSeg->pNext->pNext : 0;
break;
}
}
@@ -198030,6 +199736,7 @@ static int geopolyFilter(
RtreeCoord bbox[4];
RtreeConstraint *p;
assert( argc==1 );
+ assert( argv[0]!=0 );
geopolyBBox(0, argv[0], bbox, &rc);
if( rc ){
goto geopoly_filter_end;
@@ -198257,6 +199964,7 @@ static int geopolyUpdate(
|| !sqlite3_value_nochange(aData[2]) /* UPDATE _shape */
|| oldRowid!=newRowid) /* Rowid change */
){
+ assert( aData[2]!=0 );
geopolyBBox(0, aData[2], cell.aCoord, &rc);
if( rc ){
if( rc==SQLITE_ERROR ){
@@ -198610,7 +200318,10 @@ SQLITE_API int sqlite3_rtree_query_callback(
/* Allocate and populate the context object. */
pGeomCtx = (RtreeGeomCallback *)sqlite3_malloc(sizeof(RtreeGeomCallback));
- if( !pGeomCtx ) return SQLITE_NOMEM;
+ if( !pGeomCtx ){
+ if( xDestructor ) xDestructor(pContext);
+ return SQLITE_NOMEM;
+ }
pGeomCtx->xGeom = 0;
pGeomCtx->xQueryFunc = xQueryFunc;
pGeomCtx->xDestructor = xDestructor;
@@ -200182,6 +201893,13 @@ SQLITE_API void sqlite3rbu_destroy_vfs(const char *zName);
#endif
/*
+** Name of the URI option that causes RBU to take an exclusive lock as
+** part of the incremental checkpoint operation.
+*/
+#define RBU_EXCLUSIVE_CHECKPOINT "rbu_exclusive_checkpoint"
+
+
+/*
** The rbu_state table is used to save the state of a partially applied
** update so that it can be resumed later. The table consists of integer
** keys mapped to values as follows:
@@ -201265,7 +202983,9 @@ static void rbuTableType(
assert( p->rc==SQLITE_OK );
p->rc = prepareFreeAndCollectError(p->dbMain, &aStmt[0], &p->zErrmsg,
sqlite3_mprintf(
- "SELECT (sql LIKE 'create virtual%%'), rootpage"
+ "SELECT "
+ " (sql COLLATE nocase BETWEEN 'CREATE VIRTUAL' AND 'CREATE VIRTUAM'),"
+ " rootpage"
" FROM sqlite_schema"
" WHERE name=%Q", zTab
));
@@ -202798,7 +204518,7 @@ static RbuState *rbuLoadState(sqlite3rbu *p){
break;
case RBU_STATE_OALSZ:
- pRet->iOalSz = (u32)sqlite3_column_int64(pStmt, 1);
+ pRet->iOalSz = sqlite3_column_int64(pStmt, 1);
break;
case RBU_STATE_PHASEONESTEP:
@@ -202825,13 +204545,19 @@ static RbuState *rbuLoadState(sqlite3rbu *p){
/*
** Open the database handle and attach the RBU database as "rbu". If an
** error occurs, leave an error code and message in the RBU handle.
+**
+** If argument dbMain is not NULL, then it is a database handle already
+** open on the target database. Use this handle instead of opening a new
+** one.
*/
-static void rbuOpenDatabase(sqlite3rbu *p, int *pbRetry){
+static void rbuOpenDatabase(sqlite3rbu *p, sqlite3 *dbMain, int *pbRetry){
assert( p->rc || (p->dbMain==0 && p->dbRbu==0) );
assert( p->rc || rbuIsVacuum(p) || p->zTarget!=0 );
+ assert( dbMain==0 || rbuIsVacuum(p)==0 );
/* Open the RBU database */
p->dbRbu = rbuOpenDbhandle(p, p->zRbu, 1);
+ p->dbMain = dbMain;
if( p->rc==SQLITE_OK && rbuIsVacuum(p) ){
sqlite3_file_control(p->dbRbu, "main", SQLITE_FCNTL_RBUCNT, (void*)p);
@@ -203197,15 +204923,31 @@ static void rbuCheckpointFrame(sqlite3rbu *p, RbuFrame *pFrame){
/*
-** Take an EXCLUSIVE lock on the database file.
+** Take an EXCLUSIVE lock on the database file. Return SQLITE_OK if
+** successful, or an SQLite error code otherwise.
*/
-static void rbuLockDatabase(sqlite3rbu *p){
- sqlite3_file *pReal = p->pTargetFd->pReal;
- assert( p->rc==SQLITE_OK );
- p->rc = pReal->pMethods->xLock(pReal, SQLITE_LOCK_SHARED);
- if( p->rc==SQLITE_OK ){
- p->rc = pReal->pMethods->xLock(pReal, SQLITE_LOCK_EXCLUSIVE);
+static int rbuLockDatabase(sqlite3 *db){
+ int rc = SQLITE_OK;
+ sqlite3_file *fd = 0;
+ sqlite3_file_control(db, "main", SQLITE_FCNTL_FILE_POINTER, &fd);
+
+ if( fd->pMethods ){
+ rc = fd->pMethods->xLock(fd, SQLITE_LOCK_SHARED);
+ if( rc==SQLITE_OK ){
+ rc = fd->pMethods->xLock(fd, SQLITE_LOCK_EXCLUSIVE);
+ }
}
+ return rc;
+}
+
+/*
+** Return true if the database handle passed as the only argument
+** was opened with the rbu_exclusive_checkpoint=1 URI parameter
+** specified. Or false otherwise.
+*/
+static int rbuExclusiveCheckpoint(sqlite3 *db){
+ const char *zUri = sqlite3_db_filename(db, 0);
+ return sqlite3_uri_boolean(zUri, RBU_EXCLUSIVE_CHECKPOINT, 0);
}
#if defined(_WIN32_WCE)
@@ -203263,18 +205005,24 @@ static void rbuMoveOalFile(sqlite3rbu *p){
** In order to ensure that there are no database readers, an EXCLUSIVE
** lock is obtained here before the *-oal is moved to *-wal.
*/
- rbuLockDatabase(p);
- if( p->rc==SQLITE_OK ){
- rbuFileSuffix3(zBase, zWal);
- rbuFileSuffix3(zBase, zOal);
+ sqlite3 *dbMain = 0;
+ rbuFileSuffix3(zBase, zWal);
+ rbuFileSuffix3(zBase, zOal);
+
+ /* Re-open the databases. */
+ rbuObjIterFinalize(&p->objiter);
+ sqlite3_close(p->dbRbu);
+ sqlite3_close(p->dbMain);
+ p->dbMain = 0;
+ p->dbRbu = 0;
- /* Re-open the databases. */
- rbuObjIterFinalize(&p->objiter);
- sqlite3_close(p->dbRbu);
- sqlite3_close(p->dbMain);
- p->dbMain = 0;
- p->dbRbu = 0;
+ dbMain = rbuOpenDbhandle(p, p->zTarget, 1);
+ if( dbMain ){
+ assert( p->rc==SQLITE_OK );
+ p->rc = rbuLockDatabase(dbMain);
+ }
+ if( p->rc==SQLITE_OK ){
#if defined(_WIN32_WCE)
{
LPWSTR zWideOal;
@@ -203301,11 +205049,19 @@ static void rbuMoveOalFile(sqlite3rbu *p){
#else
p->rc = rename(zOal, zWal) ? SQLITE_IOERR : SQLITE_OK;
#endif
+ }
- if( p->rc==SQLITE_OK ){
- rbuOpenDatabase(p, 0);
- rbuSetupCheckpoint(p, 0);
- }
+ if( p->rc!=SQLITE_OK
+ || rbuIsVacuum(p)
+ || rbuExclusiveCheckpoint(dbMain)==0
+ ){
+ sqlite3_close(dbMain);
+ dbMain = 0;
+ }
+
+ if( p->rc==SQLITE_OK ){
+ rbuOpenDatabase(p, dbMain, 0);
+ rbuSetupCheckpoint(p, 0);
}
}
@@ -204056,9 +205812,9 @@ static sqlite3rbu *openRbuHandle(
** If this is the case, it will have been checkpointed and deleted
** when the handle was closed and a second attempt to open the
** database may succeed. */
- rbuOpenDatabase(p, &bRetry);
+ rbuOpenDatabase(p, 0, &bRetry);
if( bRetry ){
- rbuOpenDatabase(p, 0);
+ rbuOpenDatabase(p, 0, 0);
}
}
@@ -204153,6 +205909,14 @@ static sqlite3rbu *openRbuHandle(
}else if( p->eStage==RBU_STAGE_MOVE ){
/* no-op */
}else if( p->eStage==RBU_STAGE_CKPT ){
+ if( !rbuIsVacuum(p) && rbuExclusiveCheckpoint(p->dbMain) ){
+ /* If the rbu_exclusive_checkpoint=1 URI parameter was specified
+ ** and an incremental checkpoint is being resumed, attempt an
+ ** exclusive lock on the db file. If this fails, so be it. */
+ p->eStage = RBU_STAGE_DONE;
+ rbuLockDatabase(p->dbMain);
+ p->eStage = RBU_STAGE_CKPT;
+ }
rbuSetupCheckpoint(p, pState);
}else if( p->eStage==RBU_STAGE_DONE ){
p->rc = SQLITE_DONE;
@@ -204190,7 +205954,6 @@ SQLITE_API sqlite3rbu *sqlite3rbu_open(
const char *zState
){
if( zTarget==0 || zRbu==0 ){ return rbuMisuseError(); }
- /* TODO: Check that zTarget and zRbu are non-NULL */
return openRbuHandle(zTarget, zRbu, zState);
}
@@ -205394,6 +207157,15 @@ SQLITE_API sqlite3_int64 sqlite3rbu_temp_size(sqlite3rbu *pRbu){
&& !defined(SQLITE_OMIT_VIRTUALTABLE)
/*
+** The pager and btree modules arrange objects in memory so that there are
+** always approximately 200 bytes of addressable memory following each page
+** buffer. This way small buffer overreads caused by corrupt database pages
+** do not cause undefined behaviour. This module pads each page buffer
+** by the following number of bytes for the same purpose.
+*/
+#define DBSTAT_PAGE_PADDING_BYTES 256
+
+/*
** Page paths:
**
** The value of the 'path' column describes the path taken from the
@@ -205460,9 +207232,8 @@ struct StatCell {
/* Size information for a single btree page */
struct StatPage {
u32 iPgno; /* Page number */
- DbPage *pPg; /* Page content */
+ u8 *aPg; /* Page buffer from sqlite3_malloc() */
int iCell; /* Current cell */
-
char *zPath; /* Path to this page */
/* Variables populated by statDecodePage(): */
@@ -205674,18 +207445,25 @@ static void statClearCells(StatPage *p){
}
static void statClearPage(StatPage *p){
+ u8 *aPg = p->aPg;
statClearCells(p);
- sqlite3PagerUnref(p->pPg);
sqlite3_free(p->zPath);
memset(p, 0, sizeof(StatPage));
+ p->aPg = aPg;
}
static void statResetCsr(StatCursor *pCsr){
int i;
- sqlite3_reset(pCsr->pStmt);
+ /* In some circumstances, specifically if an OOM has occurred, the call
+ ** to sqlite3_reset() may cause the pager to be reset (emptied). It is
+ ** important that statClearPage() is called to free any page refs before
+ ** this happens. dbsqlfuzz 9ed3e4e3816219d3509d711636c38542bf3f40b1. */
for(i=0; i<ArraySize(pCsr->aPage); i++){
statClearPage(&pCsr->aPage[i]);
+ sqlite3_free(pCsr->aPage[i].aPg);
+ pCsr->aPage[i].aPg = 0;
}
+ sqlite3_reset(pCsr->pStmt);
pCsr->iPage = 0;
sqlite3_free(pCsr->zPath);
pCsr->zPath = 0;
@@ -205750,7 +207528,7 @@ static int statDecodePage(Btree *pBt, StatPage *p){
int isLeaf;
int szPage;
- u8 *aData = sqlite3PagerGetData(p->pPg);
+ u8 *aData = p->aPg;
u8 *aHdr = &aData[p->iPgno==1 ? 100 : 0];
p->flags = aHdr[0];
@@ -205821,7 +207599,7 @@ static int statDecodePage(Btree *pBt, StatPage *p){
if( nPayload>(u32)nLocal ){
int j;
int nOvfl = ((nPayload - nLocal) + nUsable-4 - 1) / (nUsable - 4);
- if( iOff+nLocal>nUsable || nPayload>0x7fffffff ){
+ if( iOff+nLocal+4>nUsable || nPayload>0x7fffffff ){
goto statPageIsCorrupt;
}
pCell->nLastOvfl = (nPayload-nLocal) - (nOvfl-1) * (nUsable-4);
@@ -205881,6 +207659,38 @@ static void statSizeAndOffset(StatCursor *pCsr){
}
/*
+** Load a copy of the page data for page iPg into the buffer belonging
+** to page object pPg. Allocate the buffer if necessary. Return SQLITE_OK
+** if successful, or an SQLite error code otherwise.
+*/
+static int statGetPage(
+ Btree *pBt, /* Load page from this b-tree */
+ u32 iPg, /* Page number to load */
+ StatPage *pPg /* Load page into this object */
+){
+ int pgsz = sqlite3BtreeGetPageSize(pBt);
+ DbPage *pDbPage = 0;
+ int rc;
+
+ if( pPg->aPg==0 ){
+ pPg->aPg = (u8*)sqlite3_malloc(pgsz + DBSTAT_PAGE_PADDING_BYTES);
+ if( pPg->aPg==0 ){
+ return SQLITE_NOMEM_BKPT;
+ }
+ memset(&pPg->aPg[pgsz], 0, DBSTAT_PAGE_PADDING_BYTES);
+ }
+
+ rc = sqlite3PagerGet(sqlite3BtreePager(pBt), iPg, &pDbPage, 0);
+ if( rc==SQLITE_OK ){
+ const u8 *a = sqlite3PagerGetData(pDbPage);
+ memcpy(pPg->aPg, a, pgsz);
+ sqlite3PagerUnref(pDbPage);
+ }
+
+ return rc;
+}
+
+/*
** Move a DBSTAT cursor to the next entry. Normally, the next
** entry will be the next page, but in aggregated mode (pCsr->isAgg!=0),
** the next entry is the next btree.
@@ -205898,7 +207708,7 @@ static int statNext(sqlite3_vtab_cursor *pCursor){
pCsr->zPath = 0;
statNextRestart:
- if( pCsr->aPage[0].pPg==0 ){
+ if( pCsr->iPage<0 ){
/* Start measuring space on the next btree */
statResetCounts(pCsr);
rc = sqlite3_step(pCsr->pStmt);
@@ -205910,7 +207720,7 @@ statNextRestart:
pCsr->isEof = 1;
return sqlite3_reset(pCsr->pStmt);
}
- rc = sqlite3PagerGet(pPager, iRoot, &pCsr->aPage[0].pPg, 0);
+ rc = statGetPage(pBt, iRoot, &pCsr->aPage[0]);
pCsr->aPage[0].iPgno = iRoot;
pCsr->aPage[0].iCell = 0;
if( !pCsr->isAgg ){
@@ -205961,9 +207771,8 @@ statNextRestart:
if( !p->iRightChildPg || p->iCell>p->nCell ){
statClearPage(p);
- if( pCsr->iPage>0 ){
- pCsr->iPage--;
- }else if( pCsr->isAgg ){
+ pCsr->iPage--;
+ if( pCsr->isAgg && pCsr->iPage<0 ){
/* label-statNext-done: When computing aggregate space usage over
** an entire btree, this is the exit point from this function */
return SQLITE_OK;
@@ -205982,7 +207791,7 @@ statNextRestart:
}else{
p[1].iPgno = p->aCell[p->iCell].iChildPg;
}
- rc = sqlite3PagerGet(pPager, p[1].iPgno, &p[1].pPg, 0);
+ rc = statGetPage(pBt, p[1].iPgno, &p[1]);
pCsr->nPage++;
p[1].iCell = 0;
if( !pCsr->isAgg ){
@@ -206112,6 +207921,7 @@ static int statFilter(
}
if( rc==SQLITE_OK ){
+ pCsr->iPage = -1;
rc = statNext(pCursor);
}
return rc;
@@ -207063,7 +208873,7 @@ static int sessionSerializeValue(
if( aBuf ){
sessionVarintPut(&aBuf[1], n);
- if( n ) memcpy(&aBuf[nVarint + 1], z, n);
+ if( n>0 ) memcpy(&aBuf[nVarint + 1], z, n);
}
nByte = 1 + nVarint + n;
@@ -207668,16 +209478,32 @@ static int sessionTableInfo(
}else if( rc==SQLITE_ERROR ){
zPragma = sqlite3_mprintf("");
}else{
+ *pazCol = 0;
+ *pabPK = 0;
+ *pnCol = 0;
+ if( pzTab ) *pzTab = 0;
return rc;
}
}else{
zPragma = sqlite3_mprintf("PRAGMA '%q'.table_info('%q')", zDb, zThis);
}
- if( !zPragma ) return SQLITE_NOMEM;
+ if( !zPragma ){
+ *pazCol = 0;
+ *pabPK = 0;
+ *pnCol = 0;
+ if( pzTab ) *pzTab = 0;
+ return SQLITE_NOMEM;
+ }
rc = sqlite3_prepare_v2(db, zPragma, -1, &pStmt, 0);
sqlite3_free(zPragma);
- if( rc!=SQLITE_OK ) return rc;
+ if( rc!=SQLITE_OK ){
+ *pazCol = 0;
+ *pabPK = 0;
+ *pnCol = 0;
+ if( pzTab ) *pzTab = 0;
+ return rc;
+ }
nByte = nThis + 1;
while( SQLITE_ROW==sqlite3_step(pStmt) ){
@@ -208095,7 +209921,11 @@ static int sessionFindTable(
){
rc = sqlite3session_attach(pSession, zName);
if( rc==SQLITE_OK ){
- for(pRet=pSession->pTable; pRet->pNext; pRet=pRet->pNext);
+ pRet = pSession->pTable;
+ while( ALWAYS(pRet) && pRet->pNext ){
+ pRet = pRet->pNext;
+ }
+ assert( pRet!=0 );
assert( 0==sqlite3_strnicmp(pRet->zName, zName, nName+1) );
}
}
@@ -208868,6 +210698,7 @@ static int sessionAppendUpdate(
int i; /* Used to iterate through columns */
u8 *pCsr = p->aRecord; /* Used to iterate through old.* values */
+ assert( abPK!=0 );
sessionAppendByte(pBuf, SQLITE_UPDATE, &rc);
sessionAppendByte(pBuf, p->bIndirect, &rc);
for(i=0; i<sqlite3_column_count(pStmt); i++){
@@ -209172,12 +211003,14 @@ static int sessionGenerateChangeset(
SessionBuffer buf = {0,0,0}; /* Buffer in which to accumlate changeset */
int rc; /* Return code */
- assert( xOutput==0 || (pnChangeset==0 && ppChangeset==0 ) );
+ assert( xOutput==0 || (pnChangeset==0 && ppChangeset==0) );
+ assert( xOutput!=0 || (pnChangeset!=0 && ppChangeset!=0) );
/* Zero the output variables in case an error occurs. If this session
** object is already in the error state (sqlite3_session.rc != SQLITE_OK),
** this call will be a no-op. */
if( xOutput==0 ){
+ assert( pnChangeset!=0 && ppChangeset!=0 );
*pnChangeset = 0;
*ppChangeset = 0;
}
@@ -209191,8 +211024,8 @@ static int sessionGenerateChangeset(
for(pTab=pSession->pTable; rc==SQLITE_OK && pTab; pTab=pTab->pNext){
if( pTab->nEntry ){
const char *zName = pTab->zName;
- int nCol; /* Number of columns in table */
- u8 *abPK; /* Primary key array */
+ int nCol = 0; /* Number of columns in table */
+ u8 *abPK = 0; /* Primary key array */
const char **azCol = 0; /* Table columns */
int i; /* Used to iterate through hash buckets */
sqlite3_stmt *pSel = 0; /* SELECT statement to query table pTab */
@@ -209230,6 +211063,7 @@ static int sessionGenerateChangeset(
sessionAppendCol(&buf, pSel, iCol, &rc);
}
}else{
+ assert( abPK!=0 ); /* Because sessionSelectStmt() returned ok */
rc = sessionAppendUpdate(&buf, bPatchset, pSel, p, abPK);
}
}else if( p->op!=SQLITE_INSERT ){
@@ -209290,7 +211124,10 @@ SQLITE_API int sqlite3session_changeset(
int *pnChangeset, /* OUT: Size of buffer at *ppChangeset */
void **ppChangeset /* OUT: Buffer containing changeset */
){
- int rc = sessionGenerateChangeset(pSession, 0, 0, 0, pnChangeset,ppChangeset);
+ int rc;
+
+ if( pnChangeset==0 || ppChangeset==0 ) return SQLITE_MISUSE;
+ rc = sessionGenerateChangeset(pSession, 0, 0, 0, pnChangeset,ppChangeset);
assert( rc || pnChangeset==0
|| pSession->bEnableSize==0 || *pnChangeset<=pSession->nMaxChangesetSize
);
@@ -209305,6 +211142,7 @@ SQLITE_API int sqlite3session_changeset_strm(
int (*xOutput)(void *pOut, const void *pData, int nData),
void *pOut
){
+ if( xOutput==0 ) return SQLITE_MISUSE;
return sessionGenerateChangeset(pSession, 0, xOutput, pOut, 0, 0);
}
@@ -209316,6 +211154,7 @@ SQLITE_API int sqlite3session_patchset_strm(
int (*xOutput)(void *pOut, const void *pData, int nData),
void *pOut
){
+ if( xOutput==0 ) return SQLITE_MISUSE;
return sessionGenerateChangeset(pSession, 1, xOutput, pOut, 0, 0);
}
@@ -209331,6 +211170,7 @@ SQLITE_API int sqlite3session_patchset(
int *pnPatchset, /* OUT: Size of buffer at *ppChangeset */
void **ppPatchset /* OUT: Buffer containing changeset */
){
+ if( pnPatchset==0 || ppPatchset==0 ) return SQLITE_MISUSE;
return sessionGenerateChangeset(pSession, 1, 0, 0, pnPatchset, ppPatchset);
}
@@ -210294,11 +212134,11 @@ static int sessionChangesetInvert(
}
assert( rc==SQLITE_OK );
- if( pnInverted ){
+ if( pnInverted && ALWAYS(ppInverted) ){
*pnInverted = sOut.nBuf;
*ppInverted = sOut.aBuf;
sOut.aBuf = 0;
- }else if( sOut.nBuf>0 ){
+ }else if( sOut.nBuf>0 && ALWAYS(xOutput!=0) ){
rc = xOutput(pOut, sOut.aBuf, sOut.nBuf);
}
@@ -210754,7 +212594,7 @@ static int sessionBindRow(
for(i=0; rc==SQLITE_OK && i<nCol; i++){
if( !abPK || abPK[i] ){
- sqlite3_value *pVal;
+ sqlite3_value *pVal = 0;
(void)xValue(pIter, i, &pVal);
if( pVal==0 ){
/* The value in the changeset was "undefined". This indicates a
@@ -211897,9 +213737,9 @@ static int sessionChangegroupOutput(
if( rc==SQLITE_OK ){
if( xOutput ){
if( buf.nBuf>0 ) rc = xOutput(pOut, buf.aBuf, buf.nBuf);
- }else{
+ }else if( ppOut ){
*ppOut = buf.aBuf;
- *pnOut = buf.nBuf;
+ if( pnOut ) *pnOut = buf.nBuf;
buf.aBuf = 0;
}
}
@@ -212299,7 +214139,7 @@ static int sessionRebase(
if( sOut.nBuf>0 ){
rc = xOutput(pOut, sOut.aBuf, sOut.nBuf);
}
- }else{
+ }else if( ppOut ){
*ppOut = (void*)sOut.aBuf;
*pnOut = sOut.nBuf;
sOut.aBuf = 0;
@@ -213042,8 +214882,20 @@ typedef sqlite3_uint64 u64;
#endif
#define testcase(x)
-#define ALWAYS(x) 1
-#define NEVER(x) 0
+
+#if defined(SQLITE_COVERAGE_TEST) || defined(SQLITE_MUTATION_TEST)
+# define SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS 1
+#endif
+#if defined(SQLITE_OMIT_AUXILIARY_SAFETY_CHECKS)
+# define ALWAYS(X) (1)
+# define NEVER(X) (0)
+#elif !defined(NDEBUG)
+# define ALWAYS(X) ((X)?1:(assert(0),0))
+# define NEVER(X) ((X)?(assert(0),1):0)
+#else
+# define ALWAYS(X) (X)
+# define NEVER(X) (X)
+#endif
#define MIN(x,y) (((x) < (y)) ? (x) : (y))
#define MAX(x,y) (((x) > (y)) ? (x) : (y))
@@ -213103,7 +214955,7 @@ SQLITE_API extern int sqlite3_fts5_may_be_corrupt;
** A version of memcmp() that does not cause asan errors if one of the pointer
** parameters is NULL and the number of bytes to compare is zero.
*/
-#define fts5Memcmp(s1, s2, n) ((n)==0 ? 0 : memcmp((s1), (s2), (n)))
+#define fts5Memcmp(s1, s2, n) ((n)<=0 ? 0 : memcmp((s1), (s2), (n)))
/* Mark a function parameter as unused, to suppress nuisance compiler
** warnings. */
@@ -213442,6 +215294,9 @@ static void sqlite3Fts5IndexCloseReader(Fts5Index*);
*/
static const char *sqlite3Fts5IterTerm(Fts5IndexIter*, int*);
static int sqlite3Fts5IterNextScan(Fts5IndexIter*);
+static void *sqlite3Fts5StructureRef(Fts5Index*);
+static void sqlite3Fts5StructureRelease(void*);
+static int sqlite3Fts5StructureTest(Fts5Index*, void*);
/*
@@ -214219,9 +216074,9 @@ struct fts5yyParser {
};
typedef struct fts5yyParser fts5yyParser;
+/* #include <assert.h> */
#ifndef NDEBUG
/* #include <stdio.h> */
-/* #include <assert.h> */
static FILE *fts5yyTraceFILE = 0;
static char *fts5yyTracePrompt = 0;
#endif /* NDEBUG */
@@ -215158,8 +217013,8 @@ static void sqlite3Fts5Parser(
fts5yyact = fts5yy_find_shift_action((fts5YYCODETYPE)fts5yymajor,fts5yyact);
if( fts5yyact >= fts5YY_MIN_REDUCE ){
unsigned int fts5yyruleno = fts5yyact - fts5YY_MIN_REDUCE; /* Reduce by this rule */
- assert( fts5yyruleno<(int)(sizeof(fts5yyRuleName)/sizeof(fts5yyRuleName[0])) );
#ifndef NDEBUG
+ assert( fts5yyruleno<(int)(sizeof(fts5yyRuleName)/sizeof(fts5yyRuleName[0])) );
if( fts5yyTraceFILE ){
int fts5yysize = fts5yyRuleInfoNRhs[fts5yyruleno];
if( fts5yysize ){
@@ -215257,14 +217112,13 @@ static void sqlite3Fts5Parser(
fts5yy_destructor(fts5yypParser, (fts5YYCODETYPE)fts5yymajor, &fts5yyminorunion);
fts5yymajor = fts5YYNOCODE;
}else{
- while( fts5yypParser->fts5yytos >= fts5yypParser->fts5yystack
- && (fts5yyact = fts5yy_find_reduce_action(
- fts5yypParser->fts5yytos->stateno,
- fts5YYERRORSYMBOL)) > fts5YY_MAX_SHIFTREDUCE
- ){
+ while( fts5yypParser->fts5yytos > fts5yypParser->fts5yystack ){
+ fts5yyact = fts5yy_find_reduce_action(fts5yypParser->fts5yytos->stateno,
+ fts5YYERRORSYMBOL);
+ if( fts5yyact<=fts5YY_MAX_SHIFTREDUCE ) break;
fts5yy_pop_parser_stack(fts5yypParser);
}
- if( fts5yypParser->fts5yytos < fts5yypParser->fts5yystack || fts5yymajor==0 ){
+ if( fts5yypParser->fts5yytos <= fts5yypParser->fts5yystack || fts5yymajor==0 ){
fts5yy_destructor(fts5yypParser,(fts5YYCODETYPE)fts5yymajor,&fts5yyminorunion);
fts5yy_parse_failed(fts5yypParser);
#ifndef fts5YYNOERRORRECOVERY
@@ -216127,7 +217981,6 @@ static void sqlite3Fts5BufferAppendBlob(
u32 nData,
const u8 *pData
){
- assert_nc( *pRc || nData>=0 );
if( nData ){
if( fts5BufferGrow(pRc, pBuf, nData) ) return;
memcpy(&pBuf->p[pBuf->n], pData, nData);
@@ -216237,9 +218090,8 @@ static int sqlite3Fts5PoslistNext64(
return 1;
}else{
i64 iOff = *piOff;
- int iVal;
+ u32 iVal;
fts5FastGetVarint32(a, i, iVal);
- assert( iVal>=0 );
if( iVal<=1 ){
if( iVal==0 ){
*pi = i;
@@ -216247,6 +218099,7 @@ static int sqlite3Fts5PoslistNext64(
}
fts5FastGetVarint32(a, i, iVal);
iOff = ((i64)iVal) << 32;
+ assert( iOff>=0 );
fts5FastGetVarint32(a, i, iVal);
if( iVal<2 ){
/* This is a corrupt record. So stop parsing it here. */
@@ -216258,7 +218111,7 @@ static int sqlite3Fts5PoslistNext64(
*piOff = (iOff & (i64)0x7FFFFFFF<<32)+((iOff + (iVal-2)) & 0x7FFFFFFF);
}
*pi = i;
- assert( *piOff>=iOff );
+ assert_nc( *piOff>=iOff );
return 0;
}
}
@@ -217033,6 +218886,7 @@ static int sqlite3Fts5ConfigParse(
z = fts5ConfigSkipWhitespace(z);
if( z && *z=='=' ){
bOption = 1;
+ assert( zOne!=0 );
z++;
if( bMustBeCol ) z = 0;
}
@@ -217049,7 +218903,11 @@ static int sqlite3Fts5ConfigParse(
rc = SQLITE_ERROR;
}else{
if( bOption ){
- rc = fts5ConfigParseSpecial(pGlobal, pRet, zOne, zTwo?zTwo:"", pzErr);
+ rc = fts5ConfigParseSpecial(pGlobal, pRet,
+ ALWAYS(zOne)?zOne:"",
+ zTwo?zTwo:"",
+ pzErr
+ );
}else{
rc = fts5ConfigParseColumn(pRet, zOne, zTwo, pzErr);
zOne = 0;
@@ -217567,6 +219425,7 @@ static void sqlite3Fts5ParseError(Fts5Parse *pParse, const char *zFmt, ...){
va_list ap;
va_start(ap, zFmt);
if( pParse->rc==SQLITE_OK ){
+ assert( pParse->zErr==0 );
pParse->zErr = sqlite3_vmprintf(zFmt, ap);
pParse->rc = SQLITE_ERROR;
}
@@ -217865,6 +219724,7 @@ static i64 fts5ExprSynonymRowid(Fts5ExprTerm *pTerm, int bDesc, int *pbEof){
int bRetValid = 0;
Fts5ExprTerm *p;
+ assert( pTerm );
assert( pTerm->pSynonym );
assert( bDesc==0 || bDesc==1 );
for(p=pTerm; p; p=p->pSynonym){
@@ -219305,7 +221165,7 @@ static int sqlite3Fts5ExprClonePhrase(
sCtx.pPhrase = sqlite3Fts5MallocZero(&rc, sizeof(Fts5ExprPhrase));
}
- if( rc==SQLITE_OK ){
+ if( rc==SQLITE_OK && ALWAYS(sCtx.pPhrase) ){
/* All the allocations succeeded. Put the expression object together. */
pNew->pIndex = pExpr->pIndex;
pNew->pConfig = pExpr->pConfig;
@@ -219576,9 +221436,8 @@ static void sqlite3Fts5ParseSetColset(
){
Fts5Colset *pFree = pColset;
if( pParse->pConfig->eDetail==FTS5_DETAIL_NONE ){
- pParse->rc = SQLITE_ERROR;
- pParse->zErr = sqlite3_mprintf(
- "fts5: column queries are not supported (detail=none)"
+ sqlite3Fts5ParseError(pParse,
+ "fts5: column queries are not supported (detail=none)"
);
}else{
fts5ParseSetColset(pParse, pExpr, pColset, &pFree);
@@ -219752,13 +221611,10 @@ static Fts5ExprNode *sqlite3Fts5ParseNode(
|| pPhrase->nTerm>1
|| (pPhrase->nTerm>0 && pPhrase->aTerm[0].bFirst)
){
- assert( pParse->rc==SQLITE_OK );
- pParse->rc = SQLITE_ERROR;
- assert( pParse->zErr==0 );
- pParse->zErr = sqlite3_mprintf(
+ sqlite3Fts5ParseError(pParse,
"fts5: %s queries are not supported (detail!=full)",
pNear->nPhrase==1 ? "phrase": "NEAR"
- );
+ );
sqlite3_free(pRet);
pRet = 0;
}
@@ -220290,6 +222146,15 @@ struct Fts5PoslistPopulator {
int bMiss;
};
+/*
+** Clear the position lists associated with all phrases in the expression
+** passed as the first argument. Argument bLive is true if the expression
+** might be pointing to a real entry, otherwise it has just been reset.
+**
+** At present this function is only used for detail=col and detail=none
+** fts5 tables. This implies that all phrases must be at most 1 token
+** in size, as phrase matches are not supported without detail=full.
+*/
static Fts5PoslistPopulator *sqlite3Fts5ExprClearPoslists(Fts5Expr *pExpr, int bLive){
Fts5PoslistPopulator *pRet;
pRet = sqlite3_malloc64(sizeof(Fts5PoslistPopulator)*pExpr->nPhrase);
@@ -220299,7 +222164,7 @@ static Fts5PoslistPopulator *sqlite3Fts5ExprClearPoslists(Fts5Expr *pExpr, int b
for(i=0; i<pExpr->nPhrase; i++){
Fts5Buffer *pBuf = &pExpr->apExprPhrase[i]->poslist;
Fts5ExprNode *pNode = pExpr->apExprPhrase[i]->pNode;
- assert( pExpr->apExprPhrase[i]->nTerm==1 );
+ assert( pExpr->apExprPhrase[i]->nTerm<=1 );
if( bLive &&
(pBuf->n==0 || pNode->iRowid!=pExpr->pRoot->iRowid || pNode->bEof)
){
@@ -220850,7 +222715,7 @@ static int sqlite3Fts5HashWrite(
p->bContent = 1;
}else{
/* Append a new column value, if necessary */
- assert( iCol>=p->iCol );
+ assert_nc( iCol>=p->iCol );
if( iCol!=p->iCol ){
if( pHash->eDetail==FTS5_DETAIL_FULL ){
pPtr[p->nData++] = 0x01;
@@ -221655,8 +223520,11 @@ static int fts5BufferCompareBlob(
** res = *pLeft - *pRight
*/
static int fts5BufferCompare(Fts5Buffer *pLeft, Fts5Buffer *pRight){
- int nCmp = MIN(pLeft->n, pRight->n);
- int res = fts5Memcmp(pLeft->p, pRight->p, nCmp);
+ int nCmp, res;
+ nCmp = MIN(pLeft->n, pRight->n);
+ assert( nCmp<=0 || pLeft->p!=0 );
+ assert( nCmp<=0 || pRight->p!=0 );
+ res = fts5Memcmp(pLeft->p, pRight->p, nCmp);
return (res==0 ? (pLeft->n - pRight->n) : res);
}
@@ -221752,6 +223620,7 @@ static Fts5Data *fts5DataRead(Fts5Index *p, i64 iRowid){
return pRet;
}
+
/*
** Release a reference to data record returned by an earlier call to
** fts5DataRead().
@@ -221876,6 +223745,58 @@ static void fts5StructureRef(Fts5Structure *pStruct){
pStruct->nRef++;
}
+static void *sqlite3Fts5StructureRef(Fts5Index *p){
+ fts5StructureRef(p->pStruct);
+ return (void*)p->pStruct;
+}
+static void sqlite3Fts5StructureRelease(void *p){
+ if( p ){
+ fts5StructureRelease((Fts5Structure*)p);
+ }
+}
+static int sqlite3Fts5StructureTest(Fts5Index *p, void *pStruct){
+ if( p->pStruct!=(Fts5Structure*)pStruct ){
+ return SQLITE_ABORT;
+ }
+ return SQLITE_OK;
+}
+
+/*
+** Ensure that structure object (*pp) is writable.
+**
+** This function is a no-op if (*pRc) is not SQLITE_OK when it is called. If
+** an error occurs, (*pRc) is set to an SQLite error code before returning.
+*/
+static void fts5StructureMakeWritable(int *pRc, Fts5Structure **pp){
+ Fts5Structure *p = *pp;
+ if( *pRc==SQLITE_OK && p->nRef>1 ){
+ i64 nByte = sizeof(Fts5Structure)+(p->nLevel-1)*sizeof(Fts5StructureLevel);
+ Fts5Structure *pNew;
+ pNew = (Fts5Structure*)sqlite3Fts5MallocZero(pRc, nByte);
+ if( pNew ){
+ int i;
+ memcpy(pNew, p, nByte);
+ for(i=0; i<p->nLevel; i++) pNew->aLevel[i].aSeg = 0;
+ for(i=0; i<p->nLevel; i++){
+ Fts5StructureLevel *pLvl = &pNew->aLevel[i];
+ nByte = sizeof(Fts5StructureSegment) * pNew->aLevel[i].nSeg;
+ pLvl->aSeg = (Fts5StructureSegment*)sqlite3Fts5MallocZero(pRc, nByte);
+ if( pLvl->aSeg==0 ){
+ for(i=0; i<p->nLevel; i++){
+ sqlite3_free(pNew->aLevel[i].aSeg);
+ }
+ sqlite3_free(pNew);
+ return;
+ }
+ memcpy(pLvl->aSeg, p->aLevel[i].aSeg, nByte);
+ }
+ p->nRef--;
+ pNew->nRef = 1;
+ }
+ *pp = pNew;
+ }
+}
+
/*
** Deserialize and return the structure record currently stored in serialized
** form within buffer pData/nData.
@@ -221977,9 +223898,11 @@ static int fts5StructureDecode(
}
/*
-**
+** Add a level to the Fts5Structure.aLevel[] array of structure object
+** (*ppStruct).
*/
static void fts5StructureAddLevel(int *pRc, Fts5Structure **ppStruct){
+ fts5StructureMakeWritable(pRc, ppStruct);
if( *pRc==SQLITE_OK ){
Fts5Structure *pStruct = *ppStruct;
int nLevel = pStruct->nLevel;
@@ -222773,6 +224696,7 @@ static void fts5SegIterInit(
if( p->rc==SQLITE_OK ){
pIter->iLeafOffset = 4;
+ assert( pIter->pLeaf!=0 );
assert_nc( pIter->pLeaf->nn>4 );
assert_nc( fts5LeafFirstTermOff(pIter->pLeaf)==4 );
pIter->iPgidxOff = pIter->pLeaf->szLeaf+1;
@@ -222875,8 +224799,12 @@ static void fts5SegIterReverseNewPage(Fts5Index *p, Fts5SegIter *pIter){
int iRowidOff;
iRowidOff = fts5LeafFirstRowidOff(pNew);
if( iRowidOff ){
- pIter->pLeaf = pNew;
- pIter->iLeafOffset = iRowidOff;
+ if( iRowidOff>=pNew->szLeaf ){
+ p->rc = FTS5_CORRUPT;
+ }else{
+ pIter->pLeaf = pNew;
+ pIter->iLeafOffset = iRowidOff;
+ }
}
}
@@ -223156,7 +225084,7 @@ static void fts5SegIterReverse(Fts5Index *p, Fts5SegIter *pIter){
if( pDlidx ){
int iSegid = pIter->pSeg->iSegid;
pgnoLast = fts5DlidxIterPgno(pDlidx);
- pLast = fts5DataRead(p, FTS5_SEGMENT_ROWID(iSegid, pgnoLast));
+ pLast = fts5LeafRead(p, FTS5_SEGMENT_ROWID(iSegid, pgnoLast));
}else{
Fts5Data *pLeaf = pIter->pLeaf; /* Current leaf data */
@@ -223183,7 +225111,7 @@ static void fts5SegIterReverse(Fts5Index *p, Fts5SegIter *pIter){
** forward to find the page containing the last rowid. */
for(pgno=pIter->iLeafPgno+1; !p->rc && pgno<=pSeg->pgnoLast; pgno++){
i64 iAbs = FTS5_SEGMENT_ROWID(pSeg->iSegid, pgno);
- Fts5Data *pNew = fts5DataRead(p, iAbs);
+ Fts5Data *pNew = fts5LeafRead(p, iAbs);
if( pNew ){
int iRowid, bTermless;
iRowid = fts5LeafFirstRowidOff(pNew);
@@ -223214,6 +225142,10 @@ static void fts5SegIterReverse(Fts5Index *p, Fts5SegIter *pIter){
pIter->pLeaf = pLast;
pIter->iLeafPgno = pgnoLast;
iOff = fts5LeafFirstRowidOff(pLast);
+ if( iOff>pLast->szLeaf ){
+ p->rc = FTS5_CORRUPT;
+ return;
+ }
iOff += fts5GetVarint(&pLast->p[iOff], (u64*)&pIter->iRowid);
pIter->iLeafOffset = iOff;
@@ -223222,7 +225154,6 @@ static void fts5SegIterReverse(Fts5Index *p, Fts5SegIter *pIter){
}else{
pIter->iEndofDoclist = fts5LeafFirstTermOff(pLast);
}
-
}
fts5SegIterReverseInitPage(p, pIter);
@@ -223274,21 +225205,20 @@ static void fts5LeafSeek(
Fts5SegIter *pIter, /* Iterator to seek */
const u8 *pTerm, int nTerm /* Term to search for */
){
- int iOff;
+ u32 iOff;
const u8 *a = pIter->pLeaf->p;
- int szLeaf = pIter->pLeaf->szLeaf;
- int n = pIter->pLeaf->nn;
+ u32 n = (u32)pIter->pLeaf->nn;
u32 nMatch = 0;
u32 nKeep = 0;
u32 nNew = 0;
u32 iTermOff;
- int iPgidx; /* Current offset in pgidx */
+ u32 iPgidx; /* Current offset in pgidx */
int bEndOfPage = 0;
assert( p->rc==SQLITE_OK );
- iPgidx = szLeaf;
+ iPgidx = (u32)pIter->pLeaf->szLeaf;
iPgidx += fts5GetVarint32(&a[iPgidx], iTermOff);
iOff = iTermOff;
if( iOff>n ){
@@ -223354,15 +225284,15 @@ static void fts5LeafSeek(
if( pIter->pLeaf==0 ) return;
a = pIter->pLeaf->p;
if( fts5LeafIsTermless(pIter->pLeaf)==0 ){
- iPgidx = pIter->pLeaf->szLeaf;
+ iPgidx = (u32)pIter->pLeaf->szLeaf;
iPgidx += fts5GetVarint32(&pIter->pLeaf->p[iPgidx], iOff);
- if( iOff<4 || iOff>=pIter->pLeaf->szLeaf ){
+ if( iOff<4 || (i64)iOff>=pIter->pLeaf->szLeaf ){
p->rc = FTS5_CORRUPT;
return;
}else{
nKeep = 0;
iTermOff = iOff;
- n = pIter->pLeaf->nn;
+ n = (u32)pIter->pLeaf->nn;
iOff += fts5GetVarint32(&a[iOff], nNew);
break;
}
@@ -223730,7 +225660,7 @@ static void fts5SegIterGotoPage(
fts5SegIterNextPage(p, pIter);
assert( p->rc!=SQLITE_OK || pIter->iLeafPgno==iLeafPgno );
- if( p->rc==SQLITE_OK ){
+ if( p->rc==SQLITE_OK && ALWAYS(pIter->pLeaf!=0) ){
int iOff;
u8 *a = pIter->pLeaf->p;
int n = pIter->pLeaf->szLeaf;
@@ -224162,7 +226092,11 @@ static void fts5SegiterPoslist(
Fts5Colset *pColset,
Fts5Buffer *pBuf
){
+ assert( pBuf!=0 );
+ assert( pSeg!=0 );
if( 0==fts5BufferGrow(&p->rc, pBuf, pSeg->nPos+FTS5_DATA_ZERO_PADDING) ){
+ assert( pBuf->p!=0 );
+ assert( pBuf->nSpace >= pBuf->n+pSeg->nPos+FTS5_DATA_ZERO_PADDING );
memset(&pBuf->p[pBuf->n+pSeg->nPos], 0, FTS5_DATA_ZERO_PADDING);
if( pColset==0 ){
fts5ChunkIterate(p, pSeg, (void*)pBuf, fts5PoslistCallback);
@@ -224386,6 +226320,7 @@ static void fts5IterSetOutputs_Full(Fts5Iter *pIter, Fts5SegIter *pSeg){
}
static void fts5IterSetOutputCb(int *pRc, Fts5Iter *pIter){
+ assert( pIter!=0 || (*pRc)!=SQLITE_OK );
if( *pRc==SQLITE_OK ){
Fts5Config *pConfig = pIter->pIndex->pConfig;
if( pConfig->eDetail==FTS5_DETAIL_NONE ){
@@ -224457,7 +226392,10 @@ static void fts5MultiIterNew(
}
}
*ppOut = pNew = fts5MultiIterAlloc(p, nSeg);
- if( pNew==0 ) return;
+ if( pNew==0 ){
+ assert( p->rc!=SQLITE_OK );
+ goto fts5MultiIterNew_post_check;
+ }
pNew->bRev = (0!=(flags & FTS5INDEX_QUERY_DESC));
pNew->bSkipEmpty = (0!=(flags & FTS5INDEX_QUERY_SKIPEMPTY));
pNew->pColset = pColset;
@@ -224521,6 +226459,10 @@ static void fts5MultiIterNew(
fts5MultiIterFree(pNew);
*ppOut = 0;
}
+
+fts5MultiIterNew_post_check:
+ assert( (*ppOut)!=0 || p->rc!=SQLITE_OK );
+ return;
}
/*
@@ -224568,7 +226510,8 @@ static void fts5MultiIterNew2(
** False otherwise.
*/
static int fts5MultiIterEof(Fts5Index *p, Fts5Iter *pIter){
- assert( p->rc
+ assert( pIter!=0 || p->rc!=SQLITE_OK );
+ assert( p->rc!=SQLITE_OK
|| (pIter->aSeg[ pIter->aFirst[1].iFirst ].pLeaf==0)==pIter->base.bEof
);
return (p->rc || pIter->base.bEof);
@@ -225372,6 +227315,7 @@ static void fts5IndexMergeLevel(
** and last leaf page number at the same time. */
fts5WriteFinish(p, &writer, &pSeg->pgnoLast);
+ assert( pIter!=0 || p->rc!=SQLITE_OK );
if( fts5MultiIterEof(p, pIter) ){
int i;
@@ -225472,7 +227416,7 @@ static void fts5IndexAutomerge(
Fts5Structure **ppStruct, /* IN/OUT: Current structure of index */
int nLeaf /* Number of output leaves just written */
){
- if( p->rc==SQLITE_OK && p->pConfig->nAutomerge>0 ){
+ if( p->rc==SQLITE_OK && p->pConfig->nAutomerge>0 && ALWAYS((*ppStruct)!=0) ){
Fts5Structure *pStruct = *ppStruct;
u64 nWrite; /* Initial value of write-counter */
int nWork; /* Number of work-quanta to perform */
@@ -226582,11 +228526,15 @@ static int sqlite3Fts5IndexQuery(
/* Scan multiple terms in the main index */
int bDesc = (flags & FTS5INDEX_QUERY_DESC)!=0;
fts5SetupPrefixIter(p, bDesc, iPrefixIdx, buf.p, nToken+1, pColset,&pRet);
- assert( p->rc!=SQLITE_OK || pRet->pColset==0 );
- fts5IterSetOutputCb(&p->rc, pRet);
- if( p->rc==SQLITE_OK ){
- Fts5SegIter *pSeg = &pRet->aSeg[pRet->aFirst[1].iFirst];
- if( pSeg->pLeaf ) pRet->xSetOutputs(pRet, pSeg);
+ if( pRet==0 ){
+ assert( p->rc!=SQLITE_OK );
+ }else{
+ assert( pRet->pColset==0 );
+ fts5IterSetOutputCb(&p->rc, pRet);
+ if( p->rc==SQLITE_OK ){
+ Fts5SegIter *pSeg = &pRet->aSeg[pRet->aFirst[1].iFirst];
+ if( pSeg->pLeaf ) pRet->xSetOutputs(pRet, pSeg);
+ }
}
}
@@ -226834,7 +228782,7 @@ static int fts5QueryCksum(
Fts5IndexIter *pIter = 0;
int rc = sqlite3Fts5IndexQuery(p, z, n, flags, 0, &pIter);
- while( rc==SQLITE_OK && 0==sqlite3Fts5IterEof(pIter) ){
+ while( rc==SQLITE_OK && ALWAYS(pIter!=0) && 0==sqlite3Fts5IterEof(pIter) ){
i64 rowid = pIter->iRowid;
if( eDetail==FTS5_DETAIL_NONE ){
@@ -227199,6 +229147,7 @@ static int sqlite3Fts5IndexIntegrityCheck(Fts5Index *p, u64 cksum, int bUseCksum
Fts5Buffer poslist = {0,0,0}; /* Buffer used to hold a poslist */
Fts5Iter *pIter; /* Used to iterate through entire index */
Fts5Structure *pStruct; /* Index structure */
+ int iLvl, iSeg;
#ifdef SQLITE_DEBUG
/* Used by extra internal tests only run if NDEBUG is not defined */
@@ -227209,15 +229158,16 @@ static int sqlite3Fts5IndexIntegrityCheck(Fts5Index *p, u64 cksum, int bUseCksum
/* Load the FTS index structure */
pStruct = fts5StructureRead(p);
+ if( pStruct==0 ){
+ assert( p->rc!=SQLITE_OK );
+ return fts5IndexReturn(p);
+ }
/* Check that the internal nodes of each segment match the leaves */
- if( pStruct ){
- int iLvl, iSeg;
- for(iLvl=0; iLvl<pStruct->nLevel; iLvl++){
- for(iSeg=0; iSeg<pStruct->aLevel[iLvl].nSeg; iSeg++){
- Fts5StructureSegment *pSeg = &pStruct->aLevel[iLvl].aSeg[iSeg];
- fts5IndexIntegrityCheckSegment(p, pSeg);
- }
+ for(iLvl=0; iLvl<pStruct->nLevel; iLvl++){
+ for(iSeg=0; iSeg<pStruct->aLevel[iLvl].nSeg; iSeg++){
+ Fts5StructureSegment *pSeg = &pStruct->aLevel[iLvl].aSeg[iSeg];
+ fts5IndexIntegrityCheckSegment(p, pSeg);
}
}
@@ -229164,7 +231114,8 @@ static int fts5FilterMethod(
pTab->pStorage, fts5StmtType(pCsr), &pCsr->pStmt, &pTab->p.base.zErrMsg
);
if( rc==SQLITE_OK ){
- if( pCsr->ePlan==FTS5_PLAN_ROWID ){
+ if( pRowidEq!=0 ){
+ assert( pCsr->ePlan==FTS5_PLAN_ROWID );
sqlite3_bind_value(pCsr->pStmt, 1, pRowidEq);
}else{
sqlite3_bind_int64(pCsr->pStmt, 1, pCsr->iFirstRowid);
@@ -230582,7 +232533,7 @@ static void fts5SourceIdFunc(
){
assert( nArg==0 );
UNUSED_PARAM2(nArg, apUnused);
- sqlite3_result_text(pCtx, "fts5: 2021-06-18 18:36:39 5c9a6c06871cb9fe42814af9c039eb6da5427a6ec28f187af7ebfb62eafa66e5", -1, SQLITE_TRANSIENT);
+ sqlite3_result_text(pCtx, "fts5: 2022-01-06 13:25:41 872ba256cbf61d9290b571c0e6d82a20c224ca3ad82971edc46b29818d5d17a0", -1, SQLITE_TRANSIENT);
}
/*
@@ -231133,12 +233084,16 @@ static int fts5StorageDeleteFromIndex(
if( pConfig->abUnindexed[iCol-1]==0 ){
const char *zText;
int nText;
+ assert( pSeek==0 || apVal==0 );
+ assert( pSeek!=0 || apVal!=0 );
if( pSeek ){
zText = (const char*)sqlite3_column_text(pSeek, iCol);
nText = sqlite3_column_bytes(pSeek, iCol);
- }else{
+ }else if( ALWAYS(apVal) ){
zText = (const char*)sqlite3_value_text(apVal[iCol-1]);
nText = sqlite3_value_bytes(apVal[iCol-1]);
+ }else{
+ continue;
}
ctx.szCol = 0;
rc = sqlite3Fts5Tokenize(pConfig, FTS5_TOKENIZE_DOCUMENT,
@@ -231774,8 +233729,9 @@ static int sqlite3Fts5StorageDocsize(Fts5Storage *p, i64 iRowid, int *aCol){
assert( p->pConfig->bColumnsize );
rc = fts5StorageGetStmt(p, FTS5_STMT_LOOKUP_DOCSIZE, &pLookup, 0);
- if( rc==SQLITE_OK ){
+ if( pLookup ){
int bCorrupt = 1;
+ assert( rc==SQLITE_OK );
sqlite3_bind_int64(pLookup, 1, iRowid);
if( SQLITE_ROW==sqlite3_step(pLookup) ){
const u8 *aBlob = sqlite3_column_blob(pLookup, 0);
@@ -231788,6 +233744,8 @@ static int sqlite3Fts5StorageDocsize(Fts5Storage *p, i64 iRowid, int *aCol){
if( bCorrupt && rc==SQLITE_OK ){
rc = FTS5_CORRUPT;
}
+ }else{
+ assert( rc!=SQLITE_OK );
}
return rc;
@@ -234478,6 +236436,7 @@ struct Fts5VocabCursor {
int bEof; /* True if this cursor is at EOF */
Fts5IndexIter *pIter; /* Term/rowid iterator object */
+ void *pStruct; /* From sqlite3Fts5StructureRef() */
int nLeTerm; /* Size of zLeTerm in bytes */
char *zLeTerm; /* (term <= $zLeTerm) paramater, or NULL */
@@ -234791,7 +236750,7 @@ static int fts5VocabOpenMethod(
}
if( rc==SQLITE_OK ){
- int nByte = pFts5->pConfig->nCol * sizeof(i64)*2 + sizeof(Fts5VocabCursor);
+ i64 nByte = pFts5->pConfig->nCol * sizeof(i64)*2 + sizeof(Fts5VocabCursor);
pCsr = (Fts5VocabCursor*)sqlite3Fts5MallocZero(&rc, nByte);
}
@@ -234811,6 +236770,8 @@ static int fts5VocabOpenMethod(
static void fts5VocabResetCursor(Fts5VocabCursor *pCsr){
pCsr->rowid = 0;
sqlite3Fts5IterClose(pCsr->pIter);
+ sqlite3Fts5StructureRelease(pCsr->pStruct);
+ pCsr->pStruct = 0;
pCsr->pIter = 0;
sqlite3_free(pCsr->zLeTerm);
pCsr->nLeTerm = -1;
@@ -234888,9 +236849,11 @@ static int fts5VocabInstanceNext(Fts5VocabCursor *pCsr){
static int fts5VocabNextMethod(sqlite3_vtab_cursor *pCursor){
Fts5VocabCursor *pCsr = (Fts5VocabCursor*)pCursor;
Fts5VocabTable *pTab = (Fts5VocabTable*)pCursor->pVtab;
- int rc = SQLITE_OK;
int nCol = pCsr->pFts5->pConfig->nCol;
+ int rc;
+ rc = sqlite3Fts5StructureTest(pCsr->pFts5->pIndex, pCsr->pStruct);
+ if( rc!=SQLITE_OK ) return rc;
pCsr->rowid++;
if( pTab->eType==FTS5_VOCAB_INSTANCE ){
@@ -235064,6 +237027,9 @@ static int fts5VocabFilterMethod(
if( rc==SQLITE_OK ){
Fts5Index *pIndex = pCsr->pFts5->pIndex;
rc = sqlite3Fts5IndexQuery(pIndex, zTerm, nTerm, f, 0, &pCsr->pIter);
+ if( rc==SQLITE_OK ){
+ pCsr->pStruct = sqlite3Fts5StructureRef(pIndex);
+ }
}
if( rc==SQLITE_OK && eType==FTS5_VOCAB_INSTANCE ){
rc = fts5VocabInstanceNewTerm(pCsr);
@@ -235508,10 +237474,6 @@ SQLITE_API int sqlite3_stmt_init(
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
/************** End of stmt.c ************************************************/
-#if __LINE__!=235511
-#undef SQLITE_SOURCE_ID
-#define SQLITE_SOURCE_ID "2021-06-18 18:36:39 5c9a6c06871cb9fe42814af9c039eb6da5427a6ec28f187af7ebfb62eafaalt2"
-#endif
/* Return the source-id for this library */
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
/************************** End of sqlite3.c ******************************/
diff --git a/src/3rdparty/sqlite/sqlite3.h b/src/3rdparty/sqlite/sqlite3.h
index 3274bbe071..33c2c48caf 100644
--- a/src/3rdparty/sqlite/sqlite3.h
+++ b/src/3rdparty/sqlite/sqlite3.h
@@ -43,7 +43,30 @@ extern "C" {
/*
-** Provide the ability to override linkage features of the interface.
+** Facilitate override of interface linkage and calling conventions.
+** Be aware that these macros may not be used within this particular
+** translation of the amalgamation and its associated header file.
+**
+** The SQLITE_EXTERN and SQLITE_API macros are used to instruct the
+** compiler that the target identifier should have external linkage.
+**
+** The SQLITE_CDECL macro is used to set the calling convention for
+** public functions that accept a variable number of arguments.
+**
+** The SQLITE_APICALL macro is used to set the calling convention for
+** public functions that accept a fixed number of arguments.
+**
+** The SQLITE_STDCALL macro is no longer used and is now deprecated.
+**
+** The SQLITE_CALLBACK macro is used to set the calling convention for
+** function pointers.
+**
+** The SQLITE_SYSAPI macro is used to set the calling convention for
+** functions provided by the operating system.
+**
+** Currently, the SQLITE_CDECL, SQLITE_APICALL, SQLITE_CALLBACK, and
+** SQLITE_SYSAPI macros are used only when building for environments
+** that require non-default calling conventions.
*/
#ifndef SQLITE_EXTERN
# define SQLITE_EXTERN extern
@@ -123,9 +146,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
-#define SQLITE_VERSION "3.36.0"
-#define SQLITE_VERSION_NUMBER 3036000
-#define SQLITE_SOURCE_ID "2021-06-18 18:36:39 5c9a6c06871cb9fe42814af9c039eb6da5427a6ec28f187af7ebfb62eafa66e5"
+#define SQLITE_VERSION "3.37.2"
+#define SQLITE_VERSION_NUMBER 3037002
+#define SQLITE_SOURCE_ID "2022-01-06 13:25:41 872ba256cbf61d9290b571c0e6d82a20c224ca3ad82971edc46b29818d5d17a0"
/*
** CAPI3REF: Run-Time Library Version Numbers
@@ -537,6 +560,7 @@ SQLITE_API int sqlite3_exec(
#define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8))
#define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8))
#define SQLITE_CONSTRAINT_PINNED (SQLITE_CONSTRAINT |(11<<8))
+#define SQLITE_CONSTRAINT_DATATYPE (SQLITE_CONSTRAINT |(12<<8))
#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
@@ -550,6 +574,19 @@ SQLITE_API int sqlite3_exec(
** These bit values are intended for use in the
** 3rd parameter to the [sqlite3_open_v2()] interface and
** in the 4th parameter to the [sqlite3_vfs.xOpen] method.
+**
+** Only those flags marked as "Ok for sqlite3_open_v2()" may be
+** used as the third argument to the [sqlite3_open_v2()] interface.
+** The other flags have historically been ignored by sqlite3_open_v2(),
+** though future versions of SQLite might change so that an error is
+** raised if any of the disallowed bits are passed into sqlite3_open_v2().
+** Applications should not depend on the historical behavior.
+**
+** Note in particular that passing the SQLITE_OPEN_EXCLUSIVE flag into
+** [sqlite3_open_v2()] does *not* cause the underlying database file
+** to be opened using O_EXCL. Passing SQLITE_OPEN_EXCLUSIVE into
+** [sqlite3_open_v2()] has historically be a no-op and might become an
+** error in future versions of SQLite.
*/
#define SQLITE_OPEN_READONLY 0x00000001 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_READWRITE 0x00000002 /* Ok for sqlite3_open_v2() */
@@ -572,6 +609,7 @@ SQLITE_API int sqlite3_exec(
#define SQLITE_OPEN_PRIVATECACHE 0x00040000 /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_WAL 0x00080000 /* VFS only */
#define SQLITE_OPEN_NOFOLLOW 0x01000000 /* Ok for sqlite3_open_v2() */
+#define SQLITE_OPEN_EXRESCODE 0x02000000 /* Extended result codes */
/* Reserved: 0x00F00000 */
/* Legacy compatibility: */
@@ -2464,11 +2502,14 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64);
** CAPI3REF: Count The Number Of Rows Modified
** METHOD: sqlite3
**
-** ^This function returns the number of rows modified, inserted or
+** ^These functions return the number of rows modified, inserted or
** deleted by the most recently completed INSERT, UPDATE or DELETE
** statement on the database connection specified by the only parameter.
-** ^Executing any other type of SQL statement does not modify the value
-** returned by this function.
+** The two functions are identical except for the type of the return value
+** and that if the number of rows modified by the most recent INSERT, UPDATE
+** or DELETE is greater than the maximum value supported by type "int", then
+** the return value of sqlite3_changes() is undefined. ^Executing any other
+** type of SQL statement does not modify the value returned by these functions.
**
** ^Only changes made directly by the INSERT, UPDATE or DELETE statement are
** considered - auxiliary changes caused by [CREATE TRIGGER | triggers],
@@ -2517,16 +2558,21 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64);
** </ul>
*/
SQLITE_API int sqlite3_changes(sqlite3*);
+SQLITE_API sqlite3_int64 sqlite3_changes64(sqlite3*);
/*
** CAPI3REF: Total Number Of Rows Modified
** METHOD: sqlite3
**
-** ^This function returns the total number of rows inserted, modified or
+** ^These functions return the total number of rows inserted, modified or
** deleted by all [INSERT], [UPDATE] or [DELETE] statements completed
** since the database connection was opened, including those executed as
-** part of trigger programs. ^Executing any other type of SQL statement
-** does not affect the value returned by sqlite3_total_changes().
+** part of trigger programs. The two functions are identical except for the
+** type of the return value and that if the number of rows modified by the
+** connection exceeds the maximum value supported by type "int", then
+** the return value of sqlite3_total_changes() is undefined. ^Executing
+** any other type of SQL statement does not affect the value returned by
+** sqlite3_total_changes().
**
** ^Changes made as part of [foreign key actions] are included in the
** count, but those made as part of REPLACE constraint resolution are
@@ -2554,6 +2600,7 @@ SQLITE_API int sqlite3_changes(sqlite3*);
** </ul>
*/
SQLITE_API int sqlite3_total_changes(sqlite3*);
+SQLITE_API sqlite3_int64 sqlite3_total_changes64(sqlite3*);
/*
** CAPI3REF: Interrupt A Long-Running Query
@@ -3383,6 +3430,14 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** the default shared cache setting provided by
** [sqlite3_enable_shared_cache()].)^
**
+** [[OPEN_EXRESCODE]] ^(<dt>[SQLITE_OPEN_EXRESCODE]</dt>
+** <dd>The database connection comes up in "extended result code mode".
+** In other words, the database behaves has if
+** [sqlite3_extended_result_codes(db,1)] where called on the database
+** connection as soon as the connection is created. In addition to setting
+** the extended result code mode, this flag also causes [sqlite3_open_v2()]
+** to return an extended result code.</dd>
+**
** [[OPEN_NOFOLLOW]] ^(<dt>[SQLITE_OPEN_NOFOLLOW]</dt>
** <dd>The database filename is not allowed to be a symbolic link</dd>
** </dl>)^
@@ -3390,7 +3445,15 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** If the 3rd parameter to sqlite3_open_v2() is not one of the
** required combinations shown above optionally combined with other
** [SQLITE_OPEN_READONLY | SQLITE_OPEN_* bits]
-** then the behavior is undefined.
+** then the behavior is undefined. Historic versions of SQLite
+** have silently ignored surplus bits in the flags parameter to
+** sqlite3_open_v2(), however that behavior might not be carried through
+** into future versions of SQLite and so applications should not rely
+** upon it. Note in particular that the SQLITE_OPEN_EXCLUSIVE flag is a no-op
+** for sqlite3_open_v2(). The SQLITE_OPEN_EXCLUSIVE does *not* cause
+** the open to fail if the database already exists. The SQLITE_OPEN_EXCLUSIVE
+** flag is intended for use by the [sqlite3_vfs|VFS interface] only, and not
+** by sqlite3_open_v2().
**
** ^The fourth parameter to sqlite3_open_v2() is the name of the
** [sqlite3_vfs] object that defines the operating system interface that
@@ -4158,12 +4221,17 @@ SQLITE_API int sqlite3_prepare16_v3(
** are managed by SQLite and are automatically freed when the prepared
** statement is finalized.
** ^The string returned by sqlite3_expanded_sql(P), on the other hand,
-** is obtained from [sqlite3_malloc()] and must be free by the application
+** is obtained from [sqlite3_malloc()] and must be freed by the application
** by passing it to [sqlite3_free()].
+**
+** ^The sqlite3_normalized_sql() interface is only available if
+** the [SQLITE_ENABLE_NORMALIZE] compile-time option is defined.
*/
SQLITE_API const char *sqlite3_sql(sqlite3_stmt *pStmt);
SQLITE_API char *sqlite3_expanded_sql(sqlite3_stmt *pStmt);
+#ifdef SQLITE_ENABLE_NORMALIZE
SQLITE_API const char *sqlite3_normalized_sql(sqlite3_stmt *pStmt);
+#endif
/*
** CAPI3REF: Determine If An SQL Statement Writes The Database
@@ -6348,6 +6416,72 @@ SQLITE_API void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
/*
+** CAPI3REF: Autovacuum Compaction Amount Callback
+** METHOD: sqlite3
+**
+** ^The sqlite3_autovacuum_pages(D,C,P,X) interface registers a callback
+** function C that is invoked prior to each autovacuum of the database
+** file. ^The callback is passed a copy of the generic data pointer (P),
+** the schema-name of the attached database that is being autovacuumed,
+** the the size of the database file in pages, the number of free pages,
+** and the number of bytes per page, respectively. The callback should
+** return the number of free pages that should be removed by the
+** autovacuum. ^If the callback returns zero, then no autovacuum happens.
+** ^If the value returned is greater than or equal to the number of
+** free pages, then a complete autovacuum happens.
+**
+** <p>^If there are multiple ATTACH-ed database files that are being
+** modified as part of a transaction commit, then the autovacuum pages
+** callback is invoked separately for each file.
+**
+** <p><b>The callback is not reentrant.</b> The callback function should
+** not attempt to invoke any other SQLite interface. If it does, bad
+** things may happen, including segmentation faults and corrupt database
+** files. The callback function should be a simple function that
+** does some arithmetic on its input parameters and returns a result.
+**
+** ^The X parameter to sqlite3_autovacuum_pages(D,C,P,X) is an optional
+** destructor for the P parameter. ^If X is not NULL, then X(P) is
+** invoked whenever the database connection closes or when the callback
+** is overwritten by another invocation of sqlite3_autovacuum_pages().
+**
+** <p>^There is only one autovacuum pages callback per database connection.
+** ^Each call to the sqlite3_autovacuum_pages() interface overrides all
+** previous invocations for that database connection. ^If the callback
+** argument (C) to sqlite3_autovacuum_pages(D,C,P,X) is a NULL pointer,
+** then the autovacuum steps callback is cancelled. The return value
+** from sqlite3_autovacuum_pages() is normally SQLITE_OK, but might
+** be some other error code if something goes wrong. The current
+** implementation will only return SQLITE_OK or SQLITE_MISUSE, but other
+** return codes might be added in future releases.
+**
+** <p>If no autovacuum pages callback is specified (the usual case) or
+** a NULL pointer is provided for the callback,
+** then the default behavior is to vacuum all free pages. So, in other
+** words, the default behavior is the same as if the callback function
+** were something like this:
+**
+** <blockquote><pre>
+** &nbsp; unsigned int demonstration_autovac_pages_callback(
+** &nbsp; void *pClientData,
+** &nbsp; const char *zSchema,
+** &nbsp; unsigned int nDbPage,
+** &nbsp; unsigned int nFreePage,
+** &nbsp; unsigned int nBytePerPage
+** &nbsp; ){
+** &nbsp; return nFreePage;
+** &nbsp; }
+** </pre></blockquote>
+*/
+SQLITE_API int sqlite3_autovacuum_pages(
+ sqlite3 *db,
+ unsigned int(*)(void*,const char*,unsigned int,unsigned int,unsigned int),
+ void*,
+ void(*)(void*)
+);
+
+
+/*
** CAPI3REF: Data Change Notification Callbacks
** METHOD: sqlite3
**
@@ -9010,8 +9144,9 @@ SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
**
** A single database handle may have at most a single write-ahead log callback
** registered at one time. ^Calling [sqlite3_wal_hook()] replaces any
-** previously registered write-ahead log callback. ^Note that the
-** [sqlite3_wal_autocheckpoint()] interface and the
+** previously registered write-ahead log callback. ^The return value is
+** a copy of the third parameter from the previous call, if any, or 0.
+** ^Note that the [sqlite3_wal_autocheckpoint()] interface and the
** [wal_autocheckpoint pragma] both invoke [sqlite3_wal_hook()] and will
** overwrite any prior [sqlite3_wal_hook()] settings.
*/
@@ -9878,6 +10013,10 @@ SQLITE_API unsigned char *sqlite3_serialize(
** database is currently in a read transaction or is involved in a backup
** operation.
**
+** It is not possible to deserialized into the TEMP database. If the
+** S argument to sqlite3_deserialize(D,S,P,N,M,F) is "temp" then the
+** function returns SQLITE_ERROR.
+**
** If sqlite3_deserialize(D,S,P,N,M,F) fails for any reason and if the
** SQLITE_DESERIALIZE_FREEONCLOSE bit is set in argument F, then
** [sqlite3_free()] is invoked on argument P prior to returning.
diff --git a/src/3rdparty/zlib/qt_attribution.json b/src/3rdparty/zlib/qt_attribution.json
index ea3a476e7b..07bea6ba86 100644
--- a/src/3rdparty/zlib/qt_attribution.json
+++ b/src/3rdparty/zlib/qt_attribution.json
@@ -6,10 +6,10 @@
"Description": "zlib is a general purpose data compression library.",
"Homepage": "http://zlib.net/",
- "Version": "1.2.11",
+ "Version": "1.2.12",
"License": "zlib License",
"LicenseId": "Zlib",
"LicenseFile": "LICENSE",
- "Copyright": "(C) 1995-2017 Jean-loup Gailly and Mark Adler"
+ "Copyright": "(C) 1995-2022 Jean-loup Gailly and Mark Adler"
}
diff --git a/src/3rdparty/zlib/qtpatches.diff b/src/3rdparty/zlib/qtpatches.diff
index 105dda967c..681697afb0 100644
--- a/src/3rdparty/zlib/qtpatches.diff
+++ b/src/3rdparty/zlib/qtpatches.diff
@@ -1,21 +1,21 @@
diff -ruN orig/ChangeLog src/ChangeLog
---- orig/ChangeLog 2017-08-03 08:25:11.347386101 +0200
-+++ src/ChangeLog 2017-08-03 08:25:21.477268439 +0200
+--- orig/ChangeLog
++++ src/ChangeLog
@@ -1,6 +1,10 @@
ChangeLog file for zlib
-+Changes in 1.2.11 (Qt) (28 Jul 2017)
++Changes in 1.2.12 (Qt) (28 Mar 2022)
+- This is a stripped down copy of zlib that contains patches to
+ make it compile as part of Qt. See also "qtpatches.diff".
+
- Changes in 1.2.11 (15 Jan 2017)
- - Fix deflate stored bug when pulling last block from window
- - Permit immediate deflateParams changes before any deflate input
+ Changes in 1.2.12 (27 Mar 2022)
+ - Cygwin does not have _wopen(), so do not create gzopen_w() there
+ - Permit a deflateParams() parameter change as soon as possible
diff -ruN orig/gzguts.h src/gzguts.h
---- orig/gzguts.h 2017-08-03 08:25:11.347386101 +0200
-+++ src/gzguts.h 2017-08-03 08:25:21.477268439 +0200
-@@ -3,6 +3,15 @@
+--- orig/gzguts.h
++++ src/gzguts.h
+@@ -3,6 +3,25 @@
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -26,6 +26,8 @@ diff -ruN orig/gzguts.h src/gzguts.h
+# ifndef _CRT_NONSTDC_NO_DEPRECATE
+# define _CRT_NONSTDC_NO_DEPRECATE
+# endif
++// disable warnings like '=': conversion from 'size_t' to 'unsigned int', possible loss of data
++# pragma warning(disable: 4267; disable: 4244)
+#endif
+
#ifdef _LARGEFILE64_SOURCE
@@ -43,13 +45,12 @@ diff -ruN orig/gzguts.h src/gzguts.h
+#define HAVE_HIDDEN
+#endif
+
-+
- #ifdef HAVE_HIDDEN
- # define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
- #else
+ #ifdef _LARGEFILE64_SOURCE
+ # ifndef _LARGEFILE_SOURCE
+ # define _LARGEFILE_SOURCE 1
diff -ruN orig/README src/README
---- orig/README 2017-08-03 08:25:11.347386101 +0200
-+++ src/README 2017-08-03 08:25:21.477268439 +0200
+--- orig/README
++++ src/README
@@ -6,6 +6,9 @@
http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
rfc1952 (gzip format).
@@ -61,8 +62,8 @@ diff -ruN orig/README src/README
(volunteer to write man pages welcome, contact zlib@gzip.org). A usage example
of the library is given in the file test/example.c which also tests that
diff -ruN orig/zconf.h src/zconf.h
---- orig/zconf.h 2017-08-03 08:25:11.347386101 +0200
-+++ src/zconf.h 2017-08-03 08:25:21.477268439 +0200
+--- orig/zconf.h
++++ src/zconf.h
@@ -8,6 +8,9 @@
#ifndef ZCONF_H
#define ZCONF_H
@@ -91,9 +92,9 @@ diff -ruN orig/zconf.h src/zconf.h
#endif
diff -ruN orig/zlib.h src/zlib.h
---- orig/zlib.h 2017-08-03 08:25:11.347386101 +0200
-+++ src/zlib.h 2017-08-03 08:25:21.480601733 +0200
-@@ -33,12 +33,16 @@
+--- orig/zlib.h
++++ src/zlib.h
+@@ -33,11 +33,15 @@
#include "zconf.h"
@@ -105,17 +106,15 @@ diff -ruN orig/zlib.h src/zlib.h
extern "C" {
#endif
--#define ZLIB_VERSION "1.2.11"
--#define ZLIB_VERNUM 0x12b0
-+#define ZLIB_VERSION "1.2.11 (Qt)"
-+#define ZLIB_VERNUM 0x12b0f
+-#define ZLIB_VERSION "1.2.12"
++#define ZLIB_VERSION "1.2.12 (Qt)"
+ #define ZLIB_VERNUM 0x12c0
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
- #define ZLIB_VER_REVISION 11
diff -ruN orig/zutil.h src/zutil.h
---- orig/zutil.h 2017-08-03 08:25:11.347386101 +0200
-+++ src/zutil.h 2017-08-03 08:30:04.490657570 +0200
-@@ -13,6 +13,15 @@
+--- orig/zutil.h
++++ src/zutil.h
+@@ -13,6 +13,14 @@
#ifndef ZUTIL_H
#define ZUTIL_H
@@ -127,11 +126,10 @@ diff -ruN orig/zutil.h src/zutil.h
+#define HAVE_HIDDEN
+#endif
+
-+
#ifdef HAVE_HIDDEN
# define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
#else
-@@ -136,6 +145,11 @@
+@@ -143,6 +151,11 @@
# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
# include <unix.h> /* for fdopen */
# else
@@ -143,7 +141,7 @@ diff -ruN orig/zutil.h src/zutil.h
# ifndef fdopen
# define fdopen(fd,mode) NULL /* No fdopen() */
# endif
-@@ -159,7 +173,7 @@
+@@ -166,7 +179,7 @@
# define OS_CODE 18
#endif
diff --git a/src/3rdparty/zlib/src/ChangeLog b/src/3rdparty/zlib/src/ChangeLog
index 251a32262f..14939b2025 100644
--- a/src/3rdparty/zlib/src/ChangeLog
+++ b/src/3rdparty/zlib/src/ChangeLog
@@ -1,10 +1,73 @@
ChangeLog file for zlib
-Changes in 1.2.11 (Qt) (28 Jul 2017)
+Changes in 1.2.12 (Qt) (28 Mar 2022)
- This is a stripped down copy of zlib that contains patches to
make it compile as part of Qt. See also "qtpatches.diff".
+Changes in 1.2.12 (27 Mar 2022)
+- Cygwin does not have _wopen(), so do not create gzopen_w() there
+- Permit a deflateParams() parameter change as soon as possible
+- Limit hash table inserts after switch from stored deflate
+- Fix bug when window full in deflate_stored()
+- Fix CLEAR_HASH macro to be usable as a single statement
+- Avoid a conversion error in gzseek when off_t type too small
+- Have Makefile return non-zero error code on test failure
+- Avoid some conversion warnings in gzread.c and gzwrite.c
+- Update use of errno for newer Windows CE versions
+- Small speedup to inflate [psumbera]
+- Return an error if the gzputs string length can't fit in an int
+- Add address checking in clang to -w option of configure
+- Don't compute check value for raw inflate if asked to validate
+- Handle case where inflateSync used when header never processed
+- Avoid the use of ptrdiff_t
+- Avoid an undefined behavior of memcpy() in gzappend()
+- Avoid undefined behaviors of memcpy() in gz*printf()
+- Avoid an undefined behavior of memcpy() in _tr_stored_block()
+- Make the names in functions declarations identical to definitions
+- Remove old assembler code in which bugs have manifested
+- Fix deflateEnd() to not report an error at start of raw deflate
+- Add legal disclaimer to README
+- Emphasize the need to continue decompressing gzip members
+- Correct the initialization requirements for deflateInit2()
+- Fix a bug that can crash deflate on some input when using Z_FIXED
+- Assure that the number of bits for deflatePrime() is valid
+- Use a structure to make globals in enough.c evident
+- Use a macro for the printf format of big_t in enough.c
+- Clean up code style in enough.c, update version
+- Use inline function instead of macro for index in enough.c
+- Clarify that prefix codes are counted in enough.c
+- Show all the codes for the maximum tables size in enough.c
+- Add gznorm.c example, which normalizes gzip files
+- Fix the zran.c example to work on a multiple-member gzip file
+- Add tables for crc32_combine(), to speed it up by a factor of 200
+- Add crc32_combine_gen() and crc32_combine_op() for fast combines
+- Speed up software CRC-32 computation by a factor of 1.5 to 3
+- Use atomic test and set, if available, for dynamic CRC tables
+- Don't bother computing check value after successful inflateSync()
+- Correct comment in crc32.c
+- Add use of the ARMv8 crc32 instructions when requested
+- Use ARM crc32 instructions if the ARM architecture has them
+- Explicitly note that the 32-bit check values are 32 bits
+- Avoid adding empty gzip member after gzflush with Z_FINISH
+- Fix memory leak on error in gzlog.c
+- Fix error in comment on the polynomial representation of a byte
+- Clarify gz* function interfaces, referring to parameter names
+- Change macro name in inflate.c to avoid collision in VxWorks
+- Correct typo in blast.c
+- Improve portability of contrib/minizip
+- Fix indentation in minizip's zip.c
+- Replace black/white with allow/block. (theresa-m)
+- minizip warning fix if MAXU32 already defined. (gvollant)
+- Fix unztell64() in minizip to work past 4GB. (Daniël Hörchner)
+- Clean up minizip to reduce warnings for testing
+- Add fallthrough comments for gcc
+- Eliminate use of ULL constants
+- Separate out address sanitizing from warnings in configure
+- Remove destructive aspects of make distclean
+- Check for cc masquerading as gcc or clang in configure
+- Fix crc32.c to compile local functions only if used
+
Changes in 1.2.11 (15 Jan 2017)
- Fix deflate stored bug when pulling last block from window
- Permit immediate deflateParams changes before any deflate input
@@ -515,7 +578,7 @@ Changes in 1.2.3.5 (8 Jan 2010)
- Don't use _vsnprintf on later versions of MSVC [Lowman]
- Add CMake build script and input file [Lowman]
- Update contrib/minizip to 1.1 [Svensson, Vollant]
-- Moved nintendods directory from contrib to .
+- Moved nintendods directory from contrib to root
- Replace gzio.c with a new set of routines with the same functionality
- Add gzbuffer(), gzoffset(), gzclose_r(), gzclose_w() as part of above
- Update contrib/minizip to 1.1b
@@ -689,7 +752,7 @@ Changes in 1.2.2.4 (11 July 2005)
- Be more strict on incomplete code sets in inflate_table() and increase
ENOUGH and MAXD -- this repairs a possible security vulnerability for
invalid inflate input. Thanks to Tavis Ormandy and Markus Oberhumer for
- discovering the vulnerability and providing test cases.
+ discovering the vulnerability and providing test cases
- Add ia64 support to configure for HP-UX [Smith]
- Add error return to gzread() for format or i/o error [Levin]
- Use malloc.h for OS/2 [Necasek]
@@ -725,7 +788,7 @@ Changes in 1.2.2.2 (30 December 2004)
- Add Z_FIXED strategy option to deflateInit2() to force fixed trees
- Add updated make_vms.com [Coghlan], update README
- Create a new "examples" directory, move gzappend.c there, add zpipe.c,
- fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html.
+ fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html
- Add FAQ entry and comments in deflate.c on uninitialized memory access
- Add Solaris 9 make options in configure [Gilbert]
- Allow strerror() usage in gzio.c for STDC
@@ -796,7 +859,7 @@ Changes in 1.2.1.1 (9 January 2004)
- Fix a big fat bug in inftrees.c that prevented decoding valid
dynamic blocks with only literals and no distance codes --
Thanks to "Hot Emu" for the bug report and sample file
-- Add a note to puff.c on no distance codes case.
+- Add a note to puff.c on no distance codes case
Changes in 1.2.1 (17 November 2003)
- Remove a tab in contrib/gzappend/gzappend.c
@@ -1040,14 +1103,14 @@ Changes in 1.2.0 (9 March 2003)
- Add contrib/puff/ simple inflate for deflate format description
Changes in 1.1.4 (11 March 2002)
-- ZFREE was repeated on same allocation on some error conditions.
+- ZFREE was repeated on same allocation on some error conditions
This creates a security problem described in
http://www.zlib.org/advisory-2002-03-11.txt
- Returned incorrect error (Z_MEM_ERROR) on some invalid data
- Avoid accesses before window for invalid distances with inflate window
- less than 32K.
+ less than 32K
- force windowBits > 8 to avoid a bug in the encoder for a window size
- of 256 bytes. (A complete fix will be available in 1.1.5).
+ of 256 bytes. (A complete fix will be available in 1.1.5)
Changes in 1.1.3 (9 July 1998)
- fix "an inflate input buffer bug that shows up on rare but persistent
@@ -1121,7 +1184,7 @@ Changes in 1.1.1 (27 Feb 98)
- remove block truncation heuristic which had very marginal effect for zlib
(smaller lit_bufsize than in gzip 1.2.4) and degraded a little the
compression ratio on some files. This also allows inlining _tr_tally for
- matches in deflate_slow.
+ matches in deflate_slow
- added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier)
Changes in 1.1.0 (24 Feb 98)
@@ -1166,7 +1229,7 @@ Changes in 1.0.8 (27 Jan 1998)
- include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong)
- use constant arrays for the static trees in trees.c instead of computing
them at run time (thanks to Ken Raeburn for this suggestion). To create
- trees.h, compile with GEN_TREES_H and run "make test".
+ trees.h, compile with GEN_TREES_H and run "make test"
- check return code of example in "make test" and display result
- pass minigzip command line options to file_compress
- simplifying code of inflateSync to avoid gcc 2.8 bug
@@ -1205,12 +1268,12 @@ Changes in 1.0.6 (19 Jan 1998)
- add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and
gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code)
- Fix a deflate bug occurring only with compression level 0 (thanks to
- Andy Buckler for finding this one).
-- In minigzip, pass transparently also the first byte for .Z files.
+ Andy Buckler for finding this one)
+- In minigzip, pass transparently also the first byte for .Z files
- return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress()
- check Z_FINISH in inflate (thanks to Marc Schluper)
- Implement deflateCopy (thanks to Adam Costello)
-- make static libraries by default in configure, add --shared option.
+- make static libraries by default in configure, add --shared option
- move MSDOS or Windows specific files to directory msdos
- suppress the notion of partial flush to simplify the interface
(but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4)
@@ -1222,7 +1285,7 @@ Changes in 1.0.6 (19 Jan 1998)
- added Makefile.nt (thanks to Stephen Williams)
- added the unsupported "contrib" directory:
contrib/asm386/ by Gilles Vollant <info@winimage.com>
- 386 asm code replacing longest_match().
+ 386 asm code replacing longest_match()
contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu>
A C++ I/O streams interface to the zlib gz* functions
contrib/iostream2/ by Tyge Løvset <Tyge.Lovset@cmr.no>
@@ -1230,7 +1293,7 @@ Changes in 1.0.6 (19 Jan 1998)
contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <paag@tid.es>
A very simple tar.gz file extractor using zlib
contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl>
- How to use compress(), uncompress() and the gz* functions from VB.
+ How to use compress(), uncompress() and the gz* functions from VB
- pass params -f (filtered data), -h (huffman only), -1 to -9 (compression
level) in minigzip (thanks to Tom Lane)
@@ -1239,8 +1302,8 @@ Changes in 1.0.6 (19 Jan 1998)
- add undocumented function inflateSyncPoint() (hack for Paul Mackerras)
- add undocumented function zError to convert error code to string
(for Tim Smithers)
-- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code.
-- Use default memcpy for Symantec MSDOS compiler.
+- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code
+- Use default memcpy for Symantec MSDOS compiler
- Add EXPORT keyword for check_func (needed for Windows DLL)
- add current directory to LD_LIBRARY_PATH for "make test"
- create also a link for libz.so.1
@@ -1253,7 +1316,7 @@ Changes in 1.0.6 (19 Jan 1998)
- allow compilation with ANSI keywords only enabled for TurboC in large model
- avoid "versionString"[0] (Borland bug)
- add NEED_DUMMY_RETURN for Borland
-- use variable z_verbose for tracing in debug mode (L. Peter Deutsch).
+- use variable z_verbose for tracing in debug mode (L. Peter Deutsch)
- allow compilation with CC
- defined STDC for OS/2 (David Charlap)
- limit external names to 8 chars for MVS (Thomas Lund)
@@ -1263,7 +1326,7 @@ Changes in 1.0.6 (19 Jan 1998)
- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau)
- added makelcc.bat for lcc-win32 (Tom St Denis)
- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe)
-- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
+- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion
- check for unistd.h in configure (for off_t)
- remove useless check parameter in inflate_blocks_free
- avoid useless assignment of s->check to itself in inflate_blocks_new
@@ -1284,7 +1347,7 @@ Changes in 1.0.5 (3 Jan 98)
Changes in 1.0.4 (24 Jul 96)
- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF
bit, so the decompressor could decompress all the correct data but went
- on to attempt decompressing extra garbage data. This affected minigzip too.
+ on to attempt decompressing extra garbage data. This affected minigzip too
- zlibVersion and gzerror return const char* (needed for DLL)
- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno)
- use z_error only for DEBUG (avoid problem with DLLs)
@@ -1314,7 +1377,7 @@ Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
- fix array overlay in deflate.c which sometimes caused bad compressed data
- fix inflate bug with empty stored block
- fix MSDOS medium model which was broken in 0.99
-- fix deflateParams() which could generate bad compressed data.
+- fix deflateParams() which could generate bad compressed data
- Bytef is define'd instead of typedef'ed (work around Borland bug)
- added an INDEX file
- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
@@ -1335,7 +1398,7 @@ Changes in 0.99 (27 Jan 96)
- allow preset dictionary shared between compressor and decompressor
- allow compression level 0 (no compression)
- add deflateParams in zlib.h: allow dynamic change of compression level
- and compression strategy.
+ and compression strategy
- test large buffers and deflateParams in example.c
- add optional "configure" to build zlib as a shared library
- suppress Makefile.qnx, use configure instead
@@ -1377,30 +1440,30 @@ Changes in 0.99 (27 Jan 96)
- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc...
- use Z_BINARY instead of BINARY
- document that gzclose after gzdopen will close the file
-- allow "a" as mode in gzopen.
+- allow "a" as mode in gzopen
- fix error checking in gzread
- allow skipping .gz extra-field on pipes
- added reference to Perl interface in README
- put the crc table in FAR data (I dislike more and more the medium model :)
- added get_crc_table
-- added a dimension to all arrays (Borland C can't count).
+- added a dimension to all arrays (Borland C can't count)
- workaround Borland C bug in declaration of inflate_codes_new & inflate_fast
- guard against multiple inclusion of *.h (for precompiled header on Mac)
-- Watcom C pretends to be Microsoft C small model even in 32 bit mode.
+- Watcom C pretends to be Microsoft C small model even in 32 bit mode
- don't use unsized arrays to avoid silly warnings by Visual C++:
warning C4746: 'inflate_mask' : unsized array treated as '__far'
- (what's wrong with far data in far model?).
+ (what's wrong with far data in far model?)
- define enum out of inflate_blocks_state to allow compilation with C++
Changes in 0.95 (16 Aug 95)
- fix MSDOS small and medium model (now easier to adapt to any compiler)
- inlined send_bits
- fix the final (:-) bug for deflate with flush (output was correct but
- not completely flushed in rare occasions).
+ not completely flushed in rare occasions)
- default window size is same for compression and decompression
- (it's now sufficient to set MAX_WBITS in zconf.h).
+ (it's now sufficient to set MAX_WBITS in zconf.h)
- voidp -> voidpf and voidnp -> voidp (for consistency with other
- typedefs and because voidnp was not near in large model).
+ typedefs and because voidnp was not near in large model)
Changes in 0.94 (13 Aug 95)
- support MSDOS medium model
@@ -1409,12 +1472,12 @@ Changes in 0.94 (13 Aug 95)
- added support for VMS
- allow a compression level in gzopen()
- gzflush now calls fflush
-- For deflate with flush, flush even if no more input is provided.
+- For deflate with flush, flush even if no more input is provided
- rename libgz.a as libz.a
- avoid complex expression in infcodes.c triggering Turbo C bug
- work around a problem with gcc on Alpha (in INSERT_STRING)
- don't use inline functions (problem with some gcc versions)
-- allow renaming of Byte, uInt, etc... with #define.
+- allow renaming of Byte, uInt, etc... with #define
- avoid warning about (unused) pointer before start of array in deflate.c
- avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c
- avoid reserved word 'new' in trees.c
@@ -1433,7 +1496,7 @@ Changes in 0.92 (3 May 95)
- no memcpy on Pyramid
- suppressed inftest.c
- optimized fill_window, put longest_match inline for gcc
-- optimized inflate on stored blocks.
+- optimized inflate on stored blocks
- untabify all sources to simplify patches
Changes in 0.91 (2 May 95)
@@ -1451,7 +1514,7 @@ Changes in 0.9 (1 May 95)
- let again gzread copy uncompressed data unchanged (was working in 0.71)
- deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented
- added a test of inflateSync in example.c
-- moved MAX_WBITS to zconf.h because users might want to change that.
+- moved MAX_WBITS to zconf.h because users might want to change that
- document explicitly that zalloc(64K) on MSDOS must return a normalized
pointer (zero offset)
- added Makefiles for Microsoft C, Turbo C, Borland C++
@@ -1460,7 +1523,7 @@ Changes in 0.9 (1 May 95)
Changes in 0.8 (29 April 95)
- added fast inflate (inffast.c)
- deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this
- is incompatible with previous versions of zlib which returned Z_OK.
+ is incompatible with previous versions of zlib which returned Z_OK
- work around a TurboC compiler bug (bad code for b << 0, see infutil.h)
(actually that was not a compiler bug, see 0.81 above)
- gzread no longer reads one extra byte in certain cases
@@ -1470,50 +1533,50 @@ Changes in 0.8 (29 April 95)
Changes in 0.71 (14 April 95)
- Fixed more MSDOS compilation problems :( There is still a bug with
- TurboC large model.
+ TurboC large model
Changes in 0.7 (14 April 95)
-- Added full inflate support.
+- Added full inflate support
- Simplified the crc32() interface. The pre- and post-conditioning
(one's complement) is now done inside crc32(). WARNING: this is
- incompatible with previous versions; see zlib.h for the new usage.
+ incompatible with previous versions; see zlib.h for the new usage
Changes in 0.61 (12 April 95)
-- workaround for a bug in TurboC. example and minigzip now work on MSDOS.
+- workaround for a bug in TurboC. example and minigzip now work on MSDOS
Changes in 0.6 (11 April 95)
- added minigzip.c
- added gzdopen to reopen a file descriptor as gzFile
-- added transparent reading of non-gziped files in gzread.
+- added transparent reading of non-gziped files in gzread
- fixed bug in gzread (don't read crc as data)
-- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose).
+- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose)
- don't allocate big arrays in the stack (for MSDOS)
- fix some MSDOS compilation problems
Changes in 0.5:
- do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but
- not yet Z_FULL_FLUSH.
+ not yet Z_FULL_FLUSH
- support decompression but only in a single step (forced Z_FINISH)
-- added opaque object for zalloc and zfree.
+- added opaque object for zalloc and zfree
- added deflateReset and inflateReset
-- added a variable zlib_version for consistency checking.
-- renamed the 'filter' parameter of deflateInit2 as 'strategy'.
- Added Z_FILTERED and Z_HUFFMAN_ONLY constants.
+- added a variable zlib_version for consistency checking
+- renamed the 'filter' parameter of deflateInit2 as 'strategy'
+ Added Z_FILTERED and Z_HUFFMAN_ONLY constants
Changes in 0.4:
-- avoid "zip" everywhere, use zlib instead of ziplib.
+- avoid "zip" everywhere, use zlib instead of ziplib
- suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush
- if compression method == 8.
+ if compression method == 8
- added adler32 and crc32
- renamed deflateOptions as deflateInit2, call one or the other but not both
-- added the method parameter for deflateInit2.
+- added the method parameter for deflateInit2
- added inflateInit2
- simplied considerably deflateInit and inflateInit by not supporting
user-provided history buffer. This is supported only in deflateInit2
- and inflateInit2.
+ and inflateInit2
Changes in 0.3:
- prefix all macro names with Z_
-- use Z_FINISH instead of deflateEnd to finish compression.
+- use Z_FINISH instead of deflateEnd to finish compression
- added Z_HUFFMAN_ONLY
- added gzerror()
diff --git a/src/3rdparty/zlib/src/README b/src/3rdparty/zlib/src/README
index 4dc7436a3b..1e4f39181d 100644
--- a/src/3rdparty/zlib/src/README
+++ b/src/3rdparty/zlib/src/README
@@ -1,6 +1,6 @@
ZLIB DATA COMPRESSION LIBRARY
-zlib 1.2.11 is a general purpose data compression library. All the code is
+zlib 1.2.12 is a general purpose data compression library. All the code is
thread safe. The data format used by the zlib library is described by RFCs
(Request for Comments) 1950 to 1952 in the files
http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
@@ -34,7 +34,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
issue of Dr. Dobb's Journal; a copy of the article is available at
http://marknelson.us/1997/01/01/zlib-engine/ .
-The changes made in version 1.2.11 are documented in the file ChangeLog.
+The changes made in version 1.2.12 are documented in the file ChangeLog.
Unsupported third party contributions are provided in directory contrib/ .
@@ -87,7 +87,7 @@ Acknowledgments:
Copyright notice:
- (C) 1995-2017 Jean-loup Gailly and Mark Adler
+ (C) 1995-2022 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -111,7 +111,10 @@ Copyright notice:
If you use the zlib library in a product, we would appreciate *not* receiving
lengthy legal documents to sign. The sources are provided for free but without
warranty of any kind. The library has been entirely written by Jean-loup
-Gailly and Mark Adler; it does not include third-party code.
+Gailly and Mark Adler; it does not include third-party code. We make all
+contributions to and distributions of this project solely in our personal
+capacity, and are not conveying any rights to any intellectual property of
+any third parties.
If you redistribute modified sources, we would appreciate that you include in
the file ChangeLog history information documenting your changes. Please read
diff --git a/src/3rdparty/zlib/src/crc32.c b/src/3rdparty/zlib/src/crc32.c
index 9580440c0e..a1bdce5c23 100644
--- a/src/3rdparty/zlib/src/crc32.c
+++ b/src/3rdparty/zlib/src/crc32.c
@@ -1,12 +1,10 @@
/* crc32.c -- compute the CRC-32 of a data stream
- * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*
- * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
- * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
- * tables for updating the shift register in one step with three exclusive-ors
- * instead of four steps with four exclusive-ors. This results in about a
- * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
+ * This interleaved implementation of a CRC makes use of pipelined multiple
+ * arithmetic-logic units, commonly found in modern CPU cores. It is due to
+ * Kadatch and Jenkins (2010). See doc/crc-doc.1.0.pdf in this distribution.
*/
/* @(#) $Id$ */
@@ -14,11 +12,12 @@
/*
Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
protection on the static variables used to control the first-use generation
- of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
+ of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
first call get_crc_table() to initialize the tables before allowing more than
one thread to use crc32().
- DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h.
+ MAKECRCH can be #defined to write out crc32.h. A main() routine is also
+ produced, so that this one source file can be compiled to an executable.
*/
#ifdef MAKECRCH
@@ -28,415 +27,1090 @@
# endif /* !DYNAMIC_CRC_TABLE */
#endif /* MAKECRCH */
-#include "zutil.h" /* for STDC and FAR definitions */
+#include "zutil.h" /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */
-/* Definitions for doing the crc four data bytes at a time. */
-#if !defined(NOBYFOUR) && defined(Z_U4)
-# define BYFOUR
+ /*
+ A CRC of a message is computed on N braids of words in the message, where
+ each word consists of W bytes (4 or 8). If N is 3, for example, then three
+ running sparse CRCs are calculated respectively on each braid, at these
+ indices in the array of words: 0, 3, 6, ..., 1, 4, 7, ..., and 2, 5, 8, ...
+ This is done starting at a word boundary, and continues until as many blocks
+ of N * W bytes as are available have been processed. The results are combined
+ into a single CRC at the end. For this code, N must be in the range 1..6 and
+ W must be 4 or 8. The upper limit on N can be increased if desired by adding
+ more #if blocks, extending the patterns apparent in the code. In addition,
+ crc32.h would need to be regenerated, if the maximum N value is increased.
+
+ N and W are chosen empirically by benchmarking the execution time on a given
+ processor. The choices for N and W below were based on testing on Intel Kaby
+ Lake i7, AMD Ryzen 7, ARM Cortex-A57, Sparc64-VII, PowerPC POWER9, and MIPS64
+ Octeon II processors. The Intel, AMD, and ARM processors were all fastest
+ with N=5, W=8. The Sparc, PowerPC, and MIPS64 were all fastest at N=5, W=4.
+ They were all tested with either gcc or clang, all using the -O3 optimization
+ level. Your mileage may vary.
+ */
+
+/* Define N */
+#ifdef Z_TESTN
+# define N Z_TESTN
+#else
+# define N 5
+#endif
+#if N < 1 || N > 6
+# error N must be in 1..6
#endif
-#ifdef BYFOUR
- local unsigned long crc32_little OF((unsigned long,
- const unsigned char FAR *, z_size_t));
- local unsigned long crc32_big OF((unsigned long,
- const unsigned char FAR *, z_size_t));
-# define TBLS 8
+
+/*
+ z_crc_t must be at least 32 bits. z_word_t must be at least as long as
+ z_crc_t. It is assumed here that z_word_t is either 32 bits or 64 bits, and
+ that bytes are eight bits.
+ */
+
+/*
+ Define W and the associated z_word_t type. If W is not defined, then a
+ braided calculation is not used, and the associated tables and code are not
+ compiled.
+ */
+#ifdef Z_TESTW
+# if Z_TESTW-1 != -1
+# define W Z_TESTW
+# endif
#else
-# define TBLS 1
-#endif /* BYFOUR */
+# ifdef MAKECRCH
+# define W 8 /* required for MAKECRCH */
+# else
+# if defined(__x86_64__) || defined(__aarch64__)
+# define W 8
+# else
+# define W 4
+# endif
+# endif
+#endif
+#ifdef W
+# if W == 8 && defined(Z_U8)
+ typedef Z_U8 z_word_t;
+# elif defined(Z_U4)
+# undef W
+# define W 4
+ typedef Z_U4 z_word_t;
+# else
+# undef W
+# endif
+#endif
-/* Local functions for crc concatenation */
-local unsigned long gf2_matrix_times OF((unsigned long *mat,
- unsigned long vec));
-local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
-local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2));
+/* Local functions. */
+local z_crc_t multmodp OF((z_crc_t a, z_crc_t b));
+local z_crc_t x2nmodp OF((z_off64_t n, unsigned k));
+/* If available, use the ARM processor CRC32 instruction. */
+#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8
+# define ARMCRC32
+#endif
+
+#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
+/*
+ Swap the bytes in a z_word_t to convert between little and big endian. Any
+ self-respecting compiler will optimize this to a single machine byte-swap
+ instruction, if one is available. This assumes that word_t is either 32 bits
+ or 64 bits.
+ */
+local z_word_t byte_swap(word)
+ z_word_t word;
+{
+# if W == 8
+ return
+ (word & 0xff00000000000000) >> 56 |
+ (word & 0xff000000000000) >> 40 |
+ (word & 0xff0000000000) >> 24 |
+ (word & 0xff00000000) >> 8 |
+ (word & 0xff000000) << 8 |
+ (word & 0xff0000) << 24 |
+ (word & 0xff00) << 40 |
+ (word & 0xff) << 56;
+# else /* W == 4 */
+ return
+ (word & 0xff000000) >> 24 |
+ (word & 0xff0000) >> 8 |
+ (word & 0xff00) << 8 |
+ (word & 0xff) << 24;
+# endif
+}
+#endif
+
+/* CRC polynomial. */
+#define POLY 0xedb88320 /* p(x) reflected, with x^32 implied */
#ifdef DYNAMIC_CRC_TABLE
-local volatile int crc_table_empty = 1;
-local z_crc_t FAR crc_table[TBLS][256];
+local z_crc_t FAR crc_table[256];
+local z_crc_t FAR x2n_table[32];
local void make_crc_table OF((void));
+#ifdef W
+ local z_word_t FAR crc_big_table[256];
+ local z_crc_t FAR crc_braid_table[W][256];
+ local z_word_t FAR crc_braid_big_table[W][256];
+ local void braid OF((z_crc_t [][256], z_word_t [][256], int, int));
+#endif
#ifdef MAKECRCH
- local void write_table OF((FILE *, const z_crc_t FAR *));
+ local void write_table OF((FILE *, const z_crc_t FAR *, int));
+ local void write_table32hi OF((FILE *, const z_word_t FAR *, int));
+ local void write_table64 OF((FILE *, const z_word_t FAR *, int));
#endif /* MAKECRCH */
+
+/*
+ Define a once() function depending on the availability of atomics. If this is
+ compiled with DYNAMIC_CRC_TABLE defined, and if CRCs will be computed in
+ multiple threads, and if atomics are not available, then get_crc_table() must
+ be called to initialize the tables and must return before any threads are
+ allowed to compute or combine CRCs.
+ */
+
+/* Definition of once functionality. */
+typedef struct once_s once_t;
+local void once OF((once_t *, void (*)(void)));
+
+/* Check for the availability of atomics. */
+#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \
+ !defined(__STDC_NO_ATOMICS__)
+
+#include <stdatomic.h>
+
+/* Structure for once(), which must be initialized with ONCE_INIT. */
+struct once_s {
+ atomic_flag begun;
+ atomic_int done;
+};
+#define ONCE_INIT {ATOMIC_FLAG_INIT, 0}
+
+/*
+ Run the provided init() function exactly once, even if multiple threads
+ invoke once() at the same time. The state must be a once_t initialized with
+ ONCE_INIT.
+ */
+local void once(state, init)
+ once_t *state;
+ void (*init)(void);
+{
+ if (!atomic_load(&state->done)) {
+ if (atomic_flag_test_and_set(&state->begun))
+ while (!atomic_load(&state->done))
+ ;
+ else {
+ init();
+ atomic_store(&state->done, 1);
+ }
+ }
+}
+
+#else /* no atomics */
+
+/* Structure for once(), which must be initialized with ONCE_INIT. */
+struct once_s {
+ volatile int begun;
+ volatile int done;
+};
+#define ONCE_INIT {0, 0}
+
+/* Test and set. Alas, not atomic, but tries to minimize the period of
+ vulnerability. */
+local int test_and_set OF((int volatile *));
+local int test_and_set(flag)
+ int volatile *flag;
+{
+ int was;
+
+ was = *flag;
+ *flag = 1;
+ return was;
+}
+
+/* Run the provided init() function once. This is not thread-safe. */
+local void once(state, init)
+ once_t *state;
+ void (*init)(void);
+{
+ if (!state->done) {
+ if (test_and_set(&state->begun))
+ while (!state->done)
+ ;
+ else {
+ init();
+ state->done = 1;
+ }
+ }
+}
+
+#endif
+
+/* State for once(). */
+local once_t made = ONCE_INIT;
+
/*
Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
Polynomials over GF(2) are represented in binary, one bit per coefficient,
- with the lowest powers in the most significant bit. Then adding polynomials
+ with the lowest powers in the most significant bit. Then adding polynomials
is just exclusive-or, and multiplying a polynomial by x is a right shift by
- one. If we call the above polynomial p, and represent a byte as the
+ one. If we call the above polynomial p, and represent a byte as the
polynomial q, also with the lowest power in the most significant bit (so the
- byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
+ byte 0xb1 is the polynomial x^7+x^3+x^2+1), then the CRC is (q*x^32) mod p,
where a mod b means the remainder after dividing a by b.
This calculation is done using the shift-register method of multiplying and
- taking the remainder. The register is initialized to zero, and for each
+ taking the remainder. The register is initialized to zero, and for each
incoming bit, x^32 is added mod p to the register if the bit is a one (where
- x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
- x (which is shifting right by one and adding x^32 mod p if the bit shifted
- out is a one). We start with the highest power (least significant bit) of
- q and repeat for all eight bits of q.
-
- The first table is simply the CRC of all possible eight bit values. This is
- all the information needed to generate CRCs on data a byte at a time for all
- combinations of CRC register values and incoming bytes. The remaining tables
- allow for word-at-a-time CRC calculation for both big-endian and little-
- endian machines, where a word is four bytes.
-*/
+ x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by x
+ (which is shifting right by one and adding x^32 mod p if the bit shifted out
+ is a one). We start with the highest power (least significant bit) of q and
+ repeat for all eight bits of q.
+
+ The table is simply the CRC of all possible eight bit values. This is all the
+ information needed to generate CRCs on data a byte at a time for all
+ combinations of CRC register values and incoming bytes.
+ */
+
local void make_crc_table()
{
- z_crc_t c;
- int n, k;
- z_crc_t poly; /* polynomial exclusive-or pattern */
- /* terms of polynomial defining this crc (except x^32): */
- static volatile int first = 1; /* flag to limit concurrent making */
- static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
-
- /* See if another task is already doing this (not thread-safe, but better
- than nothing -- significantly reduces duration of vulnerability in
- case the advice about DYNAMIC_CRC_TABLE is ignored) */
- if (first) {
- first = 0;
-
- /* make exclusive-or pattern from polynomial (0xedb88320UL) */
- poly = 0;
- for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++)
- poly |= (z_crc_t)1 << (31 - p[n]);
-
- /* generate a crc for every 8-bit value */
- for (n = 0; n < 256; n++) {
- c = (z_crc_t)n;
- for (k = 0; k < 8; k++)
- c = c & 1 ? poly ^ (c >> 1) : c >> 1;
- crc_table[0][n] = c;
- }
+ unsigned i, j, n;
+ z_crc_t p;
-#ifdef BYFOUR
- /* generate crc for each value followed by one, two, and three zeros,
- and then the byte reversal of those as well as the first table */
- for (n = 0; n < 256; n++) {
- c = crc_table[0][n];
- crc_table[4][n] = ZSWAP32(c);
- for (k = 1; k < 4; k++) {
- c = crc_table[0][c & 0xff] ^ (c >> 8);
- crc_table[k][n] = c;
- crc_table[k + 4][n] = ZSWAP32(c);
- }
- }
-#endif /* BYFOUR */
-
- crc_table_empty = 0;
- }
- else { /* not first */
- /* wait for the other guy to finish (not efficient, but rare) */
- while (crc_table_empty)
- ;
+ /* initialize the CRC of bytes tables */
+ for (i = 0; i < 256; i++) {
+ p = i;
+ for (j = 0; j < 8; j++)
+ p = p & 1 ? (p >> 1) ^ POLY : p >> 1;
+ crc_table[i] = p;
+#ifdef W
+ crc_big_table[i] = byte_swap(p);
+#endif
}
+ /* initialize the x^2^n mod p(x) table */
+ p = (z_crc_t)1 << 30; /* x^1 */
+ x2n_table[0] = p;
+ for (n = 1; n < 32; n++)
+ x2n_table[n] = p = multmodp(p, p);
+
+#ifdef W
+ /* initialize the braiding tables -- needs x2n_table[] */
+ braid(crc_braid_table, crc_braid_big_table, N, W);
+#endif
+
#ifdef MAKECRCH
- /* write out CRC tables to crc32.h */
{
+ /*
+ The crc32.h header file contains tables for both 32-bit and 64-bit
+ z_word_t's, and so requires a 64-bit type be available. In that case,
+ z_word_t must be defined to be 64-bits. This code then also generates
+ and writes out the tables for the case that z_word_t is 32 bits.
+ */
+#if !defined(W) || W != 8
+# error Need a 64-bit integer type in order to generate crc32.h.
+#endif
FILE *out;
+ int k, n;
+ z_crc_t ltl[8][256];
+ z_word_t big[8][256];
out = fopen("crc32.h", "w");
if (out == NULL) return;
- fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
- fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
- fprintf(out, "local const z_crc_t FAR ");
- fprintf(out, "crc_table[TBLS][256] =\n{\n {\n");
- write_table(out, crc_table[0]);
-# ifdef BYFOUR
- fprintf(out, "#ifdef BYFOUR\n");
- for (k = 1; k < 8; k++) {
- fprintf(out, " },\n {\n");
- write_table(out, crc_table[k]);
+
+ /* write out little-endian CRC table to crc32.h */
+ fprintf(out,
+ "/* crc32.h -- tables for rapid CRC calculation\n"
+ " * Generated automatically by crc32.c\n */\n"
+ "\n"
+ "local const z_crc_t FAR crc_table[] = {\n"
+ " ");
+ write_table(out, crc_table, 256);
+ fprintf(out,
+ "};\n");
+
+ /* write out big-endian CRC table for 64-bit z_word_t to crc32.h */
+ fprintf(out,
+ "\n"
+ "#ifdef W\n"
+ "\n"
+ "#if W == 8\n"
+ "\n"
+ "local const z_word_t FAR crc_big_table[] = {\n"
+ " ");
+ write_table64(out, crc_big_table, 256);
+ fprintf(out,
+ "};\n");
+
+ /* write out big-endian CRC table for 32-bit z_word_t to crc32.h */
+ fprintf(out,
+ "\n"
+ "#else /* W == 4 */\n"
+ "\n"
+ "local const z_word_t FAR crc_big_table[] = {\n"
+ " ");
+ write_table32hi(out, crc_big_table, 256);
+ fprintf(out,
+ "};\n"
+ "\n"
+ "#endif\n");
+
+ /* write out braid tables for each value of N */
+ for (n = 1; n <= 6; n++) {
+ fprintf(out,
+ "\n"
+ "#if N == %d\n", n);
+
+ /* compute braid tables for this N and 64-bit word_t */
+ braid(ltl, big, n, 8);
+
+ /* write out braid tables for 64-bit z_word_t to crc32.h */
+ fprintf(out,
+ "\n"
+ "#if W == 8\n"
+ "\n"
+ "local const z_crc_t FAR crc_braid_table[][256] = {\n");
+ for (k = 0; k < 8; k++) {
+ fprintf(out, " {");
+ write_table(out, ltl[k], 256);
+ fprintf(out, "}%s", k < 7 ? ",\n" : "");
+ }
+ fprintf(out,
+ "};\n"
+ "\n"
+ "local const z_word_t FAR crc_braid_big_table[][256] = {\n");
+ for (k = 0; k < 8; k++) {
+ fprintf(out, " {");
+ write_table64(out, big[k], 256);
+ fprintf(out, "}%s", k < 7 ? ",\n" : "");
+ }
+ fprintf(out,
+ "};\n");
+
+ /* compute braid tables for this N and 32-bit word_t */
+ braid(ltl, big, n, 4);
+
+ /* write out braid tables for 32-bit z_word_t to crc32.h */
+ fprintf(out,
+ "\n"
+ "#else /* W == 4 */\n"
+ "\n"
+ "local const z_crc_t FAR crc_braid_table[][256] = {\n");
+ for (k = 0; k < 4; k++) {
+ fprintf(out, " {");
+ write_table(out, ltl[k], 256);
+ fprintf(out, "}%s", k < 3 ? ",\n" : "");
+ }
+ fprintf(out,
+ "};\n"
+ "\n"
+ "local const z_word_t FAR crc_braid_big_table[][256] = {\n");
+ for (k = 0; k < 4; k++) {
+ fprintf(out, " {");
+ write_table32hi(out, big[k], 256);
+ fprintf(out, "}%s", k < 3 ? ",\n" : "");
+ }
+ fprintf(out,
+ "};\n"
+ "\n"
+ "#endif\n"
+ "\n"
+ "#endif\n");
}
- fprintf(out, "#endif\n");
-# endif /* BYFOUR */
- fprintf(out, " }\n};\n");
+ fprintf(out,
+ "\n"
+ "#endif\n");
+
+ /* write out zeros operator table to crc32.h */
+ fprintf(out,
+ "\n"
+ "local const z_crc_t FAR x2n_table[] = {\n"
+ " ");
+ write_table(out, x2n_table, 32);
+ fprintf(out,
+ "};\n");
fclose(out);
}
#endif /* MAKECRCH */
}
#ifdef MAKECRCH
-local void write_table(out, table)
+
+/*
+ Write the 32-bit values in table[0..k-1] to out, five per line in
+ hexadecimal separated by commas.
+ */
+local void write_table(out, table, k)
FILE *out;
const z_crc_t FAR *table;
+ int k;
{
int n;
- for (n = 0; n < 256; n++)
- fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ",
+ for (n = 0; n < k; n++)
+ fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : " ",
(unsigned long)(table[n]),
- n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
+ n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
}
+
+/*
+ Write the high 32-bits of each value in table[0..k-1] to out, five per line
+ in hexadecimal separated by commas.
+ */
+local void write_table32hi(out, table, k)
+FILE *out;
+const z_word_t FAR *table;
+int k;
+{
+ int n;
+
+ for (n = 0; n < k; n++)
+ fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : " ",
+ (unsigned long)(table[n] >> 32),
+ n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
+}
+
+/*
+ Write the 64-bit values in table[0..k-1] to out, three per line in
+ hexadecimal separated by commas. This assumes that if there is a 64-bit
+ type, then there is also a long long integer type, and it is at least 64
+ bits. If not, then the type cast and format string can be adjusted
+ accordingly.
+ */
+local void write_table64(out, table, k)
+ FILE *out;
+ const z_word_t FAR *table;
+ int k;
+{
+ int n;
+
+ for (n = 0; n < k; n++)
+ fprintf(out, "%s0x%016llx%s", n == 0 || n % 3 ? "" : " ",
+ (unsigned long long)(table[n]),
+ n == k - 1 ? "" : (n % 3 == 2 ? ",\n" : ", "));
+}
+
+/* Actually do the deed. */
+int main()
+{
+ make_crc_table();
+ return 0;
+}
+
#endif /* MAKECRCH */
+#ifdef W
+/*
+ Generate the little and big-endian braid tables for the given n and z_word_t
+ size w. Each array must have room for w blocks of 256 elements.
+ */
+local void braid(ltl, big, n, w)
+ z_crc_t ltl[][256];
+ z_word_t big[][256];
+ int n;
+ int w;
+{
+ int k;
+ z_crc_t i, p, q;
+ for (k = 0; k < w; k++) {
+ p = x2nmodp((n * w + 3 - k) << 3, 0);
+ ltl[k][0] = 0;
+ big[w - 1 - k][0] = 0;
+ for (i = 1; i < 256; i++) {
+ ltl[k][i] = q = multmodp(i << 24, p);
+ big[w - 1 - k][i] = byte_swap(q);
+ }
+ }
+}
+#endif
+
#else /* !DYNAMIC_CRC_TABLE */
/* ========================================================================
- * Tables of CRC-32s of all single-byte values, made by make_crc_table().
+ * Tables for byte-wise and braided CRC-32 calculations, and a table of powers
+ * of x for combining CRC-32s, all made by make_crc_table().
*/
#include "crc32.h"
#endif /* DYNAMIC_CRC_TABLE */
+/* ========================================================================
+ * Routines used for CRC calculation. Some are also required for the table
+ * generation above.
+ */
+
+/*
+ Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial,
+ reflected. For speed, this requires that a not be zero.
+ */
+local z_crc_t multmodp(a, b)
+ z_crc_t a;
+ z_crc_t b;
+{
+ z_crc_t m, p;
+
+ m = (z_crc_t)1 << 31;
+ p = 0;
+ for (;;) {
+ if (a & m) {
+ p ^= b;
+ if ((a & (m - 1)) == 0)
+ break;
+ }
+ m >>= 1;
+ b = b & 1 ? (b >> 1) ^ POLY : b >> 1;
+ }
+ return p;
+}
+
+/*
+ Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been
+ initialized.
+ */
+local z_crc_t x2nmodp(n, k)
+ z_off64_t n;
+ unsigned k;
+{
+ z_crc_t p;
+
+ p = (z_crc_t)1 << 31; /* x^0 == 1 */
+ while (n) {
+ if (n & 1)
+ p = multmodp(x2n_table[k & 31], p);
+ n >>= 1;
+ k++;
+ }
+ return p;
+}
+
/* =========================================================================
- * This function can be used by asm versions of crc32()
+ * This function can be used by asm versions of crc32(), and to force the
+ * generation of the CRC tables in a threaded application.
*/
const z_crc_t FAR * ZEXPORT get_crc_table()
{
#ifdef DYNAMIC_CRC_TABLE
- if (crc_table_empty)
- make_crc_table();
+ once(&made, make_crc_table);
#endif /* DYNAMIC_CRC_TABLE */
return (const z_crc_t FAR *)crc_table;
}
-/* ========================================================================= */
-#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
-#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
+/* =========================================================================
+ * Use ARM machine instructions if available. This will compute the CRC about
+ * ten times faster than the braided calculation. This code does not check for
+ * the presence of the CRC instruction at run time. __ARM_FEATURE_CRC32 will
+ * only be defined if the compilation specifies an ARM processor architecture
+ * that has the instructions. For example, compiling with -march=armv8.1-a or
+ * -march=armv8-a+crc, or -march=native if the compile machine has the crc32
+ * instructions.
+ */
+#ifdef ARMCRC32
+
+/*
+ Constants empirically determined to maximize speed. These values are from
+ measurements on a Cortex-A57. Your mileage may vary.
+ */
+#define Z_BATCH 3990 /* number of words in a batch */
+#define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */
+#define Z_BATCH_MIN 800 /* fewest words in a final batch */
-/* ========================================================================= */
unsigned long ZEXPORT crc32_z(crc, buf, len)
unsigned long crc;
const unsigned char FAR *buf;
z_size_t len;
{
- if (buf == Z_NULL) return 0UL;
+ z_crc_t val;
+ z_word_t crc1, crc2;
+ const z_word_t *word;
+ z_word_t val0, val1, val2;
+ z_size_t last, last2, i;
+ z_size_t num;
+
+ /* Return initial CRC, if requested. */
+ if (buf == Z_NULL) return 0;
#ifdef DYNAMIC_CRC_TABLE
- if (crc_table_empty)
- make_crc_table();
+ once(&made, make_crc_table);
#endif /* DYNAMIC_CRC_TABLE */
-#ifdef BYFOUR
- if (sizeof(void *) == sizeof(ptrdiff_t)) {
- z_crc_t endian;
+ /* Pre-condition the CRC */
+ crc ^= 0xffffffff;
- endian = 1;
- if (*((unsigned char *)(&endian)))
- return crc32_little(crc, buf, len);
- else
- return crc32_big(crc, buf, len);
+ /* Compute the CRC up to a word boundary. */
+ while (len && ((z_size_t)buf & 7) != 0) {
+ len--;
+ val = *buf++;
+ __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val));
}
-#endif /* BYFOUR */
- crc = crc ^ 0xffffffffUL;
- while (len >= 8) {
- DO8;
- len -= 8;
+
+ /* Prepare to compute the CRC on full 64-bit words word[0..num-1]. */
+ word = (z_word_t const *)buf;
+ num = len >> 3;
+ len &= 7;
+
+ /* Do three interleaved CRCs to realize the throughput of one crc32x
+ instruction per cycle. Each CRC is calcuated on Z_BATCH words. The three
+ CRCs are combined into a single CRC after each set of batches. */
+ while (num >= 3 * Z_BATCH) {
+ crc1 = 0;
+ crc2 = 0;
+ for (i = 0; i < Z_BATCH; i++) {
+ val0 = word[i];
+ val1 = word[i + Z_BATCH];
+ val2 = word[i + 2 * Z_BATCH];
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1));
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2));
+ }
+ word += 3 * Z_BATCH;
+ num -= 3 * Z_BATCH;
+ crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc1;
+ crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc2;
}
- if (len) do {
- DO1;
- } while (--len);
- return crc ^ 0xffffffffUL;
-}
-/* ========================================================================= */
-unsigned long ZEXPORT crc32(crc, buf, len)
- unsigned long crc;
- const unsigned char FAR *buf;
- uInt len;
-{
- return crc32_z(crc, buf, len);
+ /* Do one last smaller batch with the remaining words, if there are enough
+ to pay for the combination of CRCs. */
+ last = num / 3;
+ if (last >= Z_BATCH_MIN) {
+ last2 = last << 1;
+ crc1 = 0;
+ crc2 = 0;
+ for (i = 0; i < last; i++) {
+ val0 = word[i];
+ val1 = word[i + last];
+ val2 = word[i + last2];
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1));
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2));
+ }
+ word += 3 * last;
+ num -= 3 * last;
+ val = x2nmodp(last, 6);
+ crc = multmodp(val, crc) ^ crc1;
+ crc = multmodp(val, crc) ^ crc2;
+ }
+
+ /* Compute the CRC on any remaining words. */
+ for (i = 0; i < num; i++) {
+ val0 = word[i];
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+ }
+ word += num;
+
+ /* Complete the CRC on any remaining bytes. */
+ buf = (const unsigned char FAR *)word;
+ while (len) {
+ len--;
+ val = *buf++;
+ __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val));
+ }
+
+ /* Return the CRC, post-conditioned. */
+ return crc ^ 0xffffffff;
}
-#ifdef BYFOUR
+#else
+
+#ifdef W
/*
- This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit
- integer pointer type. This violates the strict aliasing rule, where a
- compiler can assume, for optimization purposes, that two pointers to
- fundamentally different types won't ever point to the same memory. This can
- manifest as a problem only if one of the pointers is written to. This code
- only reads from those pointers. So long as this code remains isolated in
- this compilation unit, there won't be a problem. For this reason, this code
- should not be copied and pasted into a compilation unit in which other code
- writes to the buffer that is passed to these routines.
+ Return the CRC of the W bytes in the word_t data, taking the
+ least-significant byte of the word as the first byte of data, without any pre
+ or post conditioning. This is used to combine the CRCs of each braid.
*/
+local z_crc_t crc_word(data)
+ z_word_t data;
+{
+ int k;
+ for (k = 0; k < W; k++)
+ data = (data >> 8) ^ crc_table[data & 0xff];
+ return (z_crc_t)data;
+}
-/* ========================================================================= */
-#define DOLIT4 c ^= *buf4++; \
- c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
- crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
-#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
+local z_word_t crc_word_big(data)
+ z_word_t data;
+{
+ int k;
+ for (k = 0; k < W; k++)
+ data = (data << 8) ^
+ crc_big_table[(data >> ((W - 1) << 3)) & 0xff];
+ return data;
+}
+
+#endif
/* ========================================================================= */
-local unsigned long crc32_little(crc, buf, len)
+unsigned long ZEXPORT crc32_z(crc, buf, len)
unsigned long crc;
const unsigned char FAR *buf;
z_size_t len;
{
- register z_crc_t c;
- register const z_crc_t FAR *buf4;
+ /* Return initial CRC, if requested. */
+ if (buf == Z_NULL) return 0;
- c = (z_crc_t)crc;
- c = ~c;
- while (len && ((ptrdiff_t)buf & 3)) {
- c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
- len--;
- }
+#ifdef DYNAMIC_CRC_TABLE
+ once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
- buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
- while (len >= 32) {
- DOLIT32;
- len -= 32;
- }
- while (len >= 4) {
- DOLIT4;
- len -= 4;
- }
- buf = (const unsigned char FAR *)buf4;
+ /* Pre-condition the CRC */
+ crc ^= 0xffffffff;
- if (len) do {
- c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
- } while (--len);
- c = ~c;
- return (unsigned long)c;
-}
+#ifdef W
-/* ========================================================================= */
-#define DOBIG4 c ^= *buf4++; \
- c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
- crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
-#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
+ /* If provided enough bytes, do a braided CRC calculation. */
+ if (len >= N * W + W - 1) {
+ z_size_t blks;
+ z_word_t const *words;
+ unsigned endian;
+ int k;
-/* ========================================================================= */
-local unsigned long crc32_big(crc, buf, len)
- unsigned long crc;
- const unsigned char FAR *buf;
- z_size_t len;
-{
- register z_crc_t c;
- register const z_crc_t FAR *buf4;
+ /* Compute the CRC up to a z_word_t boundary. */
+ while (len && ((z_size_t)buf & (W - 1)) != 0) {
+ len--;
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ }
- c = ZSWAP32((z_crc_t)crc);
- c = ~c;
- while (len && ((ptrdiff_t)buf & 3)) {
- c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
- len--;
+ /* Compute the CRC on as many N z_word_t blocks as are available. */
+ blks = len / (N * W);
+ len -= blks * N * W;
+ words = (z_word_t const *)buf;
+
+ /* Do endian check at execution time instead of compile time, since ARM
+ processors can change the endianess at execution time. If the
+ compiler knows what the endianess will be, it can optimize out the
+ check and the unused branch. */
+ endian = 1;
+ if (*(unsigned char *)&endian) {
+ /* Little endian. */
+
+ z_crc_t crc0;
+ z_word_t word0;
+#if N > 1
+ z_crc_t crc1;
+ z_word_t word1;
+#if N > 2
+ z_crc_t crc2;
+ z_word_t word2;
+#if N > 3
+ z_crc_t crc3;
+ z_word_t word3;
+#if N > 4
+ z_crc_t crc4;
+ z_word_t word4;
+#if N > 5
+ z_crc_t crc5;
+ z_word_t word5;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+ /* Initialize the CRC for each braid. */
+ crc0 = crc;
+#if N > 1
+ crc1 = 0;
+#if N > 2
+ crc2 = 0;
+#if N > 3
+ crc3 = 0;
+#if N > 4
+ crc4 = 0;
+#if N > 5
+ crc5 = 0;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+ /*
+ Process the first blks-1 blocks, computing the CRCs on each braid
+ independently.
+ */
+ while (--blks) {
+ /* Load the word for each braid into registers. */
+ word0 = crc0 ^ words[0];
+#if N > 1
+ word1 = crc1 ^ words[1];
+#if N > 2
+ word2 = crc2 ^ words[2];
+#if N > 3
+ word3 = crc3 ^ words[3];
+#if N > 4
+ word4 = crc4 ^ words[4];
+#if N > 5
+ word5 = crc5 ^ words[5];
+#endif
+#endif
+#endif
+#endif
+#endif
+ words += N;
+
+ /* Compute and update the CRC for each word. The loop should
+ get unrolled. */
+ crc0 = crc_braid_table[0][word0 & 0xff];
+#if N > 1
+ crc1 = crc_braid_table[0][word1 & 0xff];
+#if N > 2
+ crc2 = crc_braid_table[0][word2 & 0xff];
+#if N > 3
+ crc3 = crc_braid_table[0][word3 & 0xff];
+#if N > 4
+ crc4 = crc_braid_table[0][word4 & 0xff];
+#if N > 5
+ crc5 = crc_braid_table[0][word5 & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+ for (k = 1; k < W; k++) {
+ crc0 ^= crc_braid_table[k][(word0 >> (k << 3)) & 0xff];
+#if N > 1
+ crc1 ^= crc_braid_table[k][(word1 >> (k << 3)) & 0xff];
+#if N > 2
+ crc2 ^= crc_braid_table[k][(word2 >> (k << 3)) & 0xff];
+#if N > 3
+ crc3 ^= crc_braid_table[k][(word3 >> (k << 3)) & 0xff];
+#if N > 4
+ crc4 ^= crc_braid_table[k][(word4 >> (k << 3)) & 0xff];
+#if N > 5
+ crc5 ^= crc_braid_table[k][(word5 >> (k << 3)) & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+ }
+ }
+
+ /*
+ Process the last block, combining the CRCs of the N braids at the
+ same time.
+ */
+ crc = crc_word(crc0 ^ words[0]);
+#if N > 1
+ crc = crc_word(crc1 ^ words[1] ^ crc);
+#if N > 2
+ crc = crc_word(crc2 ^ words[2] ^ crc);
+#if N > 3
+ crc = crc_word(crc3 ^ words[3] ^ crc);
+#if N > 4
+ crc = crc_word(crc4 ^ words[4] ^ crc);
+#if N > 5
+ crc = crc_word(crc5 ^ words[5] ^ crc);
+#endif
+#endif
+#endif
+#endif
+#endif
+ words += N;
+ }
+ else {
+ /* Big endian. */
+
+ z_word_t crc0, word0, comb;
+#if N > 1
+ z_word_t crc1, word1;
+#if N > 2
+ z_word_t crc2, word2;
+#if N > 3
+ z_word_t crc3, word3;
+#if N > 4
+ z_word_t crc4, word4;
+#if N > 5
+ z_word_t crc5, word5;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+ /* Initialize the CRC for each braid. */
+ crc0 = byte_swap(crc);
+#if N > 1
+ crc1 = 0;
+#if N > 2
+ crc2 = 0;
+#if N > 3
+ crc3 = 0;
+#if N > 4
+ crc4 = 0;
+#if N > 5
+ crc5 = 0;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+ /*
+ Process the first blks-1 blocks, computing the CRCs on each braid
+ independently.
+ */
+ while (--blks) {
+ /* Load the word for each braid into registers. */
+ word0 = crc0 ^ words[0];
+#if N > 1
+ word1 = crc1 ^ words[1];
+#if N > 2
+ word2 = crc2 ^ words[2];
+#if N > 3
+ word3 = crc3 ^ words[3];
+#if N > 4
+ word4 = crc4 ^ words[4];
+#if N > 5
+ word5 = crc5 ^ words[5];
+#endif
+#endif
+#endif
+#endif
+#endif
+ words += N;
+
+ /* Compute and update the CRC for each word. The loop should
+ get unrolled. */
+ crc0 = crc_braid_big_table[0][word0 & 0xff];
+#if N > 1
+ crc1 = crc_braid_big_table[0][word1 & 0xff];
+#if N > 2
+ crc2 = crc_braid_big_table[0][word2 & 0xff];
+#if N > 3
+ crc3 = crc_braid_big_table[0][word3 & 0xff];
+#if N > 4
+ crc4 = crc_braid_big_table[0][word4 & 0xff];
+#if N > 5
+ crc5 = crc_braid_big_table[0][word5 & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+ for (k = 1; k < W; k++) {
+ crc0 ^= crc_braid_big_table[k][(word0 >> (k << 3)) & 0xff];
+#if N > 1
+ crc1 ^= crc_braid_big_table[k][(word1 >> (k << 3)) & 0xff];
+#if N > 2
+ crc2 ^= crc_braid_big_table[k][(word2 >> (k << 3)) & 0xff];
+#if N > 3
+ crc3 ^= crc_braid_big_table[k][(word3 >> (k << 3)) & 0xff];
+#if N > 4
+ crc4 ^= crc_braid_big_table[k][(word4 >> (k << 3)) & 0xff];
+#if N > 5
+ crc5 ^= crc_braid_big_table[k][(word5 >> (k << 3)) & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+ }
+ }
+
+ /*
+ Process the last block, combining the CRCs of the N braids at the
+ same time.
+ */
+ comb = crc_word_big(crc0 ^ words[0]);
+#if N > 1
+ comb = crc_word_big(crc1 ^ words[1] ^ comb);
+#if N > 2
+ comb = crc_word_big(crc2 ^ words[2] ^ comb);
+#if N > 3
+ comb = crc_word_big(crc3 ^ words[3] ^ comb);
+#if N > 4
+ comb = crc_word_big(crc4 ^ words[4] ^ comb);
+#if N > 5
+ comb = crc_word_big(crc5 ^ words[5] ^ comb);
+#endif
+#endif
+#endif
+#endif
+#endif
+ words += N;
+ crc = byte_swap(comb);
+ }
+
+ /*
+ Update the pointer to the remaining bytes to process.
+ */
+ buf = (unsigned char const *)words;
}
- buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
- while (len >= 32) {
- DOBIG32;
- len -= 32;
+#endif /* W */
+
+ /* Complete the computation of the CRC on any remaining bytes. */
+ while (len >= 8) {
+ len -= 8;
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
}
- while (len >= 4) {
- DOBIG4;
- len -= 4;
+ while (len) {
+ len--;
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
}
- buf = (const unsigned char FAR *)buf4;
- if (len) do {
- c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
- } while (--len);
- c = ~c;
- return (unsigned long)(ZSWAP32(c));
+ /* Return the CRC, post-conditioned. */
+ return crc ^ 0xffffffff;
}
-#endif /* BYFOUR */
-
-#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */
+#endif
/* ========================================================================= */
-local unsigned long gf2_matrix_times(mat, vec)
- unsigned long *mat;
- unsigned long vec;
+unsigned long ZEXPORT crc32(crc, buf, len)
+ unsigned long crc;
+ const unsigned char FAR *buf;
+ uInt len;
{
- unsigned long sum;
-
- sum = 0;
- while (vec) {
- if (vec & 1)
- sum ^= *mat;
- vec >>= 1;
- mat++;
- }
- return sum;
+ return crc32_z(crc, buf, len);
}
/* ========================================================================= */
-local void gf2_matrix_square(square, mat)
- unsigned long *square;
- unsigned long *mat;
+uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
+ uLong crc1;
+ uLong crc2;
+ z_off64_t len2;
{
- int n;
-
- for (n = 0; n < GF2_DIM; n++)
- square[n] = gf2_matrix_times(mat, mat[n]);
+#ifdef DYNAMIC_CRC_TABLE
+ once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
+ return multmodp(x2nmodp(len2, 3), crc1) ^ crc2;
}
/* ========================================================================= */
-local uLong crc32_combine_(crc1, crc2, len2)
+uLong ZEXPORT crc32_combine(crc1, crc2, len2)
uLong crc1;
uLong crc2;
- z_off64_t len2;
+ z_off_t len2;
{
- int n;
- unsigned long row;
- unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */
- unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */
-
- /* degenerate case (also disallow negative lengths) */
- if (len2 <= 0)
- return crc1;
-
- /* put operator for one zero bit in odd */
- odd[0] = 0xedb88320UL; /* CRC-32 polynomial */
- row = 1;
- for (n = 1; n < GF2_DIM; n++) {
- odd[n] = row;
- row <<= 1;
- }
+ return crc32_combine64(crc1, crc2, len2);
+}
- /* put operator for two zero bits in even */
- gf2_matrix_square(even, odd);
-
- /* put operator for four zero bits in odd */
- gf2_matrix_square(odd, even);
-
- /* apply len2 zeros to crc1 (first square will put the operator for one
- zero byte, eight zero bits, in even) */
- do {
- /* apply zeros operator for this bit of len2 */
- gf2_matrix_square(even, odd);
- if (len2 & 1)
- crc1 = gf2_matrix_times(even, crc1);
- len2 >>= 1;
-
- /* if no more bits set, then done */
- if (len2 == 0)
- break;
-
- /* another iteration of the loop with odd and even swapped */
- gf2_matrix_square(odd, even);
- if (len2 & 1)
- crc1 = gf2_matrix_times(odd, crc1);
- len2 >>= 1;
-
- /* if no more bits set, then done */
- } while (len2 != 0);
-
- /* return combined crc */
- crc1 ^= crc2;
- return crc1;
+/* ========================================================================= */
+uLong ZEXPORT crc32_combine_gen64(len2)
+ z_off64_t len2;
+{
+#ifdef DYNAMIC_CRC_TABLE
+ once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
+ return x2nmodp(len2, 3);
}
/* ========================================================================= */
-uLong ZEXPORT crc32_combine(crc1, crc2, len2)
- uLong crc1;
- uLong crc2;
+uLong ZEXPORT crc32_combine_gen(len2)
z_off_t len2;
{
- return crc32_combine_(crc1, crc2, len2);
+ return crc32_combine_gen64(len2);
}
-uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
+/* ========================================================================= */
+uLong crc32_combine_op(crc1, crc2, op)
uLong crc1;
uLong crc2;
- z_off64_t len2;
+ uLong op;
{
- return crc32_combine_(crc1, crc2, len2);
+ return multmodp(op, crc1) ^ crc2;
}
diff --git a/src/3rdparty/zlib/src/crc32.h b/src/3rdparty/zlib/src/crc32.h
index 9e0c778102..137df68d61 100644
--- a/src/3rdparty/zlib/src/crc32.h
+++ b/src/3rdparty/zlib/src/crc32.h
@@ -2,440 +2,9445 @@
* Generated automatically by crc32.c
*/
-local const z_crc_t FAR crc_table[TBLS][256] =
-{
- {
- 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
- 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
- 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
- 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
- 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
- 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
- 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
- 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
- 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
- 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
- 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
- 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
- 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
- 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
- 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
- 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
- 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
- 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
- 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
- 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
- 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
- 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
- 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
- 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
- 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
- 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
- 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
- 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
- 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
- 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
- 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
- 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
- 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
- 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
- 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
- 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
- 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
- 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
- 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
- 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
- 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
- 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
- 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
- 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
- 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
- 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
- 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
- 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
- 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
- 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
- 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
- 0x2d02ef8dUL
-#ifdef BYFOUR
- },
- {
- 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
- 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
- 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
- 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
- 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
- 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
- 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
- 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
- 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
- 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
- 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
- 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
- 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
- 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
- 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
- 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
- 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
- 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
- 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
- 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
- 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
- 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
- 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
- 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
- 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
- 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
- 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
- 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
- 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
- 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
- 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
- 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
- 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
- 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
- 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
- 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
- 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
- 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
- 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
- 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
- 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
- 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
- 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
- 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
- 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
- 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
- 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
- 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
- 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
- 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
- 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
- 0x9324fd72UL
- },
- {
- 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
- 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
- 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
- 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
- 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
- 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
- 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
- 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
- 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
- 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
- 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
- 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
- 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
- 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
- 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
- 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
- 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
- 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
- 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
- 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
- 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
- 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
- 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
- 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
- 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
- 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
- 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
- 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
- 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
- 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
- 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
- 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
- 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
- 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
- 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
- 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
- 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
- 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
- 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
- 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
- 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
- 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
- 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
- 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
- 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
- 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
- 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
- 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
- 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
- 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
- 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
- 0xbe9834edUL
- },
- {
- 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
- 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
- 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
- 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
- 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
- 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
- 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
- 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
- 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
- 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
- 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
- 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
- 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
- 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
- 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
- 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
- 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
- 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
- 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
- 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
- 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
- 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
- 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
- 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
- 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
- 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
- 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
- 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
- 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
- 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
- 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
- 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
- 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
- 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
- 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
- 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
- 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
- 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
- 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
- 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
- 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
- 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
- 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
- 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
- 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
- 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
- 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
- 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
- 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
- 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
- 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
- 0xde0506f1UL
- },
- {
- 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
- 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
- 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
- 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
- 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
- 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
- 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
- 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
- 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
- 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
- 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
- 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
- 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
- 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
- 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
- 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
- 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
- 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
- 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
- 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
- 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
- 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
- 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
- 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
- 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
- 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
- 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
- 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
- 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
- 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
- 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
- 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
- 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
- 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
- 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
- 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
- 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
- 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
- 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
- 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
- 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
- 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
- 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
- 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
- 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
- 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
- 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
- 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
- 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
- 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
- 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
- 0x8def022dUL
- },
- {
- 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
- 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
- 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
- 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
- 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
- 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
- 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
- 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
- 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
- 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
- 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
- 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
- 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
- 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
- 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
- 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
- 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
- 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
- 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
- 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
- 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
- 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
- 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
- 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
- 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
- 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
- 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
- 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
- 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
- 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
- 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
- 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
- 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
- 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
- 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
- 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
- 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
- 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
- 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
- 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
- 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
- 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
- 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
- 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
- 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
- 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
- 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
- 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
- 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
- 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
- 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
- 0x72fd2493UL
- },
- {
- 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
- 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
- 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
- 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
- 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
- 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
- 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
- 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
- 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
- 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
- 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
- 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
- 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
- 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
- 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
- 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
- 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
- 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
- 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
- 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
- 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
- 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
- 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
- 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
- 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
- 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
- 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
- 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
- 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
- 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
- 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
- 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
- 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
- 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
- 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
- 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
- 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
- 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
- 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
- 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
- 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
- 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
- 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
- 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
- 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
- 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
- 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
- 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
- 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
- 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
- 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
- 0xed3498beUL
- },
- {
- 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
- 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
- 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
- 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
- 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
- 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
- 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
- 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
- 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
- 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
- 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
- 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
- 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
- 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
- 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
- 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
- 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
- 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
- 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
- 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
- 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
- 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
- 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
- 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
- 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
- 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
- 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
- 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
- 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
- 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
- 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
- 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
- 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
- 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
- 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
- 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
- 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
- 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
- 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
- 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
- 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
- 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
- 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
- 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
- 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
- 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
- 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
- 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
- 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
- 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
- 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
- 0xf10605deUL
+local const z_crc_t FAR crc_table[] = {
+ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+ 0x2d02ef8d};
+
+#ifdef W
+
+#if W == 8
+
+local const z_word_t FAR crc_big_table[] = {
+ 0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000,
+ 0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000,
+ 0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000,
+ 0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000,
+ 0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000,
+ 0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000,
+ 0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000,
+ 0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000,
+ 0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000,
+ 0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000,
+ 0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000,
+ 0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000,
+ 0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000,
+ 0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000,
+ 0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000,
+ 0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000,
+ 0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000,
+ 0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000,
+ 0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000,
+ 0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000,
+ 0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000,
+ 0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000,
+ 0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000,
+ 0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000,
+ 0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000,
+ 0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000,
+ 0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000,
+ 0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000,
+ 0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000,
+ 0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000,
+ 0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000,
+ 0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000,
+ 0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000,
+ 0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000,
+ 0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000,
+ 0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000,
+ 0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000,
+ 0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000,
+ 0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000,
+ 0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000,
+ 0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000,
+ 0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000,
+ 0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000,
+ 0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000,
+ 0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000,
+ 0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000,
+ 0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000,
+ 0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000,
+ 0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000,
+ 0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000,
+ 0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000,
+ 0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000,
+ 0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000,
+ 0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000,
+ 0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000,
+ 0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000,
+ 0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000,
+ 0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000,
+ 0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000,
+ 0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000,
+ 0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000,
+ 0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000,
+ 0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000,
+ 0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000,
+ 0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000,
+ 0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000,
+ 0x8567077200000000, 0x1357000500000000, 0x824abf9500000000,
+ 0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000,
+ 0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000,
+ 0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000,
+ 0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000,
+ 0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000,
+ 0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000,
+ 0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000,
+ 0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000,
+ 0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000,
+ 0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000,
+ 0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000,
+ 0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000,
+ 0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000,
+ 0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000,
+ 0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000,
+ 0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000,
+ 0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000,
+ 0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000,
+ 0x8def022d00000000};
+
+#else /* W == 4 */
+
+local const z_word_t FAR crc_big_table[] = {
+ 0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07,
+ 0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79,
+ 0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7,
+ 0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84,
+ 0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13,
+ 0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663,
+ 0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5,
+ 0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5,
+ 0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832,
+ 0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51,
+ 0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf,
+ 0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1,
+ 0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76,
+ 0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606,
+ 0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996,
+ 0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6,
+ 0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c,
+ 0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712,
+ 0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c,
+ 0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4,
+ 0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943,
+ 0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333,
+ 0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe,
+ 0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce,
+ 0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359,
+ 0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a,
+ 0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04,
+ 0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a,
+ 0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0,
+ 0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580,
+ 0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10,
+ 0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060,
+ 0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1,
+ 0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf,
+ 0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31,
+ 0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852,
+ 0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5,
+ 0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5,
+ 0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75,
+ 0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005,
+ 0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292,
+ 0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1,
+ 0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f,
+ 0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111,
+ 0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0,
+ 0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0,
+ 0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40,
+ 0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530,
+ 0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba,
+ 0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4,
+ 0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a,
+ 0x8def022d};
+
+#endif
+
+#if N == 1
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa,
+ 0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b,
+ 0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232,
+ 0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8,
+ 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e,
+ 0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa,
+ 0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b,
+ 0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f,
+ 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719,
+ 0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3,
+ 0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa,
+ 0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b,
+ 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed,
+ 0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89,
+ 0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25,
+ 0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041,
+ 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c,
+ 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed,
+ 0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4,
+ 0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758,
+ 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e,
+ 0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a,
+ 0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed,
+ 0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889,
+ 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df,
+ 0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544,
+ 0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d,
+ 0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c,
+ 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1,
+ 0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95,
+ 0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839,
+ 0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d,
+ 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976,
+ 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7,
+ 0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be,
+ 0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144,
+ 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12,
+ 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376,
+ 0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a,
+ 0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e,
+ 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278,
+ 0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682,
+ 0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b,
+ 0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a,
+ 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561,
+ 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05,
+ 0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9,
+ 0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd,
+ 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0,
+ 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61,
+ 0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678,
+ 0x264b06e6},
+ {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413,
+ 0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3,
+ 0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d,
+ 0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653,
+ 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9,
+ 0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e,
+ 0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5,
+ 0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712,
+ 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8,
+ 0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6,
+ 0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068,
+ 0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8,
+ 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579,
+ 0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade,
+ 0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37,
+ 0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590,
+ 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4,
+ 0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64,
+ 0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea,
+ 0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678,
+ 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282,
+ 0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25,
+ 0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102,
+ 0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5,
+ 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f,
+ 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146,
+ 0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8,
+ 0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08,
+ 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c,
+ 0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b,
+ 0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972,
+ 0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5,
+ 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d,
+ 0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd,
+ 0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833,
+ 0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d,
+ 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7,
+ 0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60,
+ 0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2,
+ 0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105,
+ 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff,
+ 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1,
+ 0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f,
+ 0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf,
+ 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617,
+ 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0,
+ 0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959,
+ 0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe,
+ 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca,
+ 0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a,
+ 0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184,
+ 0x92364a30},
+ {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216,
+ 0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8,
+ 0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170,
+ 0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035,
+ 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6,
+ 0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145,
+ 0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d,
+ 0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e,
+ 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d,
+ 0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408,
+ 0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0,
+ 0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e,
+ 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c,
+ 0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf,
+ 0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a,
+ 0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9,
+ 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1,
+ 0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f,
+ 0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987,
+ 0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4,
+ 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37,
+ 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84,
+ 0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca,
+ 0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79,
+ 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba,
+ 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d,
+ 0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5,
+ 0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b,
+ 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643,
+ 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0,
+ 0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525,
+ 0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496,
+ 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8,
+ 0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026,
+ 0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e,
+ 0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db,
+ 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118,
+ 0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab,
+ 0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf,
+ 0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c,
+ 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf,
+ 0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a,
+ 0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32,
+ 0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec,
+ 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82,
+ 0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31,
+ 0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4,
+ 0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957,
+ 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f,
+ 0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1,
+ 0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869,
+ 0xe4c4abcc},
+ {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0,
+ 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271,
+ 0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61,
+ 0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52,
+ 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43,
+ 0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333,
+ 0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64,
+ 0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314,
+ 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205,
+ 0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136,
+ 0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26,
+ 0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997,
+ 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849,
+ 0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739,
+ 0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8,
+ 0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98,
+ 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b,
+ 0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba,
+ 0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa,
+ 0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d,
+ 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c,
+ 0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc,
+ 0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af,
+ 0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf,
+ 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce,
+ 0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922,
+ 0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532,
+ 0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183,
+ 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710,
+ 0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860,
+ 0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1,
+ 0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1,
+ 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956,
+ 0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7,
+ 0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7,
+ 0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4,
+ 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5,
+ 0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5,
+ 0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb,
+ 0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb,
+ 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da,
+ 0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9,
+ 0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9,
+ 0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48,
+ 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df,
+ 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af,
+ 0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e,
+ 0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e,
+ 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d,
+ 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c,
+ 0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c,
+ 0xca64c78c},
+ {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757,
+ 0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a,
+ 0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733,
+ 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871,
+ 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70,
+ 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42,
+ 0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5,
+ 0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787,
+ 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086,
+ 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4,
+ 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d,
+ 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0,
+ 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d,
+ 0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f,
+ 0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859,
+ 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b,
+ 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5,
+ 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028,
+ 0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891,
+ 0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed,
+ 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec,
+ 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde,
+ 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817,
+ 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825,
+ 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24,
+ 0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e,
+ 0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7,
+ 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a,
+ 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4,
+ 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196,
+ 0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0,
+ 0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2,
+ 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52,
+ 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f,
+ 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36,
+ 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174,
+ 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675,
+ 0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647,
+ 0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d,
+ 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf,
+ 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be,
+ 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc,
+ 0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645,
+ 0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98,
+ 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138,
+ 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a,
+ 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c,
+ 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e,
+ 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0,
+ 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d,
+ 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194,
+ 0xde0506f1},
+ {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc,
+ 0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f,
+ 0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a,
+ 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29,
+ 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8,
+ 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023,
+ 0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e,
+ 0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065,
+ 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84,
+ 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7,
+ 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922,
+ 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71,
+ 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0,
+ 0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b,
+ 0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816,
+ 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd,
+ 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c,
+ 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f,
+ 0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba,
+ 0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579,
+ 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98,
+ 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873,
+ 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e,
+ 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5,
+ 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134,
+ 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7,
+ 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732,
+ 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461,
+ 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0,
+ 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b,
+ 0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26,
+ 0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd,
+ 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc,
+ 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef,
+ 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a,
+ 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049,
+ 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8,
+ 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43,
+ 0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e,
+ 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5,
+ 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24,
+ 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07,
+ 0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982,
+ 0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1,
+ 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0,
+ 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b,
+ 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576,
+ 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d,
+ 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c,
+ 0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f,
+ 0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda,
+ 0xbe9834ed},
+ {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504,
+ 0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49,
+ 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e,
+ 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192,
+ 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859,
+ 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c,
+ 0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620,
+ 0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265,
+ 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae,
+ 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2,
+ 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175,
+ 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38,
+ 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05,
+ 0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40,
+ 0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f,
+ 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca,
+ 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850,
+ 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d,
+ 0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da,
+ 0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864,
+ 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af,
+ 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea,
+ 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74,
+ 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31,
+ 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa,
+ 0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a,
+ 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd,
+ 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180,
+ 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a,
+ 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f,
+ 0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290,
+ 0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5,
+ 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed,
+ 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0,
+ 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167,
+ 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b,
+ 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0,
+ 0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5,
+ 0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc,
+ 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189,
+ 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842,
+ 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e,
+ 0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299,
+ 0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4,
+ 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec,
+ 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9,
+ 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66,
+ 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23,
+ 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9,
+ 0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4,
+ 0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33,
+ 0x9324fd72},
+ {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+ 0x2d02ef8d}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000,
+ 0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000,
+ 0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000,
+ 0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000,
+ 0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000,
+ 0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000,
+ 0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000,
+ 0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000,
+ 0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000,
+ 0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000,
+ 0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000,
+ 0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000,
+ 0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000,
+ 0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000,
+ 0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000,
+ 0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000,
+ 0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000,
+ 0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000,
+ 0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000,
+ 0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000,
+ 0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000,
+ 0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000,
+ 0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000,
+ 0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000,
+ 0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000,
+ 0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000,
+ 0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000,
+ 0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000,
+ 0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000,
+ 0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000,
+ 0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000,
+ 0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000,
+ 0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000,
+ 0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000,
+ 0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000,
+ 0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000,
+ 0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000,
+ 0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000,
+ 0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000,
+ 0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000,
+ 0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000,
+ 0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000,
+ 0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000,
+ 0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000,
+ 0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000,
+ 0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000,
+ 0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000,
+ 0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000,
+ 0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000,
+ 0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000,
+ 0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000,
+ 0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000,
+ 0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000,
+ 0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000,
+ 0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000,
+ 0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000,
+ 0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000,
+ 0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000,
+ 0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000,
+ 0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000,
+ 0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000,
+ 0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000,
+ 0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000,
+ 0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000,
+ 0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000,
+ 0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000,
+ 0x8567077200000000, 0x1357000500000000, 0x824abf9500000000,
+ 0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000,
+ 0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000,
+ 0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000,
+ 0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000,
+ 0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000,
+ 0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000,
+ 0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000,
+ 0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000,
+ 0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000,
+ 0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000,
+ 0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000,
+ 0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000,
+ 0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000,
+ 0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000,
+ 0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000,
+ 0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000,
+ 0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000,
+ 0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000,
+ 0x8def022d00000000},
+ {0x0000000000000000, 0x41311b1900000000, 0x8262363200000000,
+ 0xc3532d2b00000000, 0x04c56c6400000000, 0x45f4777d00000000,
+ 0x86a75a5600000000, 0xc796414f00000000, 0x088ad9c800000000,
+ 0x49bbc2d100000000, 0x8ae8effa00000000, 0xcbd9f4e300000000,
+ 0x0c4fb5ac00000000, 0x4d7eaeb500000000, 0x8e2d839e00000000,
+ 0xcf1c988700000000, 0x5112c24a00000000, 0x1023d95300000000,
+ 0xd370f47800000000, 0x9241ef6100000000, 0x55d7ae2e00000000,
+ 0x14e6b53700000000, 0xd7b5981c00000000, 0x9684830500000000,
+ 0x59981b8200000000, 0x18a9009b00000000, 0xdbfa2db000000000,
+ 0x9acb36a900000000, 0x5d5d77e600000000, 0x1c6c6cff00000000,
+ 0xdf3f41d400000000, 0x9e0e5acd00000000, 0xa224849500000000,
+ 0xe3159f8c00000000, 0x2046b2a700000000, 0x6177a9be00000000,
+ 0xa6e1e8f100000000, 0xe7d0f3e800000000, 0x2483dec300000000,
+ 0x65b2c5da00000000, 0xaaae5d5d00000000, 0xeb9f464400000000,
+ 0x28cc6b6f00000000, 0x69fd707600000000, 0xae6b313900000000,
+ 0xef5a2a2000000000, 0x2c09070b00000000, 0x6d381c1200000000,
+ 0xf33646df00000000, 0xb2075dc600000000, 0x715470ed00000000,
+ 0x30656bf400000000, 0xf7f32abb00000000, 0xb6c231a200000000,
+ 0x75911c8900000000, 0x34a0079000000000, 0xfbbc9f1700000000,
+ 0xba8d840e00000000, 0x79dea92500000000, 0x38efb23c00000000,
+ 0xff79f37300000000, 0xbe48e86a00000000, 0x7d1bc54100000000,
+ 0x3c2ade5800000000, 0x054f79f000000000, 0x447e62e900000000,
+ 0x872d4fc200000000, 0xc61c54db00000000, 0x018a159400000000,
+ 0x40bb0e8d00000000, 0x83e823a600000000, 0xc2d938bf00000000,
+ 0x0dc5a03800000000, 0x4cf4bb2100000000, 0x8fa7960a00000000,
+ 0xce968d1300000000, 0x0900cc5c00000000, 0x4831d74500000000,
+ 0x8b62fa6e00000000, 0xca53e17700000000, 0x545dbbba00000000,
+ 0x156ca0a300000000, 0xd63f8d8800000000, 0x970e969100000000,
+ 0x5098d7de00000000, 0x11a9ccc700000000, 0xd2fae1ec00000000,
+ 0x93cbfaf500000000, 0x5cd7627200000000, 0x1de6796b00000000,
+ 0xdeb5544000000000, 0x9f844f5900000000, 0x58120e1600000000,
+ 0x1923150f00000000, 0xda70382400000000, 0x9b41233d00000000,
+ 0xa76bfd6500000000, 0xe65ae67c00000000, 0x2509cb5700000000,
+ 0x6438d04e00000000, 0xa3ae910100000000, 0xe29f8a1800000000,
+ 0x21cca73300000000, 0x60fdbc2a00000000, 0xafe124ad00000000,
+ 0xeed03fb400000000, 0x2d83129f00000000, 0x6cb2098600000000,
+ 0xab2448c900000000, 0xea1553d000000000, 0x29467efb00000000,
+ 0x687765e200000000, 0xf6793f2f00000000, 0xb748243600000000,
+ 0x741b091d00000000, 0x352a120400000000, 0xf2bc534b00000000,
+ 0xb38d485200000000, 0x70de657900000000, 0x31ef7e6000000000,
+ 0xfef3e6e700000000, 0xbfc2fdfe00000000, 0x7c91d0d500000000,
+ 0x3da0cbcc00000000, 0xfa368a8300000000, 0xbb07919a00000000,
+ 0x7854bcb100000000, 0x3965a7a800000000, 0x4b98833b00000000,
+ 0x0aa9982200000000, 0xc9fab50900000000, 0x88cbae1000000000,
+ 0x4f5def5f00000000, 0x0e6cf44600000000, 0xcd3fd96d00000000,
+ 0x8c0ec27400000000, 0x43125af300000000, 0x022341ea00000000,
+ 0xc1706cc100000000, 0x804177d800000000, 0x47d7369700000000,
+ 0x06e62d8e00000000, 0xc5b500a500000000, 0x84841bbc00000000,
+ 0x1a8a417100000000, 0x5bbb5a6800000000, 0x98e8774300000000,
+ 0xd9d96c5a00000000, 0x1e4f2d1500000000, 0x5f7e360c00000000,
+ 0x9c2d1b2700000000, 0xdd1c003e00000000, 0x120098b900000000,
+ 0x533183a000000000, 0x9062ae8b00000000, 0xd153b59200000000,
+ 0x16c5f4dd00000000, 0x57f4efc400000000, 0x94a7c2ef00000000,
+ 0xd596d9f600000000, 0xe9bc07ae00000000, 0xa88d1cb700000000,
+ 0x6bde319c00000000, 0x2aef2a8500000000, 0xed796bca00000000,
+ 0xac4870d300000000, 0x6f1b5df800000000, 0x2e2a46e100000000,
+ 0xe136de6600000000, 0xa007c57f00000000, 0x6354e85400000000,
+ 0x2265f34d00000000, 0xe5f3b20200000000, 0xa4c2a91b00000000,
+ 0x6791843000000000, 0x26a09f2900000000, 0xb8aec5e400000000,
+ 0xf99fdefd00000000, 0x3accf3d600000000, 0x7bfde8cf00000000,
+ 0xbc6ba98000000000, 0xfd5ab29900000000, 0x3e099fb200000000,
+ 0x7f3884ab00000000, 0xb0241c2c00000000, 0xf115073500000000,
+ 0x32462a1e00000000, 0x7377310700000000, 0xb4e1704800000000,
+ 0xf5d06b5100000000, 0x3683467a00000000, 0x77b25d6300000000,
+ 0x4ed7facb00000000, 0x0fe6e1d200000000, 0xccb5ccf900000000,
+ 0x8d84d7e000000000, 0x4a1296af00000000, 0x0b238db600000000,
+ 0xc870a09d00000000, 0x8941bb8400000000, 0x465d230300000000,
+ 0x076c381a00000000, 0xc43f153100000000, 0x850e0e2800000000,
+ 0x42984f6700000000, 0x03a9547e00000000, 0xc0fa795500000000,
+ 0x81cb624c00000000, 0x1fc5388100000000, 0x5ef4239800000000,
+ 0x9da70eb300000000, 0xdc9615aa00000000, 0x1b0054e500000000,
+ 0x5a314ffc00000000, 0x996262d700000000, 0xd85379ce00000000,
+ 0x174fe14900000000, 0x567efa5000000000, 0x952dd77b00000000,
+ 0xd41ccc6200000000, 0x138a8d2d00000000, 0x52bb963400000000,
+ 0x91e8bb1f00000000, 0xd0d9a00600000000, 0xecf37e5e00000000,
+ 0xadc2654700000000, 0x6e91486c00000000, 0x2fa0537500000000,
+ 0xe836123a00000000, 0xa907092300000000, 0x6a54240800000000,
+ 0x2b653f1100000000, 0xe479a79600000000, 0xa548bc8f00000000,
+ 0x661b91a400000000, 0x272a8abd00000000, 0xe0bccbf200000000,
+ 0xa18dd0eb00000000, 0x62defdc000000000, 0x23efe6d900000000,
+ 0xbde1bc1400000000, 0xfcd0a70d00000000, 0x3f838a2600000000,
+ 0x7eb2913f00000000, 0xb924d07000000000, 0xf815cb6900000000,
+ 0x3b46e64200000000, 0x7a77fd5b00000000, 0xb56b65dc00000000,
+ 0xf45a7ec500000000, 0x370953ee00000000, 0x763848f700000000,
+ 0xb1ae09b800000000, 0xf09f12a100000000, 0x33cc3f8a00000000,
+ 0x72fd249300000000},
+ {0x0000000000000000, 0x376ac20100000000, 0x6ed4840300000000,
+ 0x59be460200000000, 0xdca8090700000000, 0xebc2cb0600000000,
+ 0xb27c8d0400000000, 0x85164f0500000000, 0xb851130e00000000,
+ 0x8f3bd10f00000000, 0xd685970d00000000, 0xe1ef550c00000000,
+ 0x64f91a0900000000, 0x5393d80800000000, 0x0a2d9e0a00000000,
+ 0x3d475c0b00000000, 0x70a3261c00000000, 0x47c9e41d00000000,
+ 0x1e77a21f00000000, 0x291d601e00000000, 0xac0b2f1b00000000,
+ 0x9b61ed1a00000000, 0xc2dfab1800000000, 0xf5b5691900000000,
+ 0xc8f2351200000000, 0xff98f71300000000, 0xa626b11100000000,
+ 0x914c731000000000, 0x145a3c1500000000, 0x2330fe1400000000,
+ 0x7a8eb81600000000, 0x4de47a1700000000, 0xe0464d3800000000,
+ 0xd72c8f3900000000, 0x8e92c93b00000000, 0xb9f80b3a00000000,
+ 0x3cee443f00000000, 0x0b84863e00000000, 0x523ac03c00000000,
+ 0x6550023d00000000, 0x58175e3600000000, 0x6f7d9c3700000000,
+ 0x36c3da3500000000, 0x01a9183400000000, 0x84bf573100000000,
+ 0xb3d5953000000000, 0xea6bd33200000000, 0xdd01113300000000,
+ 0x90e56b2400000000, 0xa78fa92500000000, 0xfe31ef2700000000,
+ 0xc95b2d2600000000, 0x4c4d622300000000, 0x7b27a02200000000,
+ 0x2299e62000000000, 0x15f3242100000000, 0x28b4782a00000000,
+ 0x1fdeba2b00000000, 0x4660fc2900000000, 0x710a3e2800000000,
+ 0xf41c712d00000000, 0xc376b32c00000000, 0x9ac8f52e00000000,
+ 0xada2372f00000000, 0xc08d9a7000000000, 0xf7e7587100000000,
+ 0xae591e7300000000, 0x9933dc7200000000, 0x1c25937700000000,
+ 0x2b4f517600000000, 0x72f1177400000000, 0x459bd57500000000,
+ 0x78dc897e00000000, 0x4fb64b7f00000000, 0x16080d7d00000000,
+ 0x2162cf7c00000000, 0xa474807900000000, 0x931e427800000000,
+ 0xcaa0047a00000000, 0xfdcac67b00000000, 0xb02ebc6c00000000,
+ 0x87447e6d00000000, 0xdefa386f00000000, 0xe990fa6e00000000,
+ 0x6c86b56b00000000, 0x5bec776a00000000, 0x0252316800000000,
+ 0x3538f36900000000, 0x087faf6200000000, 0x3f156d6300000000,
+ 0x66ab2b6100000000, 0x51c1e96000000000, 0xd4d7a66500000000,
+ 0xe3bd646400000000, 0xba03226600000000, 0x8d69e06700000000,
+ 0x20cbd74800000000, 0x17a1154900000000, 0x4e1f534b00000000,
+ 0x7975914a00000000, 0xfc63de4f00000000, 0xcb091c4e00000000,
+ 0x92b75a4c00000000, 0xa5dd984d00000000, 0x989ac44600000000,
+ 0xaff0064700000000, 0xf64e404500000000, 0xc124824400000000,
+ 0x4432cd4100000000, 0x73580f4000000000, 0x2ae6494200000000,
+ 0x1d8c8b4300000000, 0x5068f15400000000, 0x6702335500000000,
+ 0x3ebc755700000000, 0x09d6b75600000000, 0x8cc0f85300000000,
+ 0xbbaa3a5200000000, 0xe2147c5000000000, 0xd57ebe5100000000,
+ 0xe839e25a00000000, 0xdf53205b00000000, 0x86ed665900000000,
+ 0xb187a45800000000, 0x3491eb5d00000000, 0x03fb295c00000000,
+ 0x5a456f5e00000000, 0x6d2fad5f00000000, 0x801b35e100000000,
+ 0xb771f7e000000000, 0xeecfb1e200000000, 0xd9a573e300000000,
+ 0x5cb33ce600000000, 0x6bd9fee700000000, 0x3267b8e500000000,
+ 0x050d7ae400000000, 0x384a26ef00000000, 0x0f20e4ee00000000,
+ 0x569ea2ec00000000, 0x61f460ed00000000, 0xe4e22fe800000000,
+ 0xd388ede900000000, 0x8a36abeb00000000, 0xbd5c69ea00000000,
+ 0xf0b813fd00000000, 0xc7d2d1fc00000000, 0x9e6c97fe00000000,
+ 0xa90655ff00000000, 0x2c101afa00000000, 0x1b7ad8fb00000000,
+ 0x42c49ef900000000, 0x75ae5cf800000000, 0x48e900f300000000,
+ 0x7f83c2f200000000, 0x263d84f000000000, 0x115746f100000000,
+ 0x944109f400000000, 0xa32bcbf500000000, 0xfa958df700000000,
+ 0xcdff4ff600000000, 0x605d78d900000000, 0x5737bad800000000,
+ 0x0e89fcda00000000, 0x39e33edb00000000, 0xbcf571de00000000,
+ 0x8b9fb3df00000000, 0xd221f5dd00000000, 0xe54b37dc00000000,
+ 0xd80c6bd700000000, 0xef66a9d600000000, 0xb6d8efd400000000,
+ 0x81b22dd500000000, 0x04a462d000000000, 0x33cea0d100000000,
+ 0x6a70e6d300000000, 0x5d1a24d200000000, 0x10fe5ec500000000,
+ 0x27949cc400000000, 0x7e2adac600000000, 0x494018c700000000,
+ 0xcc5657c200000000, 0xfb3c95c300000000, 0xa282d3c100000000,
+ 0x95e811c000000000, 0xa8af4dcb00000000, 0x9fc58fca00000000,
+ 0xc67bc9c800000000, 0xf1110bc900000000, 0x740744cc00000000,
+ 0x436d86cd00000000, 0x1ad3c0cf00000000, 0x2db902ce00000000,
+ 0x4096af9100000000, 0x77fc6d9000000000, 0x2e422b9200000000,
+ 0x1928e99300000000, 0x9c3ea69600000000, 0xab54649700000000,
+ 0xf2ea229500000000, 0xc580e09400000000, 0xf8c7bc9f00000000,
+ 0xcfad7e9e00000000, 0x9613389c00000000, 0xa179fa9d00000000,
+ 0x246fb59800000000, 0x1305779900000000, 0x4abb319b00000000,
+ 0x7dd1f39a00000000, 0x3035898d00000000, 0x075f4b8c00000000,
+ 0x5ee10d8e00000000, 0x698bcf8f00000000, 0xec9d808a00000000,
+ 0xdbf7428b00000000, 0x8249048900000000, 0xb523c68800000000,
+ 0x88649a8300000000, 0xbf0e588200000000, 0xe6b01e8000000000,
+ 0xd1dadc8100000000, 0x54cc938400000000, 0x63a6518500000000,
+ 0x3a18178700000000, 0x0d72d58600000000, 0xa0d0e2a900000000,
+ 0x97ba20a800000000, 0xce0466aa00000000, 0xf96ea4ab00000000,
+ 0x7c78ebae00000000, 0x4b1229af00000000, 0x12ac6fad00000000,
+ 0x25c6adac00000000, 0x1881f1a700000000, 0x2feb33a600000000,
+ 0x765575a400000000, 0x413fb7a500000000, 0xc429f8a000000000,
+ 0xf3433aa100000000, 0xaafd7ca300000000, 0x9d97bea200000000,
+ 0xd073c4b500000000, 0xe71906b400000000, 0xbea740b600000000,
+ 0x89cd82b700000000, 0x0cdbcdb200000000, 0x3bb10fb300000000,
+ 0x620f49b100000000, 0x55658bb000000000, 0x6822d7bb00000000,
+ 0x5f4815ba00000000, 0x06f653b800000000, 0x319c91b900000000,
+ 0xb48adebc00000000, 0x83e01cbd00000000, 0xda5e5abf00000000,
+ 0xed3498be00000000},
+ {0x0000000000000000, 0x6567bcb800000000, 0x8bc809aa00000000,
+ 0xeeafb51200000000, 0x5797628f00000000, 0x32f0de3700000000,
+ 0xdc5f6b2500000000, 0xb938d79d00000000, 0xef28b4c500000000,
+ 0x8a4f087d00000000, 0x64e0bd6f00000000, 0x018701d700000000,
+ 0xb8bfd64a00000000, 0xddd86af200000000, 0x3377dfe000000000,
+ 0x5610635800000000, 0x9f57195000000000, 0xfa30a5e800000000,
+ 0x149f10fa00000000, 0x71f8ac4200000000, 0xc8c07bdf00000000,
+ 0xada7c76700000000, 0x4308727500000000, 0x266fcecd00000000,
+ 0x707fad9500000000, 0x1518112d00000000, 0xfbb7a43f00000000,
+ 0x9ed0188700000000, 0x27e8cf1a00000000, 0x428f73a200000000,
+ 0xac20c6b000000000, 0xc9477a0800000000, 0x3eaf32a000000000,
+ 0x5bc88e1800000000, 0xb5673b0a00000000, 0xd00087b200000000,
+ 0x6938502f00000000, 0x0c5fec9700000000, 0xe2f0598500000000,
+ 0x8797e53d00000000, 0xd187866500000000, 0xb4e03add00000000,
+ 0x5a4f8fcf00000000, 0x3f28337700000000, 0x8610e4ea00000000,
+ 0xe377585200000000, 0x0dd8ed4000000000, 0x68bf51f800000000,
+ 0xa1f82bf000000000, 0xc49f974800000000, 0x2a30225a00000000,
+ 0x4f579ee200000000, 0xf66f497f00000000, 0x9308f5c700000000,
+ 0x7da740d500000000, 0x18c0fc6d00000000, 0x4ed09f3500000000,
+ 0x2bb7238d00000000, 0xc518969f00000000, 0xa07f2a2700000000,
+ 0x1947fdba00000000, 0x7c20410200000000, 0x928ff41000000000,
+ 0xf7e848a800000000, 0x3d58149b00000000, 0x583fa82300000000,
+ 0xb6901d3100000000, 0xd3f7a18900000000, 0x6acf761400000000,
+ 0x0fa8caac00000000, 0xe1077fbe00000000, 0x8460c30600000000,
+ 0xd270a05e00000000, 0xb7171ce600000000, 0x59b8a9f400000000,
+ 0x3cdf154c00000000, 0x85e7c2d100000000, 0xe0807e6900000000,
+ 0x0e2fcb7b00000000, 0x6b4877c300000000, 0xa20f0dcb00000000,
+ 0xc768b17300000000, 0x29c7046100000000, 0x4ca0b8d900000000,
+ 0xf5986f4400000000, 0x90ffd3fc00000000, 0x7e5066ee00000000,
+ 0x1b37da5600000000, 0x4d27b90e00000000, 0x284005b600000000,
+ 0xc6efb0a400000000, 0xa3880c1c00000000, 0x1ab0db8100000000,
+ 0x7fd7673900000000, 0x9178d22b00000000, 0xf41f6e9300000000,
+ 0x03f7263b00000000, 0x66909a8300000000, 0x883f2f9100000000,
+ 0xed58932900000000, 0x546044b400000000, 0x3107f80c00000000,
+ 0xdfa84d1e00000000, 0xbacff1a600000000, 0xecdf92fe00000000,
+ 0x89b82e4600000000, 0x67179b5400000000, 0x027027ec00000000,
+ 0xbb48f07100000000, 0xde2f4cc900000000, 0x3080f9db00000000,
+ 0x55e7456300000000, 0x9ca03f6b00000000, 0xf9c783d300000000,
+ 0x176836c100000000, 0x720f8a7900000000, 0xcb375de400000000,
+ 0xae50e15c00000000, 0x40ff544e00000000, 0x2598e8f600000000,
+ 0x73888bae00000000, 0x16ef371600000000, 0xf840820400000000,
+ 0x9d273ebc00000000, 0x241fe92100000000, 0x4178559900000000,
+ 0xafd7e08b00000000, 0xcab05c3300000000, 0x3bb659ed00000000,
+ 0x5ed1e55500000000, 0xb07e504700000000, 0xd519ecff00000000,
+ 0x6c213b6200000000, 0x094687da00000000, 0xe7e932c800000000,
+ 0x828e8e7000000000, 0xd49eed2800000000, 0xb1f9519000000000,
+ 0x5f56e48200000000, 0x3a31583a00000000, 0x83098fa700000000,
+ 0xe66e331f00000000, 0x08c1860d00000000, 0x6da63ab500000000,
+ 0xa4e140bd00000000, 0xc186fc0500000000, 0x2f29491700000000,
+ 0x4a4ef5af00000000, 0xf376223200000000, 0x96119e8a00000000,
+ 0x78be2b9800000000, 0x1dd9972000000000, 0x4bc9f47800000000,
+ 0x2eae48c000000000, 0xc001fdd200000000, 0xa566416a00000000,
+ 0x1c5e96f700000000, 0x79392a4f00000000, 0x97969f5d00000000,
+ 0xf2f123e500000000, 0x05196b4d00000000, 0x607ed7f500000000,
+ 0x8ed162e700000000, 0xebb6de5f00000000, 0x528e09c200000000,
+ 0x37e9b57a00000000, 0xd946006800000000, 0xbc21bcd000000000,
+ 0xea31df8800000000, 0x8f56633000000000, 0x61f9d62200000000,
+ 0x049e6a9a00000000, 0xbda6bd0700000000, 0xd8c101bf00000000,
+ 0x366eb4ad00000000, 0x5309081500000000, 0x9a4e721d00000000,
+ 0xff29cea500000000, 0x11867bb700000000, 0x74e1c70f00000000,
+ 0xcdd9109200000000, 0xa8beac2a00000000, 0x4611193800000000,
+ 0x2376a58000000000, 0x7566c6d800000000, 0x10017a6000000000,
+ 0xfeaecf7200000000, 0x9bc973ca00000000, 0x22f1a45700000000,
+ 0x479618ef00000000, 0xa939adfd00000000, 0xcc5e114500000000,
+ 0x06ee4d7600000000, 0x6389f1ce00000000, 0x8d2644dc00000000,
+ 0xe841f86400000000, 0x51792ff900000000, 0x341e934100000000,
+ 0xdab1265300000000, 0xbfd69aeb00000000, 0xe9c6f9b300000000,
+ 0x8ca1450b00000000, 0x620ef01900000000, 0x07694ca100000000,
+ 0xbe519b3c00000000, 0xdb36278400000000, 0x3599929600000000,
+ 0x50fe2e2e00000000, 0x99b9542600000000, 0xfcdee89e00000000,
+ 0x12715d8c00000000, 0x7716e13400000000, 0xce2e36a900000000,
+ 0xab498a1100000000, 0x45e63f0300000000, 0x208183bb00000000,
+ 0x7691e0e300000000, 0x13f65c5b00000000, 0xfd59e94900000000,
+ 0x983e55f100000000, 0x2106826c00000000, 0x44613ed400000000,
+ 0xaace8bc600000000, 0xcfa9377e00000000, 0x38417fd600000000,
+ 0x5d26c36e00000000, 0xb389767c00000000, 0xd6eecac400000000,
+ 0x6fd61d5900000000, 0x0ab1a1e100000000, 0xe41e14f300000000,
+ 0x8179a84b00000000, 0xd769cb1300000000, 0xb20e77ab00000000,
+ 0x5ca1c2b900000000, 0x39c67e0100000000, 0x80fea99c00000000,
+ 0xe599152400000000, 0x0b36a03600000000, 0x6e511c8e00000000,
+ 0xa716668600000000, 0xc271da3e00000000, 0x2cde6f2c00000000,
+ 0x49b9d39400000000, 0xf081040900000000, 0x95e6b8b100000000,
+ 0x7b490da300000000, 0x1e2eb11b00000000, 0x483ed24300000000,
+ 0x2d596efb00000000, 0xc3f6dbe900000000, 0xa691675100000000,
+ 0x1fa9b0cc00000000, 0x7ace0c7400000000, 0x9461b96600000000,
+ 0xf10605de00000000},
+ {0x0000000000000000, 0xb029603d00000000, 0x6053c07a00000000,
+ 0xd07aa04700000000, 0xc0a680f500000000, 0x708fe0c800000000,
+ 0xa0f5408f00000000, 0x10dc20b200000000, 0xc14b703000000000,
+ 0x7162100d00000000, 0xa118b04a00000000, 0x1131d07700000000,
+ 0x01edf0c500000000, 0xb1c490f800000000, 0x61be30bf00000000,
+ 0xd197508200000000, 0x8297e06000000000, 0x32be805d00000000,
+ 0xe2c4201a00000000, 0x52ed402700000000, 0x4231609500000000,
+ 0xf21800a800000000, 0x2262a0ef00000000, 0x924bc0d200000000,
+ 0x43dc905000000000, 0xf3f5f06d00000000, 0x238f502a00000000,
+ 0x93a6301700000000, 0x837a10a500000000, 0x3353709800000000,
+ 0xe329d0df00000000, 0x5300b0e200000000, 0x042fc1c100000000,
+ 0xb406a1fc00000000, 0x647c01bb00000000, 0xd455618600000000,
+ 0xc489413400000000, 0x74a0210900000000, 0xa4da814e00000000,
+ 0x14f3e17300000000, 0xc564b1f100000000, 0x754dd1cc00000000,
+ 0xa537718b00000000, 0x151e11b600000000, 0x05c2310400000000,
+ 0xb5eb513900000000, 0x6591f17e00000000, 0xd5b8914300000000,
+ 0x86b821a100000000, 0x3691419c00000000, 0xe6ebe1db00000000,
+ 0x56c281e600000000, 0x461ea15400000000, 0xf637c16900000000,
+ 0x264d612e00000000, 0x9664011300000000, 0x47f3519100000000,
+ 0xf7da31ac00000000, 0x27a091eb00000000, 0x9789f1d600000000,
+ 0x8755d16400000000, 0x377cb15900000000, 0xe706111e00000000,
+ 0x572f712300000000, 0x4958f35800000000, 0xf971936500000000,
+ 0x290b332200000000, 0x9922531f00000000, 0x89fe73ad00000000,
+ 0x39d7139000000000, 0xe9adb3d700000000, 0x5984d3ea00000000,
+ 0x8813836800000000, 0x383ae35500000000, 0xe840431200000000,
+ 0x5869232f00000000, 0x48b5039d00000000, 0xf89c63a000000000,
+ 0x28e6c3e700000000, 0x98cfa3da00000000, 0xcbcf133800000000,
+ 0x7be6730500000000, 0xab9cd34200000000, 0x1bb5b37f00000000,
+ 0x0b6993cd00000000, 0xbb40f3f000000000, 0x6b3a53b700000000,
+ 0xdb13338a00000000, 0x0a84630800000000, 0xbaad033500000000,
+ 0x6ad7a37200000000, 0xdafec34f00000000, 0xca22e3fd00000000,
+ 0x7a0b83c000000000, 0xaa71238700000000, 0x1a5843ba00000000,
+ 0x4d77329900000000, 0xfd5e52a400000000, 0x2d24f2e300000000,
+ 0x9d0d92de00000000, 0x8dd1b26c00000000, 0x3df8d25100000000,
+ 0xed82721600000000, 0x5dab122b00000000, 0x8c3c42a900000000,
+ 0x3c15229400000000, 0xec6f82d300000000, 0x5c46e2ee00000000,
+ 0x4c9ac25c00000000, 0xfcb3a26100000000, 0x2cc9022600000000,
+ 0x9ce0621b00000000, 0xcfe0d2f900000000, 0x7fc9b2c400000000,
+ 0xafb3128300000000, 0x1f9a72be00000000, 0x0f46520c00000000,
+ 0xbf6f323100000000, 0x6f15927600000000, 0xdf3cf24b00000000,
+ 0x0eaba2c900000000, 0xbe82c2f400000000, 0x6ef862b300000000,
+ 0xded1028e00000000, 0xce0d223c00000000, 0x7e24420100000000,
+ 0xae5ee24600000000, 0x1e77827b00000000, 0x92b0e6b100000000,
+ 0x2299868c00000000, 0xf2e326cb00000000, 0x42ca46f600000000,
+ 0x5216664400000000, 0xe23f067900000000, 0x3245a63e00000000,
+ 0x826cc60300000000, 0x53fb968100000000, 0xe3d2f6bc00000000,
+ 0x33a856fb00000000, 0x838136c600000000, 0x935d167400000000,
+ 0x2374764900000000, 0xf30ed60e00000000, 0x4327b63300000000,
+ 0x102706d100000000, 0xa00e66ec00000000, 0x7074c6ab00000000,
+ 0xc05da69600000000, 0xd081862400000000, 0x60a8e61900000000,
+ 0xb0d2465e00000000, 0x00fb266300000000, 0xd16c76e100000000,
+ 0x614516dc00000000, 0xb13fb69b00000000, 0x0116d6a600000000,
+ 0x11caf61400000000, 0xa1e3962900000000, 0x7199366e00000000,
+ 0xc1b0565300000000, 0x969f277000000000, 0x26b6474d00000000,
+ 0xf6cce70a00000000, 0x46e5873700000000, 0x5639a78500000000,
+ 0xe610c7b800000000, 0x366a67ff00000000, 0x864307c200000000,
+ 0x57d4574000000000, 0xe7fd377d00000000, 0x3787973a00000000,
+ 0x87aef70700000000, 0x9772d7b500000000, 0x275bb78800000000,
+ 0xf72117cf00000000, 0x470877f200000000, 0x1408c71000000000,
+ 0xa421a72d00000000, 0x745b076a00000000, 0xc472675700000000,
+ 0xd4ae47e500000000, 0x648727d800000000, 0xb4fd879f00000000,
+ 0x04d4e7a200000000, 0xd543b72000000000, 0x656ad71d00000000,
+ 0xb510775a00000000, 0x0539176700000000, 0x15e537d500000000,
+ 0xa5cc57e800000000, 0x75b6f7af00000000, 0xc59f979200000000,
+ 0xdbe815e900000000, 0x6bc175d400000000, 0xbbbbd59300000000,
+ 0x0b92b5ae00000000, 0x1b4e951c00000000, 0xab67f52100000000,
+ 0x7b1d556600000000, 0xcb34355b00000000, 0x1aa365d900000000,
+ 0xaa8a05e400000000, 0x7af0a5a300000000, 0xcad9c59e00000000,
+ 0xda05e52c00000000, 0x6a2c851100000000, 0xba56255600000000,
+ 0x0a7f456b00000000, 0x597ff58900000000, 0xe95695b400000000,
+ 0x392c35f300000000, 0x890555ce00000000, 0x99d9757c00000000,
+ 0x29f0154100000000, 0xf98ab50600000000, 0x49a3d53b00000000,
+ 0x983485b900000000, 0x281de58400000000, 0xf86745c300000000,
+ 0x484e25fe00000000, 0x5892054c00000000, 0xe8bb657100000000,
+ 0x38c1c53600000000, 0x88e8a50b00000000, 0xdfc7d42800000000,
+ 0x6feeb41500000000, 0xbf94145200000000, 0x0fbd746f00000000,
+ 0x1f6154dd00000000, 0xaf4834e000000000, 0x7f3294a700000000,
+ 0xcf1bf49a00000000, 0x1e8ca41800000000, 0xaea5c42500000000,
+ 0x7edf646200000000, 0xcef6045f00000000, 0xde2a24ed00000000,
+ 0x6e0344d000000000, 0xbe79e49700000000, 0x0e5084aa00000000,
+ 0x5d50344800000000, 0xed79547500000000, 0x3d03f43200000000,
+ 0x8d2a940f00000000, 0x9df6b4bd00000000, 0x2ddfd48000000000,
+ 0xfda574c700000000, 0x4d8c14fa00000000, 0x9c1b447800000000,
+ 0x2c32244500000000, 0xfc48840200000000, 0x4c61e43f00000000,
+ 0x5cbdc48d00000000, 0xec94a4b000000000, 0x3cee04f700000000,
+ 0x8cc764ca00000000},
+ {0x0000000000000000, 0xa5d35ccb00000000, 0x0ba1c84d00000000,
+ 0xae72948600000000, 0x1642919b00000000, 0xb391cd5000000000,
+ 0x1de359d600000000, 0xb830051d00000000, 0x6d8253ec00000000,
+ 0xc8510f2700000000, 0x66239ba100000000, 0xc3f0c76a00000000,
+ 0x7bc0c27700000000, 0xde139ebc00000000, 0x70610a3a00000000,
+ 0xd5b256f100000000, 0x9b02d60300000000, 0x3ed18ac800000000,
+ 0x90a31e4e00000000, 0x3570428500000000, 0x8d40479800000000,
+ 0x28931b5300000000, 0x86e18fd500000000, 0x2332d31e00000000,
+ 0xf68085ef00000000, 0x5353d92400000000, 0xfd214da200000000,
+ 0x58f2116900000000, 0xe0c2147400000000, 0x451148bf00000000,
+ 0xeb63dc3900000000, 0x4eb080f200000000, 0x3605ac0700000000,
+ 0x93d6f0cc00000000, 0x3da4644a00000000, 0x9877388100000000,
+ 0x20473d9c00000000, 0x8594615700000000, 0x2be6f5d100000000,
+ 0x8e35a91a00000000, 0x5b87ffeb00000000, 0xfe54a32000000000,
+ 0x502637a600000000, 0xf5f56b6d00000000, 0x4dc56e7000000000,
+ 0xe81632bb00000000, 0x4664a63d00000000, 0xe3b7faf600000000,
+ 0xad077a0400000000, 0x08d426cf00000000, 0xa6a6b24900000000,
+ 0x0375ee8200000000, 0xbb45eb9f00000000, 0x1e96b75400000000,
+ 0xb0e423d200000000, 0x15377f1900000000, 0xc08529e800000000,
+ 0x6556752300000000, 0xcb24e1a500000000, 0x6ef7bd6e00000000,
+ 0xd6c7b87300000000, 0x7314e4b800000000, 0xdd66703e00000000,
+ 0x78b52cf500000000, 0x6c0a580f00000000, 0xc9d904c400000000,
+ 0x67ab904200000000, 0xc278cc8900000000, 0x7a48c99400000000,
+ 0xdf9b955f00000000, 0x71e901d900000000, 0xd43a5d1200000000,
+ 0x01880be300000000, 0xa45b572800000000, 0x0a29c3ae00000000,
+ 0xaffa9f6500000000, 0x17ca9a7800000000, 0xb219c6b300000000,
+ 0x1c6b523500000000, 0xb9b80efe00000000, 0xf7088e0c00000000,
+ 0x52dbd2c700000000, 0xfca9464100000000, 0x597a1a8a00000000,
+ 0xe14a1f9700000000, 0x4499435c00000000, 0xeaebd7da00000000,
+ 0x4f388b1100000000, 0x9a8adde000000000, 0x3f59812b00000000,
+ 0x912b15ad00000000, 0x34f8496600000000, 0x8cc84c7b00000000,
+ 0x291b10b000000000, 0x8769843600000000, 0x22bad8fd00000000,
+ 0x5a0ff40800000000, 0xffdca8c300000000, 0x51ae3c4500000000,
+ 0xf47d608e00000000, 0x4c4d659300000000, 0xe99e395800000000,
+ 0x47ecadde00000000, 0xe23ff11500000000, 0x378da7e400000000,
+ 0x925efb2f00000000, 0x3c2c6fa900000000, 0x99ff336200000000,
+ 0x21cf367f00000000, 0x841c6ab400000000, 0x2a6efe3200000000,
+ 0x8fbda2f900000000, 0xc10d220b00000000, 0x64de7ec000000000,
+ 0xcaacea4600000000, 0x6f7fb68d00000000, 0xd74fb39000000000,
+ 0x729cef5b00000000, 0xdcee7bdd00000000, 0x793d271600000000,
+ 0xac8f71e700000000, 0x095c2d2c00000000, 0xa72eb9aa00000000,
+ 0x02fde56100000000, 0xbacde07c00000000, 0x1f1ebcb700000000,
+ 0xb16c283100000000, 0x14bf74fa00000000, 0xd814b01e00000000,
+ 0x7dc7ecd500000000, 0xd3b5785300000000, 0x7666249800000000,
+ 0xce56218500000000, 0x6b857d4e00000000, 0xc5f7e9c800000000,
+ 0x6024b50300000000, 0xb596e3f200000000, 0x1045bf3900000000,
+ 0xbe372bbf00000000, 0x1be4777400000000, 0xa3d4726900000000,
+ 0x06072ea200000000, 0xa875ba2400000000, 0x0da6e6ef00000000,
+ 0x4316661d00000000, 0xe6c53ad600000000, 0x48b7ae5000000000,
+ 0xed64f29b00000000, 0x5554f78600000000, 0xf087ab4d00000000,
+ 0x5ef53fcb00000000, 0xfb26630000000000, 0x2e9435f100000000,
+ 0x8b47693a00000000, 0x2535fdbc00000000, 0x80e6a17700000000,
+ 0x38d6a46a00000000, 0x9d05f8a100000000, 0x33776c2700000000,
+ 0x96a430ec00000000, 0xee111c1900000000, 0x4bc240d200000000,
+ 0xe5b0d45400000000, 0x4063889f00000000, 0xf8538d8200000000,
+ 0x5d80d14900000000, 0xf3f245cf00000000, 0x5621190400000000,
+ 0x83934ff500000000, 0x2640133e00000000, 0x883287b800000000,
+ 0x2de1db7300000000, 0x95d1de6e00000000, 0x300282a500000000,
+ 0x9e70162300000000, 0x3ba34ae800000000, 0x7513ca1a00000000,
+ 0xd0c096d100000000, 0x7eb2025700000000, 0xdb615e9c00000000,
+ 0x63515b8100000000, 0xc682074a00000000, 0x68f093cc00000000,
+ 0xcd23cf0700000000, 0x189199f600000000, 0xbd42c53d00000000,
+ 0x133051bb00000000, 0xb6e30d7000000000, 0x0ed3086d00000000,
+ 0xab0054a600000000, 0x0572c02000000000, 0xa0a19ceb00000000,
+ 0xb41ee81100000000, 0x11cdb4da00000000, 0xbfbf205c00000000,
+ 0x1a6c7c9700000000, 0xa25c798a00000000, 0x078f254100000000,
+ 0xa9fdb1c700000000, 0x0c2eed0c00000000, 0xd99cbbfd00000000,
+ 0x7c4fe73600000000, 0xd23d73b000000000, 0x77ee2f7b00000000,
+ 0xcfde2a6600000000, 0x6a0d76ad00000000, 0xc47fe22b00000000,
+ 0x61acbee000000000, 0x2f1c3e1200000000, 0x8acf62d900000000,
+ 0x24bdf65f00000000, 0x816eaa9400000000, 0x395eaf8900000000,
+ 0x9c8df34200000000, 0x32ff67c400000000, 0x972c3b0f00000000,
+ 0x429e6dfe00000000, 0xe74d313500000000, 0x493fa5b300000000,
+ 0xececf97800000000, 0x54dcfc6500000000, 0xf10fa0ae00000000,
+ 0x5f7d342800000000, 0xfaae68e300000000, 0x821b441600000000,
+ 0x27c818dd00000000, 0x89ba8c5b00000000, 0x2c69d09000000000,
+ 0x9459d58d00000000, 0x318a894600000000, 0x9ff81dc000000000,
+ 0x3a2b410b00000000, 0xef9917fa00000000, 0x4a4a4b3100000000,
+ 0xe438dfb700000000, 0x41eb837c00000000, 0xf9db866100000000,
+ 0x5c08daaa00000000, 0xf27a4e2c00000000, 0x57a912e700000000,
+ 0x1919921500000000, 0xbccacede00000000, 0x12b85a5800000000,
+ 0xb76b069300000000, 0x0f5b038e00000000, 0xaa885f4500000000,
+ 0x04facbc300000000, 0xa129970800000000, 0x749bc1f900000000,
+ 0xd1489d3200000000, 0x7f3a09b400000000, 0xdae9557f00000000,
+ 0x62d9506200000000, 0xc70a0ca900000000, 0x6978982f00000000,
+ 0xccabc4e400000000},
+ {0x0000000000000000, 0xb40b77a600000000, 0x29119f9700000000,
+ 0x9d1ae83100000000, 0x13244ff400000000, 0xa72f385200000000,
+ 0x3a35d06300000000, 0x8e3ea7c500000000, 0x674eef3300000000,
+ 0xd345989500000000, 0x4e5f70a400000000, 0xfa54070200000000,
+ 0x746aa0c700000000, 0xc061d76100000000, 0x5d7b3f5000000000,
+ 0xe97048f600000000, 0xce9cde6700000000, 0x7a97a9c100000000,
+ 0xe78d41f000000000, 0x5386365600000000, 0xddb8919300000000,
+ 0x69b3e63500000000, 0xf4a90e0400000000, 0x40a279a200000000,
+ 0xa9d2315400000000, 0x1dd946f200000000, 0x80c3aec300000000,
+ 0x34c8d96500000000, 0xbaf67ea000000000, 0x0efd090600000000,
+ 0x93e7e13700000000, 0x27ec969100000000, 0x9c39bdcf00000000,
+ 0x2832ca6900000000, 0xb528225800000000, 0x012355fe00000000,
+ 0x8f1df23b00000000, 0x3b16859d00000000, 0xa60c6dac00000000,
+ 0x12071a0a00000000, 0xfb7752fc00000000, 0x4f7c255a00000000,
+ 0xd266cd6b00000000, 0x666dbacd00000000, 0xe8531d0800000000,
+ 0x5c586aae00000000, 0xc142829f00000000, 0x7549f53900000000,
+ 0x52a563a800000000, 0xe6ae140e00000000, 0x7bb4fc3f00000000,
+ 0xcfbf8b9900000000, 0x41812c5c00000000, 0xf58a5bfa00000000,
+ 0x6890b3cb00000000, 0xdc9bc46d00000000, 0x35eb8c9b00000000,
+ 0x81e0fb3d00000000, 0x1cfa130c00000000, 0xa8f164aa00000000,
+ 0x26cfc36f00000000, 0x92c4b4c900000000, 0x0fde5cf800000000,
+ 0xbbd52b5e00000000, 0x79750b4400000000, 0xcd7e7ce200000000,
+ 0x506494d300000000, 0xe46fe37500000000, 0x6a5144b000000000,
+ 0xde5a331600000000, 0x4340db2700000000, 0xf74bac8100000000,
+ 0x1e3be47700000000, 0xaa3093d100000000, 0x372a7be000000000,
+ 0x83210c4600000000, 0x0d1fab8300000000, 0xb914dc2500000000,
+ 0x240e341400000000, 0x900543b200000000, 0xb7e9d52300000000,
+ 0x03e2a28500000000, 0x9ef84ab400000000, 0x2af33d1200000000,
+ 0xa4cd9ad700000000, 0x10c6ed7100000000, 0x8ddc054000000000,
+ 0x39d772e600000000, 0xd0a73a1000000000, 0x64ac4db600000000,
+ 0xf9b6a58700000000, 0x4dbdd22100000000, 0xc38375e400000000,
+ 0x7788024200000000, 0xea92ea7300000000, 0x5e999dd500000000,
+ 0xe54cb68b00000000, 0x5147c12d00000000, 0xcc5d291c00000000,
+ 0x78565eba00000000, 0xf668f97f00000000, 0x42638ed900000000,
+ 0xdf7966e800000000, 0x6b72114e00000000, 0x820259b800000000,
+ 0x36092e1e00000000, 0xab13c62f00000000, 0x1f18b18900000000,
+ 0x9126164c00000000, 0x252d61ea00000000, 0xb83789db00000000,
+ 0x0c3cfe7d00000000, 0x2bd068ec00000000, 0x9fdb1f4a00000000,
+ 0x02c1f77b00000000, 0xb6ca80dd00000000, 0x38f4271800000000,
+ 0x8cff50be00000000, 0x11e5b88f00000000, 0xa5eecf2900000000,
+ 0x4c9e87df00000000, 0xf895f07900000000, 0x658f184800000000,
+ 0xd1846fee00000000, 0x5fbac82b00000000, 0xebb1bf8d00000000,
+ 0x76ab57bc00000000, 0xc2a0201a00000000, 0xf2ea168800000000,
+ 0x46e1612e00000000, 0xdbfb891f00000000, 0x6ff0feb900000000,
+ 0xe1ce597c00000000, 0x55c52eda00000000, 0xc8dfc6eb00000000,
+ 0x7cd4b14d00000000, 0x95a4f9bb00000000, 0x21af8e1d00000000,
+ 0xbcb5662c00000000, 0x08be118a00000000, 0x8680b64f00000000,
+ 0x328bc1e900000000, 0xaf9129d800000000, 0x1b9a5e7e00000000,
+ 0x3c76c8ef00000000, 0x887dbf4900000000, 0x1567577800000000,
+ 0xa16c20de00000000, 0x2f52871b00000000, 0x9b59f0bd00000000,
+ 0x0643188c00000000, 0xb2486f2a00000000, 0x5b3827dc00000000,
+ 0xef33507a00000000, 0x7229b84b00000000, 0xc622cfed00000000,
+ 0x481c682800000000, 0xfc171f8e00000000, 0x610df7bf00000000,
+ 0xd506801900000000, 0x6ed3ab4700000000, 0xdad8dce100000000,
+ 0x47c234d000000000, 0xf3c9437600000000, 0x7df7e4b300000000,
+ 0xc9fc931500000000, 0x54e67b2400000000, 0xe0ed0c8200000000,
+ 0x099d447400000000, 0xbd9633d200000000, 0x208cdbe300000000,
+ 0x9487ac4500000000, 0x1ab90b8000000000, 0xaeb27c2600000000,
+ 0x33a8941700000000, 0x87a3e3b100000000, 0xa04f752000000000,
+ 0x1444028600000000, 0x895eeab700000000, 0x3d559d1100000000,
+ 0xb36b3ad400000000, 0x07604d7200000000, 0x9a7aa54300000000,
+ 0x2e71d2e500000000, 0xc7019a1300000000, 0x730aedb500000000,
+ 0xee10058400000000, 0x5a1b722200000000, 0xd425d5e700000000,
+ 0x602ea24100000000, 0xfd344a7000000000, 0x493f3dd600000000,
+ 0x8b9f1dcc00000000, 0x3f946a6a00000000, 0xa28e825b00000000,
+ 0x1685f5fd00000000, 0x98bb523800000000, 0x2cb0259e00000000,
+ 0xb1aacdaf00000000, 0x05a1ba0900000000, 0xecd1f2ff00000000,
+ 0x58da855900000000, 0xc5c06d6800000000, 0x71cb1ace00000000,
+ 0xfff5bd0b00000000, 0x4bfecaad00000000, 0xd6e4229c00000000,
+ 0x62ef553a00000000, 0x4503c3ab00000000, 0xf108b40d00000000,
+ 0x6c125c3c00000000, 0xd8192b9a00000000, 0x56278c5f00000000,
+ 0xe22cfbf900000000, 0x7f3613c800000000, 0xcb3d646e00000000,
+ 0x224d2c9800000000, 0x96465b3e00000000, 0x0b5cb30f00000000,
+ 0xbf57c4a900000000, 0x3169636c00000000, 0x856214ca00000000,
+ 0x1878fcfb00000000, 0xac738b5d00000000, 0x17a6a00300000000,
+ 0xa3add7a500000000, 0x3eb73f9400000000, 0x8abc483200000000,
+ 0x0482eff700000000, 0xb089985100000000, 0x2d93706000000000,
+ 0x999807c600000000, 0x70e84f3000000000, 0xc4e3389600000000,
+ 0x59f9d0a700000000, 0xedf2a70100000000, 0x63cc00c400000000,
+ 0xd7c7776200000000, 0x4add9f5300000000, 0xfed6e8f500000000,
+ 0xd93a7e6400000000, 0x6d3109c200000000, 0xf02be1f300000000,
+ 0x4420965500000000, 0xca1e319000000000, 0x7e15463600000000,
+ 0xe30fae0700000000, 0x5704d9a100000000, 0xbe74915700000000,
+ 0x0a7fe6f100000000, 0x97650ec000000000, 0x236e796600000000,
+ 0xad50dea300000000, 0x195ba90500000000, 0x8441413400000000,
+ 0x304a369200000000},
+ {0x0000000000000000, 0x9e00aacc00000000, 0x7d07254200000000,
+ 0xe3078f8e00000000, 0xfa0e4a8400000000, 0x640ee04800000000,
+ 0x87096fc600000000, 0x1909c50a00000000, 0xb51be5d300000000,
+ 0x2b1b4f1f00000000, 0xc81cc09100000000, 0x561c6a5d00000000,
+ 0x4f15af5700000000, 0xd115059b00000000, 0x32128a1500000000,
+ 0xac1220d900000000, 0x2b31bb7c00000000, 0xb53111b000000000,
+ 0x56369e3e00000000, 0xc83634f200000000, 0xd13ff1f800000000,
+ 0x4f3f5b3400000000, 0xac38d4ba00000000, 0x32387e7600000000,
+ 0x9e2a5eaf00000000, 0x002af46300000000, 0xe32d7bed00000000,
+ 0x7d2dd12100000000, 0x6424142b00000000, 0xfa24bee700000000,
+ 0x1923316900000000, 0x87239ba500000000, 0x566276f900000000,
+ 0xc862dc3500000000, 0x2b6553bb00000000, 0xb565f97700000000,
+ 0xac6c3c7d00000000, 0x326c96b100000000, 0xd16b193f00000000,
+ 0x4f6bb3f300000000, 0xe379932a00000000, 0x7d7939e600000000,
+ 0x9e7eb66800000000, 0x007e1ca400000000, 0x1977d9ae00000000,
+ 0x8777736200000000, 0x6470fcec00000000, 0xfa70562000000000,
+ 0x7d53cd8500000000, 0xe353674900000000, 0x0054e8c700000000,
+ 0x9e54420b00000000, 0x875d870100000000, 0x195d2dcd00000000,
+ 0xfa5aa24300000000, 0x645a088f00000000, 0xc848285600000000,
+ 0x5648829a00000000, 0xb54f0d1400000000, 0x2b4fa7d800000000,
+ 0x324662d200000000, 0xac46c81e00000000, 0x4f41479000000000,
+ 0xd141ed5c00000000, 0xedc29d2900000000, 0x73c237e500000000,
+ 0x90c5b86b00000000, 0x0ec512a700000000, 0x17ccd7ad00000000,
+ 0x89cc7d6100000000, 0x6acbf2ef00000000, 0xf4cb582300000000,
+ 0x58d978fa00000000, 0xc6d9d23600000000, 0x25de5db800000000,
+ 0xbbdef77400000000, 0xa2d7327e00000000, 0x3cd798b200000000,
+ 0xdfd0173c00000000, 0x41d0bdf000000000, 0xc6f3265500000000,
+ 0x58f38c9900000000, 0xbbf4031700000000, 0x25f4a9db00000000,
+ 0x3cfd6cd100000000, 0xa2fdc61d00000000, 0x41fa499300000000,
+ 0xdffae35f00000000, 0x73e8c38600000000, 0xede8694a00000000,
+ 0x0eefe6c400000000, 0x90ef4c0800000000, 0x89e6890200000000,
+ 0x17e623ce00000000, 0xf4e1ac4000000000, 0x6ae1068c00000000,
+ 0xbba0ebd000000000, 0x25a0411c00000000, 0xc6a7ce9200000000,
+ 0x58a7645e00000000, 0x41aea15400000000, 0xdfae0b9800000000,
+ 0x3ca9841600000000, 0xa2a92eda00000000, 0x0ebb0e0300000000,
+ 0x90bba4cf00000000, 0x73bc2b4100000000, 0xedbc818d00000000,
+ 0xf4b5448700000000, 0x6ab5ee4b00000000, 0x89b261c500000000,
+ 0x17b2cb0900000000, 0x909150ac00000000, 0x0e91fa6000000000,
+ 0xed9675ee00000000, 0x7396df2200000000, 0x6a9f1a2800000000,
+ 0xf49fb0e400000000, 0x17983f6a00000000, 0x899895a600000000,
+ 0x258ab57f00000000, 0xbb8a1fb300000000, 0x588d903d00000000,
+ 0xc68d3af100000000, 0xdf84fffb00000000, 0x4184553700000000,
+ 0xa283dab900000000, 0x3c83707500000000, 0xda853b5300000000,
+ 0x4485919f00000000, 0xa7821e1100000000, 0x3982b4dd00000000,
+ 0x208b71d700000000, 0xbe8bdb1b00000000, 0x5d8c549500000000,
+ 0xc38cfe5900000000, 0x6f9ede8000000000, 0xf19e744c00000000,
+ 0x1299fbc200000000, 0x8c99510e00000000, 0x9590940400000000,
+ 0x0b903ec800000000, 0xe897b14600000000, 0x76971b8a00000000,
+ 0xf1b4802f00000000, 0x6fb42ae300000000, 0x8cb3a56d00000000,
+ 0x12b30fa100000000, 0x0bbacaab00000000, 0x95ba606700000000,
+ 0x76bdefe900000000, 0xe8bd452500000000, 0x44af65fc00000000,
+ 0xdaafcf3000000000, 0x39a840be00000000, 0xa7a8ea7200000000,
+ 0xbea12f7800000000, 0x20a185b400000000, 0xc3a60a3a00000000,
+ 0x5da6a0f600000000, 0x8ce74daa00000000, 0x12e7e76600000000,
+ 0xf1e068e800000000, 0x6fe0c22400000000, 0x76e9072e00000000,
+ 0xe8e9ade200000000, 0x0bee226c00000000, 0x95ee88a000000000,
+ 0x39fca87900000000, 0xa7fc02b500000000, 0x44fb8d3b00000000,
+ 0xdafb27f700000000, 0xc3f2e2fd00000000, 0x5df2483100000000,
+ 0xbef5c7bf00000000, 0x20f56d7300000000, 0xa7d6f6d600000000,
+ 0x39d65c1a00000000, 0xdad1d39400000000, 0x44d1795800000000,
+ 0x5dd8bc5200000000, 0xc3d8169e00000000, 0x20df991000000000,
+ 0xbedf33dc00000000, 0x12cd130500000000, 0x8ccdb9c900000000,
+ 0x6fca364700000000, 0xf1ca9c8b00000000, 0xe8c3598100000000,
+ 0x76c3f34d00000000, 0x95c47cc300000000, 0x0bc4d60f00000000,
+ 0x3747a67a00000000, 0xa9470cb600000000, 0x4a40833800000000,
+ 0xd44029f400000000, 0xcd49ecfe00000000, 0x5349463200000000,
+ 0xb04ec9bc00000000, 0x2e4e637000000000, 0x825c43a900000000,
+ 0x1c5ce96500000000, 0xff5b66eb00000000, 0x615bcc2700000000,
+ 0x7852092d00000000, 0xe652a3e100000000, 0x05552c6f00000000,
+ 0x9b5586a300000000, 0x1c761d0600000000, 0x8276b7ca00000000,
+ 0x6171384400000000, 0xff71928800000000, 0xe678578200000000,
+ 0x7878fd4e00000000, 0x9b7f72c000000000, 0x057fd80c00000000,
+ 0xa96df8d500000000, 0x376d521900000000, 0xd46add9700000000,
+ 0x4a6a775b00000000, 0x5363b25100000000, 0xcd63189d00000000,
+ 0x2e64971300000000, 0xb0643ddf00000000, 0x6125d08300000000,
+ 0xff257a4f00000000, 0x1c22f5c100000000, 0x82225f0d00000000,
+ 0x9b2b9a0700000000, 0x052b30cb00000000, 0xe62cbf4500000000,
+ 0x782c158900000000, 0xd43e355000000000, 0x4a3e9f9c00000000,
+ 0xa939101200000000, 0x3739bade00000000, 0x2e307fd400000000,
+ 0xb030d51800000000, 0x53375a9600000000, 0xcd37f05a00000000,
+ 0x4a146bff00000000, 0xd414c13300000000, 0x37134ebd00000000,
+ 0xa913e47100000000, 0xb01a217b00000000, 0x2e1a8bb700000000,
+ 0xcd1d043900000000, 0x531daef500000000, 0xff0f8e2c00000000,
+ 0x610f24e000000000, 0x8208ab6e00000000, 0x1c0801a200000000,
+ 0x0501c4a800000000, 0x9b016e6400000000, 0x7806e1ea00000000,
+ 0xe6064b2600000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757,
+ 0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a,
+ 0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733,
+ 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871,
+ 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70,
+ 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42,
+ 0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5,
+ 0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787,
+ 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086,
+ 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4,
+ 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d,
+ 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0,
+ 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d,
+ 0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f,
+ 0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859,
+ 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b,
+ 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5,
+ 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028,
+ 0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891,
+ 0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed,
+ 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec,
+ 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde,
+ 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817,
+ 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825,
+ 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24,
+ 0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e,
+ 0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7,
+ 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a,
+ 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4,
+ 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196,
+ 0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0,
+ 0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2,
+ 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52,
+ 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f,
+ 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36,
+ 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174,
+ 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675,
+ 0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647,
+ 0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d,
+ 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf,
+ 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be,
+ 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc,
+ 0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645,
+ 0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98,
+ 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138,
+ 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a,
+ 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c,
+ 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e,
+ 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0,
+ 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d,
+ 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194,
+ 0xde0506f1},
+ {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc,
+ 0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f,
+ 0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a,
+ 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29,
+ 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8,
+ 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023,
+ 0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e,
+ 0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065,
+ 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84,
+ 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7,
+ 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922,
+ 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71,
+ 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0,
+ 0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b,
+ 0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816,
+ 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd,
+ 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c,
+ 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f,
+ 0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba,
+ 0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579,
+ 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98,
+ 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873,
+ 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e,
+ 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5,
+ 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134,
+ 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7,
+ 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732,
+ 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461,
+ 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0,
+ 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b,
+ 0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26,
+ 0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd,
+ 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc,
+ 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef,
+ 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a,
+ 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049,
+ 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8,
+ 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43,
+ 0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e,
+ 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5,
+ 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24,
+ 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07,
+ 0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982,
+ 0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1,
+ 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0,
+ 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b,
+ 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576,
+ 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d,
+ 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c,
+ 0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f,
+ 0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda,
+ 0xbe9834ed},
+ {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504,
+ 0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49,
+ 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e,
+ 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192,
+ 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859,
+ 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c,
+ 0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620,
+ 0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265,
+ 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae,
+ 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2,
+ 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175,
+ 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38,
+ 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05,
+ 0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40,
+ 0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f,
+ 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca,
+ 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850,
+ 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d,
+ 0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da,
+ 0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864,
+ 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af,
+ 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea,
+ 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74,
+ 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31,
+ 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa,
+ 0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a,
+ 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd,
+ 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180,
+ 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a,
+ 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f,
+ 0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290,
+ 0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5,
+ 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed,
+ 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0,
+ 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167,
+ 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b,
+ 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0,
+ 0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5,
+ 0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc,
+ 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189,
+ 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842,
+ 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e,
+ 0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299,
+ 0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4,
+ 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec,
+ 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9,
+ 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66,
+ 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23,
+ 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9,
+ 0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4,
+ 0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33,
+ 0x9324fd72},
+ {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+ 0x2d02ef8d}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07,
+ 0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79,
+ 0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7,
+ 0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84,
+ 0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13,
+ 0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663,
+ 0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5,
+ 0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5,
+ 0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832,
+ 0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51,
+ 0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf,
+ 0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1,
+ 0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76,
+ 0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606,
+ 0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996,
+ 0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6,
+ 0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c,
+ 0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712,
+ 0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c,
+ 0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4,
+ 0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943,
+ 0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333,
+ 0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe,
+ 0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce,
+ 0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359,
+ 0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a,
+ 0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04,
+ 0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a,
+ 0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0,
+ 0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580,
+ 0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10,
+ 0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060,
+ 0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1,
+ 0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf,
+ 0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31,
+ 0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852,
+ 0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5,
+ 0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5,
+ 0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75,
+ 0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005,
+ 0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292,
+ 0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1,
+ 0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f,
+ 0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111,
+ 0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0,
+ 0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0,
+ 0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40,
+ 0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530,
+ 0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba,
+ 0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4,
+ 0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a,
+ 0x8def022d},
+ {0x00000000, 0x41311b19, 0x82623632, 0xc3532d2b, 0x04c56c64,
+ 0x45f4777d, 0x86a75a56, 0xc796414f, 0x088ad9c8, 0x49bbc2d1,
+ 0x8ae8effa, 0xcbd9f4e3, 0x0c4fb5ac, 0x4d7eaeb5, 0x8e2d839e,
+ 0xcf1c9887, 0x5112c24a, 0x1023d953, 0xd370f478, 0x9241ef61,
+ 0x55d7ae2e, 0x14e6b537, 0xd7b5981c, 0x96848305, 0x59981b82,
+ 0x18a9009b, 0xdbfa2db0, 0x9acb36a9, 0x5d5d77e6, 0x1c6c6cff,
+ 0xdf3f41d4, 0x9e0e5acd, 0xa2248495, 0xe3159f8c, 0x2046b2a7,
+ 0x6177a9be, 0xa6e1e8f1, 0xe7d0f3e8, 0x2483dec3, 0x65b2c5da,
+ 0xaaae5d5d, 0xeb9f4644, 0x28cc6b6f, 0x69fd7076, 0xae6b3139,
+ 0xef5a2a20, 0x2c09070b, 0x6d381c12, 0xf33646df, 0xb2075dc6,
+ 0x715470ed, 0x30656bf4, 0xf7f32abb, 0xb6c231a2, 0x75911c89,
+ 0x34a00790, 0xfbbc9f17, 0xba8d840e, 0x79dea925, 0x38efb23c,
+ 0xff79f373, 0xbe48e86a, 0x7d1bc541, 0x3c2ade58, 0x054f79f0,
+ 0x447e62e9, 0x872d4fc2, 0xc61c54db, 0x018a1594, 0x40bb0e8d,
+ 0x83e823a6, 0xc2d938bf, 0x0dc5a038, 0x4cf4bb21, 0x8fa7960a,
+ 0xce968d13, 0x0900cc5c, 0x4831d745, 0x8b62fa6e, 0xca53e177,
+ 0x545dbbba, 0x156ca0a3, 0xd63f8d88, 0x970e9691, 0x5098d7de,
+ 0x11a9ccc7, 0xd2fae1ec, 0x93cbfaf5, 0x5cd76272, 0x1de6796b,
+ 0xdeb55440, 0x9f844f59, 0x58120e16, 0x1923150f, 0xda703824,
+ 0x9b41233d, 0xa76bfd65, 0xe65ae67c, 0x2509cb57, 0x6438d04e,
+ 0xa3ae9101, 0xe29f8a18, 0x21cca733, 0x60fdbc2a, 0xafe124ad,
+ 0xeed03fb4, 0x2d83129f, 0x6cb20986, 0xab2448c9, 0xea1553d0,
+ 0x29467efb, 0x687765e2, 0xf6793f2f, 0xb7482436, 0x741b091d,
+ 0x352a1204, 0xf2bc534b, 0xb38d4852, 0x70de6579, 0x31ef7e60,
+ 0xfef3e6e7, 0xbfc2fdfe, 0x7c91d0d5, 0x3da0cbcc, 0xfa368a83,
+ 0xbb07919a, 0x7854bcb1, 0x3965a7a8, 0x4b98833b, 0x0aa99822,
+ 0xc9fab509, 0x88cbae10, 0x4f5def5f, 0x0e6cf446, 0xcd3fd96d,
+ 0x8c0ec274, 0x43125af3, 0x022341ea, 0xc1706cc1, 0x804177d8,
+ 0x47d73697, 0x06e62d8e, 0xc5b500a5, 0x84841bbc, 0x1a8a4171,
+ 0x5bbb5a68, 0x98e87743, 0xd9d96c5a, 0x1e4f2d15, 0x5f7e360c,
+ 0x9c2d1b27, 0xdd1c003e, 0x120098b9, 0x533183a0, 0x9062ae8b,
+ 0xd153b592, 0x16c5f4dd, 0x57f4efc4, 0x94a7c2ef, 0xd596d9f6,
+ 0xe9bc07ae, 0xa88d1cb7, 0x6bde319c, 0x2aef2a85, 0xed796bca,
+ 0xac4870d3, 0x6f1b5df8, 0x2e2a46e1, 0xe136de66, 0xa007c57f,
+ 0x6354e854, 0x2265f34d, 0xe5f3b202, 0xa4c2a91b, 0x67918430,
+ 0x26a09f29, 0xb8aec5e4, 0xf99fdefd, 0x3accf3d6, 0x7bfde8cf,
+ 0xbc6ba980, 0xfd5ab299, 0x3e099fb2, 0x7f3884ab, 0xb0241c2c,
+ 0xf1150735, 0x32462a1e, 0x73773107, 0xb4e17048, 0xf5d06b51,
+ 0x3683467a, 0x77b25d63, 0x4ed7facb, 0x0fe6e1d2, 0xccb5ccf9,
+ 0x8d84d7e0, 0x4a1296af, 0x0b238db6, 0xc870a09d, 0x8941bb84,
+ 0x465d2303, 0x076c381a, 0xc43f1531, 0x850e0e28, 0x42984f67,
+ 0x03a9547e, 0xc0fa7955, 0x81cb624c, 0x1fc53881, 0x5ef42398,
+ 0x9da70eb3, 0xdc9615aa, 0x1b0054e5, 0x5a314ffc, 0x996262d7,
+ 0xd85379ce, 0x174fe149, 0x567efa50, 0x952dd77b, 0xd41ccc62,
+ 0x138a8d2d, 0x52bb9634, 0x91e8bb1f, 0xd0d9a006, 0xecf37e5e,
+ 0xadc26547, 0x6e91486c, 0x2fa05375, 0xe836123a, 0xa9070923,
+ 0x6a542408, 0x2b653f11, 0xe479a796, 0xa548bc8f, 0x661b91a4,
+ 0x272a8abd, 0xe0bccbf2, 0xa18dd0eb, 0x62defdc0, 0x23efe6d9,
+ 0xbde1bc14, 0xfcd0a70d, 0x3f838a26, 0x7eb2913f, 0xb924d070,
+ 0xf815cb69, 0x3b46e642, 0x7a77fd5b, 0xb56b65dc, 0xf45a7ec5,
+ 0x370953ee, 0x763848f7, 0xb1ae09b8, 0xf09f12a1, 0x33cc3f8a,
+ 0x72fd2493},
+ {0x00000000, 0x376ac201, 0x6ed48403, 0x59be4602, 0xdca80907,
+ 0xebc2cb06, 0xb27c8d04, 0x85164f05, 0xb851130e, 0x8f3bd10f,
+ 0xd685970d, 0xe1ef550c, 0x64f91a09, 0x5393d808, 0x0a2d9e0a,
+ 0x3d475c0b, 0x70a3261c, 0x47c9e41d, 0x1e77a21f, 0x291d601e,
+ 0xac0b2f1b, 0x9b61ed1a, 0xc2dfab18, 0xf5b56919, 0xc8f23512,
+ 0xff98f713, 0xa626b111, 0x914c7310, 0x145a3c15, 0x2330fe14,
+ 0x7a8eb816, 0x4de47a17, 0xe0464d38, 0xd72c8f39, 0x8e92c93b,
+ 0xb9f80b3a, 0x3cee443f, 0x0b84863e, 0x523ac03c, 0x6550023d,
+ 0x58175e36, 0x6f7d9c37, 0x36c3da35, 0x01a91834, 0x84bf5731,
+ 0xb3d59530, 0xea6bd332, 0xdd011133, 0x90e56b24, 0xa78fa925,
+ 0xfe31ef27, 0xc95b2d26, 0x4c4d6223, 0x7b27a022, 0x2299e620,
+ 0x15f32421, 0x28b4782a, 0x1fdeba2b, 0x4660fc29, 0x710a3e28,
+ 0xf41c712d, 0xc376b32c, 0x9ac8f52e, 0xada2372f, 0xc08d9a70,
+ 0xf7e75871, 0xae591e73, 0x9933dc72, 0x1c259377, 0x2b4f5176,
+ 0x72f11774, 0x459bd575, 0x78dc897e, 0x4fb64b7f, 0x16080d7d,
+ 0x2162cf7c, 0xa4748079, 0x931e4278, 0xcaa0047a, 0xfdcac67b,
+ 0xb02ebc6c, 0x87447e6d, 0xdefa386f, 0xe990fa6e, 0x6c86b56b,
+ 0x5bec776a, 0x02523168, 0x3538f369, 0x087faf62, 0x3f156d63,
+ 0x66ab2b61, 0x51c1e960, 0xd4d7a665, 0xe3bd6464, 0xba032266,
+ 0x8d69e067, 0x20cbd748, 0x17a11549, 0x4e1f534b, 0x7975914a,
+ 0xfc63de4f, 0xcb091c4e, 0x92b75a4c, 0xa5dd984d, 0x989ac446,
+ 0xaff00647, 0xf64e4045, 0xc1248244, 0x4432cd41, 0x73580f40,
+ 0x2ae64942, 0x1d8c8b43, 0x5068f154, 0x67023355, 0x3ebc7557,
+ 0x09d6b756, 0x8cc0f853, 0xbbaa3a52, 0xe2147c50, 0xd57ebe51,
+ 0xe839e25a, 0xdf53205b, 0x86ed6659, 0xb187a458, 0x3491eb5d,
+ 0x03fb295c, 0x5a456f5e, 0x6d2fad5f, 0x801b35e1, 0xb771f7e0,
+ 0xeecfb1e2, 0xd9a573e3, 0x5cb33ce6, 0x6bd9fee7, 0x3267b8e5,
+ 0x050d7ae4, 0x384a26ef, 0x0f20e4ee, 0x569ea2ec, 0x61f460ed,
+ 0xe4e22fe8, 0xd388ede9, 0x8a36abeb, 0xbd5c69ea, 0xf0b813fd,
+ 0xc7d2d1fc, 0x9e6c97fe, 0xa90655ff, 0x2c101afa, 0x1b7ad8fb,
+ 0x42c49ef9, 0x75ae5cf8, 0x48e900f3, 0x7f83c2f2, 0x263d84f0,
+ 0x115746f1, 0x944109f4, 0xa32bcbf5, 0xfa958df7, 0xcdff4ff6,
+ 0x605d78d9, 0x5737bad8, 0x0e89fcda, 0x39e33edb, 0xbcf571de,
+ 0x8b9fb3df, 0xd221f5dd, 0xe54b37dc, 0xd80c6bd7, 0xef66a9d6,
+ 0xb6d8efd4, 0x81b22dd5, 0x04a462d0, 0x33cea0d1, 0x6a70e6d3,
+ 0x5d1a24d2, 0x10fe5ec5, 0x27949cc4, 0x7e2adac6, 0x494018c7,
+ 0xcc5657c2, 0xfb3c95c3, 0xa282d3c1, 0x95e811c0, 0xa8af4dcb,
+ 0x9fc58fca, 0xc67bc9c8, 0xf1110bc9, 0x740744cc, 0x436d86cd,
+ 0x1ad3c0cf, 0x2db902ce, 0x4096af91, 0x77fc6d90, 0x2e422b92,
+ 0x1928e993, 0x9c3ea696, 0xab546497, 0xf2ea2295, 0xc580e094,
+ 0xf8c7bc9f, 0xcfad7e9e, 0x9613389c, 0xa179fa9d, 0x246fb598,
+ 0x13057799, 0x4abb319b, 0x7dd1f39a, 0x3035898d, 0x075f4b8c,
+ 0x5ee10d8e, 0x698bcf8f, 0xec9d808a, 0xdbf7428b, 0x82490489,
+ 0xb523c688, 0x88649a83, 0xbf0e5882, 0xe6b01e80, 0xd1dadc81,
+ 0x54cc9384, 0x63a65185, 0x3a181787, 0x0d72d586, 0xa0d0e2a9,
+ 0x97ba20a8, 0xce0466aa, 0xf96ea4ab, 0x7c78ebae, 0x4b1229af,
+ 0x12ac6fad, 0x25c6adac, 0x1881f1a7, 0x2feb33a6, 0x765575a4,
+ 0x413fb7a5, 0xc429f8a0, 0xf3433aa1, 0xaafd7ca3, 0x9d97bea2,
+ 0xd073c4b5, 0xe71906b4, 0xbea740b6, 0x89cd82b7, 0x0cdbcdb2,
+ 0x3bb10fb3, 0x620f49b1, 0x55658bb0, 0x6822d7bb, 0x5f4815ba,
+ 0x06f653b8, 0x319c91b9, 0xb48adebc, 0x83e01cbd, 0xda5e5abf,
+ 0xed3498be},
+ {0x00000000, 0x6567bcb8, 0x8bc809aa, 0xeeafb512, 0x5797628f,
+ 0x32f0de37, 0xdc5f6b25, 0xb938d79d, 0xef28b4c5, 0x8a4f087d,
+ 0x64e0bd6f, 0x018701d7, 0xb8bfd64a, 0xddd86af2, 0x3377dfe0,
+ 0x56106358, 0x9f571950, 0xfa30a5e8, 0x149f10fa, 0x71f8ac42,
+ 0xc8c07bdf, 0xada7c767, 0x43087275, 0x266fcecd, 0x707fad95,
+ 0x1518112d, 0xfbb7a43f, 0x9ed01887, 0x27e8cf1a, 0x428f73a2,
+ 0xac20c6b0, 0xc9477a08, 0x3eaf32a0, 0x5bc88e18, 0xb5673b0a,
+ 0xd00087b2, 0x6938502f, 0x0c5fec97, 0xe2f05985, 0x8797e53d,
+ 0xd1878665, 0xb4e03add, 0x5a4f8fcf, 0x3f283377, 0x8610e4ea,
+ 0xe3775852, 0x0dd8ed40, 0x68bf51f8, 0xa1f82bf0, 0xc49f9748,
+ 0x2a30225a, 0x4f579ee2, 0xf66f497f, 0x9308f5c7, 0x7da740d5,
+ 0x18c0fc6d, 0x4ed09f35, 0x2bb7238d, 0xc518969f, 0xa07f2a27,
+ 0x1947fdba, 0x7c204102, 0x928ff410, 0xf7e848a8, 0x3d58149b,
+ 0x583fa823, 0xb6901d31, 0xd3f7a189, 0x6acf7614, 0x0fa8caac,
+ 0xe1077fbe, 0x8460c306, 0xd270a05e, 0xb7171ce6, 0x59b8a9f4,
+ 0x3cdf154c, 0x85e7c2d1, 0xe0807e69, 0x0e2fcb7b, 0x6b4877c3,
+ 0xa20f0dcb, 0xc768b173, 0x29c70461, 0x4ca0b8d9, 0xf5986f44,
+ 0x90ffd3fc, 0x7e5066ee, 0x1b37da56, 0x4d27b90e, 0x284005b6,
+ 0xc6efb0a4, 0xa3880c1c, 0x1ab0db81, 0x7fd76739, 0x9178d22b,
+ 0xf41f6e93, 0x03f7263b, 0x66909a83, 0x883f2f91, 0xed589329,
+ 0x546044b4, 0x3107f80c, 0xdfa84d1e, 0xbacff1a6, 0xecdf92fe,
+ 0x89b82e46, 0x67179b54, 0x027027ec, 0xbb48f071, 0xde2f4cc9,
+ 0x3080f9db, 0x55e74563, 0x9ca03f6b, 0xf9c783d3, 0x176836c1,
+ 0x720f8a79, 0xcb375de4, 0xae50e15c, 0x40ff544e, 0x2598e8f6,
+ 0x73888bae, 0x16ef3716, 0xf8408204, 0x9d273ebc, 0x241fe921,
+ 0x41785599, 0xafd7e08b, 0xcab05c33, 0x3bb659ed, 0x5ed1e555,
+ 0xb07e5047, 0xd519ecff, 0x6c213b62, 0x094687da, 0xe7e932c8,
+ 0x828e8e70, 0xd49eed28, 0xb1f95190, 0x5f56e482, 0x3a31583a,
+ 0x83098fa7, 0xe66e331f, 0x08c1860d, 0x6da63ab5, 0xa4e140bd,
+ 0xc186fc05, 0x2f294917, 0x4a4ef5af, 0xf3762232, 0x96119e8a,
+ 0x78be2b98, 0x1dd99720, 0x4bc9f478, 0x2eae48c0, 0xc001fdd2,
+ 0xa566416a, 0x1c5e96f7, 0x79392a4f, 0x97969f5d, 0xf2f123e5,
+ 0x05196b4d, 0x607ed7f5, 0x8ed162e7, 0xebb6de5f, 0x528e09c2,
+ 0x37e9b57a, 0xd9460068, 0xbc21bcd0, 0xea31df88, 0x8f566330,
+ 0x61f9d622, 0x049e6a9a, 0xbda6bd07, 0xd8c101bf, 0x366eb4ad,
+ 0x53090815, 0x9a4e721d, 0xff29cea5, 0x11867bb7, 0x74e1c70f,
+ 0xcdd91092, 0xa8beac2a, 0x46111938, 0x2376a580, 0x7566c6d8,
+ 0x10017a60, 0xfeaecf72, 0x9bc973ca, 0x22f1a457, 0x479618ef,
+ 0xa939adfd, 0xcc5e1145, 0x06ee4d76, 0x6389f1ce, 0x8d2644dc,
+ 0xe841f864, 0x51792ff9, 0x341e9341, 0xdab12653, 0xbfd69aeb,
+ 0xe9c6f9b3, 0x8ca1450b, 0x620ef019, 0x07694ca1, 0xbe519b3c,
+ 0xdb362784, 0x35999296, 0x50fe2e2e, 0x99b95426, 0xfcdee89e,
+ 0x12715d8c, 0x7716e134, 0xce2e36a9, 0xab498a11, 0x45e63f03,
+ 0x208183bb, 0x7691e0e3, 0x13f65c5b, 0xfd59e949, 0x983e55f1,
+ 0x2106826c, 0x44613ed4, 0xaace8bc6, 0xcfa9377e, 0x38417fd6,
+ 0x5d26c36e, 0xb389767c, 0xd6eecac4, 0x6fd61d59, 0x0ab1a1e1,
+ 0xe41e14f3, 0x8179a84b, 0xd769cb13, 0xb20e77ab, 0x5ca1c2b9,
+ 0x39c67e01, 0x80fea99c, 0xe5991524, 0x0b36a036, 0x6e511c8e,
+ 0xa7166686, 0xc271da3e, 0x2cde6f2c, 0x49b9d394, 0xf0810409,
+ 0x95e6b8b1, 0x7b490da3, 0x1e2eb11b, 0x483ed243, 0x2d596efb,
+ 0xc3f6dbe9, 0xa6916751, 0x1fa9b0cc, 0x7ace0c74, 0x9461b966,
+ 0xf10605de}};
+
+#endif
+
+#endif
+
+#if N == 2
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87,
+ 0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede,
+ 0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab,
+ 0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c,
+ 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1,
+ 0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7,
+ 0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e,
+ 0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308,
+ 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5,
+ 0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472,
+ 0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07,
+ 0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e,
+ 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa,
+ 0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec,
+ 0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6,
+ 0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0,
+ 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3,
+ 0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba,
+ 0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf,
+ 0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975,
+ 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8,
+ 0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde,
+ 0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a,
+ 0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c,
+ 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1,
+ 0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65,
+ 0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410,
+ 0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649,
+ 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a,
+ 0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c,
+ 0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946,
+ 0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450,
+ 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e,
+ 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857,
+ 0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022,
+ 0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5,
+ 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758,
+ 0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e,
+ 0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d,
+ 0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b,
+ 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6,
+ 0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401,
+ 0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74,
+ 0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d,
+ 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073,
+ 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65,
+ 0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f,
+ 0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749,
+ 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a,
+ 0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033,
+ 0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846,
+ 0x0d7139d7},
+ {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563,
+ 0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f,
+ 0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875,
+ 0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536,
+ 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8,
+ 0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43,
+ 0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f,
+ 0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184,
+ 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a,
+ 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39,
+ 0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523,
+ 0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f,
+ 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d,
+ 0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6,
+ 0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b,
+ 0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0,
+ 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151,
+ 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d,
+ 0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47,
+ 0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a,
+ 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964,
+ 0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef,
+ 0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d,
+ 0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6,
+ 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348,
+ 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53,
+ 0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449,
+ 0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645,
+ 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4,
+ 0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f,
+ 0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2,
+ 0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69,
+ 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46,
+ 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a,
+ 0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650,
+ 0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13,
+ 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded,
+ 0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366,
+ 0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57,
+ 0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc,
+ 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222,
+ 0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61,
+ 0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b,
+ 0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277,
+ 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558,
+ 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3,
+ 0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e,
+ 0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5,
+ 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74,
+ 0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78,
+ 0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262,
+ 0x1c53e98a},
+ {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b,
+ 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40,
+ 0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580,
+ 0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7,
+ 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a,
+ 0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37,
+ 0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75,
+ 0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218,
+ 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5,
+ 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2,
+ 0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02,
+ 0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59,
+ 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1,
+ 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c,
+ 0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a,
+ 0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307,
+ 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486,
+ 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd,
+ 0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d,
+ 0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2,
+ 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f,
+ 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72,
+ 0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8,
+ 0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985,
+ 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268,
+ 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94,
+ 0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454,
+ 0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f,
+ 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e,
+ 0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3,
+ 0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915,
+ 0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778,
+ 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821,
+ 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a,
+ 0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba,
+ 0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d,
+ 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560,
+ 0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d,
+ 0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe,
+ 0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3,
+ 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e,
+ 0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509,
+ 0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9,
+ 0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92,
+ 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb,
+ 0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6,
+ 0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50,
+ 0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d,
+ 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc,
+ 0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7,
+ 0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927,
+ 0x3f88e851},
+ {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96,
+ 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8,
+ 0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0,
+ 0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14,
+ 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7,
+ 0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4,
+ 0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe,
+ 0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad,
+ 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e,
+ 0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa,
+ 0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2,
+ 0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c,
+ 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab,
+ 0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8,
+ 0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d,
+ 0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e,
+ 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7,
+ 0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99,
+ 0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1,
+ 0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690,
+ 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933,
+ 0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20,
+ 0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf,
+ 0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc,
+ 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f,
+ 0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92,
+ 0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca,
+ 0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4,
+ 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd,
+ 0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de,
+ 0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb,
+ 0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8,
+ 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474,
+ 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a,
+ 0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252,
+ 0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6,
+ 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55,
+ 0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846,
+ 0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7,
+ 0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4,
+ 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47,
+ 0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3,
+ 0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb,
+ 0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5,
+ 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49,
+ 0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a,
+ 0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f,
+ 0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c,
+ 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305,
+ 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b,
+ 0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523,
+ 0x3dee8ca6},
+ {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f,
+ 0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91,
+ 0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e,
+ 0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c,
+ 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02,
+ 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12,
+ 0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567,
+ 0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277,
+ 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679,
+ 0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b,
+ 0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4,
+ 0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a,
+ 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0,
+ 0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0,
+ 0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91,
+ 0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881,
+ 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173,
+ 0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d,
+ 0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912,
+ 0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8,
+ 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6,
+ 0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6,
+ 0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b,
+ 0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b,
+ 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75,
+ 0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f,
+ 0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00,
+ 0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee,
+ 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c,
+ 0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c,
+ 0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d,
+ 0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d,
+ 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67,
+ 0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89,
+ 0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706,
+ 0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14,
+ 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a,
+ 0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a,
+ 0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f,
+ 0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f,
+ 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591,
+ 0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983,
+ 0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c,
+ 0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2,
+ 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8,
+ 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8,
+ 0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89,
+ 0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99,
+ 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b,
+ 0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485,
+ 0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a,
+ 0x36197165},
+ {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382,
+ 0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85,
+ 0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06,
+ 0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca,
+ 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e,
+ 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc,
+ 0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616,
+ 0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54,
+ 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10,
+ 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc,
+ 0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f,
+ 0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58,
+ 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef,
+ 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad,
+ 0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b,
+ 0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29,
+ 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6,
+ 0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1,
+ 0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622,
+ 0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039,
+ 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d,
+ 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f,
+ 0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32,
+ 0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770,
+ 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034,
+ 0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f,
+ 0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc,
+ 0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db,
+ 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154,
+ 0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16,
+ 0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0,
+ 0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592,
+ 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca,
+ 0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd,
+ 0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e,
+ 0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882,
+ 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6,
+ 0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384,
+ 0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1,
+ 0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3,
+ 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7,
+ 0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b,
+ 0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8,
+ 0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff,
+ 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7,
+ 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5,
+ 0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23,
+ 0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761,
+ 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee,
+ 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9,
+ 0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a,
+ 0x1a3b93aa},
+ {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a,
+ 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca,
+ 0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3,
+ 0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb,
+ 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c,
+ 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58,
+ 0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed,
+ 0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9,
+ 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e,
+ 0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906,
+ 0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f,
+ 0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf,
+ 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0,
+ 0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4,
+ 0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769,
+ 0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d,
+ 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632,
+ 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82,
+ 0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb,
+ 0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73,
+ 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484,
+ 0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0,
+ 0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5,
+ 0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1,
+ 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516,
+ 0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f,
+ 0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946,
+ 0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6,
+ 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9,
+ 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad,
+ 0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820,
+ 0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364,
+ 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab,
+ 0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b,
+ 0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62,
+ 0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a,
+ 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd,
+ 0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089,
+ 0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c,
+ 0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8,
+ 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f,
+ 0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477,
+ 0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e,
+ 0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be,
+ 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71,
+ 0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635,
+ 0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8,
+ 0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc,
+ 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3,
+ 0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753,
+ 0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a,
+ 0xe147d714},
+ {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c,
+ 0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b,
+ 0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92,
+ 0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4,
+ 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069,
+ 0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526,
+ 0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25,
+ 0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a,
+ 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7,
+ 0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491,
+ 0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958,
+ 0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f,
+ 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307,
+ 0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648,
+ 0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999,
+ 0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6,
+ 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a,
+ 0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d,
+ 0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4,
+ 0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61,
+ 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc,
+ 0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3,
+ 0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53,
+ 0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c,
+ 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1,
+ 0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c,
+ 0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5,
+ 0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92,
+ 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e,
+ 0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771,
+ 0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0,
+ 0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def,
+ 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0,
+ 0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7,
+ 0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e,
+ 0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58,
+ 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285,
+ 0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca,
+ 0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce,
+ 0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81,
+ 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c,
+ 0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a,
+ 0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3,
+ 0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4,
+ 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb,
+ 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4,
+ 0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75,
+ 0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a,
+ 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296,
+ 0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1,
+ 0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808,
+ 0x494f0c4b}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0x43147b1700000000, 0x8628f62e00000000,
+ 0xc53c8d3900000000, 0x0c51ec5d00000000, 0x4f45974a00000000,
+ 0x8a791a7300000000, 0xc96d616400000000, 0x18a2d8bb00000000,
+ 0x5bb6a3ac00000000, 0x9e8a2e9500000000, 0xdd9e558200000000,
+ 0x14f334e600000000, 0x57e74ff100000000, 0x92dbc2c800000000,
+ 0xd1cfb9df00000000, 0x7142c0ac00000000, 0x3256bbbb00000000,
+ 0xf76a368200000000, 0xb47e4d9500000000, 0x7d132cf100000000,
+ 0x3e0757e600000000, 0xfb3bdadf00000000, 0xb82fa1c800000000,
+ 0x69e0181700000000, 0x2af4630000000000, 0xefc8ee3900000000,
+ 0xacdc952e00000000, 0x65b1f44a00000000, 0x26a58f5d00000000,
+ 0xe399026400000000, 0xa08d797300000000, 0xa382f18200000000,
+ 0xe0968a9500000000, 0x25aa07ac00000000, 0x66be7cbb00000000,
+ 0xafd31ddf00000000, 0xecc766c800000000, 0x29fbebf100000000,
+ 0x6aef90e600000000, 0xbb20293900000000, 0xf834522e00000000,
+ 0x3d08df1700000000, 0x7e1ca40000000000, 0xb771c56400000000,
+ 0xf465be7300000000, 0x3159334a00000000, 0x724d485d00000000,
+ 0xd2c0312e00000000, 0x91d44a3900000000, 0x54e8c70000000000,
+ 0x17fcbc1700000000, 0xde91dd7300000000, 0x9d85a66400000000,
+ 0x58b92b5d00000000, 0x1bad504a00000000, 0xca62e99500000000,
+ 0x8976928200000000, 0x4c4a1fbb00000000, 0x0f5e64ac00000000,
+ 0xc63305c800000000, 0x85277edf00000000, 0x401bf3e600000000,
+ 0x030f88f100000000, 0x070392de00000000, 0x4417e9c900000000,
+ 0x812b64f000000000, 0xc23f1fe700000000, 0x0b527e8300000000,
+ 0x4846059400000000, 0x8d7a88ad00000000, 0xce6ef3ba00000000,
+ 0x1fa14a6500000000, 0x5cb5317200000000, 0x9989bc4b00000000,
+ 0xda9dc75c00000000, 0x13f0a63800000000, 0x50e4dd2f00000000,
+ 0x95d8501600000000, 0xd6cc2b0100000000, 0x7641527200000000,
+ 0x3555296500000000, 0xf069a45c00000000, 0xb37ddf4b00000000,
+ 0x7a10be2f00000000, 0x3904c53800000000, 0xfc38480100000000,
+ 0xbf2c331600000000, 0x6ee38ac900000000, 0x2df7f1de00000000,
+ 0xe8cb7ce700000000, 0xabdf07f000000000, 0x62b2669400000000,
+ 0x21a61d8300000000, 0xe49a90ba00000000, 0xa78eebad00000000,
+ 0xa481635c00000000, 0xe795184b00000000, 0x22a9957200000000,
+ 0x61bdee6500000000, 0xa8d08f0100000000, 0xebc4f41600000000,
+ 0x2ef8792f00000000, 0x6dec023800000000, 0xbc23bbe700000000,
+ 0xff37c0f000000000, 0x3a0b4dc900000000, 0x791f36de00000000,
+ 0xb07257ba00000000, 0xf3662cad00000000, 0x365aa19400000000,
+ 0x754eda8300000000, 0xd5c3a3f000000000, 0x96d7d8e700000000,
+ 0x53eb55de00000000, 0x10ff2ec900000000, 0xd9924fad00000000,
+ 0x9a8634ba00000000, 0x5fbab98300000000, 0x1caec29400000000,
+ 0xcd617b4b00000000, 0x8e75005c00000000, 0x4b498d6500000000,
+ 0x085df67200000000, 0xc130971600000000, 0x8224ec0100000000,
+ 0x4718613800000000, 0x040c1a2f00000000, 0x4f00556600000000,
+ 0x0c142e7100000000, 0xc928a34800000000, 0x8a3cd85f00000000,
+ 0x4351b93b00000000, 0x0045c22c00000000, 0xc5794f1500000000,
+ 0x866d340200000000, 0x57a28ddd00000000, 0x14b6f6ca00000000,
+ 0xd18a7bf300000000, 0x929e00e400000000, 0x5bf3618000000000,
+ 0x18e71a9700000000, 0xdddb97ae00000000, 0x9ecfecb900000000,
+ 0x3e4295ca00000000, 0x7d56eedd00000000, 0xb86a63e400000000,
+ 0xfb7e18f300000000, 0x3213799700000000, 0x7107028000000000,
+ 0xb43b8fb900000000, 0xf72ff4ae00000000, 0x26e04d7100000000,
+ 0x65f4366600000000, 0xa0c8bb5f00000000, 0xe3dcc04800000000,
+ 0x2ab1a12c00000000, 0x69a5da3b00000000, 0xac99570200000000,
+ 0xef8d2c1500000000, 0xec82a4e400000000, 0xaf96dff300000000,
+ 0x6aaa52ca00000000, 0x29be29dd00000000, 0xe0d348b900000000,
+ 0xa3c733ae00000000, 0x66fbbe9700000000, 0x25efc58000000000,
+ 0xf4207c5f00000000, 0xb734074800000000, 0x72088a7100000000,
+ 0x311cf16600000000, 0xf871900200000000, 0xbb65eb1500000000,
+ 0x7e59662c00000000, 0x3d4d1d3b00000000, 0x9dc0644800000000,
+ 0xded41f5f00000000, 0x1be8926600000000, 0x58fce97100000000,
+ 0x9191881500000000, 0xd285f30200000000, 0x17b97e3b00000000,
+ 0x54ad052c00000000, 0x8562bcf300000000, 0xc676c7e400000000,
+ 0x034a4add00000000, 0x405e31ca00000000, 0x893350ae00000000,
+ 0xca272bb900000000, 0x0f1ba68000000000, 0x4c0fdd9700000000,
+ 0x4803c7b800000000, 0x0b17bcaf00000000, 0xce2b319600000000,
+ 0x8d3f4a8100000000, 0x44522be500000000, 0x074650f200000000,
+ 0xc27addcb00000000, 0x816ea6dc00000000, 0x50a11f0300000000,
+ 0x13b5641400000000, 0xd689e92d00000000, 0x959d923a00000000,
+ 0x5cf0f35e00000000, 0x1fe4884900000000, 0xdad8057000000000,
+ 0x99cc7e6700000000, 0x3941071400000000, 0x7a557c0300000000,
+ 0xbf69f13a00000000, 0xfc7d8a2d00000000, 0x3510eb4900000000,
+ 0x7604905e00000000, 0xb3381d6700000000, 0xf02c667000000000,
+ 0x21e3dfaf00000000, 0x62f7a4b800000000, 0xa7cb298100000000,
+ 0xe4df529600000000, 0x2db233f200000000, 0x6ea648e500000000,
+ 0xab9ac5dc00000000, 0xe88ebecb00000000, 0xeb81363a00000000,
+ 0xa8954d2d00000000, 0x6da9c01400000000, 0x2ebdbb0300000000,
+ 0xe7d0da6700000000, 0xa4c4a17000000000, 0x61f82c4900000000,
+ 0x22ec575e00000000, 0xf323ee8100000000, 0xb037959600000000,
+ 0x750b18af00000000, 0x361f63b800000000, 0xff7202dc00000000,
+ 0xbc6679cb00000000, 0x795af4f200000000, 0x3a4e8fe500000000,
+ 0x9ac3f69600000000, 0xd9d78d8100000000, 0x1ceb00b800000000,
+ 0x5fff7baf00000000, 0x96921acb00000000, 0xd58661dc00000000,
+ 0x10baece500000000, 0x53ae97f200000000, 0x82612e2d00000000,
+ 0xc175553a00000000, 0x0449d80300000000, 0x475da31400000000,
+ 0x8e30c27000000000, 0xcd24b96700000000, 0x0818345e00000000,
+ 0x4b0c4f4900000000},
+ {0x0000000000000000, 0x3e6bc2ef00000000, 0x3dd0f50400000000,
+ 0x03bb37eb00000000, 0x7aa0eb0900000000, 0x44cb29e600000000,
+ 0x47701e0d00000000, 0x791bdce200000000, 0xf440d71300000000,
+ 0xca2b15fc00000000, 0xc990221700000000, 0xf7fbe0f800000000,
+ 0x8ee03c1a00000000, 0xb08bfef500000000, 0xb330c91e00000000,
+ 0x8d5b0bf100000000, 0xe881ae2700000000, 0xd6ea6cc800000000,
+ 0xd5515b2300000000, 0xeb3a99cc00000000, 0x9221452e00000000,
+ 0xac4a87c100000000, 0xaff1b02a00000000, 0x919a72c500000000,
+ 0x1cc1793400000000, 0x22aabbdb00000000, 0x21118c3000000000,
+ 0x1f7a4edf00000000, 0x6661923d00000000, 0x580a50d200000000,
+ 0x5bb1673900000000, 0x65daa5d600000000, 0xd0035d4f00000000,
+ 0xee689fa000000000, 0xedd3a84b00000000, 0xd3b86aa400000000,
+ 0xaaa3b64600000000, 0x94c874a900000000, 0x9773434200000000,
+ 0xa91881ad00000000, 0x24438a5c00000000, 0x1a2848b300000000,
+ 0x19937f5800000000, 0x27f8bdb700000000, 0x5ee3615500000000,
+ 0x6088a3ba00000000, 0x6333945100000000, 0x5d5856be00000000,
+ 0x3882f36800000000, 0x06e9318700000000, 0x0552066c00000000,
+ 0x3b39c48300000000, 0x4222186100000000, 0x7c49da8e00000000,
+ 0x7ff2ed6500000000, 0x41992f8a00000000, 0xccc2247b00000000,
+ 0xf2a9e69400000000, 0xf112d17f00000000, 0xcf79139000000000,
+ 0xb662cf7200000000, 0x88090d9d00000000, 0x8bb23a7600000000,
+ 0xb5d9f89900000000, 0xa007ba9e00000000, 0x9e6c787100000000,
+ 0x9dd74f9a00000000, 0xa3bc8d7500000000, 0xdaa7519700000000,
+ 0xe4cc937800000000, 0xe777a49300000000, 0xd91c667c00000000,
+ 0x54476d8d00000000, 0x6a2caf6200000000, 0x6997988900000000,
+ 0x57fc5a6600000000, 0x2ee7868400000000, 0x108c446b00000000,
+ 0x1337738000000000, 0x2d5cb16f00000000, 0x488614b900000000,
+ 0x76edd65600000000, 0x7556e1bd00000000, 0x4b3d235200000000,
+ 0x3226ffb000000000, 0x0c4d3d5f00000000, 0x0ff60ab400000000,
+ 0x319dc85b00000000, 0xbcc6c3aa00000000, 0x82ad014500000000,
+ 0x811636ae00000000, 0xbf7df44100000000, 0xc66628a300000000,
+ 0xf80dea4c00000000, 0xfbb6dda700000000, 0xc5dd1f4800000000,
+ 0x7004e7d100000000, 0x4e6f253e00000000, 0x4dd412d500000000,
+ 0x73bfd03a00000000, 0x0aa40cd800000000, 0x34cfce3700000000,
+ 0x3774f9dc00000000, 0x091f3b3300000000, 0x844430c200000000,
+ 0xba2ff22d00000000, 0xb994c5c600000000, 0x87ff072900000000,
+ 0xfee4dbcb00000000, 0xc08f192400000000, 0xc3342ecf00000000,
+ 0xfd5fec2000000000, 0x988549f600000000, 0xa6ee8b1900000000,
+ 0xa555bcf200000000, 0x9b3e7e1d00000000, 0xe225a2ff00000000,
+ 0xdc4e601000000000, 0xdff557fb00000000, 0xe19e951400000000,
+ 0x6cc59ee500000000, 0x52ae5c0a00000000, 0x51156be100000000,
+ 0x6f7ea90e00000000, 0x166575ec00000000, 0x280eb70300000000,
+ 0x2bb580e800000000, 0x15de420700000000, 0x010905e600000000,
+ 0x3f62c70900000000, 0x3cd9f0e200000000, 0x02b2320d00000000,
+ 0x7ba9eeef00000000, 0x45c22c0000000000, 0x46791beb00000000,
+ 0x7812d90400000000, 0xf549d2f500000000, 0xcb22101a00000000,
+ 0xc89927f100000000, 0xf6f2e51e00000000, 0x8fe939fc00000000,
+ 0xb182fb1300000000, 0xb239ccf800000000, 0x8c520e1700000000,
+ 0xe988abc100000000, 0xd7e3692e00000000, 0xd4585ec500000000,
+ 0xea339c2a00000000, 0x932840c800000000, 0xad43822700000000,
+ 0xaef8b5cc00000000, 0x9093772300000000, 0x1dc87cd200000000,
+ 0x23a3be3d00000000, 0x201889d600000000, 0x1e734b3900000000,
+ 0x676897db00000000, 0x5903553400000000, 0x5ab862df00000000,
+ 0x64d3a03000000000, 0xd10a58a900000000, 0xef619a4600000000,
+ 0xecdaadad00000000, 0xd2b16f4200000000, 0xabaab3a000000000,
+ 0x95c1714f00000000, 0x967a46a400000000, 0xa811844b00000000,
+ 0x254a8fba00000000, 0x1b214d5500000000, 0x189a7abe00000000,
+ 0x26f1b85100000000, 0x5fea64b300000000, 0x6181a65c00000000,
+ 0x623a91b700000000, 0x5c51535800000000, 0x398bf68e00000000,
+ 0x07e0346100000000, 0x045b038a00000000, 0x3a30c16500000000,
+ 0x432b1d8700000000, 0x7d40df6800000000, 0x7efbe88300000000,
+ 0x40902a6c00000000, 0xcdcb219d00000000, 0xf3a0e37200000000,
+ 0xf01bd49900000000, 0xce70167600000000, 0xb76bca9400000000,
+ 0x8900087b00000000, 0x8abb3f9000000000, 0xb4d0fd7f00000000,
+ 0xa10ebf7800000000, 0x9f657d9700000000, 0x9cde4a7c00000000,
+ 0xa2b5889300000000, 0xdbae547100000000, 0xe5c5969e00000000,
+ 0xe67ea17500000000, 0xd815639a00000000, 0x554e686b00000000,
+ 0x6b25aa8400000000, 0x689e9d6f00000000, 0x56f55f8000000000,
+ 0x2fee836200000000, 0x1185418d00000000, 0x123e766600000000,
+ 0x2c55b48900000000, 0x498f115f00000000, 0x77e4d3b000000000,
+ 0x745fe45b00000000, 0x4a3426b400000000, 0x332ffa5600000000,
+ 0x0d4438b900000000, 0x0eff0f5200000000, 0x3094cdbd00000000,
+ 0xbdcfc64c00000000, 0x83a404a300000000, 0x801f334800000000,
+ 0xbe74f1a700000000, 0xc76f2d4500000000, 0xf904efaa00000000,
+ 0xfabfd84100000000, 0xc4d41aae00000000, 0x710de23700000000,
+ 0x4f6620d800000000, 0x4cdd173300000000, 0x72b6d5dc00000000,
+ 0x0bad093e00000000, 0x35c6cbd100000000, 0x367dfc3a00000000,
+ 0x08163ed500000000, 0x854d352400000000, 0xbb26f7cb00000000,
+ 0xb89dc02000000000, 0x86f602cf00000000, 0xffedde2d00000000,
+ 0xc1861cc200000000, 0xc23d2b2900000000, 0xfc56e9c600000000,
+ 0x998c4c1000000000, 0xa7e78eff00000000, 0xa45cb91400000000,
+ 0x9a377bfb00000000, 0xe32ca71900000000, 0xdd4765f600000000,
+ 0xdefc521d00000000, 0xe09790f200000000, 0x6dcc9b0300000000,
+ 0x53a759ec00000000, 0x501c6e0700000000, 0x6e77ace800000000,
+ 0x176c700a00000000, 0x2907b2e500000000, 0x2abc850e00000000,
+ 0x14d747e100000000},
+ {0x0000000000000000, 0xc0df8ec100000000, 0xc1b96c5800000000,
+ 0x0166e29900000000, 0x8273d9b000000000, 0x42ac577100000000,
+ 0x43cab5e800000000, 0x83153b2900000000, 0x45e1c3ba00000000,
+ 0x853e4d7b00000000, 0x8458afe200000000, 0x4487212300000000,
+ 0xc7921a0a00000000, 0x074d94cb00000000, 0x062b765200000000,
+ 0xc6f4f89300000000, 0xcbc4f6ae00000000, 0x0b1b786f00000000,
+ 0x0a7d9af600000000, 0xcaa2143700000000, 0x49b72f1e00000000,
+ 0x8968a1df00000000, 0x880e434600000000, 0x48d1cd8700000000,
+ 0x8e25351400000000, 0x4efabbd500000000, 0x4f9c594c00000000,
+ 0x8f43d78d00000000, 0x0c56eca400000000, 0xcc89626500000000,
+ 0xcdef80fc00000000, 0x0d300e3d00000000, 0xd78f9c8600000000,
+ 0x1750124700000000, 0x1636f0de00000000, 0xd6e97e1f00000000,
+ 0x55fc453600000000, 0x9523cbf700000000, 0x9445296e00000000,
+ 0x549aa7af00000000, 0x926e5f3c00000000, 0x52b1d1fd00000000,
+ 0x53d7336400000000, 0x9308bda500000000, 0x101d868c00000000,
+ 0xd0c2084d00000000, 0xd1a4ead400000000, 0x117b641500000000,
+ 0x1c4b6a2800000000, 0xdc94e4e900000000, 0xddf2067000000000,
+ 0x1d2d88b100000000, 0x9e38b39800000000, 0x5ee73d5900000000,
+ 0x5f81dfc000000000, 0x9f5e510100000000, 0x59aaa99200000000,
+ 0x9975275300000000, 0x9813c5ca00000000, 0x58cc4b0b00000000,
+ 0xdbd9702200000000, 0x1b06fee300000000, 0x1a601c7a00000000,
+ 0xdabf92bb00000000, 0xef1948d600000000, 0x2fc6c61700000000,
+ 0x2ea0248e00000000, 0xee7faa4f00000000, 0x6d6a916600000000,
+ 0xadb51fa700000000, 0xacd3fd3e00000000, 0x6c0c73ff00000000,
+ 0xaaf88b6c00000000, 0x6a2705ad00000000, 0x6b41e73400000000,
+ 0xab9e69f500000000, 0x288b52dc00000000, 0xe854dc1d00000000,
+ 0xe9323e8400000000, 0x29edb04500000000, 0x24ddbe7800000000,
+ 0xe40230b900000000, 0xe564d22000000000, 0x25bb5ce100000000,
+ 0xa6ae67c800000000, 0x6671e90900000000, 0x67170b9000000000,
+ 0xa7c8855100000000, 0x613c7dc200000000, 0xa1e3f30300000000,
+ 0xa085119a00000000, 0x605a9f5b00000000, 0xe34fa47200000000,
+ 0x23902ab300000000, 0x22f6c82a00000000, 0xe22946eb00000000,
+ 0x3896d45000000000, 0xf8495a9100000000, 0xf92fb80800000000,
+ 0x39f036c900000000, 0xbae50de000000000, 0x7a3a832100000000,
+ 0x7b5c61b800000000, 0xbb83ef7900000000, 0x7d7717ea00000000,
+ 0xbda8992b00000000, 0xbcce7bb200000000, 0x7c11f57300000000,
+ 0xff04ce5a00000000, 0x3fdb409b00000000, 0x3ebda20200000000,
+ 0xfe622cc300000000, 0xf35222fe00000000, 0x338dac3f00000000,
+ 0x32eb4ea600000000, 0xf234c06700000000, 0x7121fb4e00000000,
+ 0xb1fe758f00000000, 0xb098971600000000, 0x704719d700000000,
+ 0xb6b3e14400000000, 0x766c6f8500000000, 0x770a8d1c00000000,
+ 0xb7d503dd00000000, 0x34c038f400000000, 0xf41fb63500000000,
+ 0xf57954ac00000000, 0x35a6da6d00000000, 0x9f35e17700000000,
+ 0x5fea6fb600000000, 0x5e8c8d2f00000000, 0x9e5303ee00000000,
+ 0x1d4638c700000000, 0xdd99b60600000000, 0xdcff549f00000000,
+ 0x1c20da5e00000000, 0xdad422cd00000000, 0x1a0bac0c00000000,
+ 0x1b6d4e9500000000, 0xdbb2c05400000000, 0x58a7fb7d00000000,
+ 0x987875bc00000000, 0x991e972500000000, 0x59c119e400000000,
+ 0x54f117d900000000, 0x942e991800000000, 0x95487b8100000000,
+ 0x5597f54000000000, 0xd682ce6900000000, 0x165d40a800000000,
+ 0x173ba23100000000, 0xd7e42cf000000000, 0x1110d46300000000,
+ 0xd1cf5aa200000000, 0xd0a9b83b00000000, 0x107636fa00000000,
+ 0x93630dd300000000, 0x53bc831200000000, 0x52da618b00000000,
+ 0x9205ef4a00000000, 0x48ba7df100000000, 0x8865f33000000000,
+ 0x890311a900000000, 0x49dc9f6800000000, 0xcac9a44100000000,
+ 0x0a162a8000000000, 0x0b70c81900000000, 0xcbaf46d800000000,
+ 0x0d5bbe4b00000000, 0xcd84308a00000000, 0xcce2d21300000000,
+ 0x0c3d5cd200000000, 0x8f2867fb00000000, 0x4ff7e93a00000000,
+ 0x4e910ba300000000, 0x8e4e856200000000, 0x837e8b5f00000000,
+ 0x43a1059e00000000, 0x42c7e70700000000, 0x821869c600000000,
+ 0x010d52ef00000000, 0xc1d2dc2e00000000, 0xc0b43eb700000000,
+ 0x006bb07600000000, 0xc69f48e500000000, 0x0640c62400000000,
+ 0x072624bd00000000, 0xc7f9aa7c00000000, 0x44ec915500000000,
+ 0x84331f9400000000, 0x8555fd0d00000000, 0x458a73cc00000000,
+ 0x702ca9a100000000, 0xb0f3276000000000, 0xb195c5f900000000,
+ 0x714a4b3800000000, 0xf25f701100000000, 0x3280fed000000000,
+ 0x33e61c4900000000, 0xf339928800000000, 0x35cd6a1b00000000,
+ 0xf512e4da00000000, 0xf474064300000000, 0x34ab888200000000,
+ 0xb7beb3ab00000000, 0x77613d6a00000000, 0x7607dff300000000,
+ 0xb6d8513200000000, 0xbbe85f0f00000000, 0x7b37d1ce00000000,
+ 0x7a51335700000000, 0xba8ebd9600000000, 0x399b86bf00000000,
+ 0xf944087e00000000, 0xf822eae700000000, 0x38fd642600000000,
+ 0xfe099cb500000000, 0x3ed6127400000000, 0x3fb0f0ed00000000,
+ 0xff6f7e2c00000000, 0x7c7a450500000000, 0xbca5cbc400000000,
+ 0xbdc3295d00000000, 0x7d1ca79c00000000, 0xa7a3352700000000,
+ 0x677cbbe600000000, 0x661a597f00000000, 0xa6c5d7be00000000,
+ 0x25d0ec9700000000, 0xe50f625600000000, 0xe46980cf00000000,
+ 0x24b60e0e00000000, 0xe242f69d00000000, 0x229d785c00000000,
+ 0x23fb9ac500000000, 0xe324140400000000, 0x60312f2d00000000,
+ 0xa0eea1ec00000000, 0xa188437500000000, 0x6157cdb400000000,
+ 0x6c67c38900000000, 0xacb84d4800000000, 0xaddeafd100000000,
+ 0x6d01211000000000, 0xee141a3900000000, 0x2ecb94f800000000,
+ 0x2fad766100000000, 0xef72f8a000000000, 0x2986003300000000,
+ 0xe9598ef200000000, 0xe83f6c6b00000000, 0x28e0e2aa00000000,
+ 0xabf5d98300000000, 0x6b2a574200000000, 0x6a4cb5db00000000,
+ 0xaa933b1a00000000},
+ {0x0000000000000000, 0x6f4ca59b00000000, 0x9f9e3bec00000000,
+ 0xf0d29e7700000000, 0x7f3b060300000000, 0x1077a39800000000,
+ 0xe0a53def00000000, 0x8fe9987400000000, 0xfe760c0600000000,
+ 0x913aa99d00000000, 0x61e837ea00000000, 0x0ea4927100000000,
+ 0x814d0a0500000000, 0xee01af9e00000000, 0x1ed331e900000000,
+ 0x719f947200000000, 0xfced180c00000000, 0x93a1bd9700000000,
+ 0x637323e000000000, 0x0c3f867b00000000, 0x83d61e0f00000000,
+ 0xec9abb9400000000, 0x1c4825e300000000, 0x7304807800000000,
+ 0x029b140a00000000, 0x6dd7b19100000000, 0x9d052fe600000000,
+ 0xf2498a7d00000000, 0x7da0120900000000, 0x12ecb79200000000,
+ 0xe23e29e500000000, 0x8d728c7e00000000, 0xf8db311800000000,
+ 0x9797948300000000, 0x67450af400000000, 0x0809af6f00000000,
+ 0x87e0371b00000000, 0xe8ac928000000000, 0x187e0cf700000000,
+ 0x7732a96c00000000, 0x06ad3d1e00000000, 0x69e1988500000000,
+ 0x993306f200000000, 0xf67fa36900000000, 0x79963b1d00000000,
+ 0x16da9e8600000000, 0xe60800f100000000, 0x8944a56a00000000,
+ 0x0436291400000000, 0x6b7a8c8f00000000, 0x9ba812f800000000,
+ 0xf4e4b76300000000, 0x7b0d2f1700000000, 0x14418a8c00000000,
+ 0xe49314fb00000000, 0x8bdfb16000000000, 0xfa40251200000000,
+ 0x950c808900000000, 0x65de1efe00000000, 0x0a92bb6500000000,
+ 0x857b231100000000, 0xea37868a00000000, 0x1ae518fd00000000,
+ 0x75a9bd6600000000, 0xf0b7633000000000, 0x9ffbc6ab00000000,
+ 0x6f2958dc00000000, 0x0065fd4700000000, 0x8f8c653300000000,
+ 0xe0c0c0a800000000, 0x10125edf00000000, 0x7f5efb4400000000,
+ 0x0ec16f3600000000, 0x618dcaad00000000, 0x915f54da00000000,
+ 0xfe13f14100000000, 0x71fa693500000000, 0x1eb6ccae00000000,
+ 0xee6452d900000000, 0x8128f74200000000, 0x0c5a7b3c00000000,
+ 0x6316dea700000000, 0x93c440d000000000, 0xfc88e54b00000000,
+ 0x73617d3f00000000, 0x1c2dd8a400000000, 0xecff46d300000000,
+ 0x83b3e34800000000, 0xf22c773a00000000, 0x9d60d2a100000000,
+ 0x6db24cd600000000, 0x02fee94d00000000, 0x8d17713900000000,
+ 0xe25bd4a200000000, 0x12894ad500000000, 0x7dc5ef4e00000000,
+ 0x086c522800000000, 0x6720f7b300000000, 0x97f269c400000000,
+ 0xf8becc5f00000000, 0x7757542b00000000, 0x181bf1b000000000,
+ 0xe8c96fc700000000, 0x8785ca5c00000000, 0xf61a5e2e00000000,
+ 0x9956fbb500000000, 0x698465c200000000, 0x06c8c05900000000,
+ 0x8921582d00000000, 0xe66dfdb600000000, 0x16bf63c100000000,
+ 0x79f3c65a00000000, 0xf4814a2400000000, 0x9bcdefbf00000000,
+ 0x6b1f71c800000000, 0x0453d45300000000, 0x8bba4c2700000000,
+ 0xe4f6e9bc00000000, 0x142477cb00000000, 0x7b68d25000000000,
+ 0x0af7462200000000, 0x65bbe3b900000000, 0x95697dce00000000,
+ 0xfa25d85500000000, 0x75cc402100000000, 0x1a80e5ba00000000,
+ 0xea527bcd00000000, 0x851ede5600000000, 0xe06fc76000000000,
+ 0x8f2362fb00000000, 0x7ff1fc8c00000000, 0x10bd591700000000,
+ 0x9f54c16300000000, 0xf01864f800000000, 0x00cafa8f00000000,
+ 0x6f865f1400000000, 0x1e19cb6600000000, 0x71556efd00000000,
+ 0x8187f08a00000000, 0xeecb551100000000, 0x6122cd6500000000,
+ 0x0e6e68fe00000000, 0xfebcf68900000000, 0x91f0531200000000,
+ 0x1c82df6c00000000, 0x73ce7af700000000, 0x831ce48000000000,
+ 0xec50411b00000000, 0x63b9d96f00000000, 0x0cf57cf400000000,
+ 0xfc27e28300000000, 0x936b471800000000, 0xe2f4d36a00000000,
+ 0x8db876f100000000, 0x7d6ae88600000000, 0x12264d1d00000000,
+ 0x9dcfd56900000000, 0xf28370f200000000, 0x0251ee8500000000,
+ 0x6d1d4b1e00000000, 0x18b4f67800000000, 0x77f853e300000000,
+ 0x872acd9400000000, 0xe866680f00000000, 0x678ff07b00000000,
+ 0x08c355e000000000, 0xf811cb9700000000, 0x975d6e0c00000000,
+ 0xe6c2fa7e00000000, 0x898e5fe500000000, 0x795cc19200000000,
+ 0x1610640900000000, 0x99f9fc7d00000000, 0xf6b559e600000000,
+ 0x0667c79100000000, 0x692b620a00000000, 0xe459ee7400000000,
+ 0x8b154bef00000000, 0x7bc7d59800000000, 0x148b700300000000,
+ 0x9b62e87700000000, 0xf42e4dec00000000, 0x04fcd39b00000000,
+ 0x6bb0760000000000, 0x1a2fe27200000000, 0x756347e900000000,
+ 0x85b1d99e00000000, 0xeafd7c0500000000, 0x6514e47100000000,
+ 0x0a5841ea00000000, 0xfa8adf9d00000000, 0x95c67a0600000000,
+ 0x10d8a45000000000, 0x7f9401cb00000000, 0x8f469fbc00000000,
+ 0xe00a3a2700000000, 0x6fe3a25300000000, 0x00af07c800000000,
+ 0xf07d99bf00000000, 0x9f313c2400000000, 0xeeaea85600000000,
+ 0x81e20dcd00000000, 0x713093ba00000000, 0x1e7c362100000000,
+ 0x9195ae5500000000, 0xfed90bce00000000, 0x0e0b95b900000000,
+ 0x6147302200000000, 0xec35bc5c00000000, 0x837919c700000000,
+ 0x73ab87b000000000, 0x1ce7222b00000000, 0x930eba5f00000000,
+ 0xfc421fc400000000, 0x0c9081b300000000, 0x63dc242800000000,
+ 0x1243b05a00000000, 0x7d0f15c100000000, 0x8ddd8bb600000000,
+ 0xe2912e2d00000000, 0x6d78b65900000000, 0x023413c200000000,
+ 0xf2e68db500000000, 0x9daa282e00000000, 0xe803954800000000,
+ 0x874f30d300000000, 0x779daea400000000, 0x18d10b3f00000000,
+ 0x9738934b00000000, 0xf87436d000000000, 0x08a6a8a700000000,
+ 0x67ea0d3c00000000, 0x1675994e00000000, 0x79393cd500000000,
+ 0x89eba2a200000000, 0xe6a7073900000000, 0x694e9f4d00000000,
+ 0x06023ad600000000, 0xf6d0a4a100000000, 0x999c013a00000000,
+ 0x14ee8d4400000000, 0x7ba228df00000000, 0x8b70b6a800000000,
+ 0xe43c133300000000, 0x6bd58b4700000000, 0x04992edc00000000,
+ 0xf44bb0ab00000000, 0x9b07153000000000, 0xea98814200000000,
+ 0x85d424d900000000, 0x7506baae00000000, 0x1a4a1f3500000000,
+ 0x95a3874100000000, 0xfaef22da00000000, 0x0a3dbcad00000000,
+ 0x6571193600000000},
+ {0x0000000000000000, 0x85d996dd00000000, 0x4bb55c6000000000,
+ 0xce6ccabd00000000, 0x966ab9c000000000, 0x13b32f1d00000000,
+ 0xdddfe5a000000000, 0x5806737d00000000, 0x6dd3035a00000000,
+ 0xe80a958700000000, 0x26665f3a00000000, 0xa3bfc9e700000000,
+ 0xfbb9ba9a00000000, 0x7e602c4700000000, 0xb00ce6fa00000000,
+ 0x35d5702700000000, 0xdaa607b400000000, 0x5f7f916900000000,
+ 0x91135bd400000000, 0x14cacd0900000000, 0x4cccbe7400000000,
+ 0xc91528a900000000, 0x0779e21400000000, 0x82a074c900000000,
+ 0xb77504ee00000000, 0x32ac923300000000, 0xfcc0588e00000000,
+ 0x7919ce5300000000, 0x211fbd2e00000000, 0xa4c62bf300000000,
+ 0x6aaae14e00000000, 0xef73779300000000, 0xf54b7eb300000000,
+ 0x7092e86e00000000, 0xbefe22d300000000, 0x3b27b40e00000000,
+ 0x6321c77300000000, 0xe6f851ae00000000, 0x28949b1300000000,
+ 0xad4d0dce00000000, 0x98987de900000000, 0x1d41eb3400000000,
+ 0xd32d218900000000, 0x56f4b75400000000, 0x0ef2c42900000000,
+ 0x8b2b52f400000000, 0x4547984900000000, 0xc09e0e9400000000,
+ 0x2fed790700000000, 0xaa34efda00000000, 0x6458256700000000,
+ 0xe181b3ba00000000, 0xb987c0c700000000, 0x3c5e561a00000000,
+ 0xf2329ca700000000, 0x77eb0a7a00000000, 0x423e7a5d00000000,
+ 0xc7e7ec8000000000, 0x098b263d00000000, 0x8c52b0e000000000,
+ 0xd454c39d00000000, 0x518d554000000000, 0x9fe19ffd00000000,
+ 0x1a38092000000000, 0xab918dbd00000000, 0x2e481b6000000000,
+ 0xe024d1dd00000000, 0x65fd470000000000, 0x3dfb347d00000000,
+ 0xb822a2a000000000, 0x764e681d00000000, 0xf397fec000000000,
+ 0xc6428ee700000000, 0x439b183a00000000, 0x8df7d28700000000,
+ 0x082e445a00000000, 0x5028372700000000, 0xd5f1a1fa00000000,
+ 0x1b9d6b4700000000, 0x9e44fd9a00000000, 0x71378a0900000000,
+ 0xf4ee1cd400000000, 0x3a82d66900000000, 0xbf5b40b400000000,
+ 0xe75d33c900000000, 0x6284a51400000000, 0xace86fa900000000,
+ 0x2931f97400000000, 0x1ce4895300000000, 0x993d1f8e00000000,
+ 0x5751d53300000000, 0xd28843ee00000000, 0x8a8e309300000000,
+ 0x0f57a64e00000000, 0xc13b6cf300000000, 0x44e2fa2e00000000,
+ 0x5edaf30e00000000, 0xdb0365d300000000, 0x156faf6e00000000,
+ 0x90b639b300000000, 0xc8b04ace00000000, 0x4d69dc1300000000,
+ 0x830516ae00000000, 0x06dc807300000000, 0x3309f05400000000,
+ 0xb6d0668900000000, 0x78bcac3400000000, 0xfd653ae900000000,
+ 0xa563499400000000, 0x20badf4900000000, 0xeed615f400000000,
+ 0x6b0f832900000000, 0x847cf4ba00000000, 0x01a5626700000000,
+ 0xcfc9a8da00000000, 0x4a103e0700000000, 0x12164d7a00000000,
+ 0x97cfdba700000000, 0x59a3111a00000000, 0xdc7a87c700000000,
+ 0xe9aff7e000000000, 0x6c76613d00000000, 0xa21aab8000000000,
+ 0x27c33d5d00000000, 0x7fc54e2000000000, 0xfa1cd8fd00000000,
+ 0x3470124000000000, 0xb1a9849d00000000, 0x17256aa000000000,
+ 0x92fcfc7d00000000, 0x5c9036c000000000, 0xd949a01d00000000,
+ 0x814fd36000000000, 0x049645bd00000000, 0xcafa8f0000000000,
+ 0x4f2319dd00000000, 0x7af669fa00000000, 0xff2fff2700000000,
+ 0x3143359a00000000, 0xb49aa34700000000, 0xec9cd03a00000000,
+ 0x694546e700000000, 0xa7298c5a00000000, 0x22f01a8700000000,
+ 0xcd836d1400000000, 0x485afbc900000000, 0x8636317400000000,
+ 0x03efa7a900000000, 0x5be9d4d400000000, 0xde30420900000000,
+ 0x105c88b400000000, 0x95851e6900000000, 0xa0506e4e00000000,
+ 0x2589f89300000000, 0xebe5322e00000000, 0x6e3ca4f300000000,
+ 0x363ad78e00000000, 0xb3e3415300000000, 0x7d8f8bee00000000,
+ 0xf8561d3300000000, 0xe26e141300000000, 0x67b782ce00000000,
+ 0xa9db487300000000, 0x2c02deae00000000, 0x7404add300000000,
+ 0xf1dd3b0e00000000, 0x3fb1f1b300000000, 0xba68676e00000000,
+ 0x8fbd174900000000, 0x0a64819400000000, 0xc4084b2900000000,
+ 0x41d1ddf400000000, 0x19d7ae8900000000, 0x9c0e385400000000,
+ 0x5262f2e900000000, 0xd7bb643400000000, 0x38c813a700000000,
+ 0xbd11857a00000000, 0x737d4fc700000000, 0xf6a4d91a00000000,
+ 0xaea2aa6700000000, 0x2b7b3cba00000000, 0xe517f60700000000,
+ 0x60ce60da00000000, 0x551b10fd00000000, 0xd0c2862000000000,
+ 0x1eae4c9d00000000, 0x9b77da4000000000, 0xc371a93d00000000,
+ 0x46a83fe000000000, 0x88c4f55d00000000, 0x0d1d638000000000,
+ 0xbcb4e71d00000000, 0x396d71c000000000, 0xf701bb7d00000000,
+ 0x72d82da000000000, 0x2ade5edd00000000, 0xaf07c80000000000,
+ 0x616b02bd00000000, 0xe4b2946000000000, 0xd167e44700000000,
+ 0x54be729a00000000, 0x9ad2b82700000000, 0x1f0b2efa00000000,
+ 0x470d5d8700000000, 0xc2d4cb5a00000000, 0x0cb801e700000000,
+ 0x8961973a00000000, 0x6612e0a900000000, 0xe3cb767400000000,
+ 0x2da7bcc900000000, 0xa87e2a1400000000, 0xf078596900000000,
+ 0x75a1cfb400000000, 0xbbcd050900000000, 0x3e1493d400000000,
+ 0x0bc1e3f300000000, 0x8e18752e00000000, 0x4074bf9300000000,
+ 0xc5ad294e00000000, 0x9dab5a3300000000, 0x1872ccee00000000,
+ 0xd61e065300000000, 0x53c7908e00000000, 0x49ff99ae00000000,
+ 0xcc260f7300000000, 0x024ac5ce00000000, 0x8793531300000000,
+ 0xdf95206e00000000, 0x5a4cb6b300000000, 0x94207c0e00000000,
+ 0x11f9ead300000000, 0x242c9af400000000, 0xa1f50c2900000000,
+ 0x6f99c69400000000, 0xea40504900000000, 0xb246233400000000,
+ 0x379fb5e900000000, 0xf9f37f5400000000, 0x7c2ae98900000000,
+ 0x93599e1a00000000, 0x168008c700000000, 0xd8ecc27a00000000,
+ 0x5d3554a700000000, 0x053327da00000000, 0x80eab10700000000,
+ 0x4e867bba00000000, 0xcb5fed6700000000, 0xfe8a9d4000000000,
+ 0x7b530b9d00000000, 0xb53fc12000000000, 0x30e657fd00000000,
+ 0x68e0248000000000, 0xed39b25d00000000, 0x235578e000000000,
+ 0xa68cee3d00000000},
+ {0x0000000000000000, 0x76e10f9d00000000, 0xadc46ee100000000,
+ 0xdb25617c00000000, 0x1b8fac1900000000, 0x6d6ea38400000000,
+ 0xb64bc2f800000000, 0xc0aacd6500000000, 0x361e593300000000,
+ 0x40ff56ae00000000, 0x9bda37d200000000, 0xed3b384f00000000,
+ 0x2d91f52a00000000, 0x5b70fab700000000, 0x80559bcb00000000,
+ 0xf6b4945600000000, 0x6c3cb26600000000, 0x1addbdfb00000000,
+ 0xc1f8dc8700000000, 0xb719d31a00000000, 0x77b31e7f00000000,
+ 0x015211e200000000, 0xda77709e00000000, 0xac967f0300000000,
+ 0x5a22eb5500000000, 0x2cc3e4c800000000, 0xf7e685b400000000,
+ 0x81078a2900000000, 0x41ad474c00000000, 0x374c48d100000000,
+ 0xec6929ad00000000, 0x9a88263000000000, 0xd87864cd00000000,
+ 0xae996b5000000000, 0x75bc0a2c00000000, 0x035d05b100000000,
+ 0xc3f7c8d400000000, 0xb516c74900000000, 0x6e33a63500000000,
+ 0x18d2a9a800000000, 0xee663dfe00000000, 0x9887326300000000,
+ 0x43a2531f00000000, 0x35435c8200000000, 0xf5e991e700000000,
+ 0x83089e7a00000000, 0x582dff0600000000, 0x2eccf09b00000000,
+ 0xb444d6ab00000000, 0xc2a5d93600000000, 0x1980b84a00000000,
+ 0x6f61b7d700000000, 0xafcb7ab200000000, 0xd92a752f00000000,
+ 0x020f145300000000, 0x74ee1bce00000000, 0x825a8f9800000000,
+ 0xf4bb800500000000, 0x2f9ee17900000000, 0x597feee400000000,
+ 0x99d5238100000000, 0xef342c1c00000000, 0x34114d6000000000,
+ 0x42f042fd00000000, 0xf1f7b94100000000, 0x8716b6dc00000000,
+ 0x5c33d7a000000000, 0x2ad2d83d00000000, 0xea78155800000000,
+ 0x9c991ac500000000, 0x47bc7bb900000000, 0x315d742400000000,
+ 0xc7e9e07200000000, 0xb108efef00000000, 0x6a2d8e9300000000,
+ 0x1ccc810e00000000, 0xdc664c6b00000000, 0xaa8743f600000000,
+ 0x71a2228a00000000, 0x07432d1700000000, 0x9dcb0b2700000000,
+ 0xeb2a04ba00000000, 0x300f65c600000000, 0x46ee6a5b00000000,
+ 0x8644a73e00000000, 0xf0a5a8a300000000, 0x2b80c9df00000000,
+ 0x5d61c64200000000, 0xabd5521400000000, 0xdd345d8900000000,
+ 0x06113cf500000000, 0x70f0336800000000, 0xb05afe0d00000000,
+ 0xc6bbf19000000000, 0x1d9e90ec00000000, 0x6b7f9f7100000000,
+ 0x298fdd8c00000000, 0x5f6ed21100000000, 0x844bb36d00000000,
+ 0xf2aabcf000000000, 0x3200719500000000, 0x44e17e0800000000,
+ 0x9fc41f7400000000, 0xe92510e900000000, 0x1f9184bf00000000,
+ 0x69708b2200000000, 0xb255ea5e00000000, 0xc4b4e5c300000000,
+ 0x041e28a600000000, 0x72ff273b00000000, 0xa9da464700000000,
+ 0xdf3b49da00000000, 0x45b36fea00000000, 0x3352607700000000,
+ 0xe877010b00000000, 0x9e960e9600000000, 0x5e3cc3f300000000,
+ 0x28ddcc6e00000000, 0xf3f8ad1200000000, 0x8519a28f00000000,
+ 0x73ad36d900000000, 0x054c394400000000, 0xde69583800000000,
+ 0xa88857a500000000, 0x68229ac000000000, 0x1ec3955d00000000,
+ 0xc5e6f42100000000, 0xb307fbbc00000000, 0xe2ef738300000000,
+ 0x940e7c1e00000000, 0x4f2b1d6200000000, 0x39ca12ff00000000,
+ 0xf960df9a00000000, 0x8f81d00700000000, 0x54a4b17b00000000,
+ 0x2245bee600000000, 0xd4f12ab000000000, 0xa210252d00000000,
+ 0x7935445100000000, 0x0fd44bcc00000000, 0xcf7e86a900000000,
+ 0xb99f893400000000, 0x62bae84800000000, 0x145be7d500000000,
+ 0x8ed3c1e500000000, 0xf832ce7800000000, 0x2317af0400000000,
+ 0x55f6a09900000000, 0x955c6dfc00000000, 0xe3bd626100000000,
+ 0x3898031d00000000, 0x4e790c8000000000, 0xb8cd98d600000000,
+ 0xce2c974b00000000, 0x1509f63700000000, 0x63e8f9aa00000000,
+ 0xa34234cf00000000, 0xd5a33b5200000000, 0x0e865a2e00000000,
+ 0x786755b300000000, 0x3a97174e00000000, 0x4c7618d300000000,
+ 0x975379af00000000, 0xe1b2763200000000, 0x2118bb5700000000,
+ 0x57f9b4ca00000000, 0x8cdcd5b600000000, 0xfa3dda2b00000000,
+ 0x0c894e7d00000000, 0x7a6841e000000000, 0xa14d209c00000000,
+ 0xd7ac2f0100000000, 0x1706e26400000000, 0x61e7edf900000000,
+ 0xbac28c8500000000, 0xcc23831800000000, 0x56aba52800000000,
+ 0x204aaab500000000, 0xfb6fcbc900000000, 0x8d8ec45400000000,
+ 0x4d24093100000000, 0x3bc506ac00000000, 0xe0e067d000000000,
+ 0x9601684d00000000, 0x60b5fc1b00000000, 0x1654f38600000000,
+ 0xcd7192fa00000000, 0xbb909d6700000000, 0x7b3a500200000000,
+ 0x0ddb5f9f00000000, 0xd6fe3ee300000000, 0xa01f317e00000000,
+ 0x1318cac200000000, 0x65f9c55f00000000, 0xbedca42300000000,
+ 0xc83dabbe00000000, 0x089766db00000000, 0x7e76694600000000,
+ 0xa553083a00000000, 0xd3b207a700000000, 0x250693f100000000,
+ 0x53e79c6c00000000, 0x88c2fd1000000000, 0xfe23f28d00000000,
+ 0x3e893fe800000000, 0x4868307500000000, 0x934d510900000000,
+ 0xe5ac5e9400000000, 0x7f2478a400000000, 0x09c5773900000000,
+ 0xd2e0164500000000, 0xa40119d800000000, 0x64abd4bd00000000,
+ 0x124adb2000000000, 0xc96fba5c00000000, 0xbf8eb5c100000000,
+ 0x493a219700000000, 0x3fdb2e0a00000000, 0xe4fe4f7600000000,
+ 0x921f40eb00000000, 0x52b58d8e00000000, 0x2454821300000000,
+ 0xff71e36f00000000, 0x8990ecf200000000, 0xcb60ae0f00000000,
+ 0xbd81a19200000000, 0x66a4c0ee00000000, 0x1045cf7300000000,
+ 0xd0ef021600000000, 0xa60e0d8b00000000, 0x7d2b6cf700000000,
+ 0x0bca636a00000000, 0xfd7ef73c00000000, 0x8b9ff8a100000000,
+ 0x50ba99dd00000000, 0x265b964000000000, 0xe6f15b2500000000,
+ 0x901054b800000000, 0x4b3535c400000000, 0x3dd43a5900000000,
+ 0xa75c1c6900000000, 0xd1bd13f400000000, 0x0a98728800000000,
+ 0x7c797d1500000000, 0xbcd3b07000000000, 0xca32bfed00000000,
+ 0x1117de9100000000, 0x67f6d10c00000000, 0x9142455a00000000,
+ 0xe7a34ac700000000, 0x3c862bbb00000000, 0x4a67242600000000,
+ 0x8acde94300000000, 0xfc2ce6de00000000, 0x270987a200000000,
+ 0x51e8883f00000000},
+ {0x0000000000000000, 0xe8dbfbb900000000, 0x91b186a800000000,
+ 0x796a7d1100000000, 0x63657c8a00000000, 0x8bbe873300000000,
+ 0xf2d4fa2200000000, 0x1a0f019b00000000, 0x87cc89cf00000000,
+ 0x6f17727600000000, 0x167d0f6700000000, 0xfea6f4de00000000,
+ 0xe4a9f54500000000, 0x0c720efc00000000, 0x751873ed00000000,
+ 0x9dc3885400000000, 0x4f9f624400000000, 0xa74499fd00000000,
+ 0xde2ee4ec00000000, 0x36f51f5500000000, 0x2cfa1ece00000000,
+ 0xc421e57700000000, 0xbd4b986600000000, 0x559063df00000000,
+ 0xc853eb8b00000000, 0x2088103200000000, 0x59e26d2300000000,
+ 0xb139969a00000000, 0xab36970100000000, 0x43ed6cb800000000,
+ 0x3a8711a900000000, 0xd25cea1000000000, 0x9e3ec58800000000,
+ 0x76e53e3100000000, 0x0f8f432000000000, 0xe754b89900000000,
+ 0xfd5bb90200000000, 0x158042bb00000000, 0x6cea3faa00000000,
+ 0x8431c41300000000, 0x19f24c4700000000, 0xf129b7fe00000000,
+ 0x8843caef00000000, 0x6098315600000000, 0x7a9730cd00000000,
+ 0x924ccb7400000000, 0xeb26b66500000000, 0x03fd4ddc00000000,
+ 0xd1a1a7cc00000000, 0x397a5c7500000000, 0x4010216400000000,
+ 0xa8cbdadd00000000, 0xb2c4db4600000000, 0x5a1f20ff00000000,
+ 0x23755dee00000000, 0xcbaea65700000000, 0x566d2e0300000000,
+ 0xbeb6d5ba00000000, 0xc7dca8ab00000000, 0x2f07531200000000,
+ 0x3508528900000000, 0xddd3a93000000000, 0xa4b9d42100000000,
+ 0x4c622f9800000000, 0x7d7bfbca00000000, 0x95a0007300000000,
+ 0xecca7d6200000000, 0x041186db00000000, 0x1e1e874000000000,
+ 0xf6c57cf900000000, 0x8faf01e800000000, 0x6774fa5100000000,
+ 0xfab7720500000000, 0x126c89bc00000000, 0x6b06f4ad00000000,
+ 0x83dd0f1400000000, 0x99d20e8f00000000, 0x7109f53600000000,
+ 0x0863882700000000, 0xe0b8739e00000000, 0x32e4998e00000000,
+ 0xda3f623700000000, 0xa3551f2600000000, 0x4b8ee49f00000000,
+ 0x5181e50400000000, 0xb95a1ebd00000000, 0xc03063ac00000000,
+ 0x28eb981500000000, 0xb528104100000000, 0x5df3ebf800000000,
+ 0x249996e900000000, 0xcc426d5000000000, 0xd64d6ccb00000000,
+ 0x3e96977200000000, 0x47fcea6300000000, 0xaf2711da00000000,
+ 0xe3453e4200000000, 0x0b9ec5fb00000000, 0x72f4b8ea00000000,
+ 0x9a2f435300000000, 0x802042c800000000, 0x68fbb97100000000,
+ 0x1191c46000000000, 0xf94a3fd900000000, 0x6489b78d00000000,
+ 0x8c524c3400000000, 0xf538312500000000, 0x1de3ca9c00000000,
+ 0x07eccb0700000000, 0xef3730be00000000, 0x965d4daf00000000,
+ 0x7e86b61600000000, 0xacda5c0600000000, 0x4401a7bf00000000,
+ 0x3d6bdaae00000000, 0xd5b0211700000000, 0xcfbf208c00000000,
+ 0x2764db3500000000, 0x5e0ea62400000000, 0xb6d55d9d00000000,
+ 0x2b16d5c900000000, 0xc3cd2e7000000000, 0xbaa7536100000000,
+ 0x527ca8d800000000, 0x4873a94300000000, 0xa0a852fa00000000,
+ 0xd9c22feb00000000, 0x3119d45200000000, 0xbbf0874e00000000,
+ 0x532b7cf700000000, 0x2a4101e600000000, 0xc29afa5f00000000,
+ 0xd895fbc400000000, 0x304e007d00000000, 0x49247d6c00000000,
+ 0xa1ff86d500000000, 0x3c3c0e8100000000, 0xd4e7f53800000000,
+ 0xad8d882900000000, 0x4556739000000000, 0x5f59720b00000000,
+ 0xb78289b200000000, 0xcee8f4a300000000, 0x26330f1a00000000,
+ 0xf46fe50a00000000, 0x1cb41eb300000000, 0x65de63a200000000,
+ 0x8d05981b00000000, 0x970a998000000000, 0x7fd1623900000000,
+ 0x06bb1f2800000000, 0xee60e49100000000, 0x73a36cc500000000,
+ 0x9b78977c00000000, 0xe212ea6d00000000, 0x0ac911d400000000,
+ 0x10c6104f00000000, 0xf81debf600000000, 0x817796e700000000,
+ 0x69ac6d5e00000000, 0x25ce42c600000000, 0xcd15b97f00000000,
+ 0xb47fc46e00000000, 0x5ca43fd700000000, 0x46ab3e4c00000000,
+ 0xae70c5f500000000, 0xd71ab8e400000000, 0x3fc1435d00000000,
+ 0xa202cb0900000000, 0x4ad930b000000000, 0x33b34da100000000,
+ 0xdb68b61800000000, 0xc167b78300000000, 0x29bc4c3a00000000,
+ 0x50d6312b00000000, 0xb80dca9200000000, 0x6a51208200000000,
+ 0x828adb3b00000000, 0xfbe0a62a00000000, 0x133b5d9300000000,
+ 0x09345c0800000000, 0xe1efa7b100000000, 0x9885daa000000000,
+ 0x705e211900000000, 0xed9da94d00000000, 0x054652f400000000,
+ 0x7c2c2fe500000000, 0x94f7d45c00000000, 0x8ef8d5c700000000,
+ 0x66232e7e00000000, 0x1f49536f00000000, 0xf792a8d600000000,
+ 0xc68b7c8400000000, 0x2e50873d00000000, 0x573afa2c00000000,
+ 0xbfe1019500000000, 0xa5ee000e00000000, 0x4d35fbb700000000,
+ 0x345f86a600000000, 0xdc847d1f00000000, 0x4147f54b00000000,
+ 0xa99c0ef200000000, 0xd0f673e300000000, 0x382d885a00000000,
+ 0x222289c100000000, 0xcaf9727800000000, 0xb3930f6900000000,
+ 0x5b48f4d000000000, 0x89141ec000000000, 0x61cfe57900000000,
+ 0x18a5986800000000, 0xf07e63d100000000, 0xea71624a00000000,
+ 0x02aa99f300000000, 0x7bc0e4e200000000, 0x931b1f5b00000000,
+ 0x0ed8970f00000000, 0xe6036cb600000000, 0x9f6911a700000000,
+ 0x77b2ea1e00000000, 0x6dbdeb8500000000, 0x8566103c00000000,
+ 0xfc0c6d2d00000000, 0x14d7969400000000, 0x58b5b90c00000000,
+ 0xb06e42b500000000, 0xc9043fa400000000, 0x21dfc41d00000000,
+ 0x3bd0c58600000000, 0xd30b3e3f00000000, 0xaa61432e00000000,
+ 0x42bab89700000000, 0xdf7930c300000000, 0x37a2cb7a00000000,
+ 0x4ec8b66b00000000, 0xa6134dd200000000, 0xbc1c4c4900000000,
+ 0x54c7b7f000000000, 0x2dadcae100000000, 0xc576315800000000,
+ 0x172adb4800000000, 0xfff120f100000000, 0x869b5de000000000,
+ 0x6e40a65900000000, 0x744fa7c200000000, 0x9c945c7b00000000,
+ 0xe5fe216a00000000, 0x0d25dad300000000, 0x90e6528700000000,
+ 0x783da93e00000000, 0x0157d42f00000000, 0xe98c2f9600000000,
+ 0xf3832e0d00000000, 0x1b58d5b400000000, 0x6232a8a500000000,
+ 0x8ae9531c00000000},
+ {0x0000000000000000, 0x919168ae00000000, 0x6325a08700000000,
+ 0xf2b4c82900000000, 0x874c31d400000000, 0x16dd597a00000000,
+ 0xe469915300000000, 0x75f8f9fd00000000, 0x4f9f137300000000,
+ 0xde0e7bdd00000000, 0x2cbab3f400000000, 0xbd2bdb5a00000000,
+ 0xc8d322a700000000, 0x59424a0900000000, 0xabf6822000000000,
+ 0x3a67ea8e00000000, 0x9e3e27e600000000, 0x0faf4f4800000000,
+ 0xfd1b876100000000, 0x6c8aefcf00000000, 0x1972163200000000,
+ 0x88e37e9c00000000, 0x7a57b6b500000000, 0xebc6de1b00000000,
+ 0xd1a1349500000000, 0x40305c3b00000000, 0xb284941200000000,
+ 0x2315fcbc00000000, 0x56ed054100000000, 0xc77c6def00000000,
+ 0x35c8a5c600000000, 0xa459cd6800000000, 0x7d7b3f1700000000,
+ 0xecea57b900000000, 0x1e5e9f9000000000, 0x8fcff73e00000000,
+ 0xfa370ec300000000, 0x6ba6666d00000000, 0x9912ae4400000000,
+ 0x0883c6ea00000000, 0x32e42c6400000000, 0xa37544ca00000000,
+ 0x51c18ce300000000, 0xc050e44d00000000, 0xb5a81db000000000,
+ 0x2439751e00000000, 0xd68dbd3700000000, 0x471cd59900000000,
+ 0xe34518f100000000, 0x72d4705f00000000, 0x8060b87600000000,
+ 0x11f1d0d800000000, 0x6409292500000000, 0xf598418b00000000,
+ 0x072c89a200000000, 0x96bde10c00000000, 0xacda0b8200000000,
+ 0x3d4b632c00000000, 0xcfffab0500000000, 0x5e6ec3ab00000000,
+ 0x2b963a5600000000, 0xba0752f800000000, 0x48b39ad100000000,
+ 0xd922f27f00000000, 0xfaf67e2e00000000, 0x6b67168000000000,
+ 0x99d3dea900000000, 0x0842b60700000000, 0x7dba4ffa00000000,
+ 0xec2b275400000000, 0x1e9fef7d00000000, 0x8f0e87d300000000,
+ 0xb5696d5d00000000, 0x24f805f300000000, 0xd64ccdda00000000,
+ 0x47dda57400000000, 0x32255c8900000000, 0xa3b4342700000000,
+ 0x5100fc0e00000000, 0xc09194a000000000, 0x64c859c800000000,
+ 0xf559316600000000, 0x07edf94f00000000, 0x967c91e100000000,
+ 0xe384681c00000000, 0x721500b200000000, 0x80a1c89b00000000,
+ 0x1130a03500000000, 0x2b574abb00000000, 0xbac6221500000000,
+ 0x4872ea3c00000000, 0xd9e3829200000000, 0xac1b7b6f00000000,
+ 0x3d8a13c100000000, 0xcf3edbe800000000, 0x5eafb34600000000,
+ 0x878d413900000000, 0x161c299700000000, 0xe4a8e1be00000000,
+ 0x7539891000000000, 0x00c170ed00000000, 0x9150184300000000,
+ 0x63e4d06a00000000, 0xf275b8c400000000, 0xc812524a00000000,
+ 0x59833ae400000000, 0xab37f2cd00000000, 0x3aa69a6300000000,
+ 0x4f5e639e00000000, 0xdecf0b3000000000, 0x2c7bc31900000000,
+ 0xbdeaabb700000000, 0x19b366df00000000, 0x88220e7100000000,
+ 0x7a96c65800000000, 0xeb07aef600000000, 0x9eff570b00000000,
+ 0x0f6e3fa500000000, 0xfddaf78c00000000, 0x6c4b9f2200000000,
+ 0x562c75ac00000000, 0xc7bd1d0200000000, 0x3509d52b00000000,
+ 0xa498bd8500000000, 0xd160447800000000, 0x40f12cd600000000,
+ 0xb245e4ff00000000, 0x23d48c5100000000, 0xf4edfd5c00000000,
+ 0x657c95f200000000, 0x97c85ddb00000000, 0x0659357500000000,
+ 0x73a1cc8800000000, 0xe230a42600000000, 0x10846c0f00000000,
+ 0x811504a100000000, 0xbb72ee2f00000000, 0x2ae3868100000000,
+ 0xd8574ea800000000, 0x49c6260600000000, 0x3c3edffb00000000,
+ 0xadafb75500000000, 0x5f1b7f7c00000000, 0xce8a17d200000000,
+ 0x6ad3daba00000000, 0xfb42b21400000000, 0x09f67a3d00000000,
+ 0x9867129300000000, 0xed9feb6e00000000, 0x7c0e83c000000000,
+ 0x8eba4be900000000, 0x1f2b234700000000, 0x254cc9c900000000,
+ 0xb4dda16700000000, 0x4669694e00000000, 0xd7f801e000000000,
+ 0xa200f81d00000000, 0x339190b300000000, 0xc125589a00000000,
+ 0x50b4303400000000, 0x8996c24b00000000, 0x1807aae500000000,
+ 0xeab362cc00000000, 0x7b220a6200000000, 0x0edaf39f00000000,
+ 0x9f4b9b3100000000, 0x6dff531800000000, 0xfc6e3bb600000000,
+ 0xc609d13800000000, 0x5798b99600000000, 0xa52c71bf00000000,
+ 0x34bd191100000000, 0x4145e0ec00000000, 0xd0d4884200000000,
+ 0x2260406b00000000, 0xb3f128c500000000, 0x17a8e5ad00000000,
+ 0x86398d0300000000, 0x748d452a00000000, 0xe51c2d8400000000,
+ 0x90e4d47900000000, 0x0175bcd700000000, 0xf3c174fe00000000,
+ 0x62501c5000000000, 0x5837f6de00000000, 0xc9a69e7000000000,
+ 0x3b12565900000000, 0xaa833ef700000000, 0xdf7bc70a00000000,
+ 0x4eeaafa400000000, 0xbc5e678d00000000, 0x2dcf0f2300000000,
+ 0x0e1b837200000000, 0x9f8aebdc00000000, 0x6d3e23f500000000,
+ 0xfcaf4b5b00000000, 0x8957b2a600000000, 0x18c6da0800000000,
+ 0xea72122100000000, 0x7be37a8f00000000, 0x4184900100000000,
+ 0xd015f8af00000000, 0x22a1308600000000, 0xb330582800000000,
+ 0xc6c8a1d500000000, 0x5759c97b00000000, 0xa5ed015200000000,
+ 0x347c69fc00000000, 0x9025a49400000000, 0x01b4cc3a00000000,
+ 0xf300041300000000, 0x62916cbd00000000, 0x1769954000000000,
+ 0x86f8fdee00000000, 0x744c35c700000000, 0xe5dd5d6900000000,
+ 0xdfbab7e700000000, 0x4e2bdf4900000000, 0xbc9f176000000000,
+ 0x2d0e7fce00000000, 0x58f6863300000000, 0xc967ee9d00000000,
+ 0x3bd326b400000000, 0xaa424e1a00000000, 0x7360bc6500000000,
+ 0xe2f1d4cb00000000, 0x10451ce200000000, 0x81d4744c00000000,
+ 0xf42c8db100000000, 0x65bde51f00000000, 0x97092d3600000000,
+ 0x0698459800000000, 0x3cffaf1600000000, 0xad6ec7b800000000,
+ 0x5fda0f9100000000, 0xce4b673f00000000, 0xbbb39ec200000000,
+ 0x2a22f66c00000000, 0xd8963e4500000000, 0x490756eb00000000,
+ 0xed5e9b8300000000, 0x7ccff32d00000000, 0x8e7b3b0400000000,
+ 0x1fea53aa00000000, 0x6a12aa5700000000, 0xfb83c2f900000000,
+ 0x09370ad000000000, 0x98a6627e00000000, 0xa2c188f000000000,
+ 0x3350e05e00000000, 0xc1e4287700000000, 0x507540d900000000,
+ 0x258db92400000000, 0xb41cd18a00000000, 0x46a819a300000000,
+ 0xd739710d00000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa,
+ 0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b,
+ 0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232,
+ 0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8,
+ 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e,
+ 0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa,
+ 0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b,
+ 0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f,
+ 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719,
+ 0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3,
+ 0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa,
+ 0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b,
+ 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed,
+ 0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89,
+ 0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25,
+ 0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041,
+ 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c,
+ 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed,
+ 0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4,
+ 0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758,
+ 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e,
+ 0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a,
+ 0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed,
+ 0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889,
+ 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df,
+ 0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544,
+ 0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d,
+ 0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c,
+ 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1,
+ 0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95,
+ 0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839,
+ 0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d,
+ 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976,
+ 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7,
+ 0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be,
+ 0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144,
+ 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12,
+ 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376,
+ 0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a,
+ 0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e,
+ 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278,
+ 0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682,
+ 0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b,
+ 0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a,
+ 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561,
+ 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05,
+ 0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9,
+ 0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd,
+ 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0,
+ 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61,
+ 0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678,
+ 0x264b06e6},
+ {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413,
+ 0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3,
+ 0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d,
+ 0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653,
+ 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9,
+ 0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e,
+ 0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5,
+ 0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712,
+ 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8,
+ 0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6,
+ 0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068,
+ 0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8,
+ 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579,
+ 0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade,
+ 0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37,
+ 0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590,
+ 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4,
+ 0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64,
+ 0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea,
+ 0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678,
+ 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282,
+ 0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25,
+ 0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102,
+ 0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5,
+ 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f,
+ 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146,
+ 0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8,
+ 0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08,
+ 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c,
+ 0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b,
+ 0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972,
+ 0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5,
+ 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d,
+ 0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd,
+ 0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833,
+ 0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d,
+ 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7,
+ 0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60,
+ 0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2,
+ 0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105,
+ 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff,
+ 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1,
+ 0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f,
+ 0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf,
+ 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617,
+ 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0,
+ 0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959,
+ 0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe,
+ 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca,
+ 0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a,
+ 0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184,
+ 0x92364a30},
+ {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216,
+ 0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8,
+ 0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170,
+ 0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035,
+ 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6,
+ 0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145,
+ 0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d,
+ 0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e,
+ 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d,
+ 0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408,
+ 0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0,
+ 0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e,
+ 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c,
+ 0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf,
+ 0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a,
+ 0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9,
+ 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1,
+ 0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f,
+ 0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987,
+ 0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4,
+ 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37,
+ 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84,
+ 0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca,
+ 0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79,
+ 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba,
+ 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d,
+ 0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5,
+ 0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b,
+ 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643,
+ 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0,
+ 0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525,
+ 0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496,
+ 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8,
+ 0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026,
+ 0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e,
+ 0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db,
+ 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118,
+ 0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab,
+ 0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf,
+ 0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c,
+ 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf,
+ 0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a,
+ 0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32,
+ 0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec,
+ 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82,
+ 0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31,
+ 0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4,
+ 0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957,
+ 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f,
+ 0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1,
+ 0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869,
+ 0xe4c4abcc},
+ {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0,
+ 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271,
+ 0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61,
+ 0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52,
+ 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43,
+ 0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333,
+ 0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64,
+ 0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314,
+ 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205,
+ 0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136,
+ 0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26,
+ 0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997,
+ 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849,
+ 0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739,
+ 0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8,
+ 0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98,
+ 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b,
+ 0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba,
+ 0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa,
+ 0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d,
+ 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c,
+ 0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc,
+ 0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af,
+ 0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf,
+ 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce,
+ 0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922,
+ 0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532,
+ 0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183,
+ 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710,
+ 0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860,
+ 0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1,
+ 0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1,
+ 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956,
+ 0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7,
+ 0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7,
+ 0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4,
+ 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5,
+ 0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5,
+ 0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb,
+ 0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb,
+ 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da,
+ 0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9,
+ 0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9,
+ 0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48,
+ 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df,
+ 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af,
+ 0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e,
+ 0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e,
+ 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d,
+ 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c,
+ 0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c,
+ 0xca64c78c}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0xb029603d, 0x6053c07a, 0xd07aa047, 0xc0a680f5,
+ 0x708fe0c8, 0xa0f5408f, 0x10dc20b2, 0xc14b7030, 0x7162100d,
+ 0xa118b04a, 0x1131d077, 0x01edf0c5, 0xb1c490f8, 0x61be30bf,
+ 0xd1975082, 0x8297e060, 0x32be805d, 0xe2c4201a, 0x52ed4027,
+ 0x42316095, 0xf21800a8, 0x2262a0ef, 0x924bc0d2, 0x43dc9050,
+ 0xf3f5f06d, 0x238f502a, 0x93a63017, 0x837a10a5, 0x33537098,
+ 0xe329d0df, 0x5300b0e2, 0x042fc1c1, 0xb406a1fc, 0x647c01bb,
+ 0xd4556186, 0xc4894134, 0x74a02109, 0xa4da814e, 0x14f3e173,
+ 0xc564b1f1, 0x754dd1cc, 0xa537718b, 0x151e11b6, 0x05c23104,
+ 0xb5eb5139, 0x6591f17e, 0xd5b89143, 0x86b821a1, 0x3691419c,
+ 0xe6ebe1db, 0x56c281e6, 0x461ea154, 0xf637c169, 0x264d612e,
+ 0x96640113, 0x47f35191, 0xf7da31ac, 0x27a091eb, 0x9789f1d6,
+ 0x8755d164, 0x377cb159, 0xe706111e, 0x572f7123, 0x4958f358,
+ 0xf9719365, 0x290b3322, 0x9922531f, 0x89fe73ad, 0x39d71390,
+ 0xe9adb3d7, 0x5984d3ea, 0x88138368, 0x383ae355, 0xe8404312,
+ 0x5869232f, 0x48b5039d, 0xf89c63a0, 0x28e6c3e7, 0x98cfa3da,
+ 0xcbcf1338, 0x7be67305, 0xab9cd342, 0x1bb5b37f, 0x0b6993cd,
+ 0xbb40f3f0, 0x6b3a53b7, 0xdb13338a, 0x0a846308, 0xbaad0335,
+ 0x6ad7a372, 0xdafec34f, 0xca22e3fd, 0x7a0b83c0, 0xaa712387,
+ 0x1a5843ba, 0x4d773299, 0xfd5e52a4, 0x2d24f2e3, 0x9d0d92de,
+ 0x8dd1b26c, 0x3df8d251, 0xed827216, 0x5dab122b, 0x8c3c42a9,
+ 0x3c152294, 0xec6f82d3, 0x5c46e2ee, 0x4c9ac25c, 0xfcb3a261,
+ 0x2cc90226, 0x9ce0621b, 0xcfe0d2f9, 0x7fc9b2c4, 0xafb31283,
+ 0x1f9a72be, 0x0f46520c, 0xbf6f3231, 0x6f159276, 0xdf3cf24b,
+ 0x0eaba2c9, 0xbe82c2f4, 0x6ef862b3, 0xded1028e, 0xce0d223c,
+ 0x7e244201, 0xae5ee246, 0x1e77827b, 0x92b0e6b1, 0x2299868c,
+ 0xf2e326cb, 0x42ca46f6, 0x52166644, 0xe23f0679, 0x3245a63e,
+ 0x826cc603, 0x53fb9681, 0xe3d2f6bc, 0x33a856fb, 0x838136c6,
+ 0x935d1674, 0x23747649, 0xf30ed60e, 0x4327b633, 0x102706d1,
+ 0xa00e66ec, 0x7074c6ab, 0xc05da696, 0xd0818624, 0x60a8e619,
+ 0xb0d2465e, 0x00fb2663, 0xd16c76e1, 0x614516dc, 0xb13fb69b,
+ 0x0116d6a6, 0x11caf614, 0xa1e39629, 0x7199366e, 0xc1b05653,
+ 0x969f2770, 0x26b6474d, 0xf6cce70a, 0x46e58737, 0x5639a785,
+ 0xe610c7b8, 0x366a67ff, 0x864307c2, 0x57d45740, 0xe7fd377d,
+ 0x3787973a, 0x87aef707, 0x9772d7b5, 0x275bb788, 0xf72117cf,
+ 0x470877f2, 0x1408c710, 0xa421a72d, 0x745b076a, 0xc4726757,
+ 0xd4ae47e5, 0x648727d8, 0xb4fd879f, 0x04d4e7a2, 0xd543b720,
+ 0x656ad71d, 0xb510775a, 0x05391767, 0x15e537d5, 0xa5cc57e8,
+ 0x75b6f7af, 0xc59f9792, 0xdbe815e9, 0x6bc175d4, 0xbbbbd593,
+ 0x0b92b5ae, 0x1b4e951c, 0xab67f521, 0x7b1d5566, 0xcb34355b,
+ 0x1aa365d9, 0xaa8a05e4, 0x7af0a5a3, 0xcad9c59e, 0xda05e52c,
+ 0x6a2c8511, 0xba562556, 0x0a7f456b, 0x597ff589, 0xe95695b4,
+ 0x392c35f3, 0x890555ce, 0x99d9757c, 0x29f01541, 0xf98ab506,
+ 0x49a3d53b, 0x983485b9, 0x281de584, 0xf86745c3, 0x484e25fe,
+ 0x5892054c, 0xe8bb6571, 0x38c1c536, 0x88e8a50b, 0xdfc7d428,
+ 0x6feeb415, 0xbf941452, 0x0fbd746f, 0x1f6154dd, 0xaf4834e0,
+ 0x7f3294a7, 0xcf1bf49a, 0x1e8ca418, 0xaea5c425, 0x7edf6462,
+ 0xcef6045f, 0xde2a24ed, 0x6e0344d0, 0xbe79e497, 0x0e5084aa,
+ 0x5d503448, 0xed795475, 0x3d03f432, 0x8d2a940f, 0x9df6b4bd,
+ 0x2ddfd480, 0xfda574c7, 0x4d8c14fa, 0x9c1b4478, 0x2c322445,
+ 0xfc488402, 0x4c61e43f, 0x5cbdc48d, 0xec94a4b0, 0x3cee04f7,
+ 0x8cc764ca},
+ {0x00000000, 0xa5d35ccb, 0x0ba1c84d, 0xae729486, 0x1642919b,
+ 0xb391cd50, 0x1de359d6, 0xb830051d, 0x6d8253ec, 0xc8510f27,
+ 0x66239ba1, 0xc3f0c76a, 0x7bc0c277, 0xde139ebc, 0x70610a3a,
+ 0xd5b256f1, 0x9b02d603, 0x3ed18ac8, 0x90a31e4e, 0x35704285,
+ 0x8d404798, 0x28931b53, 0x86e18fd5, 0x2332d31e, 0xf68085ef,
+ 0x5353d924, 0xfd214da2, 0x58f21169, 0xe0c21474, 0x451148bf,
+ 0xeb63dc39, 0x4eb080f2, 0x3605ac07, 0x93d6f0cc, 0x3da4644a,
+ 0x98773881, 0x20473d9c, 0x85946157, 0x2be6f5d1, 0x8e35a91a,
+ 0x5b87ffeb, 0xfe54a320, 0x502637a6, 0xf5f56b6d, 0x4dc56e70,
+ 0xe81632bb, 0x4664a63d, 0xe3b7faf6, 0xad077a04, 0x08d426cf,
+ 0xa6a6b249, 0x0375ee82, 0xbb45eb9f, 0x1e96b754, 0xb0e423d2,
+ 0x15377f19, 0xc08529e8, 0x65567523, 0xcb24e1a5, 0x6ef7bd6e,
+ 0xd6c7b873, 0x7314e4b8, 0xdd66703e, 0x78b52cf5, 0x6c0a580f,
+ 0xc9d904c4, 0x67ab9042, 0xc278cc89, 0x7a48c994, 0xdf9b955f,
+ 0x71e901d9, 0xd43a5d12, 0x01880be3, 0xa45b5728, 0x0a29c3ae,
+ 0xaffa9f65, 0x17ca9a78, 0xb219c6b3, 0x1c6b5235, 0xb9b80efe,
+ 0xf7088e0c, 0x52dbd2c7, 0xfca94641, 0x597a1a8a, 0xe14a1f97,
+ 0x4499435c, 0xeaebd7da, 0x4f388b11, 0x9a8adde0, 0x3f59812b,
+ 0x912b15ad, 0x34f84966, 0x8cc84c7b, 0x291b10b0, 0x87698436,
+ 0x22bad8fd, 0x5a0ff408, 0xffdca8c3, 0x51ae3c45, 0xf47d608e,
+ 0x4c4d6593, 0xe99e3958, 0x47ecadde, 0xe23ff115, 0x378da7e4,
+ 0x925efb2f, 0x3c2c6fa9, 0x99ff3362, 0x21cf367f, 0x841c6ab4,
+ 0x2a6efe32, 0x8fbda2f9, 0xc10d220b, 0x64de7ec0, 0xcaacea46,
+ 0x6f7fb68d, 0xd74fb390, 0x729cef5b, 0xdcee7bdd, 0x793d2716,
+ 0xac8f71e7, 0x095c2d2c, 0xa72eb9aa, 0x02fde561, 0xbacde07c,
+ 0x1f1ebcb7, 0xb16c2831, 0x14bf74fa, 0xd814b01e, 0x7dc7ecd5,
+ 0xd3b57853, 0x76662498, 0xce562185, 0x6b857d4e, 0xc5f7e9c8,
+ 0x6024b503, 0xb596e3f2, 0x1045bf39, 0xbe372bbf, 0x1be47774,
+ 0xa3d47269, 0x06072ea2, 0xa875ba24, 0x0da6e6ef, 0x4316661d,
+ 0xe6c53ad6, 0x48b7ae50, 0xed64f29b, 0x5554f786, 0xf087ab4d,
+ 0x5ef53fcb, 0xfb266300, 0x2e9435f1, 0x8b47693a, 0x2535fdbc,
+ 0x80e6a177, 0x38d6a46a, 0x9d05f8a1, 0x33776c27, 0x96a430ec,
+ 0xee111c19, 0x4bc240d2, 0xe5b0d454, 0x4063889f, 0xf8538d82,
+ 0x5d80d149, 0xf3f245cf, 0x56211904, 0x83934ff5, 0x2640133e,
+ 0x883287b8, 0x2de1db73, 0x95d1de6e, 0x300282a5, 0x9e701623,
+ 0x3ba34ae8, 0x7513ca1a, 0xd0c096d1, 0x7eb20257, 0xdb615e9c,
+ 0x63515b81, 0xc682074a, 0x68f093cc, 0xcd23cf07, 0x189199f6,
+ 0xbd42c53d, 0x133051bb, 0xb6e30d70, 0x0ed3086d, 0xab0054a6,
+ 0x0572c020, 0xa0a19ceb, 0xb41ee811, 0x11cdb4da, 0xbfbf205c,
+ 0x1a6c7c97, 0xa25c798a, 0x078f2541, 0xa9fdb1c7, 0x0c2eed0c,
+ 0xd99cbbfd, 0x7c4fe736, 0xd23d73b0, 0x77ee2f7b, 0xcfde2a66,
+ 0x6a0d76ad, 0xc47fe22b, 0x61acbee0, 0x2f1c3e12, 0x8acf62d9,
+ 0x24bdf65f, 0x816eaa94, 0x395eaf89, 0x9c8df342, 0x32ff67c4,
+ 0x972c3b0f, 0x429e6dfe, 0xe74d3135, 0x493fa5b3, 0xececf978,
+ 0x54dcfc65, 0xf10fa0ae, 0x5f7d3428, 0xfaae68e3, 0x821b4416,
+ 0x27c818dd, 0x89ba8c5b, 0x2c69d090, 0x9459d58d, 0x318a8946,
+ 0x9ff81dc0, 0x3a2b410b, 0xef9917fa, 0x4a4a4b31, 0xe438dfb7,
+ 0x41eb837c, 0xf9db8661, 0x5c08daaa, 0xf27a4e2c, 0x57a912e7,
+ 0x19199215, 0xbccacede, 0x12b85a58, 0xb76b0693, 0x0f5b038e,
+ 0xaa885f45, 0x04facbc3, 0xa1299708, 0x749bc1f9, 0xd1489d32,
+ 0x7f3a09b4, 0xdae9557f, 0x62d95062, 0xc70a0ca9, 0x6978982f,
+ 0xccabc4e4},
+ {0x00000000, 0xb40b77a6, 0x29119f97, 0x9d1ae831, 0x13244ff4,
+ 0xa72f3852, 0x3a35d063, 0x8e3ea7c5, 0x674eef33, 0xd3459895,
+ 0x4e5f70a4, 0xfa540702, 0x746aa0c7, 0xc061d761, 0x5d7b3f50,
+ 0xe97048f6, 0xce9cde67, 0x7a97a9c1, 0xe78d41f0, 0x53863656,
+ 0xddb89193, 0x69b3e635, 0xf4a90e04, 0x40a279a2, 0xa9d23154,
+ 0x1dd946f2, 0x80c3aec3, 0x34c8d965, 0xbaf67ea0, 0x0efd0906,
+ 0x93e7e137, 0x27ec9691, 0x9c39bdcf, 0x2832ca69, 0xb5282258,
+ 0x012355fe, 0x8f1df23b, 0x3b16859d, 0xa60c6dac, 0x12071a0a,
+ 0xfb7752fc, 0x4f7c255a, 0xd266cd6b, 0x666dbacd, 0xe8531d08,
+ 0x5c586aae, 0xc142829f, 0x7549f539, 0x52a563a8, 0xe6ae140e,
+ 0x7bb4fc3f, 0xcfbf8b99, 0x41812c5c, 0xf58a5bfa, 0x6890b3cb,
+ 0xdc9bc46d, 0x35eb8c9b, 0x81e0fb3d, 0x1cfa130c, 0xa8f164aa,
+ 0x26cfc36f, 0x92c4b4c9, 0x0fde5cf8, 0xbbd52b5e, 0x79750b44,
+ 0xcd7e7ce2, 0x506494d3, 0xe46fe375, 0x6a5144b0, 0xde5a3316,
+ 0x4340db27, 0xf74bac81, 0x1e3be477, 0xaa3093d1, 0x372a7be0,
+ 0x83210c46, 0x0d1fab83, 0xb914dc25, 0x240e3414, 0x900543b2,
+ 0xb7e9d523, 0x03e2a285, 0x9ef84ab4, 0x2af33d12, 0xa4cd9ad7,
+ 0x10c6ed71, 0x8ddc0540, 0x39d772e6, 0xd0a73a10, 0x64ac4db6,
+ 0xf9b6a587, 0x4dbdd221, 0xc38375e4, 0x77880242, 0xea92ea73,
+ 0x5e999dd5, 0xe54cb68b, 0x5147c12d, 0xcc5d291c, 0x78565eba,
+ 0xf668f97f, 0x42638ed9, 0xdf7966e8, 0x6b72114e, 0x820259b8,
+ 0x36092e1e, 0xab13c62f, 0x1f18b189, 0x9126164c, 0x252d61ea,
+ 0xb83789db, 0x0c3cfe7d, 0x2bd068ec, 0x9fdb1f4a, 0x02c1f77b,
+ 0xb6ca80dd, 0x38f42718, 0x8cff50be, 0x11e5b88f, 0xa5eecf29,
+ 0x4c9e87df, 0xf895f079, 0x658f1848, 0xd1846fee, 0x5fbac82b,
+ 0xebb1bf8d, 0x76ab57bc, 0xc2a0201a, 0xf2ea1688, 0x46e1612e,
+ 0xdbfb891f, 0x6ff0feb9, 0xe1ce597c, 0x55c52eda, 0xc8dfc6eb,
+ 0x7cd4b14d, 0x95a4f9bb, 0x21af8e1d, 0xbcb5662c, 0x08be118a,
+ 0x8680b64f, 0x328bc1e9, 0xaf9129d8, 0x1b9a5e7e, 0x3c76c8ef,
+ 0x887dbf49, 0x15675778, 0xa16c20de, 0x2f52871b, 0x9b59f0bd,
+ 0x0643188c, 0xb2486f2a, 0x5b3827dc, 0xef33507a, 0x7229b84b,
+ 0xc622cfed, 0x481c6828, 0xfc171f8e, 0x610df7bf, 0xd5068019,
+ 0x6ed3ab47, 0xdad8dce1, 0x47c234d0, 0xf3c94376, 0x7df7e4b3,
+ 0xc9fc9315, 0x54e67b24, 0xe0ed0c82, 0x099d4474, 0xbd9633d2,
+ 0x208cdbe3, 0x9487ac45, 0x1ab90b80, 0xaeb27c26, 0x33a89417,
+ 0x87a3e3b1, 0xa04f7520, 0x14440286, 0x895eeab7, 0x3d559d11,
+ 0xb36b3ad4, 0x07604d72, 0x9a7aa543, 0x2e71d2e5, 0xc7019a13,
+ 0x730aedb5, 0xee100584, 0x5a1b7222, 0xd425d5e7, 0x602ea241,
+ 0xfd344a70, 0x493f3dd6, 0x8b9f1dcc, 0x3f946a6a, 0xa28e825b,
+ 0x1685f5fd, 0x98bb5238, 0x2cb0259e, 0xb1aacdaf, 0x05a1ba09,
+ 0xecd1f2ff, 0x58da8559, 0xc5c06d68, 0x71cb1ace, 0xfff5bd0b,
+ 0x4bfecaad, 0xd6e4229c, 0x62ef553a, 0x4503c3ab, 0xf108b40d,
+ 0x6c125c3c, 0xd8192b9a, 0x56278c5f, 0xe22cfbf9, 0x7f3613c8,
+ 0xcb3d646e, 0x224d2c98, 0x96465b3e, 0x0b5cb30f, 0xbf57c4a9,
+ 0x3169636c, 0x856214ca, 0x1878fcfb, 0xac738b5d, 0x17a6a003,
+ 0xa3add7a5, 0x3eb73f94, 0x8abc4832, 0x0482eff7, 0xb0899851,
+ 0x2d937060, 0x999807c6, 0x70e84f30, 0xc4e33896, 0x59f9d0a7,
+ 0xedf2a701, 0x63cc00c4, 0xd7c77762, 0x4add9f53, 0xfed6e8f5,
+ 0xd93a7e64, 0x6d3109c2, 0xf02be1f3, 0x44209655, 0xca1e3190,
+ 0x7e154636, 0xe30fae07, 0x5704d9a1, 0xbe749157, 0x0a7fe6f1,
+ 0x97650ec0, 0x236e7966, 0xad50dea3, 0x195ba905, 0x84414134,
+ 0x304a3692},
+ {0x00000000, 0x9e00aacc, 0x7d072542, 0xe3078f8e, 0xfa0e4a84,
+ 0x640ee048, 0x87096fc6, 0x1909c50a, 0xb51be5d3, 0x2b1b4f1f,
+ 0xc81cc091, 0x561c6a5d, 0x4f15af57, 0xd115059b, 0x32128a15,
+ 0xac1220d9, 0x2b31bb7c, 0xb53111b0, 0x56369e3e, 0xc83634f2,
+ 0xd13ff1f8, 0x4f3f5b34, 0xac38d4ba, 0x32387e76, 0x9e2a5eaf,
+ 0x002af463, 0xe32d7bed, 0x7d2dd121, 0x6424142b, 0xfa24bee7,
+ 0x19233169, 0x87239ba5, 0x566276f9, 0xc862dc35, 0x2b6553bb,
+ 0xb565f977, 0xac6c3c7d, 0x326c96b1, 0xd16b193f, 0x4f6bb3f3,
+ 0xe379932a, 0x7d7939e6, 0x9e7eb668, 0x007e1ca4, 0x1977d9ae,
+ 0x87777362, 0x6470fcec, 0xfa705620, 0x7d53cd85, 0xe3536749,
+ 0x0054e8c7, 0x9e54420b, 0x875d8701, 0x195d2dcd, 0xfa5aa243,
+ 0x645a088f, 0xc8482856, 0x5648829a, 0xb54f0d14, 0x2b4fa7d8,
+ 0x324662d2, 0xac46c81e, 0x4f414790, 0xd141ed5c, 0xedc29d29,
+ 0x73c237e5, 0x90c5b86b, 0x0ec512a7, 0x17ccd7ad, 0x89cc7d61,
+ 0x6acbf2ef, 0xf4cb5823, 0x58d978fa, 0xc6d9d236, 0x25de5db8,
+ 0xbbdef774, 0xa2d7327e, 0x3cd798b2, 0xdfd0173c, 0x41d0bdf0,
+ 0xc6f32655, 0x58f38c99, 0xbbf40317, 0x25f4a9db, 0x3cfd6cd1,
+ 0xa2fdc61d, 0x41fa4993, 0xdffae35f, 0x73e8c386, 0xede8694a,
+ 0x0eefe6c4, 0x90ef4c08, 0x89e68902, 0x17e623ce, 0xf4e1ac40,
+ 0x6ae1068c, 0xbba0ebd0, 0x25a0411c, 0xc6a7ce92, 0x58a7645e,
+ 0x41aea154, 0xdfae0b98, 0x3ca98416, 0xa2a92eda, 0x0ebb0e03,
+ 0x90bba4cf, 0x73bc2b41, 0xedbc818d, 0xf4b54487, 0x6ab5ee4b,
+ 0x89b261c5, 0x17b2cb09, 0x909150ac, 0x0e91fa60, 0xed9675ee,
+ 0x7396df22, 0x6a9f1a28, 0xf49fb0e4, 0x17983f6a, 0x899895a6,
+ 0x258ab57f, 0xbb8a1fb3, 0x588d903d, 0xc68d3af1, 0xdf84fffb,
+ 0x41845537, 0xa283dab9, 0x3c837075, 0xda853b53, 0x4485919f,
+ 0xa7821e11, 0x3982b4dd, 0x208b71d7, 0xbe8bdb1b, 0x5d8c5495,
+ 0xc38cfe59, 0x6f9ede80, 0xf19e744c, 0x1299fbc2, 0x8c99510e,
+ 0x95909404, 0x0b903ec8, 0xe897b146, 0x76971b8a, 0xf1b4802f,
+ 0x6fb42ae3, 0x8cb3a56d, 0x12b30fa1, 0x0bbacaab, 0x95ba6067,
+ 0x76bdefe9, 0xe8bd4525, 0x44af65fc, 0xdaafcf30, 0x39a840be,
+ 0xa7a8ea72, 0xbea12f78, 0x20a185b4, 0xc3a60a3a, 0x5da6a0f6,
+ 0x8ce74daa, 0x12e7e766, 0xf1e068e8, 0x6fe0c224, 0x76e9072e,
+ 0xe8e9ade2, 0x0bee226c, 0x95ee88a0, 0x39fca879, 0xa7fc02b5,
+ 0x44fb8d3b, 0xdafb27f7, 0xc3f2e2fd, 0x5df24831, 0xbef5c7bf,
+ 0x20f56d73, 0xa7d6f6d6, 0x39d65c1a, 0xdad1d394, 0x44d17958,
+ 0x5dd8bc52, 0xc3d8169e, 0x20df9910, 0xbedf33dc, 0x12cd1305,
+ 0x8ccdb9c9, 0x6fca3647, 0xf1ca9c8b, 0xe8c35981, 0x76c3f34d,
+ 0x95c47cc3, 0x0bc4d60f, 0x3747a67a, 0xa9470cb6, 0x4a408338,
+ 0xd44029f4, 0xcd49ecfe, 0x53494632, 0xb04ec9bc, 0x2e4e6370,
+ 0x825c43a9, 0x1c5ce965, 0xff5b66eb, 0x615bcc27, 0x7852092d,
+ 0xe652a3e1, 0x05552c6f, 0x9b5586a3, 0x1c761d06, 0x8276b7ca,
+ 0x61713844, 0xff719288, 0xe6785782, 0x7878fd4e, 0x9b7f72c0,
+ 0x057fd80c, 0xa96df8d5, 0x376d5219, 0xd46add97, 0x4a6a775b,
+ 0x5363b251, 0xcd63189d, 0x2e649713, 0xb0643ddf, 0x6125d083,
+ 0xff257a4f, 0x1c22f5c1, 0x82225f0d, 0x9b2b9a07, 0x052b30cb,
+ 0xe62cbf45, 0x782c1589, 0xd43e3550, 0x4a3e9f9c, 0xa9391012,
+ 0x3739bade, 0x2e307fd4, 0xb030d518, 0x53375a96, 0xcd37f05a,
+ 0x4a146bff, 0xd414c133, 0x37134ebd, 0xa913e471, 0xb01a217b,
+ 0x2e1a8bb7, 0xcd1d0439, 0x531daef5, 0xff0f8e2c, 0x610f24e0,
+ 0x8208ab6e, 0x1c0801a2, 0x0501c4a8, 0x9b016e64, 0x7806e1ea,
+ 0xe6064b26}};
+
#endif
- }
-};
+
+#endif
+
+#if N == 3
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f,
+ 0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999,
+ 0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee,
+ 0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615,
+ 0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383,
+ 0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb,
+ 0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275,
+ 0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d,
+ 0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b,
+ 0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460,
+ 0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317,
+ 0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1,
+ 0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5,
+ 0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd,
+ 0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04,
+ 0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c,
+ 0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7,
+ 0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11,
+ 0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66,
+ 0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7,
+ 0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871,
+ 0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309,
+ 0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd,
+ 0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85,
+ 0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913,
+ 0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d,
+ 0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a,
+ 0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc,
+ 0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57,
+ 0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f,
+ 0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6,
+ 0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e,
+ 0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f,
+ 0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289,
+ 0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe,
+ 0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05,
+ 0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893,
+ 0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb,
+ 0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0,
+ 0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8,
+ 0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e,
+ 0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5,
+ 0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2,
+ 0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574,
+ 0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5,
+ 0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add,
+ 0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114,
+ 0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c,
+ 0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7,
+ 0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701,
+ 0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076,
+ 0x09cd8551},
+ {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193,
+ 0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2,
+ 0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c,
+ 0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71,
+ 0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a,
+ 0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d,
+ 0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71,
+ 0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436,
+ 0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d,
+ 0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000,
+ 0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae,
+ 0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf,
+ 0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930,
+ 0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277,
+ 0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff,
+ 0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8,
+ 0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef,
+ 0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e,
+ 0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20,
+ 0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95,
+ 0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e,
+ 0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9,
+ 0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d,
+ 0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a,
+ 0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151,
+ 0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4,
+ 0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a,
+ 0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b,
+ 0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c,
+ 0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b,
+ 0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3,
+ 0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4,
+ 0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b,
+ 0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a,
+ 0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4,
+ 0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189,
+ 0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92,
+ 0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5,
+ 0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9,
+ 0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe,
+ 0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5,
+ 0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8,
+ 0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66,
+ 0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707,
+ 0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8,
+ 0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f,
+ 0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707,
+ 0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40,
+ 0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017,
+ 0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876,
+ 0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8,
+ 0x7bc97a0c},
+ {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300,
+ 0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0,
+ 0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80,
+ 0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701,
+ 0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41,
+ 0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81,
+ 0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43,
+ 0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83,
+ 0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3,
+ 0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42,
+ 0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202,
+ 0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2,
+ 0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7,
+ 0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407,
+ 0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47,
+ 0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87,
+ 0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86,
+ 0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46,
+ 0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506,
+ 0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44,
+ 0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704,
+ 0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4,
+ 0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5,
+ 0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505,
+ 0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45,
+ 0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f,
+ 0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f,
+ 0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f,
+ 0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e,
+ 0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e,
+ 0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e,
+ 0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce,
+ 0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c,
+ 0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc,
+ 0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c,
+ 0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d,
+ 0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d,
+ 0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d,
+ 0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88,
+ 0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48,
+ 0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708,
+ 0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89,
+ 0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9,
+ 0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309,
+ 0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb,
+ 0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b,
+ 0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b,
+ 0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b,
+ 0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a,
+ 0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a,
+ 0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a,
+ 0x7851a2ca},
+ {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb,
+ 0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8,
+ 0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0,
+ 0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f,
+ 0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a,
+ 0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf,
+ 0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5,
+ 0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380,
+ 0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815,
+ 0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa,
+ 0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2,
+ 0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1,
+ 0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1,
+ 0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4,
+ 0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa,
+ 0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df,
+ 0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6,
+ 0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5,
+ 0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad,
+ 0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca,
+ 0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f,
+ 0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a,
+ 0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8,
+ 0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d,
+ 0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708,
+ 0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d,
+ 0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865,
+ 0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636,
+ 0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f,
+ 0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a,
+ 0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744,
+ 0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061,
+ 0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0,
+ 0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293,
+ 0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb,
+ 0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874,
+ 0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1,
+ 0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4,
+ 0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f,
+ 0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a,
+ 0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f,
+ 0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120,
+ 0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778,
+ 0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b,
+ 0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a,
+ 0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af,
+ 0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81,
+ 0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4,
+ 0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd,
+ 0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e,
+ 0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6,
+ 0x566b6848},
+ {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59,
+ 0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4,
+ 0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67,
+ 0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef,
+ 0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97,
+ 0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88,
+ 0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687,
+ 0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698,
+ 0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0,
+ 0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068,
+ 0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb,
+ 0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056,
+ 0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016,
+ 0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009,
+ 0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028,
+ 0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037,
+ 0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a,
+ 0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7,
+ 0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054,
+ 0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7,
+ 0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af,
+ 0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0,
+ 0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4,
+ 0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab,
+ 0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3,
+ 0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a,
+ 0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9,
+ 0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54,
+ 0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09,
+ 0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16,
+ 0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37,
+ 0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28,
+ 0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e,
+ 0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3,
+ 0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40,
+ 0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8,
+ 0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0,
+ 0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf,
+ 0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6,
+ 0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9,
+ 0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1,
+ 0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059,
+ 0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca,
+ 0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067,
+ 0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031,
+ 0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e,
+ 0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f,
+ 0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010,
+ 0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d,
+ 0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0,
+ 0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073,
+ 0xd8ac6b35},
+ {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2,
+ 0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd,
+ 0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696,
+ 0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3,
+ 0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f,
+ 0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35,
+ 0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5,
+ 0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f,
+ 0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673,
+ 0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46,
+ 0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d,
+ 0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632,
+ 0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28,
+ 0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192,
+ 0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c,
+ 0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6,
+ 0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0,
+ 0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff,
+ 0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4,
+ 0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95,
+ 0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9,
+ 0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03,
+ 0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7,
+ 0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d,
+ 0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151,
+ 0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808,
+ 0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343,
+ 0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c,
+ 0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a,
+ 0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0,
+ 0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e,
+ 0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594,
+ 0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6,
+ 0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399,
+ 0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2,
+ 0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7,
+ 0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb,
+ 0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571,
+ 0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289,
+ 0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33,
+ 0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f,
+ 0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a,
+ 0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461,
+ 0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e,
+ 0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c,
+ 0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6,
+ 0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918,
+ 0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2,
+ 0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484,
+ 0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb,
+ 0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0,
+ 0xa140efa8},
+ {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706,
+ 0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed,
+ 0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289,
+ 0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a,
+ 0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214,
+ 0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3,
+ 0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3,
+ 0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254,
+ 0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a,
+ 0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9,
+ 0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad,
+ 0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746,
+ 0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060,
+ 0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187,
+ 0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef,
+ 0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408,
+ 0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e,
+ 0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495,
+ 0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1,
+ 0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532,
+ 0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c,
+ 0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb,
+ 0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb,
+ 0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c,
+ 0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42,
+ 0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060,
+ 0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04,
+ 0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef,
+ 0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99,
+ 0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e,
+ 0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16,
+ 0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1,
+ 0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7,
+ 0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c,
+ 0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38,
+ 0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb,
+ 0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5,
+ 0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42,
+ 0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62,
+ 0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85,
+ 0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb,
+ 0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18,
+ 0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c,
+ 0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997,
+ 0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1,
+ 0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36,
+ 0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e,
+ 0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9,
+ 0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf,
+ 0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24,
+ 0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040,
+ 0x917cd6a1},
+ {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf,
+ 0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd,
+ 0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896,
+ 0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9,
+ 0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3,
+ 0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f,
+ 0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d,
+ 0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1,
+ 0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab,
+ 0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4,
+ 0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f,
+ 0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d,
+ 0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4,
+ 0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978,
+ 0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad,
+ 0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621,
+ 0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46,
+ 0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854,
+ 0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f,
+ 0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a,
+ 0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890,
+ 0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c,
+ 0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4,
+ 0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238,
+ 0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622,
+ 0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab,
+ 0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0,
+ 0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2,
+ 0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295,
+ 0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19,
+ 0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc,
+ 0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140,
+ 0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd,
+ 0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf,
+ 0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184,
+ 0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb,
+ 0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1,
+ 0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d,
+ 0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb,
+ 0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257,
+ 0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d,
+ 0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22,
+ 0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069,
+ 0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b,
+ 0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6,
+ 0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a,
+ 0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf,
+ 0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33,
+ 0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254,
+ 0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146,
+ 0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d,
+ 0x18ba364e}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0x43cba68700000000, 0xc7903cd400000000,
+ 0x845b9a5300000000, 0xcf27087300000000, 0x8cecaef400000000,
+ 0x08b734a700000000, 0x4b7c922000000000, 0x9e4f10e600000000,
+ 0xdd84b66100000000, 0x59df2c3200000000, 0x1a148ab500000000,
+ 0x5168189500000000, 0x12a3be1200000000, 0x96f8244100000000,
+ 0xd53382c600000000, 0x7d99511700000000, 0x3e52f79000000000,
+ 0xba096dc300000000, 0xf9c2cb4400000000, 0xb2be596400000000,
+ 0xf175ffe300000000, 0x752e65b000000000, 0x36e5c33700000000,
+ 0xe3d641f100000000, 0xa01de77600000000, 0x24467d2500000000,
+ 0x678ddba200000000, 0x2cf1498200000000, 0x6f3aef0500000000,
+ 0xeb61755600000000, 0xa8aad3d100000000, 0xfa32a32e00000000,
+ 0xb9f905a900000000, 0x3da29ffa00000000, 0x7e69397d00000000,
+ 0x3515ab5d00000000, 0x76de0dda00000000, 0xf285978900000000,
+ 0xb14e310e00000000, 0x647db3c800000000, 0x27b6154f00000000,
+ 0xa3ed8f1c00000000, 0xe026299b00000000, 0xab5abbbb00000000,
+ 0xe8911d3c00000000, 0x6cca876f00000000, 0x2f0121e800000000,
+ 0x87abf23900000000, 0xc46054be00000000, 0x403bceed00000000,
+ 0x03f0686a00000000, 0x488cfa4a00000000, 0x0b475ccd00000000,
+ 0x8f1cc69e00000000, 0xccd7601900000000, 0x19e4e2df00000000,
+ 0x5a2f445800000000, 0xde74de0b00000000, 0x9dbf788c00000000,
+ 0xd6c3eaac00000000, 0x95084c2b00000000, 0x1153d67800000000,
+ 0x529870ff00000000, 0xf465465d00000000, 0xb7aee0da00000000,
+ 0x33f57a8900000000, 0x703edc0e00000000, 0x3b424e2e00000000,
+ 0x7889e8a900000000, 0xfcd272fa00000000, 0xbf19d47d00000000,
+ 0x6a2a56bb00000000, 0x29e1f03c00000000, 0xadba6a6f00000000,
+ 0xee71cce800000000, 0xa50d5ec800000000, 0xe6c6f84f00000000,
+ 0x629d621c00000000, 0x2156c49b00000000, 0x89fc174a00000000,
+ 0xca37b1cd00000000, 0x4e6c2b9e00000000, 0x0da78d1900000000,
+ 0x46db1f3900000000, 0x0510b9be00000000, 0x814b23ed00000000,
+ 0xc280856a00000000, 0x17b307ac00000000, 0x5478a12b00000000,
+ 0xd0233b7800000000, 0x93e89dff00000000, 0xd8940fdf00000000,
+ 0x9b5fa95800000000, 0x1f04330b00000000, 0x5ccf958c00000000,
+ 0x0e57e57300000000, 0x4d9c43f400000000, 0xc9c7d9a700000000,
+ 0x8a0c7f2000000000, 0xc170ed0000000000, 0x82bb4b8700000000,
+ 0x06e0d1d400000000, 0x452b775300000000, 0x9018f59500000000,
+ 0xd3d3531200000000, 0x5788c94100000000, 0x14436fc600000000,
+ 0x5f3ffde600000000, 0x1cf45b6100000000, 0x98afc13200000000,
+ 0xdb6467b500000000, 0x73ceb46400000000, 0x300512e300000000,
+ 0xb45e88b000000000, 0xf7952e3700000000, 0xbce9bc1700000000,
+ 0xff221a9000000000, 0x7b7980c300000000, 0x38b2264400000000,
+ 0xed81a48200000000, 0xae4a020500000000, 0x2a11985600000000,
+ 0x69da3ed100000000, 0x22a6acf100000000, 0x616d0a7600000000,
+ 0xe536902500000000, 0xa6fd36a200000000, 0xe8cb8cba00000000,
+ 0xab002a3d00000000, 0x2f5bb06e00000000, 0x6c9016e900000000,
+ 0x27ec84c900000000, 0x6427224e00000000, 0xe07cb81d00000000,
+ 0xa3b71e9a00000000, 0x76849c5c00000000, 0x354f3adb00000000,
+ 0xb114a08800000000, 0xf2df060f00000000, 0xb9a3942f00000000,
+ 0xfa6832a800000000, 0x7e33a8fb00000000, 0x3df80e7c00000000,
+ 0x9552ddad00000000, 0xd6997b2a00000000, 0x52c2e17900000000,
+ 0x110947fe00000000, 0x5a75d5de00000000, 0x19be735900000000,
+ 0x9de5e90a00000000, 0xde2e4f8d00000000, 0x0b1dcd4b00000000,
+ 0x48d66bcc00000000, 0xcc8df19f00000000, 0x8f46571800000000,
+ 0xc43ac53800000000, 0x87f163bf00000000, 0x03aaf9ec00000000,
+ 0x40615f6b00000000, 0x12f92f9400000000, 0x5132891300000000,
+ 0xd569134000000000, 0x96a2b5c700000000, 0xddde27e700000000,
+ 0x9e15816000000000, 0x1a4e1b3300000000, 0x5985bdb400000000,
+ 0x8cb63f7200000000, 0xcf7d99f500000000, 0x4b2603a600000000,
+ 0x08eda52100000000, 0x4391370100000000, 0x005a918600000000,
+ 0x84010bd500000000, 0xc7caad5200000000, 0x6f607e8300000000,
+ 0x2cabd80400000000, 0xa8f0425700000000, 0xeb3be4d000000000,
+ 0xa04776f000000000, 0xe38cd07700000000, 0x67d74a2400000000,
+ 0x241ceca300000000, 0xf12f6e6500000000, 0xb2e4c8e200000000,
+ 0x36bf52b100000000, 0x7574f43600000000, 0x3e08661600000000,
+ 0x7dc3c09100000000, 0xf9985ac200000000, 0xba53fc4500000000,
+ 0x1caecae700000000, 0x5f656c6000000000, 0xdb3ef63300000000,
+ 0x98f550b400000000, 0xd389c29400000000, 0x9042641300000000,
+ 0x1419fe4000000000, 0x57d258c700000000, 0x82e1da0100000000,
+ 0xc12a7c8600000000, 0x4571e6d500000000, 0x06ba405200000000,
+ 0x4dc6d27200000000, 0x0e0d74f500000000, 0x8a56eea600000000,
+ 0xc99d482100000000, 0x61379bf000000000, 0x22fc3d7700000000,
+ 0xa6a7a72400000000, 0xe56c01a300000000, 0xae10938300000000,
+ 0xeddb350400000000, 0x6980af5700000000, 0x2a4b09d000000000,
+ 0xff788b1600000000, 0xbcb32d9100000000, 0x38e8b7c200000000,
+ 0x7b23114500000000, 0x305f836500000000, 0x739425e200000000,
+ 0xf7cfbfb100000000, 0xb404193600000000, 0xe69c69c900000000,
+ 0xa557cf4e00000000, 0x210c551d00000000, 0x62c7f39a00000000,
+ 0x29bb61ba00000000, 0x6a70c73d00000000, 0xee2b5d6e00000000,
+ 0xade0fbe900000000, 0x78d3792f00000000, 0x3b18dfa800000000,
+ 0xbf4345fb00000000, 0xfc88e37c00000000, 0xb7f4715c00000000,
+ 0xf43fd7db00000000, 0x70644d8800000000, 0x33afeb0f00000000,
+ 0x9b0538de00000000, 0xd8ce9e5900000000, 0x5c95040a00000000,
+ 0x1f5ea28d00000000, 0x542230ad00000000, 0x17e9962a00000000,
+ 0x93b20c7900000000, 0xd079aafe00000000, 0x054a283800000000,
+ 0x46818ebf00000000, 0xc2da14ec00000000, 0x8111b26b00000000,
+ 0xca6d204b00000000, 0x89a686cc00000000, 0x0dfd1c9f00000000,
+ 0x4e36ba1800000000},
+ {0x0000000000000000, 0xe1b652ef00000000, 0x836bd40500000000,
+ 0x62dd86ea00000000, 0x06d7a80b00000000, 0xe761fae400000000,
+ 0x85bc7c0e00000000, 0x640a2ee100000000, 0x0cae511700000000,
+ 0xed1803f800000000, 0x8fc5851200000000, 0x6e73d7fd00000000,
+ 0x0a79f91c00000000, 0xebcfabf300000000, 0x89122d1900000000,
+ 0x68a47ff600000000, 0x185ca32e00000000, 0xf9eaf1c100000000,
+ 0x9b37772b00000000, 0x7a8125c400000000, 0x1e8b0b2500000000,
+ 0xff3d59ca00000000, 0x9de0df2000000000, 0x7c568dcf00000000,
+ 0x14f2f23900000000, 0xf544a0d600000000, 0x9799263c00000000,
+ 0x762f74d300000000, 0x12255a3200000000, 0xf39308dd00000000,
+ 0x914e8e3700000000, 0x70f8dcd800000000, 0x30b8465d00000000,
+ 0xd10e14b200000000, 0xb3d3925800000000, 0x5265c0b700000000,
+ 0x366fee5600000000, 0xd7d9bcb900000000, 0xb5043a5300000000,
+ 0x54b268bc00000000, 0x3c16174a00000000, 0xdda045a500000000,
+ 0xbf7dc34f00000000, 0x5ecb91a000000000, 0x3ac1bf4100000000,
+ 0xdb77edae00000000, 0xb9aa6b4400000000, 0x581c39ab00000000,
+ 0x28e4e57300000000, 0xc952b79c00000000, 0xab8f317600000000,
+ 0x4a39639900000000, 0x2e334d7800000000, 0xcf851f9700000000,
+ 0xad58997d00000000, 0x4ceecb9200000000, 0x244ab46400000000,
+ 0xc5fce68b00000000, 0xa721606100000000, 0x4697328e00000000,
+ 0x229d1c6f00000000, 0xc32b4e8000000000, 0xa1f6c86a00000000,
+ 0x40409a8500000000, 0x60708dba00000000, 0x81c6df5500000000,
+ 0xe31b59bf00000000, 0x02ad0b5000000000, 0x66a725b100000000,
+ 0x8711775e00000000, 0xe5ccf1b400000000, 0x047aa35b00000000,
+ 0x6cdedcad00000000, 0x8d688e4200000000, 0xefb508a800000000,
+ 0x0e035a4700000000, 0x6a0974a600000000, 0x8bbf264900000000,
+ 0xe962a0a300000000, 0x08d4f24c00000000, 0x782c2e9400000000,
+ 0x999a7c7b00000000, 0xfb47fa9100000000, 0x1af1a87e00000000,
+ 0x7efb869f00000000, 0x9f4dd47000000000, 0xfd90529a00000000,
+ 0x1c26007500000000, 0x74827f8300000000, 0x95342d6c00000000,
+ 0xf7e9ab8600000000, 0x165ff96900000000, 0x7255d78800000000,
+ 0x93e3856700000000, 0xf13e038d00000000, 0x1088516200000000,
+ 0x50c8cbe700000000, 0xb17e990800000000, 0xd3a31fe200000000,
+ 0x32154d0d00000000, 0x561f63ec00000000, 0xb7a9310300000000,
+ 0xd574b7e900000000, 0x34c2e50600000000, 0x5c669af000000000,
+ 0xbdd0c81f00000000, 0xdf0d4ef500000000, 0x3ebb1c1a00000000,
+ 0x5ab132fb00000000, 0xbb07601400000000, 0xd9dae6fe00000000,
+ 0x386cb41100000000, 0x489468c900000000, 0xa9223a2600000000,
+ 0xcbffbccc00000000, 0x2a49ee2300000000, 0x4e43c0c200000000,
+ 0xaff5922d00000000, 0xcd2814c700000000, 0x2c9e462800000000,
+ 0x443a39de00000000, 0xa58c6b3100000000, 0xc751eddb00000000,
+ 0x26e7bf3400000000, 0x42ed91d500000000, 0xa35bc33a00000000,
+ 0xc18645d000000000, 0x2030173f00000000, 0x81e66bae00000000,
+ 0x6050394100000000, 0x028dbfab00000000, 0xe33bed4400000000,
+ 0x8731c3a500000000, 0x6687914a00000000, 0x045a17a000000000,
+ 0xe5ec454f00000000, 0x8d483ab900000000, 0x6cfe685600000000,
+ 0x0e23eebc00000000, 0xef95bc5300000000, 0x8b9f92b200000000,
+ 0x6a29c05d00000000, 0x08f446b700000000, 0xe942145800000000,
+ 0x99bac88000000000, 0x780c9a6f00000000, 0x1ad11c8500000000,
+ 0xfb674e6a00000000, 0x9f6d608b00000000, 0x7edb326400000000,
+ 0x1c06b48e00000000, 0xfdb0e66100000000, 0x9514999700000000,
+ 0x74a2cb7800000000, 0x167f4d9200000000, 0xf7c91f7d00000000,
+ 0x93c3319c00000000, 0x7275637300000000, 0x10a8e59900000000,
+ 0xf11eb77600000000, 0xb15e2df300000000, 0x50e87f1c00000000,
+ 0x3235f9f600000000, 0xd383ab1900000000, 0xb78985f800000000,
+ 0x563fd71700000000, 0x34e251fd00000000, 0xd554031200000000,
+ 0xbdf07ce400000000, 0x5c462e0b00000000, 0x3e9ba8e100000000,
+ 0xdf2dfa0e00000000, 0xbb27d4ef00000000, 0x5a91860000000000,
+ 0x384c00ea00000000, 0xd9fa520500000000, 0xa9028edd00000000,
+ 0x48b4dc3200000000, 0x2a695ad800000000, 0xcbdf083700000000,
+ 0xafd526d600000000, 0x4e63743900000000, 0x2cbef2d300000000,
+ 0xcd08a03c00000000, 0xa5acdfca00000000, 0x441a8d2500000000,
+ 0x26c70bcf00000000, 0xc771592000000000, 0xa37b77c100000000,
+ 0x42cd252e00000000, 0x2010a3c400000000, 0xc1a6f12b00000000,
+ 0xe196e61400000000, 0x0020b4fb00000000, 0x62fd321100000000,
+ 0x834b60fe00000000, 0xe7414e1f00000000, 0x06f71cf000000000,
+ 0x642a9a1a00000000, 0x859cc8f500000000, 0xed38b70300000000,
+ 0x0c8ee5ec00000000, 0x6e53630600000000, 0x8fe531e900000000,
+ 0xebef1f0800000000, 0x0a594de700000000, 0x6884cb0d00000000,
+ 0x893299e200000000, 0xf9ca453a00000000, 0x187c17d500000000,
+ 0x7aa1913f00000000, 0x9b17c3d000000000, 0xff1ded3100000000,
+ 0x1eabbfde00000000, 0x7c76393400000000, 0x9dc06bdb00000000,
+ 0xf564142d00000000, 0x14d246c200000000, 0x760fc02800000000,
+ 0x97b992c700000000, 0xf3b3bc2600000000, 0x1205eec900000000,
+ 0x70d8682300000000, 0x916e3acc00000000, 0xd12ea04900000000,
+ 0x3098f2a600000000, 0x5245744c00000000, 0xb3f326a300000000,
+ 0xd7f9084200000000, 0x364f5aad00000000, 0x5492dc4700000000,
+ 0xb5248ea800000000, 0xdd80f15e00000000, 0x3c36a3b100000000,
+ 0x5eeb255b00000000, 0xbf5d77b400000000, 0xdb57595500000000,
+ 0x3ae10bba00000000, 0x583c8d5000000000, 0xb98adfbf00000000,
+ 0xc972036700000000, 0x28c4518800000000, 0x4a19d76200000000,
+ 0xabaf858d00000000, 0xcfa5ab6c00000000, 0x2e13f98300000000,
+ 0x4cce7f6900000000, 0xad782d8600000000, 0xc5dc527000000000,
+ 0x246a009f00000000, 0x46b7867500000000, 0xa701d49a00000000,
+ 0xc30bfa7b00000000, 0x22bda89400000000, 0x40602e7e00000000,
+ 0xa1d67c9100000000},
+ {0x0000000000000000, 0x5880e2d700000000, 0xf106b47400000000,
+ 0xa98656a300000000, 0xe20d68e900000000, 0xba8d8a3e00000000,
+ 0x130bdc9d00000000, 0x4b8b3e4a00000000, 0x851da10900000000,
+ 0xdd9d43de00000000, 0x741b157d00000000, 0x2c9bf7aa00000000,
+ 0x6710c9e000000000, 0x3f902b3700000000, 0x96167d9400000000,
+ 0xce969f4300000000, 0x0a3b421300000000, 0x52bba0c400000000,
+ 0xfb3df66700000000, 0xa3bd14b000000000, 0xe8362afa00000000,
+ 0xb0b6c82d00000000, 0x19309e8e00000000, 0x41b07c5900000000,
+ 0x8f26e31a00000000, 0xd7a601cd00000000, 0x7e20576e00000000,
+ 0x26a0b5b900000000, 0x6d2b8bf300000000, 0x35ab692400000000,
+ 0x9c2d3f8700000000, 0xc4addd5000000000, 0x1476842600000000,
+ 0x4cf666f100000000, 0xe570305200000000, 0xbdf0d28500000000,
+ 0xf67beccf00000000, 0xaefb0e1800000000, 0x077d58bb00000000,
+ 0x5ffdba6c00000000, 0x916b252f00000000, 0xc9ebc7f800000000,
+ 0x606d915b00000000, 0x38ed738c00000000, 0x73664dc600000000,
+ 0x2be6af1100000000, 0x8260f9b200000000, 0xdae01b6500000000,
+ 0x1e4dc63500000000, 0x46cd24e200000000, 0xef4b724100000000,
+ 0xb7cb909600000000, 0xfc40aedc00000000, 0xa4c04c0b00000000,
+ 0x0d461aa800000000, 0x55c6f87f00000000, 0x9b50673c00000000,
+ 0xc3d085eb00000000, 0x6a56d34800000000, 0x32d6319f00000000,
+ 0x795d0fd500000000, 0x21dded0200000000, 0x885bbba100000000,
+ 0xd0db597600000000, 0x28ec084d00000000, 0x706cea9a00000000,
+ 0xd9eabc3900000000, 0x816a5eee00000000, 0xcae160a400000000,
+ 0x9261827300000000, 0x3be7d4d000000000, 0x6367360700000000,
+ 0xadf1a94400000000, 0xf5714b9300000000, 0x5cf71d3000000000,
+ 0x0477ffe700000000, 0x4ffcc1ad00000000, 0x177c237a00000000,
+ 0xbefa75d900000000, 0xe67a970e00000000, 0x22d74a5e00000000,
+ 0x7a57a88900000000, 0xd3d1fe2a00000000, 0x8b511cfd00000000,
+ 0xc0da22b700000000, 0x985ac06000000000, 0x31dc96c300000000,
+ 0x695c741400000000, 0xa7caeb5700000000, 0xff4a098000000000,
+ 0x56cc5f2300000000, 0x0e4cbdf400000000, 0x45c783be00000000,
+ 0x1d47616900000000, 0xb4c137ca00000000, 0xec41d51d00000000,
+ 0x3c9a8c6b00000000, 0x641a6ebc00000000, 0xcd9c381f00000000,
+ 0x951cdac800000000, 0xde97e48200000000, 0x8617065500000000,
+ 0x2f9150f600000000, 0x7711b22100000000, 0xb9872d6200000000,
+ 0xe107cfb500000000, 0x4881991600000000, 0x10017bc100000000,
+ 0x5b8a458b00000000, 0x030aa75c00000000, 0xaa8cf1ff00000000,
+ 0xf20c132800000000, 0x36a1ce7800000000, 0x6e212caf00000000,
+ 0xc7a77a0c00000000, 0x9f2798db00000000, 0xd4aca69100000000,
+ 0x8c2c444600000000, 0x25aa12e500000000, 0x7d2af03200000000,
+ 0xb3bc6f7100000000, 0xeb3c8da600000000, 0x42badb0500000000,
+ 0x1a3a39d200000000, 0x51b1079800000000, 0x0931e54f00000000,
+ 0xa0b7b3ec00000000, 0xf837513b00000000, 0x50d8119a00000000,
+ 0x0858f34d00000000, 0xa1dea5ee00000000, 0xf95e473900000000,
+ 0xb2d5797300000000, 0xea559ba400000000, 0x43d3cd0700000000,
+ 0x1b532fd000000000, 0xd5c5b09300000000, 0x8d45524400000000,
+ 0x24c304e700000000, 0x7c43e63000000000, 0x37c8d87a00000000,
+ 0x6f483aad00000000, 0xc6ce6c0e00000000, 0x9e4e8ed900000000,
+ 0x5ae3538900000000, 0x0263b15e00000000, 0xabe5e7fd00000000,
+ 0xf365052a00000000, 0xb8ee3b6000000000, 0xe06ed9b700000000,
+ 0x49e88f1400000000, 0x11686dc300000000, 0xdffef28000000000,
+ 0x877e105700000000, 0x2ef846f400000000, 0x7678a42300000000,
+ 0x3df39a6900000000, 0x657378be00000000, 0xccf52e1d00000000,
+ 0x9475ccca00000000, 0x44ae95bc00000000, 0x1c2e776b00000000,
+ 0xb5a821c800000000, 0xed28c31f00000000, 0xa6a3fd5500000000,
+ 0xfe231f8200000000, 0x57a5492100000000, 0x0f25abf600000000,
+ 0xc1b334b500000000, 0x9933d66200000000, 0x30b580c100000000,
+ 0x6835621600000000, 0x23be5c5c00000000, 0x7b3ebe8b00000000,
+ 0xd2b8e82800000000, 0x8a380aff00000000, 0x4e95d7af00000000,
+ 0x1615357800000000, 0xbf9363db00000000, 0xe713810c00000000,
+ 0xac98bf4600000000, 0xf4185d9100000000, 0x5d9e0b3200000000,
+ 0x051ee9e500000000, 0xcb8876a600000000, 0x9308947100000000,
+ 0x3a8ec2d200000000, 0x620e200500000000, 0x29851e4f00000000,
+ 0x7105fc9800000000, 0xd883aa3b00000000, 0x800348ec00000000,
+ 0x783419d700000000, 0x20b4fb0000000000, 0x8932ada300000000,
+ 0xd1b24f7400000000, 0x9a39713e00000000, 0xc2b993e900000000,
+ 0x6b3fc54a00000000, 0x33bf279d00000000, 0xfd29b8de00000000,
+ 0xa5a95a0900000000, 0x0c2f0caa00000000, 0x54afee7d00000000,
+ 0x1f24d03700000000, 0x47a432e000000000, 0xee22644300000000,
+ 0xb6a2869400000000, 0x720f5bc400000000, 0x2a8fb91300000000,
+ 0x8309efb000000000, 0xdb890d6700000000, 0x9002332d00000000,
+ 0xc882d1fa00000000, 0x6104875900000000, 0x3984658e00000000,
+ 0xf712facd00000000, 0xaf92181a00000000, 0x06144eb900000000,
+ 0x5e94ac6e00000000, 0x151f922400000000, 0x4d9f70f300000000,
+ 0xe419265000000000, 0xbc99c48700000000, 0x6c429df100000000,
+ 0x34c27f2600000000, 0x9d44298500000000, 0xc5c4cb5200000000,
+ 0x8e4ff51800000000, 0xd6cf17cf00000000, 0x7f49416c00000000,
+ 0x27c9a3bb00000000, 0xe95f3cf800000000, 0xb1dfde2f00000000,
+ 0x1859888c00000000, 0x40d96a5b00000000, 0x0b52541100000000,
+ 0x53d2b6c600000000, 0xfa54e06500000000, 0xa2d402b200000000,
+ 0x6679dfe200000000, 0x3ef93d3500000000, 0x977f6b9600000000,
+ 0xcfff894100000000, 0x8474b70b00000000, 0xdcf455dc00000000,
+ 0x7572037f00000000, 0x2df2e1a800000000, 0xe3647eeb00000000,
+ 0xbbe49c3c00000000, 0x1262ca9f00000000, 0x4ae2284800000000,
+ 0x0169160200000000, 0x59e9f4d500000000, 0xf06fa27600000000,
+ 0xa8ef40a100000000},
+ {0x0000000000000000, 0x463b676500000000, 0x8c76ceca00000000,
+ 0xca4da9af00000000, 0x59ebed4e00000000, 0x1fd08a2b00000000,
+ 0xd59d238400000000, 0x93a644e100000000, 0xb2d6db9d00000000,
+ 0xf4edbcf800000000, 0x3ea0155700000000, 0x789b723200000000,
+ 0xeb3d36d300000000, 0xad0651b600000000, 0x674bf81900000000,
+ 0x21709f7c00000000, 0x25abc6e000000000, 0x6390a18500000000,
+ 0xa9dd082a00000000, 0xefe66f4f00000000, 0x7c402bae00000000,
+ 0x3a7b4ccb00000000, 0xf036e56400000000, 0xb60d820100000000,
+ 0x977d1d7d00000000, 0xd1467a1800000000, 0x1b0bd3b700000000,
+ 0x5d30b4d200000000, 0xce96f03300000000, 0x88ad975600000000,
+ 0x42e03ef900000000, 0x04db599c00000000, 0x0b50fc1a00000000,
+ 0x4d6b9b7f00000000, 0x872632d000000000, 0xc11d55b500000000,
+ 0x52bb115400000000, 0x1480763100000000, 0xdecddf9e00000000,
+ 0x98f6b8fb00000000, 0xb986278700000000, 0xffbd40e200000000,
+ 0x35f0e94d00000000, 0x73cb8e2800000000, 0xe06dcac900000000,
+ 0xa656adac00000000, 0x6c1b040300000000, 0x2a20636600000000,
+ 0x2efb3afa00000000, 0x68c05d9f00000000, 0xa28df43000000000,
+ 0xe4b6935500000000, 0x7710d7b400000000, 0x312bb0d100000000,
+ 0xfb66197e00000000, 0xbd5d7e1b00000000, 0x9c2de16700000000,
+ 0xda16860200000000, 0x105b2fad00000000, 0x566048c800000000,
+ 0xc5c60c2900000000, 0x83fd6b4c00000000, 0x49b0c2e300000000,
+ 0x0f8ba58600000000, 0x16a0f83500000000, 0x509b9f5000000000,
+ 0x9ad636ff00000000, 0xdced519a00000000, 0x4f4b157b00000000,
+ 0x0970721e00000000, 0xc33ddbb100000000, 0x8506bcd400000000,
+ 0xa47623a800000000, 0xe24d44cd00000000, 0x2800ed6200000000,
+ 0x6e3b8a0700000000, 0xfd9dcee600000000, 0xbba6a98300000000,
+ 0x71eb002c00000000, 0x37d0674900000000, 0x330b3ed500000000,
+ 0x753059b000000000, 0xbf7df01f00000000, 0xf946977a00000000,
+ 0x6ae0d39b00000000, 0x2cdbb4fe00000000, 0xe6961d5100000000,
+ 0xa0ad7a3400000000, 0x81dde54800000000, 0xc7e6822d00000000,
+ 0x0dab2b8200000000, 0x4b904ce700000000, 0xd836080600000000,
+ 0x9e0d6f6300000000, 0x5440c6cc00000000, 0x127ba1a900000000,
+ 0x1df0042f00000000, 0x5bcb634a00000000, 0x9186cae500000000,
+ 0xd7bdad8000000000, 0x441be96100000000, 0x02208e0400000000,
+ 0xc86d27ab00000000, 0x8e5640ce00000000, 0xaf26dfb200000000,
+ 0xe91db8d700000000, 0x2350117800000000, 0x656b761d00000000,
+ 0xf6cd32fc00000000, 0xb0f6559900000000, 0x7abbfc3600000000,
+ 0x3c809b5300000000, 0x385bc2cf00000000, 0x7e60a5aa00000000,
+ 0xb42d0c0500000000, 0xf2166b6000000000, 0x61b02f8100000000,
+ 0x278b48e400000000, 0xedc6e14b00000000, 0xabfd862e00000000,
+ 0x8a8d195200000000, 0xccb67e3700000000, 0x06fbd79800000000,
+ 0x40c0b0fd00000000, 0xd366f41c00000000, 0x955d937900000000,
+ 0x5f103ad600000000, 0x192b5db300000000, 0x2c40f16b00000000,
+ 0x6a7b960e00000000, 0xa0363fa100000000, 0xe60d58c400000000,
+ 0x75ab1c2500000000, 0x33907b4000000000, 0xf9ddd2ef00000000,
+ 0xbfe6b58a00000000, 0x9e962af600000000, 0xd8ad4d9300000000,
+ 0x12e0e43c00000000, 0x54db835900000000, 0xc77dc7b800000000,
+ 0x8146a0dd00000000, 0x4b0b097200000000, 0x0d306e1700000000,
+ 0x09eb378b00000000, 0x4fd050ee00000000, 0x859df94100000000,
+ 0xc3a69e2400000000, 0x5000dac500000000, 0x163bbda000000000,
+ 0xdc76140f00000000, 0x9a4d736a00000000, 0xbb3dec1600000000,
+ 0xfd068b7300000000, 0x374b22dc00000000, 0x717045b900000000,
+ 0xe2d6015800000000, 0xa4ed663d00000000, 0x6ea0cf9200000000,
+ 0x289ba8f700000000, 0x27100d7100000000, 0x612b6a1400000000,
+ 0xab66c3bb00000000, 0xed5da4de00000000, 0x7efbe03f00000000,
+ 0x38c0875a00000000, 0xf28d2ef500000000, 0xb4b6499000000000,
+ 0x95c6d6ec00000000, 0xd3fdb18900000000, 0x19b0182600000000,
+ 0x5f8b7f4300000000, 0xcc2d3ba200000000, 0x8a165cc700000000,
+ 0x405bf56800000000, 0x0660920d00000000, 0x02bbcb9100000000,
+ 0x4480acf400000000, 0x8ecd055b00000000, 0xc8f6623e00000000,
+ 0x5b5026df00000000, 0x1d6b41ba00000000, 0xd726e81500000000,
+ 0x911d8f7000000000, 0xb06d100c00000000, 0xf656776900000000,
+ 0x3c1bdec600000000, 0x7a20b9a300000000, 0xe986fd4200000000,
+ 0xafbd9a2700000000, 0x65f0338800000000, 0x23cb54ed00000000,
+ 0x3ae0095e00000000, 0x7cdb6e3b00000000, 0xb696c79400000000,
+ 0xf0ada0f100000000, 0x630be41000000000, 0x2530837500000000,
+ 0xef7d2ada00000000, 0xa9464dbf00000000, 0x8836d2c300000000,
+ 0xce0db5a600000000, 0x04401c0900000000, 0x427b7b6c00000000,
+ 0xd1dd3f8d00000000, 0x97e658e800000000, 0x5dabf14700000000,
+ 0x1b90962200000000, 0x1f4bcfbe00000000, 0x5970a8db00000000,
+ 0x933d017400000000, 0xd506661100000000, 0x46a022f000000000,
+ 0x009b459500000000, 0xcad6ec3a00000000, 0x8ced8b5f00000000,
+ 0xad9d142300000000, 0xeba6734600000000, 0x21ebdae900000000,
+ 0x67d0bd8c00000000, 0xf476f96d00000000, 0xb24d9e0800000000,
+ 0x780037a700000000, 0x3e3b50c200000000, 0x31b0f54400000000,
+ 0x778b922100000000, 0xbdc63b8e00000000, 0xfbfd5ceb00000000,
+ 0x685b180a00000000, 0x2e607f6f00000000, 0xe42dd6c000000000,
+ 0xa216b1a500000000, 0x83662ed900000000, 0xc55d49bc00000000,
+ 0x0f10e01300000000, 0x492b877600000000, 0xda8dc39700000000,
+ 0x9cb6a4f200000000, 0x56fb0d5d00000000, 0x10c06a3800000000,
+ 0x141b33a400000000, 0x522054c100000000, 0x986dfd6e00000000,
+ 0xde569a0b00000000, 0x4df0deea00000000, 0x0bcbb98f00000000,
+ 0xc186102000000000, 0x87bd774500000000, 0xa6cde83900000000,
+ 0xe0f68f5c00000000, 0x2abb26f300000000, 0x6c80419600000000,
+ 0xff26057700000000, 0xb91d621200000000, 0x7350cbbd00000000,
+ 0x356bacd800000000},
+ {0x0000000000000000, 0x9e83da9f00000000, 0x7d01c4e400000000,
+ 0xe3821e7b00000000, 0xbb04f91200000000, 0x2587238d00000000,
+ 0xc6053df600000000, 0x5886e76900000000, 0x7609f22500000000,
+ 0xe88a28ba00000000, 0x0b0836c100000000, 0x958bec5e00000000,
+ 0xcd0d0b3700000000, 0x538ed1a800000000, 0xb00ccfd300000000,
+ 0x2e8f154c00000000, 0xec12e44b00000000, 0x72913ed400000000,
+ 0x911320af00000000, 0x0f90fa3000000000, 0x57161d5900000000,
+ 0xc995c7c600000000, 0x2a17d9bd00000000, 0xb494032200000000,
+ 0x9a1b166e00000000, 0x0498ccf100000000, 0xe71ad28a00000000,
+ 0x7999081500000000, 0x211fef7c00000000, 0xbf9c35e300000000,
+ 0x5c1e2b9800000000, 0xc29df10700000000, 0xd825c89700000000,
+ 0x46a6120800000000, 0xa5240c7300000000, 0x3ba7d6ec00000000,
+ 0x6321318500000000, 0xfda2eb1a00000000, 0x1e20f56100000000,
+ 0x80a32ffe00000000, 0xae2c3ab200000000, 0x30afe02d00000000,
+ 0xd32dfe5600000000, 0x4dae24c900000000, 0x1528c3a000000000,
+ 0x8bab193f00000000, 0x6829074400000000, 0xf6aadddb00000000,
+ 0x34372cdc00000000, 0xaab4f64300000000, 0x4936e83800000000,
+ 0xd7b532a700000000, 0x8f33d5ce00000000, 0x11b00f5100000000,
+ 0xf232112a00000000, 0x6cb1cbb500000000, 0x423edef900000000,
+ 0xdcbd046600000000, 0x3f3f1a1d00000000, 0xa1bcc08200000000,
+ 0xf93a27eb00000000, 0x67b9fd7400000000, 0x843be30f00000000,
+ 0x1ab8399000000000, 0xf14de1f400000000, 0x6fce3b6b00000000,
+ 0x8c4c251000000000, 0x12cfff8f00000000, 0x4a4918e600000000,
+ 0xd4cac27900000000, 0x3748dc0200000000, 0xa9cb069d00000000,
+ 0x874413d100000000, 0x19c7c94e00000000, 0xfa45d73500000000,
+ 0x64c60daa00000000, 0x3c40eac300000000, 0xa2c3305c00000000,
+ 0x41412e2700000000, 0xdfc2f4b800000000, 0x1d5f05bf00000000,
+ 0x83dcdf2000000000, 0x605ec15b00000000, 0xfedd1bc400000000,
+ 0xa65bfcad00000000, 0x38d8263200000000, 0xdb5a384900000000,
+ 0x45d9e2d600000000, 0x6b56f79a00000000, 0xf5d52d0500000000,
+ 0x1657337e00000000, 0x88d4e9e100000000, 0xd0520e8800000000,
+ 0x4ed1d41700000000, 0xad53ca6c00000000, 0x33d010f300000000,
+ 0x2968296300000000, 0xb7ebf3fc00000000, 0x5469ed8700000000,
+ 0xcaea371800000000, 0x926cd07100000000, 0x0cef0aee00000000,
+ 0xef6d149500000000, 0x71eece0a00000000, 0x5f61db4600000000,
+ 0xc1e201d900000000, 0x22601fa200000000, 0xbce3c53d00000000,
+ 0xe465225400000000, 0x7ae6f8cb00000000, 0x9964e6b000000000,
+ 0x07e73c2f00000000, 0xc57acd2800000000, 0x5bf917b700000000,
+ 0xb87b09cc00000000, 0x26f8d35300000000, 0x7e7e343a00000000,
+ 0xe0fdeea500000000, 0x037ff0de00000000, 0x9dfc2a4100000000,
+ 0xb3733f0d00000000, 0x2df0e59200000000, 0xce72fbe900000000,
+ 0x50f1217600000000, 0x0877c61f00000000, 0x96f41c8000000000,
+ 0x757602fb00000000, 0xebf5d86400000000, 0xa39db33200000000,
+ 0x3d1e69ad00000000, 0xde9c77d600000000, 0x401fad4900000000,
+ 0x18994a2000000000, 0x861a90bf00000000, 0x65988ec400000000,
+ 0xfb1b545b00000000, 0xd594411700000000, 0x4b179b8800000000,
+ 0xa89585f300000000, 0x36165f6c00000000, 0x6e90b80500000000,
+ 0xf013629a00000000, 0x13917ce100000000, 0x8d12a67e00000000,
+ 0x4f8f577900000000, 0xd10c8de600000000, 0x328e939d00000000,
+ 0xac0d490200000000, 0xf48bae6b00000000, 0x6a0874f400000000,
+ 0x898a6a8f00000000, 0x1709b01000000000, 0x3986a55c00000000,
+ 0xa7057fc300000000, 0x448761b800000000, 0xda04bb2700000000,
+ 0x82825c4e00000000, 0x1c0186d100000000, 0xff8398aa00000000,
+ 0x6100423500000000, 0x7bb87ba500000000, 0xe53ba13a00000000,
+ 0x06b9bf4100000000, 0x983a65de00000000, 0xc0bc82b700000000,
+ 0x5e3f582800000000, 0xbdbd465300000000, 0x233e9ccc00000000,
+ 0x0db1898000000000, 0x9332531f00000000, 0x70b04d6400000000,
+ 0xee3397fb00000000, 0xb6b5709200000000, 0x2836aa0d00000000,
+ 0xcbb4b47600000000, 0x55376ee900000000, 0x97aa9fee00000000,
+ 0x0929457100000000, 0xeaab5b0a00000000, 0x7428819500000000,
+ 0x2cae66fc00000000, 0xb22dbc6300000000, 0x51afa21800000000,
+ 0xcf2c788700000000, 0xe1a36dcb00000000, 0x7f20b75400000000,
+ 0x9ca2a92f00000000, 0x022173b000000000, 0x5aa794d900000000,
+ 0xc4244e4600000000, 0x27a6503d00000000, 0xb9258aa200000000,
+ 0x52d052c600000000, 0xcc53885900000000, 0x2fd1962200000000,
+ 0xb1524cbd00000000, 0xe9d4abd400000000, 0x7757714b00000000,
+ 0x94d56f3000000000, 0x0a56b5af00000000, 0x24d9a0e300000000,
+ 0xba5a7a7c00000000, 0x59d8640700000000, 0xc75bbe9800000000,
+ 0x9fdd59f100000000, 0x015e836e00000000, 0xe2dc9d1500000000,
+ 0x7c5f478a00000000, 0xbec2b68d00000000, 0x20416c1200000000,
+ 0xc3c3726900000000, 0x5d40a8f600000000, 0x05c64f9f00000000,
+ 0x9b45950000000000, 0x78c78b7b00000000, 0xe64451e400000000,
+ 0xc8cb44a800000000, 0x56489e3700000000, 0xb5ca804c00000000,
+ 0x2b495ad300000000, 0x73cfbdba00000000, 0xed4c672500000000,
+ 0x0ece795e00000000, 0x904da3c100000000, 0x8af59a5100000000,
+ 0x147640ce00000000, 0xf7f45eb500000000, 0x6977842a00000000,
+ 0x31f1634300000000, 0xaf72b9dc00000000, 0x4cf0a7a700000000,
+ 0xd2737d3800000000, 0xfcfc687400000000, 0x627fb2eb00000000,
+ 0x81fdac9000000000, 0x1f7e760f00000000, 0x47f8916600000000,
+ 0xd97b4bf900000000, 0x3af9558200000000, 0xa47a8f1d00000000,
+ 0x66e77e1a00000000, 0xf864a48500000000, 0x1be6bafe00000000,
+ 0x8565606100000000, 0xdde3870800000000, 0x43605d9700000000,
+ 0xa0e243ec00000000, 0x3e61997300000000, 0x10ee8c3f00000000,
+ 0x8e6d56a000000000, 0x6def48db00000000, 0xf36c924400000000,
+ 0xabea752d00000000, 0x3569afb200000000, 0xd6ebb1c900000000,
+ 0x48686b5600000000},
+ {0x0000000000000000, 0xc064281700000000, 0x80c9502e00000000,
+ 0x40ad783900000000, 0x0093a15c00000000, 0xc0f7894b00000000,
+ 0x805af17200000000, 0x403ed96500000000, 0x002643b900000000,
+ 0xc0426bae00000000, 0x80ef139700000000, 0x408b3b8000000000,
+ 0x00b5e2e500000000, 0xc0d1caf200000000, 0x807cb2cb00000000,
+ 0x40189adc00000000, 0x414af7a900000000, 0x812edfbe00000000,
+ 0xc183a78700000000, 0x01e78f9000000000, 0x41d956f500000000,
+ 0x81bd7ee200000000, 0xc11006db00000000, 0x01742ecc00000000,
+ 0x416cb41000000000, 0x81089c0700000000, 0xc1a5e43e00000000,
+ 0x01c1cc2900000000, 0x41ff154c00000000, 0x819b3d5b00000000,
+ 0xc136456200000000, 0x01526d7500000000, 0xc3929f8800000000,
+ 0x03f6b79f00000000, 0x435bcfa600000000, 0x833fe7b100000000,
+ 0xc3013ed400000000, 0x036516c300000000, 0x43c86efa00000000,
+ 0x83ac46ed00000000, 0xc3b4dc3100000000, 0x03d0f42600000000,
+ 0x437d8c1f00000000, 0x8319a40800000000, 0xc3277d6d00000000,
+ 0x0343557a00000000, 0x43ee2d4300000000, 0x838a055400000000,
+ 0x82d8682100000000, 0x42bc403600000000, 0x0211380f00000000,
+ 0xc275101800000000, 0x824bc97d00000000, 0x422fe16a00000000,
+ 0x0282995300000000, 0xc2e6b14400000000, 0x82fe2b9800000000,
+ 0x429a038f00000000, 0x02377bb600000000, 0xc25353a100000000,
+ 0x826d8ac400000000, 0x4209a2d300000000, 0x02a4daea00000000,
+ 0xc2c0f2fd00000000, 0xc7234eca00000000, 0x074766dd00000000,
+ 0x47ea1ee400000000, 0x878e36f300000000, 0xc7b0ef9600000000,
+ 0x07d4c78100000000, 0x4779bfb800000000, 0x871d97af00000000,
+ 0xc7050d7300000000, 0x0761256400000000, 0x47cc5d5d00000000,
+ 0x87a8754a00000000, 0xc796ac2f00000000, 0x07f2843800000000,
+ 0x475ffc0100000000, 0x873bd41600000000, 0x8669b96300000000,
+ 0x460d917400000000, 0x06a0e94d00000000, 0xc6c4c15a00000000,
+ 0x86fa183f00000000, 0x469e302800000000, 0x0633481100000000,
+ 0xc657600600000000, 0x864ffada00000000, 0x462bd2cd00000000,
+ 0x0686aaf400000000, 0xc6e282e300000000, 0x86dc5b8600000000,
+ 0x46b8739100000000, 0x06150ba800000000, 0xc67123bf00000000,
+ 0x04b1d14200000000, 0xc4d5f95500000000, 0x8478816c00000000,
+ 0x441ca97b00000000, 0x0422701e00000000, 0xc446580900000000,
+ 0x84eb203000000000, 0x448f082700000000, 0x049792fb00000000,
+ 0xc4f3baec00000000, 0x845ec2d500000000, 0x443aeac200000000,
+ 0x040433a700000000, 0xc4601bb000000000, 0x84cd638900000000,
+ 0x44a94b9e00000000, 0x45fb26eb00000000, 0x859f0efc00000000,
+ 0xc53276c500000000, 0x05565ed200000000, 0x456887b700000000,
+ 0x850cafa000000000, 0xc5a1d79900000000, 0x05c5ff8e00000000,
+ 0x45dd655200000000, 0x85b94d4500000000, 0xc514357c00000000,
+ 0x05701d6b00000000, 0x454ec40e00000000, 0x852aec1900000000,
+ 0xc587942000000000, 0x05e3bc3700000000, 0xcf41ed4f00000000,
+ 0x0f25c55800000000, 0x4f88bd6100000000, 0x8fec957600000000,
+ 0xcfd24c1300000000, 0x0fb6640400000000, 0x4f1b1c3d00000000,
+ 0x8f7f342a00000000, 0xcf67aef600000000, 0x0f0386e100000000,
+ 0x4faefed800000000, 0x8fcad6cf00000000, 0xcff40faa00000000,
+ 0x0f9027bd00000000, 0x4f3d5f8400000000, 0x8f59779300000000,
+ 0x8e0b1ae600000000, 0x4e6f32f100000000, 0x0ec24ac800000000,
+ 0xcea662df00000000, 0x8e98bbba00000000, 0x4efc93ad00000000,
+ 0x0e51eb9400000000, 0xce35c38300000000, 0x8e2d595f00000000,
+ 0x4e49714800000000, 0x0ee4097100000000, 0xce80216600000000,
+ 0x8ebef80300000000, 0x4edad01400000000, 0x0e77a82d00000000,
+ 0xce13803a00000000, 0x0cd372c700000000, 0xccb75ad000000000,
+ 0x8c1a22e900000000, 0x4c7e0afe00000000, 0x0c40d39b00000000,
+ 0xcc24fb8c00000000, 0x8c8983b500000000, 0x4cedaba200000000,
+ 0x0cf5317e00000000, 0xcc91196900000000, 0x8c3c615000000000,
+ 0x4c58494700000000, 0x0c66902200000000, 0xcc02b83500000000,
+ 0x8cafc00c00000000, 0x4ccbe81b00000000, 0x4d99856e00000000,
+ 0x8dfdad7900000000, 0xcd50d54000000000, 0x0d34fd5700000000,
+ 0x4d0a243200000000, 0x8d6e0c2500000000, 0xcdc3741c00000000,
+ 0x0da75c0b00000000, 0x4dbfc6d700000000, 0x8ddbeec000000000,
+ 0xcd7696f900000000, 0x0d12beee00000000, 0x4d2c678b00000000,
+ 0x8d484f9c00000000, 0xcde537a500000000, 0x0d811fb200000000,
+ 0x0862a38500000000, 0xc8068b9200000000, 0x88abf3ab00000000,
+ 0x48cfdbbc00000000, 0x08f102d900000000, 0xc8952ace00000000,
+ 0x883852f700000000, 0x485c7ae000000000, 0x0844e03c00000000,
+ 0xc820c82b00000000, 0x888db01200000000, 0x48e9980500000000,
+ 0x08d7416000000000, 0xc8b3697700000000, 0x881e114e00000000,
+ 0x487a395900000000, 0x4928542c00000000, 0x894c7c3b00000000,
+ 0xc9e1040200000000, 0x09852c1500000000, 0x49bbf57000000000,
+ 0x89dfdd6700000000, 0xc972a55e00000000, 0x09168d4900000000,
+ 0x490e179500000000, 0x896a3f8200000000, 0xc9c747bb00000000,
+ 0x09a36fac00000000, 0x499db6c900000000, 0x89f99ede00000000,
+ 0xc954e6e700000000, 0x0930cef000000000, 0xcbf03c0d00000000,
+ 0x0b94141a00000000, 0x4b396c2300000000, 0x8b5d443400000000,
+ 0xcb639d5100000000, 0x0b07b54600000000, 0x4baacd7f00000000,
+ 0x8bcee56800000000, 0xcbd67fb400000000, 0x0bb257a300000000,
+ 0x4b1f2f9a00000000, 0x8b7b078d00000000, 0xcb45dee800000000,
+ 0x0b21f6ff00000000, 0x4b8c8ec600000000, 0x8be8a6d100000000,
+ 0x8abacba400000000, 0x4adee3b300000000, 0x0a739b8a00000000,
+ 0xca17b39d00000000, 0x8a296af800000000, 0x4a4d42ef00000000,
+ 0x0ae03ad600000000, 0xca8412c100000000, 0x8a9c881d00000000,
+ 0x4af8a00a00000000, 0x0a55d83300000000, 0xca31f02400000000,
+ 0x8a0f294100000000, 0x4a6b015600000000, 0x0ac6796f00000000,
+ 0xcaa2517800000000},
+ {0x0000000000000000, 0xd4ea739b00000000, 0xe9d396ed00000000,
+ 0x3d39e57600000000, 0x93a15c0000000000, 0x474b2f9b00000000,
+ 0x7a72caed00000000, 0xae98b97600000000, 0x2643b90000000000,
+ 0xf2a9ca9b00000000, 0xcf902fed00000000, 0x1b7a5c7600000000,
+ 0xb5e2e50000000000, 0x6108969b00000000, 0x5c3173ed00000000,
+ 0x88db007600000000, 0x4c86720100000000, 0x986c019a00000000,
+ 0xa555e4ec00000000, 0x71bf977700000000, 0xdf272e0100000000,
+ 0x0bcd5d9a00000000, 0x36f4b8ec00000000, 0xe21ecb7700000000,
+ 0x6ac5cb0100000000, 0xbe2fb89a00000000, 0x83165dec00000000,
+ 0x57fc2e7700000000, 0xf964970100000000, 0x2d8ee49a00000000,
+ 0x10b701ec00000000, 0xc45d727700000000, 0x980ce50200000000,
+ 0x4ce6969900000000, 0x71df73ef00000000, 0xa535007400000000,
+ 0x0badb90200000000, 0xdf47ca9900000000, 0xe27e2fef00000000,
+ 0x36945c7400000000, 0xbe4f5c0200000000, 0x6aa52f9900000000,
+ 0x579ccaef00000000, 0x8376b97400000000, 0x2dee000200000000,
+ 0xf904739900000000, 0xc43d96ef00000000, 0x10d7e57400000000,
+ 0xd48a970300000000, 0x0060e49800000000, 0x3d5901ee00000000,
+ 0xe9b3727500000000, 0x472bcb0300000000, 0x93c1b89800000000,
+ 0xaef85dee00000000, 0x7a122e7500000000, 0xf2c92e0300000000,
+ 0x26235d9800000000, 0x1b1ab8ee00000000, 0xcff0cb7500000000,
+ 0x6168720300000000, 0xb582019800000000, 0x88bbe4ee00000000,
+ 0x5c51977500000000, 0x3019ca0500000000, 0xe4f3b99e00000000,
+ 0xd9ca5ce800000000, 0x0d202f7300000000, 0xa3b8960500000000,
+ 0x7752e59e00000000, 0x4a6b00e800000000, 0x9e81737300000000,
+ 0x165a730500000000, 0xc2b0009e00000000, 0xff89e5e800000000,
+ 0x2b63967300000000, 0x85fb2f0500000000, 0x51115c9e00000000,
+ 0x6c28b9e800000000, 0xb8c2ca7300000000, 0x7c9fb80400000000,
+ 0xa875cb9f00000000, 0x954c2ee900000000, 0x41a65d7200000000,
+ 0xef3ee40400000000, 0x3bd4979f00000000, 0x06ed72e900000000,
+ 0xd207017200000000, 0x5adc010400000000, 0x8e36729f00000000,
+ 0xb30f97e900000000, 0x67e5e47200000000, 0xc97d5d0400000000,
+ 0x1d972e9f00000000, 0x20aecbe900000000, 0xf444b87200000000,
+ 0xa8152f0700000000, 0x7cff5c9c00000000, 0x41c6b9ea00000000,
+ 0x952cca7100000000, 0x3bb4730700000000, 0xef5e009c00000000,
+ 0xd267e5ea00000000, 0x068d967100000000, 0x8e56960700000000,
+ 0x5abce59c00000000, 0x678500ea00000000, 0xb36f737100000000,
+ 0x1df7ca0700000000, 0xc91db99c00000000, 0xf4245cea00000000,
+ 0x20ce2f7100000000, 0xe4935d0600000000, 0x30792e9d00000000,
+ 0x0d40cbeb00000000, 0xd9aab87000000000, 0x7732010600000000,
+ 0xa3d8729d00000000, 0x9ee197eb00000000, 0x4a0be47000000000,
+ 0xc2d0e40600000000, 0x163a979d00000000, 0x2b0372eb00000000,
+ 0xffe9017000000000, 0x5171b80600000000, 0x859bcb9d00000000,
+ 0xb8a22eeb00000000, 0x6c485d7000000000, 0x6032940b00000000,
+ 0xb4d8e79000000000, 0x89e102e600000000, 0x5d0b717d00000000,
+ 0xf393c80b00000000, 0x2779bb9000000000, 0x1a405ee600000000,
+ 0xceaa2d7d00000000, 0x46712d0b00000000, 0x929b5e9000000000,
+ 0xafa2bbe600000000, 0x7b48c87d00000000, 0xd5d0710b00000000,
+ 0x013a029000000000, 0x3c03e7e600000000, 0xe8e9947d00000000,
+ 0x2cb4e60a00000000, 0xf85e959100000000, 0xc56770e700000000,
+ 0x118d037c00000000, 0xbf15ba0a00000000, 0x6bffc99100000000,
+ 0x56c62ce700000000, 0x822c5f7c00000000, 0x0af75f0a00000000,
+ 0xde1d2c9100000000, 0xe324c9e700000000, 0x37ceba7c00000000,
+ 0x9956030a00000000, 0x4dbc709100000000, 0x708595e700000000,
+ 0xa46fe67c00000000, 0xf83e710900000000, 0x2cd4029200000000,
+ 0x11ede7e400000000, 0xc507947f00000000, 0x6b9f2d0900000000,
+ 0xbf755e9200000000, 0x824cbbe400000000, 0x56a6c87f00000000,
+ 0xde7dc80900000000, 0x0a97bb9200000000, 0x37ae5ee400000000,
+ 0xe3442d7f00000000, 0x4ddc940900000000, 0x9936e79200000000,
+ 0xa40f02e400000000, 0x70e5717f00000000, 0xb4b8030800000000,
+ 0x6052709300000000, 0x5d6b95e500000000, 0x8981e67e00000000,
+ 0x27195f0800000000, 0xf3f32c9300000000, 0xcecac9e500000000,
+ 0x1a20ba7e00000000, 0x92fbba0800000000, 0x4611c99300000000,
+ 0x7b282ce500000000, 0xafc25f7e00000000, 0x015ae60800000000,
+ 0xd5b0959300000000, 0xe88970e500000000, 0x3c63037e00000000,
+ 0x502b5e0e00000000, 0x84c12d9500000000, 0xb9f8c8e300000000,
+ 0x6d12bb7800000000, 0xc38a020e00000000, 0x1760719500000000,
+ 0x2a5994e300000000, 0xfeb3e77800000000, 0x7668e70e00000000,
+ 0xa282949500000000, 0x9fbb71e300000000, 0x4b51027800000000,
+ 0xe5c9bb0e00000000, 0x3123c89500000000, 0x0c1a2de300000000,
+ 0xd8f05e7800000000, 0x1cad2c0f00000000, 0xc8475f9400000000,
+ 0xf57ebae200000000, 0x2194c97900000000, 0x8f0c700f00000000,
+ 0x5be6039400000000, 0x66dfe6e200000000, 0xb235957900000000,
+ 0x3aee950f00000000, 0xee04e69400000000, 0xd33d03e200000000,
+ 0x07d7707900000000, 0xa94fc90f00000000, 0x7da5ba9400000000,
+ 0x409c5fe200000000, 0x94762c7900000000, 0xc827bb0c00000000,
+ 0x1ccdc89700000000, 0x21f42de100000000, 0xf51e5e7a00000000,
+ 0x5b86e70c00000000, 0x8f6c949700000000, 0xb25571e100000000,
+ 0x66bf027a00000000, 0xee64020c00000000, 0x3a8e719700000000,
+ 0x07b794e100000000, 0xd35de77a00000000, 0x7dc55e0c00000000,
+ 0xa92f2d9700000000, 0x9416c8e100000000, 0x40fcbb7a00000000,
+ 0x84a1c90d00000000, 0x504bba9600000000, 0x6d725fe000000000,
+ 0xb9982c7b00000000, 0x1700950d00000000, 0xc3eae69600000000,
+ 0xfed303e000000000, 0x2a39707b00000000, 0xa2e2700d00000000,
+ 0x7608039600000000, 0x4b31e6e000000000, 0x9fdb957b00000000,
+ 0x31432c0d00000000, 0xe5a95f9600000000, 0xd890bae000000000,
+ 0x0c7ac97b00000000},
+ {0x0000000000000000, 0x2765258100000000, 0x0fcc3bd900000000,
+ 0x28a91e5800000000, 0x5f9e066900000000, 0x78fb23e800000000,
+ 0x50523db000000000, 0x7737183100000000, 0xbe3c0dd200000000,
+ 0x9959285300000000, 0xb1f0360b00000000, 0x9695138a00000000,
+ 0xe1a20bbb00000000, 0xc6c72e3a00000000, 0xee6e306200000000,
+ 0xc90b15e300000000, 0x3d7f6b7f00000000, 0x1a1a4efe00000000,
+ 0x32b350a600000000, 0x15d6752700000000, 0x62e16d1600000000,
+ 0x4584489700000000, 0x6d2d56cf00000000, 0x4a48734e00000000,
+ 0x834366ad00000000, 0xa426432c00000000, 0x8c8f5d7400000000,
+ 0xabea78f500000000, 0xdcdd60c400000000, 0xfbb8454500000000,
+ 0xd3115b1d00000000, 0xf4747e9c00000000, 0x7afed6fe00000000,
+ 0x5d9bf37f00000000, 0x7532ed2700000000, 0x5257c8a600000000,
+ 0x2560d09700000000, 0x0205f51600000000, 0x2aaceb4e00000000,
+ 0x0dc9cecf00000000, 0xc4c2db2c00000000, 0xe3a7fead00000000,
+ 0xcb0ee0f500000000, 0xec6bc57400000000, 0x9b5cdd4500000000,
+ 0xbc39f8c400000000, 0x9490e69c00000000, 0xb3f5c31d00000000,
+ 0x4781bd8100000000, 0x60e4980000000000, 0x484d865800000000,
+ 0x6f28a3d900000000, 0x181fbbe800000000, 0x3f7a9e6900000000,
+ 0x17d3803100000000, 0x30b6a5b000000000, 0xf9bdb05300000000,
+ 0xded895d200000000, 0xf6718b8a00000000, 0xd114ae0b00000000,
+ 0xa623b63a00000000, 0x814693bb00000000, 0xa9ef8de300000000,
+ 0x8e8aa86200000000, 0xb5fadc2600000000, 0x929ff9a700000000,
+ 0xba36e7ff00000000, 0x9d53c27e00000000, 0xea64da4f00000000,
+ 0xcd01ffce00000000, 0xe5a8e19600000000, 0xc2cdc41700000000,
+ 0x0bc6d1f400000000, 0x2ca3f47500000000, 0x040aea2d00000000,
+ 0x236fcfac00000000, 0x5458d79d00000000, 0x733df21c00000000,
+ 0x5b94ec4400000000, 0x7cf1c9c500000000, 0x8885b75900000000,
+ 0xafe092d800000000, 0x87498c8000000000, 0xa02ca90100000000,
+ 0xd71bb13000000000, 0xf07e94b100000000, 0xd8d78ae900000000,
+ 0xffb2af6800000000, 0x36b9ba8b00000000, 0x11dc9f0a00000000,
+ 0x3975815200000000, 0x1e10a4d300000000, 0x6927bce200000000,
+ 0x4e42996300000000, 0x66eb873b00000000, 0x418ea2ba00000000,
+ 0xcf040ad800000000, 0xe8612f5900000000, 0xc0c8310100000000,
+ 0xe7ad148000000000, 0x909a0cb100000000, 0xb7ff293000000000,
+ 0x9f56376800000000, 0xb83312e900000000, 0x7138070a00000000,
+ 0x565d228b00000000, 0x7ef43cd300000000, 0x5991195200000000,
+ 0x2ea6016300000000, 0x09c324e200000000, 0x216a3aba00000000,
+ 0x060f1f3b00000000, 0xf27b61a700000000, 0xd51e442600000000,
+ 0xfdb75a7e00000000, 0xdad27fff00000000, 0xade567ce00000000,
+ 0x8a80424f00000000, 0xa2295c1700000000, 0x854c799600000000,
+ 0x4c476c7500000000, 0x6b2249f400000000, 0x438b57ac00000000,
+ 0x64ee722d00000000, 0x13d96a1c00000000, 0x34bc4f9d00000000,
+ 0x1c1551c500000000, 0x3b70744400000000, 0x6af5b94d00000000,
+ 0x4d909ccc00000000, 0x6539829400000000, 0x425ca71500000000,
+ 0x356bbf2400000000, 0x120e9aa500000000, 0x3aa784fd00000000,
+ 0x1dc2a17c00000000, 0xd4c9b49f00000000, 0xf3ac911e00000000,
+ 0xdb058f4600000000, 0xfc60aac700000000, 0x8b57b2f600000000,
+ 0xac32977700000000, 0x849b892f00000000, 0xa3feacae00000000,
+ 0x578ad23200000000, 0x70eff7b300000000, 0x5846e9eb00000000,
+ 0x7f23cc6a00000000, 0x0814d45b00000000, 0x2f71f1da00000000,
+ 0x07d8ef8200000000, 0x20bdca0300000000, 0xe9b6dfe000000000,
+ 0xced3fa6100000000, 0xe67ae43900000000, 0xc11fc1b800000000,
+ 0xb628d98900000000, 0x914dfc0800000000, 0xb9e4e25000000000,
+ 0x9e81c7d100000000, 0x100b6fb300000000, 0x376e4a3200000000,
+ 0x1fc7546a00000000, 0x38a271eb00000000, 0x4f9569da00000000,
+ 0x68f04c5b00000000, 0x4059520300000000, 0x673c778200000000,
+ 0xae37626100000000, 0x895247e000000000, 0xa1fb59b800000000,
+ 0x869e7c3900000000, 0xf1a9640800000000, 0xd6cc418900000000,
+ 0xfe655fd100000000, 0xd9007a5000000000, 0x2d7404cc00000000,
+ 0x0a11214d00000000, 0x22b83f1500000000, 0x05dd1a9400000000,
+ 0x72ea02a500000000, 0x558f272400000000, 0x7d26397c00000000,
+ 0x5a431cfd00000000, 0x9348091e00000000, 0xb42d2c9f00000000,
+ 0x9c8432c700000000, 0xbbe1174600000000, 0xccd60f7700000000,
+ 0xebb32af600000000, 0xc31a34ae00000000, 0xe47f112f00000000,
+ 0xdf0f656b00000000, 0xf86a40ea00000000, 0xd0c35eb200000000,
+ 0xf7a67b3300000000, 0x8091630200000000, 0xa7f4468300000000,
+ 0x8f5d58db00000000, 0xa8387d5a00000000, 0x613368b900000000,
+ 0x46564d3800000000, 0x6eff536000000000, 0x499a76e100000000,
+ 0x3ead6ed000000000, 0x19c84b5100000000, 0x3161550900000000,
+ 0x1604708800000000, 0xe2700e1400000000, 0xc5152b9500000000,
+ 0xedbc35cd00000000, 0xcad9104c00000000, 0xbdee087d00000000,
+ 0x9a8b2dfc00000000, 0xb22233a400000000, 0x9547162500000000,
+ 0x5c4c03c600000000, 0x7b29264700000000, 0x5380381f00000000,
+ 0x74e51d9e00000000, 0x03d205af00000000, 0x24b7202e00000000,
+ 0x0c1e3e7600000000, 0x2b7b1bf700000000, 0xa5f1b39500000000,
+ 0x8294961400000000, 0xaa3d884c00000000, 0x8d58adcd00000000,
+ 0xfa6fb5fc00000000, 0xdd0a907d00000000, 0xf5a38e2500000000,
+ 0xd2c6aba400000000, 0x1bcdbe4700000000, 0x3ca89bc600000000,
+ 0x1401859e00000000, 0x3364a01f00000000, 0x4453b82e00000000,
+ 0x63369daf00000000, 0x4b9f83f700000000, 0x6cfaa67600000000,
+ 0x988ed8ea00000000, 0xbfebfd6b00000000, 0x9742e33300000000,
+ 0xb027c6b200000000, 0xc710de8300000000, 0xe075fb0200000000,
+ 0xc8dce55a00000000, 0xefb9c0db00000000, 0x26b2d53800000000,
+ 0x01d7f0b900000000, 0x297eeee100000000, 0x0e1bcb6000000000,
+ 0x792cd35100000000, 0x5e49f6d000000000, 0x76e0e88800000000,
+ 0x5185cd0900000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f,
+ 0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91,
+ 0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e,
+ 0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c,
+ 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02,
+ 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12,
+ 0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567,
+ 0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277,
+ 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679,
+ 0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b,
+ 0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4,
+ 0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a,
+ 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0,
+ 0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0,
+ 0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91,
+ 0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881,
+ 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173,
+ 0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d,
+ 0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912,
+ 0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8,
+ 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6,
+ 0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6,
+ 0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b,
+ 0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b,
+ 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75,
+ 0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f,
+ 0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00,
+ 0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee,
+ 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c,
+ 0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c,
+ 0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d,
+ 0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d,
+ 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67,
+ 0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89,
+ 0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706,
+ 0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14,
+ 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a,
+ 0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a,
+ 0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f,
+ 0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f,
+ 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591,
+ 0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983,
+ 0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c,
+ 0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2,
+ 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8,
+ 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8,
+ 0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89,
+ 0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99,
+ 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b,
+ 0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485,
+ 0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a,
+ 0x36197165},
+ {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382,
+ 0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85,
+ 0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06,
+ 0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca,
+ 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e,
+ 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc,
+ 0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616,
+ 0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54,
+ 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10,
+ 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc,
+ 0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f,
+ 0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58,
+ 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef,
+ 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad,
+ 0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b,
+ 0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29,
+ 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6,
+ 0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1,
+ 0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622,
+ 0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039,
+ 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d,
+ 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f,
+ 0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32,
+ 0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770,
+ 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034,
+ 0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f,
+ 0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc,
+ 0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db,
+ 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154,
+ 0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16,
+ 0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0,
+ 0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592,
+ 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca,
+ 0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd,
+ 0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e,
+ 0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882,
+ 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6,
+ 0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384,
+ 0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1,
+ 0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3,
+ 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7,
+ 0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b,
+ 0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8,
+ 0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff,
+ 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7,
+ 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5,
+ 0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23,
+ 0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761,
+ 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee,
+ 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9,
+ 0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a,
+ 0x1a3b93aa},
+ {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a,
+ 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca,
+ 0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3,
+ 0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb,
+ 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c,
+ 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58,
+ 0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed,
+ 0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9,
+ 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e,
+ 0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906,
+ 0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f,
+ 0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf,
+ 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0,
+ 0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4,
+ 0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769,
+ 0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d,
+ 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632,
+ 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82,
+ 0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb,
+ 0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73,
+ 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484,
+ 0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0,
+ 0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5,
+ 0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1,
+ 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516,
+ 0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f,
+ 0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946,
+ 0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6,
+ 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9,
+ 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad,
+ 0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820,
+ 0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364,
+ 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab,
+ 0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b,
+ 0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62,
+ 0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a,
+ 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd,
+ 0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089,
+ 0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c,
+ 0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8,
+ 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f,
+ 0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477,
+ 0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e,
+ 0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be,
+ 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71,
+ 0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635,
+ 0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8,
+ 0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc,
+ 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3,
+ 0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753,
+ 0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a,
+ 0xe147d714},
+ {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c,
+ 0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b,
+ 0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92,
+ 0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4,
+ 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069,
+ 0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526,
+ 0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25,
+ 0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a,
+ 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7,
+ 0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491,
+ 0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958,
+ 0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f,
+ 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307,
+ 0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648,
+ 0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999,
+ 0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6,
+ 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a,
+ 0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d,
+ 0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4,
+ 0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61,
+ 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc,
+ 0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3,
+ 0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53,
+ 0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c,
+ 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1,
+ 0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c,
+ 0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5,
+ 0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92,
+ 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e,
+ 0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771,
+ 0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0,
+ 0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def,
+ 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0,
+ 0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7,
+ 0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e,
+ 0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58,
+ 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285,
+ 0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca,
+ 0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce,
+ 0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81,
+ 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c,
+ 0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a,
+ 0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3,
+ 0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4,
+ 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb,
+ 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4,
+ 0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75,
+ 0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a,
+ 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296,
+ 0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1,
+ 0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808,
+ 0x494f0c4b}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0x43147b17, 0x8628f62e, 0xc53c8d39, 0x0c51ec5d,
+ 0x4f45974a, 0x8a791a73, 0xc96d6164, 0x18a2d8bb, 0x5bb6a3ac,
+ 0x9e8a2e95, 0xdd9e5582, 0x14f334e6, 0x57e74ff1, 0x92dbc2c8,
+ 0xd1cfb9df, 0x7142c0ac, 0x3256bbbb, 0xf76a3682, 0xb47e4d95,
+ 0x7d132cf1, 0x3e0757e6, 0xfb3bdadf, 0xb82fa1c8, 0x69e01817,
+ 0x2af46300, 0xefc8ee39, 0xacdc952e, 0x65b1f44a, 0x26a58f5d,
+ 0xe3990264, 0xa08d7973, 0xa382f182, 0xe0968a95, 0x25aa07ac,
+ 0x66be7cbb, 0xafd31ddf, 0xecc766c8, 0x29fbebf1, 0x6aef90e6,
+ 0xbb202939, 0xf834522e, 0x3d08df17, 0x7e1ca400, 0xb771c564,
+ 0xf465be73, 0x3159334a, 0x724d485d, 0xd2c0312e, 0x91d44a39,
+ 0x54e8c700, 0x17fcbc17, 0xde91dd73, 0x9d85a664, 0x58b92b5d,
+ 0x1bad504a, 0xca62e995, 0x89769282, 0x4c4a1fbb, 0x0f5e64ac,
+ 0xc63305c8, 0x85277edf, 0x401bf3e6, 0x030f88f1, 0x070392de,
+ 0x4417e9c9, 0x812b64f0, 0xc23f1fe7, 0x0b527e83, 0x48460594,
+ 0x8d7a88ad, 0xce6ef3ba, 0x1fa14a65, 0x5cb53172, 0x9989bc4b,
+ 0xda9dc75c, 0x13f0a638, 0x50e4dd2f, 0x95d85016, 0xd6cc2b01,
+ 0x76415272, 0x35552965, 0xf069a45c, 0xb37ddf4b, 0x7a10be2f,
+ 0x3904c538, 0xfc384801, 0xbf2c3316, 0x6ee38ac9, 0x2df7f1de,
+ 0xe8cb7ce7, 0xabdf07f0, 0x62b26694, 0x21a61d83, 0xe49a90ba,
+ 0xa78eebad, 0xa481635c, 0xe795184b, 0x22a99572, 0x61bdee65,
+ 0xa8d08f01, 0xebc4f416, 0x2ef8792f, 0x6dec0238, 0xbc23bbe7,
+ 0xff37c0f0, 0x3a0b4dc9, 0x791f36de, 0xb07257ba, 0xf3662cad,
+ 0x365aa194, 0x754eda83, 0xd5c3a3f0, 0x96d7d8e7, 0x53eb55de,
+ 0x10ff2ec9, 0xd9924fad, 0x9a8634ba, 0x5fbab983, 0x1caec294,
+ 0xcd617b4b, 0x8e75005c, 0x4b498d65, 0x085df672, 0xc1309716,
+ 0x8224ec01, 0x47186138, 0x040c1a2f, 0x4f005566, 0x0c142e71,
+ 0xc928a348, 0x8a3cd85f, 0x4351b93b, 0x0045c22c, 0xc5794f15,
+ 0x866d3402, 0x57a28ddd, 0x14b6f6ca, 0xd18a7bf3, 0x929e00e4,
+ 0x5bf36180, 0x18e71a97, 0xdddb97ae, 0x9ecfecb9, 0x3e4295ca,
+ 0x7d56eedd, 0xb86a63e4, 0xfb7e18f3, 0x32137997, 0x71070280,
+ 0xb43b8fb9, 0xf72ff4ae, 0x26e04d71, 0x65f43666, 0xa0c8bb5f,
+ 0xe3dcc048, 0x2ab1a12c, 0x69a5da3b, 0xac995702, 0xef8d2c15,
+ 0xec82a4e4, 0xaf96dff3, 0x6aaa52ca, 0x29be29dd, 0xe0d348b9,
+ 0xa3c733ae, 0x66fbbe97, 0x25efc580, 0xf4207c5f, 0xb7340748,
+ 0x72088a71, 0x311cf166, 0xf8719002, 0xbb65eb15, 0x7e59662c,
+ 0x3d4d1d3b, 0x9dc06448, 0xded41f5f, 0x1be89266, 0x58fce971,
+ 0x91918815, 0xd285f302, 0x17b97e3b, 0x54ad052c, 0x8562bcf3,
+ 0xc676c7e4, 0x034a4add, 0x405e31ca, 0x893350ae, 0xca272bb9,
+ 0x0f1ba680, 0x4c0fdd97, 0x4803c7b8, 0x0b17bcaf, 0xce2b3196,
+ 0x8d3f4a81, 0x44522be5, 0x074650f2, 0xc27addcb, 0x816ea6dc,
+ 0x50a11f03, 0x13b56414, 0xd689e92d, 0x959d923a, 0x5cf0f35e,
+ 0x1fe48849, 0xdad80570, 0x99cc7e67, 0x39410714, 0x7a557c03,
+ 0xbf69f13a, 0xfc7d8a2d, 0x3510eb49, 0x7604905e, 0xb3381d67,
+ 0xf02c6670, 0x21e3dfaf, 0x62f7a4b8, 0xa7cb2981, 0xe4df5296,
+ 0x2db233f2, 0x6ea648e5, 0xab9ac5dc, 0xe88ebecb, 0xeb81363a,
+ 0xa8954d2d, 0x6da9c014, 0x2ebdbb03, 0xe7d0da67, 0xa4c4a170,
+ 0x61f82c49, 0x22ec575e, 0xf323ee81, 0xb0379596, 0x750b18af,
+ 0x361f63b8, 0xff7202dc, 0xbc6679cb, 0x795af4f2, 0x3a4e8fe5,
+ 0x9ac3f696, 0xd9d78d81, 0x1ceb00b8, 0x5fff7baf, 0x96921acb,
+ 0xd58661dc, 0x10baece5, 0x53ae97f2, 0x82612e2d, 0xc175553a,
+ 0x0449d803, 0x475da314, 0x8e30c270, 0xcd24b967, 0x0818345e,
+ 0x4b0c4f49},
+ {0x00000000, 0x3e6bc2ef, 0x3dd0f504, 0x03bb37eb, 0x7aa0eb09,
+ 0x44cb29e6, 0x47701e0d, 0x791bdce2, 0xf440d713, 0xca2b15fc,
+ 0xc9902217, 0xf7fbe0f8, 0x8ee03c1a, 0xb08bfef5, 0xb330c91e,
+ 0x8d5b0bf1, 0xe881ae27, 0xd6ea6cc8, 0xd5515b23, 0xeb3a99cc,
+ 0x9221452e, 0xac4a87c1, 0xaff1b02a, 0x919a72c5, 0x1cc17934,
+ 0x22aabbdb, 0x21118c30, 0x1f7a4edf, 0x6661923d, 0x580a50d2,
+ 0x5bb16739, 0x65daa5d6, 0xd0035d4f, 0xee689fa0, 0xedd3a84b,
+ 0xd3b86aa4, 0xaaa3b646, 0x94c874a9, 0x97734342, 0xa91881ad,
+ 0x24438a5c, 0x1a2848b3, 0x19937f58, 0x27f8bdb7, 0x5ee36155,
+ 0x6088a3ba, 0x63339451, 0x5d5856be, 0x3882f368, 0x06e93187,
+ 0x0552066c, 0x3b39c483, 0x42221861, 0x7c49da8e, 0x7ff2ed65,
+ 0x41992f8a, 0xccc2247b, 0xf2a9e694, 0xf112d17f, 0xcf791390,
+ 0xb662cf72, 0x88090d9d, 0x8bb23a76, 0xb5d9f899, 0xa007ba9e,
+ 0x9e6c7871, 0x9dd74f9a, 0xa3bc8d75, 0xdaa75197, 0xe4cc9378,
+ 0xe777a493, 0xd91c667c, 0x54476d8d, 0x6a2caf62, 0x69979889,
+ 0x57fc5a66, 0x2ee78684, 0x108c446b, 0x13377380, 0x2d5cb16f,
+ 0x488614b9, 0x76edd656, 0x7556e1bd, 0x4b3d2352, 0x3226ffb0,
+ 0x0c4d3d5f, 0x0ff60ab4, 0x319dc85b, 0xbcc6c3aa, 0x82ad0145,
+ 0x811636ae, 0xbf7df441, 0xc66628a3, 0xf80dea4c, 0xfbb6dda7,
+ 0xc5dd1f48, 0x7004e7d1, 0x4e6f253e, 0x4dd412d5, 0x73bfd03a,
+ 0x0aa40cd8, 0x34cfce37, 0x3774f9dc, 0x091f3b33, 0x844430c2,
+ 0xba2ff22d, 0xb994c5c6, 0x87ff0729, 0xfee4dbcb, 0xc08f1924,
+ 0xc3342ecf, 0xfd5fec20, 0x988549f6, 0xa6ee8b19, 0xa555bcf2,
+ 0x9b3e7e1d, 0xe225a2ff, 0xdc4e6010, 0xdff557fb, 0xe19e9514,
+ 0x6cc59ee5, 0x52ae5c0a, 0x51156be1, 0x6f7ea90e, 0x166575ec,
+ 0x280eb703, 0x2bb580e8, 0x15de4207, 0x010905e6, 0x3f62c709,
+ 0x3cd9f0e2, 0x02b2320d, 0x7ba9eeef, 0x45c22c00, 0x46791beb,
+ 0x7812d904, 0xf549d2f5, 0xcb22101a, 0xc89927f1, 0xf6f2e51e,
+ 0x8fe939fc, 0xb182fb13, 0xb239ccf8, 0x8c520e17, 0xe988abc1,
+ 0xd7e3692e, 0xd4585ec5, 0xea339c2a, 0x932840c8, 0xad438227,
+ 0xaef8b5cc, 0x90937723, 0x1dc87cd2, 0x23a3be3d, 0x201889d6,
+ 0x1e734b39, 0x676897db, 0x59035534, 0x5ab862df, 0x64d3a030,
+ 0xd10a58a9, 0xef619a46, 0xecdaadad, 0xd2b16f42, 0xabaab3a0,
+ 0x95c1714f, 0x967a46a4, 0xa811844b, 0x254a8fba, 0x1b214d55,
+ 0x189a7abe, 0x26f1b851, 0x5fea64b3, 0x6181a65c, 0x623a91b7,
+ 0x5c515358, 0x398bf68e, 0x07e03461, 0x045b038a, 0x3a30c165,
+ 0x432b1d87, 0x7d40df68, 0x7efbe883, 0x40902a6c, 0xcdcb219d,
+ 0xf3a0e372, 0xf01bd499, 0xce701676, 0xb76bca94, 0x8900087b,
+ 0x8abb3f90, 0xb4d0fd7f, 0xa10ebf78, 0x9f657d97, 0x9cde4a7c,
+ 0xa2b58893, 0xdbae5471, 0xe5c5969e, 0xe67ea175, 0xd815639a,
+ 0x554e686b, 0x6b25aa84, 0x689e9d6f, 0x56f55f80, 0x2fee8362,
+ 0x1185418d, 0x123e7666, 0x2c55b489, 0x498f115f, 0x77e4d3b0,
+ 0x745fe45b, 0x4a3426b4, 0x332ffa56, 0x0d4438b9, 0x0eff0f52,
+ 0x3094cdbd, 0xbdcfc64c, 0x83a404a3, 0x801f3348, 0xbe74f1a7,
+ 0xc76f2d45, 0xf904efaa, 0xfabfd841, 0xc4d41aae, 0x710de237,
+ 0x4f6620d8, 0x4cdd1733, 0x72b6d5dc, 0x0bad093e, 0x35c6cbd1,
+ 0x367dfc3a, 0x08163ed5, 0x854d3524, 0xbb26f7cb, 0xb89dc020,
+ 0x86f602cf, 0xffedde2d, 0xc1861cc2, 0xc23d2b29, 0xfc56e9c6,
+ 0x998c4c10, 0xa7e78eff, 0xa45cb914, 0x9a377bfb, 0xe32ca719,
+ 0xdd4765f6, 0xdefc521d, 0xe09790f2, 0x6dcc9b03, 0x53a759ec,
+ 0x501c6e07, 0x6e77ace8, 0x176c700a, 0x2907b2e5, 0x2abc850e,
+ 0x14d747e1},
+ {0x00000000, 0xc0df8ec1, 0xc1b96c58, 0x0166e299, 0x8273d9b0,
+ 0x42ac5771, 0x43cab5e8, 0x83153b29, 0x45e1c3ba, 0x853e4d7b,
+ 0x8458afe2, 0x44872123, 0xc7921a0a, 0x074d94cb, 0x062b7652,
+ 0xc6f4f893, 0xcbc4f6ae, 0x0b1b786f, 0x0a7d9af6, 0xcaa21437,
+ 0x49b72f1e, 0x8968a1df, 0x880e4346, 0x48d1cd87, 0x8e253514,
+ 0x4efabbd5, 0x4f9c594c, 0x8f43d78d, 0x0c56eca4, 0xcc896265,
+ 0xcdef80fc, 0x0d300e3d, 0xd78f9c86, 0x17501247, 0x1636f0de,
+ 0xd6e97e1f, 0x55fc4536, 0x9523cbf7, 0x9445296e, 0x549aa7af,
+ 0x926e5f3c, 0x52b1d1fd, 0x53d73364, 0x9308bda5, 0x101d868c,
+ 0xd0c2084d, 0xd1a4ead4, 0x117b6415, 0x1c4b6a28, 0xdc94e4e9,
+ 0xddf20670, 0x1d2d88b1, 0x9e38b398, 0x5ee73d59, 0x5f81dfc0,
+ 0x9f5e5101, 0x59aaa992, 0x99752753, 0x9813c5ca, 0x58cc4b0b,
+ 0xdbd97022, 0x1b06fee3, 0x1a601c7a, 0xdabf92bb, 0xef1948d6,
+ 0x2fc6c617, 0x2ea0248e, 0xee7faa4f, 0x6d6a9166, 0xadb51fa7,
+ 0xacd3fd3e, 0x6c0c73ff, 0xaaf88b6c, 0x6a2705ad, 0x6b41e734,
+ 0xab9e69f5, 0x288b52dc, 0xe854dc1d, 0xe9323e84, 0x29edb045,
+ 0x24ddbe78, 0xe40230b9, 0xe564d220, 0x25bb5ce1, 0xa6ae67c8,
+ 0x6671e909, 0x67170b90, 0xa7c88551, 0x613c7dc2, 0xa1e3f303,
+ 0xa085119a, 0x605a9f5b, 0xe34fa472, 0x23902ab3, 0x22f6c82a,
+ 0xe22946eb, 0x3896d450, 0xf8495a91, 0xf92fb808, 0x39f036c9,
+ 0xbae50de0, 0x7a3a8321, 0x7b5c61b8, 0xbb83ef79, 0x7d7717ea,
+ 0xbda8992b, 0xbcce7bb2, 0x7c11f573, 0xff04ce5a, 0x3fdb409b,
+ 0x3ebda202, 0xfe622cc3, 0xf35222fe, 0x338dac3f, 0x32eb4ea6,
+ 0xf234c067, 0x7121fb4e, 0xb1fe758f, 0xb0989716, 0x704719d7,
+ 0xb6b3e144, 0x766c6f85, 0x770a8d1c, 0xb7d503dd, 0x34c038f4,
+ 0xf41fb635, 0xf57954ac, 0x35a6da6d, 0x9f35e177, 0x5fea6fb6,
+ 0x5e8c8d2f, 0x9e5303ee, 0x1d4638c7, 0xdd99b606, 0xdcff549f,
+ 0x1c20da5e, 0xdad422cd, 0x1a0bac0c, 0x1b6d4e95, 0xdbb2c054,
+ 0x58a7fb7d, 0x987875bc, 0x991e9725, 0x59c119e4, 0x54f117d9,
+ 0x942e9918, 0x95487b81, 0x5597f540, 0xd682ce69, 0x165d40a8,
+ 0x173ba231, 0xd7e42cf0, 0x1110d463, 0xd1cf5aa2, 0xd0a9b83b,
+ 0x107636fa, 0x93630dd3, 0x53bc8312, 0x52da618b, 0x9205ef4a,
+ 0x48ba7df1, 0x8865f330, 0x890311a9, 0x49dc9f68, 0xcac9a441,
+ 0x0a162a80, 0x0b70c819, 0xcbaf46d8, 0x0d5bbe4b, 0xcd84308a,
+ 0xcce2d213, 0x0c3d5cd2, 0x8f2867fb, 0x4ff7e93a, 0x4e910ba3,
+ 0x8e4e8562, 0x837e8b5f, 0x43a1059e, 0x42c7e707, 0x821869c6,
+ 0x010d52ef, 0xc1d2dc2e, 0xc0b43eb7, 0x006bb076, 0xc69f48e5,
+ 0x0640c624, 0x072624bd, 0xc7f9aa7c, 0x44ec9155, 0x84331f94,
+ 0x8555fd0d, 0x458a73cc, 0x702ca9a1, 0xb0f32760, 0xb195c5f9,
+ 0x714a4b38, 0xf25f7011, 0x3280fed0, 0x33e61c49, 0xf3399288,
+ 0x35cd6a1b, 0xf512e4da, 0xf4740643, 0x34ab8882, 0xb7beb3ab,
+ 0x77613d6a, 0x7607dff3, 0xb6d85132, 0xbbe85f0f, 0x7b37d1ce,
+ 0x7a513357, 0xba8ebd96, 0x399b86bf, 0xf944087e, 0xf822eae7,
+ 0x38fd6426, 0xfe099cb5, 0x3ed61274, 0x3fb0f0ed, 0xff6f7e2c,
+ 0x7c7a4505, 0xbca5cbc4, 0xbdc3295d, 0x7d1ca79c, 0xa7a33527,
+ 0x677cbbe6, 0x661a597f, 0xa6c5d7be, 0x25d0ec97, 0xe50f6256,
+ 0xe46980cf, 0x24b60e0e, 0xe242f69d, 0x229d785c, 0x23fb9ac5,
+ 0xe3241404, 0x60312f2d, 0xa0eea1ec, 0xa1884375, 0x6157cdb4,
+ 0x6c67c389, 0xacb84d48, 0xaddeafd1, 0x6d012110, 0xee141a39,
+ 0x2ecb94f8, 0x2fad7661, 0xef72f8a0, 0x29860033, 0xe9598ef2,
+ 0xe83f6c6b, 0x28e0e2aa, 0xabf5d983, 0x6b2a5742, 0x6a4cb5db,
+ 0xaa933b1a},
+ {0x00000000, 0x6f4ca59b, 0x9f9e3bec, 0xf0d29e77, 0x7f3b0603,
+ 0x1077a398, 0xe0a53def, 0x8fe99874, 0xfe760c06, 0x913aa99d,
+ 0x61e837ea, 0x0ea49271, 0x814d0a05, 0xee01af9e, 0x1ed331e9,
+ 0x719f9472, 0xfced180c, 0x93a1bd97, 0x637323e0, 0x0c3f867b,
+ 0x83d61e0f, 0xec9abb94, 0x1c4825e3, 0x73048078, 0x029b140a,
+ 0x6dd7b191, 0x9d052fe6, 0xf2498a7d, 0x7da01209, 0x12ecb792,
+ 0xe23e29e5, 0x8d728c7e, 0xf8db3118, 0x97979483, 0x67450af4,
+ 0x0809af6f, 0x87e0371b, 0xe8ac9280, 0x187e0cf7, 0x7732a96c,
+ 0x06ad3d1e, 0x69e19885, 0x993306f2, 0xf67fa369, 0x79963b1d,
+ 0x16da9e86, 0xe60800f1, 0x8944a56a, 0x04362914, 0x6b7a8c8f,
+ 0x9ba812f8, 0xf4e4b763, 0x7b0d2f17, 0x14418a8c, 0xe49314fb,
+ 0x8bdfb160, 0xfa402512, 0x950c8089, 0x65de1efe, 0x0a92bb65,
+ 0x857b2311, 0xea37868a, 0x1ae518fd, 0x75a9bd66, 0xf0b76330,
+ 0x9ffbc6ab, 0x6f2958dc, 0x0065fd47, 0x8f8c6533, 0xe0c0c0a8,
+ 0x10125edf, 0x7f5efb44, 0x0ec16f36, 0x618dcaad, 0x915f54da,
+ 0xfe13f141, 0x71fa6935, 0x1eb6ccae, 0xee6452d9, 0x8128f742,
+ 0x0c5a7b3c, 0x6316dea7, 0x93c440d0, 0xfc88e54b, 0x73617d3f,
+ 0x1c2dd8a4, 0xecff46d3, 0x83b3e348, 0xf22c773a, 0x9d60d2a1,
+ 0x6db24cd6, 0x02fee94d, 0x8d177139, 0xe25bd4a2, 0x12894ad5,
+ 0x7dc5ef4e, 0x086c5228, 0x6720f7b3, 0x97f269c4, 0xf8becc5f,
+ 0x7757542b, 0x181bf1b0, 0xe8c96fc7, 0x8785ca5c, 0xf61a5e2e,
+ 0x9956fbb5, 0x698465c2, 0x06c8c059, 0x8921582d, 0xe66dfdb6,
+ 0x16bf63c1, 0x79f3c65a, 0xf4814a24, 0x9bcdefbf, 0x6b1f71c8,
+ 0x0453d453, 0x8bba4c27, 0xe4f6e9bc, 0x142477cb, 0x7b68d250,
+ 0x0af74622, 0x65bbe3b9, 0x95697dce, 0xfa25d855, 0x75cc4021,
+ 0x1a80e5ba, 0xea527bcd, 0x851ede56, 0xe06fc760, 0x8f2362fb,
+ 0x7ff1fc8c, 0x10bd5917, 0x9f54c163, 0xf01864f8, 0x00cafa8f,
+ 0x6f865f14, 0x1e19cb66, 0x71556efd, 0x8187f08a, 0xeecb5511,
+ 0x6122cd65, 0x0e6e68fe, 0xfebcf689, 0x91f05312, 0x1c82df6c,
+ 0x73ce7af7, 0x831ce480, 0xec50411b, 0x63b9d96f, 0x0cf57cf4,
+ 0xfc27e283, 0x936b4718, 0xe2f4d36a, 0x8db876f1, 0x7d6ae886,
+ 0x12264d1d, 0x9dcfd569, 0xf28370f2, 0x0251ee85, 0x6d1d4b1e,
+ 0x18b4f678, 0x77f853e3, 0x872acd94, 0xe866680f, 0x678ff07b,
+ 0x08c355e0, 0xf811cb97, 0x975d6e0c, 0xe6c2fa7e, 0x898e5fe5,
+ 0x795cc192, 0x16106409, 0x99f9fc7d, 0xf6b559e6, 0x0667c791,
+ 0x692b620a, 0xe459ee74, 0x8b154bef, 0x7bc7d598, 0x148b7003,
+ 0x9b62e877, 0xf42e4dec, 0x04fcd39b, 0x6bb07600, 0x1a2fe272,
+ 0x756347e9, 0x85b1d99e, 0xeafd7c05, 0x6514e471, 0x0a5841ea,
+ 0xfa8adf9d, 0x95c67a06, 0x10d8a450, 0x7f9401cb, 0x8f469fbc,
+ 0xe00a3a27, 0x6fe3a253, 0x00af07c8, 0xf07d99bf, 0x9f313c24,
+ 0xeeaea856, 0x81e20dcd, 0x713093ba, 0x1e7c3621, 0x9195ae55,
+ 0xfed90bce, 0x0e0b95b9, 0x61473022, 0xec35bc5c, 0x837919c7,
+ 0x73ab87b0, 0x1ce7222b, 0x930eba5f, 0xfc421fc4, 0x0c9081b3,
+ 0x63dc2428, 0x1243b05a, 0x7d0f15c1, 0x8ddd8bb6, 0xe2912e2d,
+ 0x6d78b659, 0x023413c2, 0xf2e68db5, 0x9daa282e, 0xe8039548,
+ 0x874f30d3, 0x779daea4, 0x18d10b3f, 0x9738934b, 0xf87436d0,
+ 0x08a6a8a7, 0x67ea0d3c, 0x1675994e, 0x79393cd5, 0x89eba2a2,
+ 0xe6a70739, 0x694e9f4d, 0x06023ad6, 0xf6d0a4a1, 0x999c013a,
+ 0x14ee8d44, 0x7ba228df, 0x8b70b6a8, 0xe43c1333, 0x6bd58b47,
+ 0x04992edc, 0xf44bb0ab, 0x9b071530, 0xea988142, 0x85d424d9,
+ 0x7506baae, 0x1a4a1f35, 0x95a38741, 0xfaef22da, 0x0a3dbcad,
+ 0x65711936}};
+
+#endif
+
+#endif
+
+#if N == 4
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xf1da05aa, 0x38c50d15, 0xc91f08bf, 0x718a1a2a,
+ 0x80501f80, 0x494f173f, 0xb8951295, 0xe3143454, 0x12ce31fe,
+ 0xdbd13941, 0x2a0b3ceb, 0x929e2e7e, 0x63442bd4, 0xaa5b236b,
+ 0x5b8126c1, 0x1d596ee9, 0xec836b43, 0x259c63fc, 0xd4466656,
+ 0x6cd374c3, 0x9d097169, 0x541679d6, 0xa5cc7c7c, 0xfe4d5abd,
+ 0x0f975f17, 0xc68857a8, 0x37525202, 0x8fc74097, 0x7e1d453d,
+ 0xb7024d82, 0x46d84828, 0x3ab2ddd2, 0xcb68d878, 0x0277d0c7,
+ 0xf3add56d, 0x4b38c7f8, 0xbae2c252, 0x73fdcaed, 0x8227cf47,
+ 0xd9a6e986, 0x287cec2c, 0xe163e493, 0x10b9e139, 0xa82cf3ac,
+ 0x59f6f606, 0x90e9feb9, 0x6133fb13, 0x27ebb33b, 0xd631b691,
+ 0x1f2ebe2e, 0xeef4bb84, 0x5661a911, 0xa7bbacbb, 0x6ea4a404,
+ 0x9f7ea1ae, 0xc4ff876f, 0x352582c5, 0xfc3a8a7a, 0x0de08fd0,
+ 0xb5759d45, 0x44af98ef, 0x8db09050, 0x7c6a95fa, 0x7565bba4,
+ 0x84bfbe0e, 0x4da0b6b1, 0xbc7ab31b, 0x04efa18e, 0xf535a424,
+ 0x3c2aac9b, 0xcdf0a931, 0x96718ff0, 0x67ab8a5a, 0xaeb482e5,
+ 0x5f6e874f, 0xe7fb95da, 0x16219070, 0xdf3e98cf, 0x2ee49d65,
+ 0x683cd54d, 0x99e6d0e7, 0x50f9d858, 0xa123ddf2, 0x19b6cf67,
+ 0xe86ccacd, 0x2173c272, 0xd0a9c7d8, 0x8b28e119, 0x7af2e4b3,
+ 0xb3edec0c, 0x4237e9a6, 0xfaa2fb33, 0x0b78fe99, 0xc267f626,
+ 0x33bdf38c, 0x4fd76676, 0xbe0d63dc, 0x77126b63, 0x86c86ec9,
+ 0x3e5d7c5c, 0xcf8779f6, 0x06987149, 0xf74274e3, 0xacc35222,
+ 0x5d195788, 0x94065f37, 0x65dc5a9d, 0xdd494808, 0x2c934da2,
+ 0xe58c451d, 0x145640b7, 0x528e089f, 0xa3540d35, 0x6a4b058a,
+ 0x9b910020, 0x230412b5, 0xd2de171f, 0x1bc11fa0, 0xea1b1a0a,
+ 0xb19a3ccb, 0x40403961, 0x895f31de, 0x78853474, 0xc01026e1,
+ 0x31ca234b, 0xf8d52bf4, 0x090f2e5e, 0xeacb7748, 0x1b1172e2,
+ 0xd20e7a5d, 0x23d47ff7, 0x9b416d62, 0x6a9b68c8, 0xa3846077,
+ 0x525e65dd, 0x09df431c, 0xf80546b6, 0x311a4e09, 0xc0c04ba3,
+ 0x78555936, 0x898f5c9c, 0x40905423, 0xb14a5189, 0xf79219a1,
+ 0x06481c0b, 0xcf5714b4, 0x3e8d111e, 0x8618038b, 0x77c20621,
+ 0xbedd0e9e, 0x4f070b34, 0x14862df5, 0xe55c285f, 0x2c4320e0,
+ 0xdd99254a, 0x650c37df, 0x94d63275, 0x5dc93aca, 0xac133f60,
+ 0xd079aa9a, 0x21a3af30, 0xe8bca78f, 0x1966a225, 0xa1f3b0b0,
+ 0x5029b51a, 0x9936bda5, 0x68ecb80f, 0x336d9ece, 0xc2b79b64,
+ 0x0ba893db, 0xfa729671, 0x42e784e4, 0xb33d814e, 0x7a2289f1,
+ 0x8bf88c5b, 0xcd20c473, 0x3cfac1d9, 0xf5e5c966, 0x043fcccc,
+ 0xbcaade59, 0x4d70dbf3, 0x846fd34c, 0x75b5d6e6, 0x2e34f027,
+ 0xdfeef58d, 0x16f1fd32, 0xe72bf898, 0x5fbeea0d, 0xae64efa7,
+ 0x677be718, 0x96a1e2b2, 0x9faeccec, 0x6e74c946, 0xa76bc1f9,
+ 0x56b1c453, 0xee24d6c6, 0x1ffed36c, 0xd6e1dbd3, 0x273bde79,
+ 0x7cbaf8b8, 0x8d60fd12, 0x447ff5ad, 0xb5a5f007, 0x0d30e292,
+ 0xfceae738, 0x35f5ef87, 0xc42fea2d, 0x82f7a205, 0x732da7af,
+ 0xba32af10, 0x4be8aaba, 0xf37db82f, 0x02a7bd85, 0xcbb8b53a,
+ 0x3a62b090, 0x61e39651, 0x903993fb, 0x59269b44, 0xa8fc9eee,
+ 0x10698c7b, 0xe1b389d1, 0x28ac816e, 0xd97684c4, 0xa51c113e,
+ 0x54c61494, 0x9dd91c2b, 0x6c031981, 0xd4960b14, 0x254c0ebe,
+ 0xec530601, 0x1d8903ab, 0x4608256a, 0xb7d220c0, 0x7ecd287f,
+ 0x8f172dd5, 0x37823f40, 0xc6583aea, 0x0f473255, 0xfe9d37ff,
+ 0xb8457fd7, 0x499f7a7d, 0x808072c2, 0x715a7768, 0xc9cf65fd,
+ 0x38156057, 0xf10a68e8, 0x00d06d42, 0x5b514b83, 0xaa8b4e29,
+ 0x63944696, 0x924e433c, 0x2adb51a9, 0xdb015403, 0x121e5cbc,
+ 0xe3c45916},
+ {0x00000000, 0x0ee7e8d1, 0x1dcfd1a2, 0x13283973, 0x3b9fa344,
+ 0x35784b95, 0x265072e6, 0x28b79a37, 0x773f4688, 0x79d8ae59,
+ 0x6af0972a, 0x64177ffb, 0x4ca0e5cc, 0x42470d1d, 0x516f346e,
+ 0x5f88dcbf, 0xee7e8d10, 0xe09965c1, 0xf3b15cb2, 0xfd56b463,
+ 0xd5e12e54, 0xdb06c685, 0xc82efff6, 0xc6c91727, 0x9941cb98,
+ 0x97a62349, 0x848e1a3a, 0x8a69f2eb, 0xa2de68dc, 0xac39800d,
+ 0xbf11b97e, 0xb1f651af, 0x078c1c61, 0x096bf4b0, 0x1a43cdc3,
+ 0x14a42512, 0x3c13bf25, 0x32f457f4, 0x21dc6e87, 0x2f3b8656,
+ 0x70b35ae9, 0x7e54b238, 0x6d7c8b4b, 0x639b639a, 0x4b2cf9ad,
+ 0x45cb117c, 0x56e3280f, 0x5804c0de, 0xe9f29171, 0xe71579a0,
+ 0xf43d40d3, 0xfadaa802, 0xd26d3235, 0xdc8adae4, 0xcfa2e397,
+ 0xc1450b46, 0x9ecdd7f9, 0x902a3f28, 0x8302065b, 0x8de5ee8a,
+ 0xa55274bd, 0xabb59c6c, 0xb89da51f, 0xb67a4dce, 0x0f1838c2,
+ 0x01ffd013, 0x12d7e960, 0x1c3001b1, 0x34879b86, 0x3a607357,
+ 0x29484a24, 0x27afa2f5, 0x78277e4a, 0x76c0969b, 0x65e8afe8,
+ 0x6b0f4739, 0x43b8dd0e, 0x4d5f35df, 0x5e770cac, 0x5090e47d,
+ 0xe166b5d2, 0xef815d03, 0xfca96470, 0xf24e8ca1, 0xdaf91696,
+ 0xd41efe47, 0xc736c734, 0xc9d12fe5, 0x9659f35a, 0x98be1b8b,
+ 0x8b9622f8, 0x8571ca29, 0xadc6501e, 0xa321b8cf, 0xb00981bc,
+ 0xbeee696d, 0x089424a3, 0x0673cc72, 0x155bf501, 0x1bbc1dd0,
+ 0x330b87e7, 0x3dec6f36, 0x2ec45645, 0x2023be94, 0x7fab622b,
+ 0x714c8afa, 0x6264b389, 0x6c835b58, 0x4434c16f, 0x4ad329be,
+ 0x59fb10cd, 0x571cf81c, 0xe6eaa9b3, 0xe80d4162, 0xfb257811,
+ 0xf5c290c0, 0xdd750af7, 0xd392e226, 0xc0badb55, 0xce5d3384,
+ 0x91d5ef3b, 0x9f3207ea, 0x8c1a3e99, 0x82fdd648, 0xaa4a4c7f,
+ 0xa4ada4ae, 0xb7859ddd, 0xb962750c, 0x1e307184, 0x10d79955,
+ 0x03ffa026, 0x0d1848f7, 0x25afd2c0, 0x2b483a11, 0x38600362,
+ 0x3687ebb3, 0x690f370c, 0x67e8dfdd, 0x74c0e6ae, 0x7a270e7f,
+ 0x52909448, 0x5c777c99, 0x4f5f45ea, 0x41b8ad3b, 0xf04efc94,
+ 0xfea91445, 0xed812d36, 0xe366c5e7, 0xcbd15fd0, 0xc536b701,
+ 0xd61e8e72, 0xd8f966a3, 0x8771ba1c, 0x899652cd, 0x9abe6bbe,
+ 0x9459836f, 0xbcee1958, 0xb209f189, 0xa121c8fa, 0xafc6202b,
+ 0x19bc6de5, 0x175b8534, 0x0473bc47, 0x0a945496, 0x2223cea1,
+ 0x2cc42670, 0x3fec1f03, 0x310bf7d2, 0x6e832b6d, 0x6064c3bc,
+ 0x734cfacf, 0x7dab121e, 0x551c8829, 0x5bfb60f8, 0x48d3598b,
+ 0x4634b15a, 0xf7c2e0f5, 0xf9250824, 0xea0d3157, 0xe4ead986,
+ 0xcc5d43b1, 0xc2baab60, 0xd1929213, 0xdf757ac2, 0x80fda67d,
+ 0x8e1a4eac, 0x9d3277df, 0x93d59f0e, 0xbb620539, 0xb585ede8,
+ 0xa6add49b, 0xa84a3c4a, 0x11284946, 0x1fcfa197, 0x0ce798e4,
+ 0x02007035, 0x2ab7ea02, 0x245002d3, 0x37783ba0, 0x399fd371,
+ 0x66170fce, 0x68f0e71f, 0x7bd8de6c, 0x753f36bd, 0x5d88ac8a,
+ 0x536f445b, 0x40477d28, 0x4ea095f9, 0xff56c456, 0xf1b12c87,
+ 0xe29915f4, 0xec7efd25, 0xc4c96712, 0xca2e8fc3, 0xd906b6b0,
+ 0xd7e15e61, 0x886982de, 0x868e6a0f, 0x95a6537c, 0x9b41bbad,
+ 0xb3f6219a, 0xbd11c94b, 0xae39f038, 0xa0de18e9, 0x16a45527,
+ 0x1843bdf6, 0x0b6b8485, 0x058c6c54, 0x2d3bf663, 0x23dc1eb2,
+ 0x30f427c1, 0x3e13cf10, 0x619b13af, 0x6f7cfb7e, 0x7c54c20d,
+ 0x72b32adc, 0x5a04b0eb, 0x54e3583a, 0x47cb6149, 0x492c8998,
+ 0xf8dad837, 0xf63d30e6, 0xe5150995, 0xebf2e144, 0xc3457b73,
+ 0xcda293a2, 0xde8aaad1, 0xd06d4200, 0x8fe59ebf, 0x8102766e,
+ 0x922a4f1d, 0x9ccda7cc, 0xb47a3dfb, 0xba9dd52a, 0xa9b5ec59,
+ 0xa7520488},
+ {0x00000000, 0x3c60e308, 0x78c1c610, 0x44a12518, 0xf1838c20,
+ 0xcde36f28, 0x89424a30, 0xb522a938, 0x38761e01, 0x0416fd09,
+ 0x40b7d811, 0x7cd73b19, 0xc9f59221, 0xf5957129, 0xb1345431,
+ 0x8d54b739, 0x70ec3c02, 0x4c8cdf0a, 0x082dfa12, 0x344d191a,
+ 0x816fb022, 0xbd0f532a, 0xf9ae7632, 0xc5ce953a, 0x489a2203,
+ 0x74fac10b, 0x305be413, 0x0c3b071b, 0xb919ae23, 0x85794d2b,
+ 0xc1d86833, 0xfdb88b3b, 0xe1d87804, 0xddb89b0c, 0x9919be14,
+ 0xa5795d1c, 0x105bf424, 0x2c3b172c, 0x689a3234, 0x54fad13c,
+ 0xd9ae6605, 0xe5ce850d, 0xa16fa015, 0x9d0f431d, 0x282dea25,
+ 0x144d092d, 0x50ec2c35, 0x6c8ccf3d, 0x91344406, 0xad54a70e,
+ 0xe9f58216, 0xd595611e, 0x60b7c826, 0x5cd72b2e, 0x18760e36,
+ 0x2416ed3e, 0xa9425a07, 0x9522b90f, 0xd1839c17, 0xede37f1f,
+ 0x58c1d627, 0x64a1352f, 0x20001037, 0x1c60f33f, 0x18c1f649,
+ 0x24a11541, 0x60003059, 0x5c60d351, 0xe9427a69, 0xd5229961,
+ 0x9183bc79, 0xade35f71, 0x20b7e848, 0x1cd70b40, 0x58762e58,
+ 0x6416cd50, 0xd1346468, 0xed548760, 0xa9f5a278, 0x95954170,
+ 0x682dca4b, 0x544d2943, 0x10ec0c5b, 0x2c8cef53, 0x99ae466b,
+ 0xa5cea563, 0xe16f807b, 0xdd0f6373, 0x505bd44a, 0x6c3b3742,
+ 0x289a125a, 0x14faf152, 0xa1d8586a, 0x9db8bb62, 0xd9199e7a,
+ 0xe5797d72, 0xf9198e4d, 0xc5796d45, 0x81d8485d, 0xbdb8ab55,
+ 0x089a026d, 0x34fae165, 0x705bc47d, 0x4c3b2775, 0xc16f904c,
+ 0xfd0f7344, 0xb9ae565c, 0x85ceb554, 0x30ec1c6c, 0x0c8cff64,
+ 0x482dda7c, 0x744d3974, 0x89f5b24f, 0xb5955147, 0xf134745f,
+ 0xcd549757, 0x78763e6f, 0x4416dd67, 0x00b7f87f, 0x3cd71b77,
+ 0xb183ac4e, 0x8de34f46, 0xc9426a5e, 0xf5228956, 0x4000206e,
+ 0x7c60c366, 0x38c1e67e, 0x04a10576, 0x3183ec92, 0x0de30f9a,
+ 0x49422a82, 0x7522c98a, 0xc00060b2, 0xfc6083ba, 0xb8c1a6a2,
+ 0x84a145aa, 0x09f5f293, 0x3595119b, 0x71343483, 0x4d54d78b,
+ 0xf8767eb3, 0xc4169dbb, 0x80b7b8a3, 0xbcd75bab, 0x416fd090,
+ 0x7d0f3398, 0x39ae1680, 0x05cef588, 0xb0ec5cb0, 0x8c8cbfb8,
+ 0xc82d9aa0, 0xf44d79a8, 0x7919ce91, 0x45792d99, 0x01d80881,
+ 0x3db8eb89, 0x889a42b1, 0xb4faa1b9, 0xf05b84a1, 0xcc3b67a9,
+ 0xd05b9496, 0xec3b779e, 0xa89a5286, 0x94fab18e, 0x21d818b6,
+ 0x1db8fbbe, 0x5919dea6, 0x65793dae, 0xe82d8a97, 0xd44d699f,
+ 0x90ec4c87, 0xac8caf8f, 0x19ae06b7, 0x25cee5bf, 0x616fc0a7,
+ 0x5d0f23af, 0xa0b7a894, 0x9cd74b9c, 0xd8766e84, 0xe4168d8c,
+ 0x513424b4, 0x6d54c7bc, 0x29f5e2a4, 0x159501ac, 0x98c1b695,
+ 0xa4a1559d, 0xe0007085, 0xdc60938d, 0x69423ab5, 0x5522d9bd,
+ 0x1183fca5, 0x2de31fad, 0x29421adb, 0x1522f9d3, 0x5183dccb,
+ 0x6de33fc3, 0xd8c196fb, 0xe4a175f3, 0xa00050eb, 0x9c60b3e3,
+ 0x113404da, 0x2d54e7d2, 0x69f5c2ca, 0x559521c2, 0xe0b788fa,
+ 0xdcd76bf2, 0x98764eea, 0xa416ade2, 0x59ae26d9, 0x65cec5d1,
+ 0x216fe0c9, 0x1d0f03c1, 0xa82daaf9, 0x944d49f1, 0xd0ec6ce9,
+ 0xec8c8fe1, 0x61d838d8, 0x5db8dbd0, 0x1919fec8, 0x25791dc0,
+ 0x905bb4f8, 0xac3b57f0, 0xe89a72e8, 0xd4fa91e0, 0xc89a62df,
+ 0xf4fa81d7, 0xb05ba4cf, 0x8c3b47c7, 0x3919eeff, 0x05790df7,
+ 0x41d828ef, 0x7db8cbe7, 0xf0ec7cde, 0xcc8c9fd6, 0x882dbace,
+ 0xb44d59c6, 0x016ff0fe, 0x3d0f13f6, 0x79ae36ee, 0x45ced5e6,
+ 0xb8765edd, 0x8416bdd5, 0xc0b798cd, 0xfcd77bc5, 0x49f5d2fd,
+ 0x759531f5, 0x313414ed, 0x0d54f7e5, 0x800040dc, 0xbc60a3d4,
+ 0xf8c186cc, 0xc4a165c4, 0x7183ccfc, 0x4de32ff4, 0x09420aec,
+ 0x3522e9e4},
+ {0x00000000, 0x6307d924, 0xc60fb248, 0xa5086b6c, 0x576e62d1,
+ 0x3469bbf5, 0x9161d099, 0xf26609bd, 0xaedcc5a2, 0xcddb1c86,
+ 0x68d377ea, 0x0bd4aece, 0xf9b2a773, 0x9ab57e57, 0x3fbd153b,
+ 0x5cbacc1f, 0x86c88d05, 0xe5cf5421, 0x40c73f4d, 0x23c0e669,
+ 0xd1a6efd4, 0xb2a136f0, 0x17a95d9c, 0x74ae84b8, 0x281448a7,
+ 0x4b139183, 0xee1bfaef, 0x8d1c23cb, 0x7f7a2a76, 0x1c7df352,
+ 0xb975983e, 0xda72411a, 0xd6e01c4b, 0xb5e7c56f, 0x10efae03,
+ 0x73e87727, 0x818e7e9a, 0xe289a7be, 0x4781ccd2, 0x248615f6,
+ 0x783cd9e9, 0x1b3b00cd, 0xbe336ba1, 0xdd34b285, 0x2f52bb38,
+ 0x4c55621c, 0xe95d0970, 0x8a5ad054, 0x5028914e, 0x332f486a,
+ 0x96272306, 0xf520fa22, 0x0746f39f, 0x64412abb, 0xc14941d7,
+ 0xa24e98f3, 0xfef454ec, 0x9df38dc8, 0x38fbe6a4, 0x5bfc3f80,
+ 0xa99a363d, 0xca9def19, 0x6f958475, 0x0c925d51, 0x76b13ed7,
+ 0x15b6e7f3, 0xb0be8c9f, 0xd3b955bb, 0x21df5c06, 0x42d88522,
+ 0xe7d0ee4e, 0x84d7376a, 0xd86dfb75, 0xbb6a2251, 0x1e62493d,
+ 0x7d659019, 0x8f0399a4, 0xec044080, 0x490c2bec, 0x2a0bf2c8,
+ 0xf079b3d2, 0x937e6af6, 0x3676019a, 0x5571d8be, 0xa717d103,
+ 0xc4100827, 0x6118634b, 0x021fba6f, 0x5ea57670, 0x3da2af54,
+ 0x98aac438, 0xfbad1d1c, 0x09cb14a1, 0x6acccd85, 0xcfc4a6e9,
+ 0xacc37fcd, 0xa051229c, 0xc356fbb8, 0x665e90d4, 0x055949f0,
+ 0xf73f404d, 0x94389969, 0x3130f205, 0x52372b21, 0x0e8de73e,
+ 0x6d8a3e1a, 0xc8825576, 0xab858c52, 0x59e385ef, 0x3ae45ccb,
+ 0x9fec37a7, 0xfcebee83, 0x2699af99, 0x459e76bd, 0xe0961dd1,
+ 0x8391c4f5, 0x71f7cd48, 0x12f0146c, 0xb7f87f00, 0xd4ffa624,
+ 0x88456a3b, 0xeb42b31f, 0x4e4ad873, 0x2d4d0157, 0xdf2b08ea,
+ 0xbc2cd1ce, 0x1924baa2, 0x7a236386, 0xed627dae, 0x8e65a48a,
+ 0x2b6dcfe6, 0x486a16c2, 0xba0c1f7f, 0xd90bc65b, 0x7c03ad37,
+ 0x1f047413, 0x43beb80c, 0x20b96128, 0x85b10a44, 0xe6b6d360,
+ 0x14d0dadd, 0x77d703f9, 0xd2df6895, 0xb1d8b1b1, 0x6baaf0ab,
+ 0x08ad298f, 0xada542e3, 0xcea29bc7, 0x3cc4927a, 0x5fc34b5e,
+ 0xfacb2032, 0x99ccf916, 0xc5763509, 0xa671ec2d, 0x03798741,
+ 0x607e5e65, 0x921857d8, 0xf11f8efc, 0x5417e590, 0x37103cb4,
+ 0x3b8261e5, 0x5885b8c1, 0xfd8dd3ad, 0x9e8a0a89, 0x6cec0334,
+ 0x0febda10, 0xaae3b17c, 0xc9e46858, 0x955ea447, 0xf6597d63,
+ 0x5351160f, 0x3056cf2b, 0xc230c696, 0xa1371fb2, 0x043f74de,
+ 0x6738adfa, 0xbd4aece0, 0xde4d35c4, 0x7b455ea8, 0x1842878c,
+ 0xea248e31, 0x89235715, 0x2c2b3c79, 0x4f2ce55d, 0x13962942,
+ 0x7091f066, 0xd5999b0a, 0xb69e422e, 0x44f84b93, 0x27ff92b7,
+ 0x82f7f9db, 0xe1f020ff, 0x9bd34379, 0xf8d49a5d, 0x5ddcf131,
+ 0x3edb2815, 0xccbd21a8, 0xafbaf88c, 0x0ab293e0, 0x69b54ac4,
+ 0x350f86db, 0x56085fff, 0xf3003493, 0x9007edb7, 0x6261e40a,
+ 0x01663d2e, 0xa46e5642, 0xc7698f66, 0x1d1bce7c, 0x7e1c1758,
+ 0xdb147c34, 0xb813a510, 0x4a75acad, 0x29727589, 0x8c7a1ee5,
+ 0xef7dc7c1, 0xb3c70bde, 0xd0c0d2fa, 0x75c8b996, 0x16cf60b2,
+ 0xe4a9690f, 0x87aeb02b, 0x22a6db47, 0x41a10263, 0x4d335f32,
+ 0x2e348616, 0x8b3ced7a, 0xe83b345e, 0x1a5d3de3, 0x795ae4c7,
+ 0xdc528fab, 0xbf55568f, 0xe3ef9a90, 0x80e843b4, 0x25e028d8,
+ 0x46e7f1fc, 0xb481f841, 0xd7862165, 0x728e4a09, 0x1189932d,
+ 0xcbfbd237, 0xa8fc0b13, 0x0df4607f, 0x6ef3b95b, 0x9c95b0e6,
+ 0xff9269c2, 0x5a9a02ae, 0x399ddb8a, 0x65271795, 0x0620ceb1,
+ 0xa328a5dd, 0xc02f7cf9, 0x32497544, 0x514eac60, 0xf446c70c,
+ 0x97411e28},
+ {0x00000000, 0x01b5fd1d, 0x036bfa3a, 0x02de0727, 0x06d7f474,
+ 0x07620969, 0x05bc0e4e, 0x0409f353, 0x0dafe8e8, 0x0c1a15f5,
+ 0x0ec412d2, 0x0f71efcf, 0x0b781c9c, 0x0acde181, 0x0813e6a6,
+ 0x09a61bbb, 0x1b5fd1d0, 0x1aea2ccd, 0x18342bea, 0x1981d6f7,
+ 0x1d8825a4, 0x1c3dd8b9, 0x1ee3df9e, 0x1f562283, 0x16f03938,
+ 0x1745c425, 0x159bc302, 0x142e3e1f, 0x1027cd4c, 0x11923051,
+ 0x134c3776, 0x12f9ca6b, 0x36bfa3a0, 0x370a5ebd, 0x35d4599a,
+ 0x3461a487, 0x306857d4, 0x31ddaac9, 0x3303adee, 0x32b650f3,
+ 0x3b104b48, 0x3aa5b655, 0x387bb172, 0x39ce4c6f, 0x3dc7bf3c,
+ 0x3c724221, 0x3eac4506, 0x3f19b81b, 0x2de07270, 0x2c558f6d,
+ 0x2e8b884a, 0x2f3e7557, 0x2b378604, 0x2a827b19, 0x285c7c3e,
+ 0x29e98123, 0x204f9a98, 0x21fa6785, 0x232460a2, 0x22919dbf,
+ 0x26986eec, 0x272d93f1, 0x25f394d6, 0x244669cb, 0x6d7f4740,
+ 0x6ccaba5d, 0x6e14bd7a, 0x6fa14067, 0x6ba8b334, 0x6a1d4e29,
+ 0x68c3490e, 0x6976b413, 0x60d0afa8, 0x616552b5, 0x63bb5592,
+ 0x620ea88f, 0x66075bdc, 0x67b2a6c1, 0x656ca1e6, 0x64d95cfb,
+ 0x76209690, 0x77956b8d, 0x754b6caa, 0x74fe91b7, 0x70f762e4,
+ 0x71429ff9, 0x739c98de, 0x722965c3, 0x7b8f7e78, 0x7a3a8365,
+ 0x78e48442, 0x7951795f, 0x7d588a0c, 0x7ced7711, 0x7e337036,
+ 0x7f868d2b, 0x5bc0e4e0, 0x5a7519fd, 0x58ab1eda, 0x591ee3c7,
+ 0x5d171094, 0x5ca2ed89, 0x5e7ceaae, 0x5fc917b3, 0x566f0c08,
+ 0x57daf115, 0x5504f632, 0x54b10b2f, 0x50b8f87c, 0x510d0561,
+ 0x53d30246, 0x5266ff5b, 0x409f3530, 0x412ac82d, 0x43f4cf0a,
+ 0x42413217, 0x4648c144, 0x47fd3c59, 0x45233b7e, 0x4496c663,
+ 0x4d30ddd8, 0x4c8520c5, 0x4e5b27e2, 0x4feedaff, 0x4be729ac,
+ 0x4a52d4b1, 0x488cd396, 0x49392e8b, 0xdafe8e80, 0xdb4b739d,
+ 0xd99574ba, 0xd82089a7, 0xdc297af4, 0xdd9c87e9, 0xdf4280ce,
+ 0xdef77dd3, 0xd7516668, 0xd6e49b75, 0xd43a9c52, 0xd58f614f,
+ 0xd186921c, 0xd0336f01, 0xd2ed6826, 0xd358953b, 0xc1a15f50,
+ 0xc014a24d, 0xc2caa56a, 0xc37f5877, 0xc776ab24, 0xc6c35639,
+ 0xc41d511e, 0xc5a8ac03, 0xcc0eb7b8, 0xcdbb4aa5, 0xcf654d82,
+ 0xced0b09f, 0xcad943cc, 0xcb6cbed1, 0xc9b2b9f6, 0xc80744eb,
+ 0xec412d20, 0xedf4d03d, 0xef2ad71a, 0xee9f2a07, 0xea96d954,
+ 0xeb232449, 0xe9fd236e, 0xe848de73, 0xe1eec5c8, 0xe05b38d5,
+ 0xe2853ff2, 0xe330c2ef, 0xe73931bc, 0xe68ccca1, 0xe452cb86,
+ 0xe5e7369b, 0xf71efcf0, 0xf6ab01ed, 0xf47506ca, 0xf5c0fbd7,
+ 0xf1c90884, 0xf07cf599, 0xf2a2f2be, 0xf3170fa3, 0xfab11418,
+ 0xfb04e905, 0xf9daee22, 0xf86f133f, 0xfc66e06c, 0xfdd31d71,
+ 0xff0d1a56, 0xfeb8e74b, 0xb781c9c0, 0xb63434dd, 0xb4ea33fa,
+ 0xb55fcee7, 0xb1563db4, 0xb0e3c0a9, 0xb23dc78e, 0xb3883a93,
+ 0xba2e2128, 0xbb9bdc35, 0xb945db12, 0xb8f0260f, 0xbcf9d55c,
+ 0xbd4c2841, 0xbf922f66, 0xbe27d27b, 0xacde1810, 0xad6be50d,
+ 0xafb5e22a, 0xae001f37, 0xaa09ec64, 0xabbc1179, 0xa962165e,
+ 0xa8d7eb43, 0xa171f0f8, 0xa0c40de5, 0xa21a0ac2, 0xa3aff7df,
+ 0xa7a6048c, 0xa613f991, 0xa4cdfeb6, 0xa57803ab, 0x813e6a60,
+ 0x808b977d, 0x8255905a, 0x83e06d47, 0x87e99e14, 0x865c6309,
+ 0x8482642e, 0x85379933, 0x8c918288, 0x8d247f95, 0x8ffa78b2,
+ 0x8e4f85af, 0x8a4676fc, 0x8bf38be1, 0x892d8cc6, 0x889871db,
+ 0x9a61bbb0, 0x9bd446ad, 0x990a418a, 0x98bfbc97, 0x9cb64fc4,
+ 0x9d03b2d9, 0x9fddb5fe, 0x9e6848e3, 0x97ce5358, 0x967bae45,
+ 0x94a5a962, 0x9510547f, 0x9119a72c, 0x90ac5a31, 0x92725d16,
+ 0x93c7a00b},
+ {0x00000000, 0x6e8c1b41, 0xdd183682, 0xb3942dc3, 0x61416b45,
+ 0x0fcd7004, 0xbc595dc7, 0xd2d54686, 0xc282d68a, 0xac0ecdcb,
+ 0x1f9ae008, 0x7116fb49, 0xa3c3bdcf, 0xcd4fa68e, 0x7edb8b4d,
+ 0x1057900c, 0x5e74ab55, 0x30f8b014, 0x836c9dd7, 0xede08696,
+ 0x3f35c010, 0x51b9db51, 0xe22df692, 0x8ca1edd3, 0x9cf67ddf,
+ 0xf27a669e, 0x41ee4b5d, 0x2f62501c, 0xfdb7169a, 0x933b0ddb,
+ 0x20af2018, 0x4e233b59, 0xbce956aa, 0xd2654deb, 0x61f16028,
+ 0x0f7d7b69, 0xdda83def, 0xb32426ae, 0x00b00b6d, 0x6e3c102c,
+ 0x7e6b8020, 0x10e79b61, 0xa373b6a2, 0xcdffade3, 0x1f2aeb65,
+ 0x71a6f024, 0xc232dde7, 0xacbec6a6, 0xe29dfdff, 0x8c11e6be,
+ 0x3f85cb7d, 0x5109d03c, 0x83dc96ba, 0xed508dfb, 0x5ec4a038,
+ 0x3048bb79, 0x201f2b75, 0x4e933034, 0xfd071df7, 0x938b06b6,
+ 0x415e4030, 0x2fd25b71, 0x9c4676b2, 0xf2ca6df3, 0xa2a3ab15,
+ 0xcc2fb054, 0x7fbb9d97, 0x113786d6, 0xc3e2c050, 0xad6edb11,
+ 0x1efaf6d2, 0x7076ed93, 0x60217d9f, 0x0ead66de, 0xbd394b1d,
+ 0xd3b5505c, 0x016016da, 0x6fec0d9b, 0xdc782058, 0xb2f43b19,
+ 0xfcd70040, 0x925b1b01, 0x21cf36c2, 0x4f432d83, 0x9d966b05,
+ 0xf31a7044, 0x408e5d87, 0x2e0246c6, 0x3e55d6ca, 0x50d9cd8b,
+ 0xe34de048, 0x8dc1fb09, 0x5f14bd8f, 0x3198a6ce, 0x820c8b0d,
+ 0xec80904c, 0x1e4afdbf, 0x70c6e6fe, 0xc352cb3d, 0xadded07c,
+ 0x7f0b96fa, 0x11878dbb, 0xa213a078, 0xcc9fbb39, 0xdcc82b35,
+ 0xb2443074, 0x01d01db7, 0x6f5c06f6, 0xbd894070, 0xd3055b31,
+ 0x609176f2, 0x0e1d6db3, 0x403e56ea, 0x2eb24dab, 0x9d266068,
+ 0xf3aa7b29, 0x217f3daf, 0x4ff326ee, 0xfc670b2d, 0x92eb106c,
+ 0x82bc8060, 0xec309b21, 0x5fa4b6e2, 0x3128ada3, 0xe3fdeb25,
+ 0x8d71f064, 0x3ee5dda7, 0x5069c6e6, 0x9e36506b, 0xf0ba4b2a,
+ 0x432e66e9, 0x2da27da8, 0xff773b2e, 0x91fb206f, 0x226f0dac,
+ 0x4ce316ed, 0x5cb486e1, 0x32389da0, 0x81acb063, 0xef20ab22,
+ 0x3df5eda4, 0x5379f6e5, 0xe0eddb26, 0x8e61c067, 0xc042fb3e,
+ 0xaecee07f, 0x1d5acdbc, 0x73d6d6fd, 0xa103907b, 0xcf8f8b3a,
+ 0x7c1ba6f9, 0x1297bdb8, 0x02c02db4, 0x6c4c36f5, 0xdfd81b36,
+ 0xb1540077, 0x638146f1, 0x0d0d5db0, 0xbe997073, 0xd0156b32,
+ 0x22df06c1, 0x4c531d80, 0xffc73043, 0x914b2b02, 0x439e6d84,
+ 0x2d1276c5, 0x9e865b06, 0xf00a4047, 0xe05dd04b, 0x8ed1cb0a,
+ 0x3d45e6c9, 0x53c9fd88, 0x811cbb0e, 0xef90a04f, 0x5c048d8c,
+ 0x328896cd, 0x7cabad94, 0x1227b6d5, 0xa1b39b16, 0xcf3f8057,
+ 0x1deac6d1, 0x7366dd90, 0xc0f2f053, 0xae7eeb12, 0xbe297b1e,
+ 0xd0a5605f, 0x63314d9c, 0x0dbd56dd, 0xdf68105b, 0xb1e40b1a,
+ 0x027026d9, 0x6cfc3d98, 0x3c95fb7e, 0x5219e03f, 0xe18dcdfc,
+ 0x8f01d6bd, 0x5dd4903b, 0x33588b7a, 0x80cca6b9, 0xee40bdf8,
+ 0xfe172df4, 0x909b36b5, 0x230f1b76, 0x4d830037, 0x9f5646b1,
+ 0xf1da5df0, 0x424e7033, 0x2cc26b72, 0x62e1502b, 0x0c6d4b6a,
+ 0xbff966a9, 0xd1757de8, 0x03a03b6e, 0x6d2c202f, 0xdeb80dec,
+ 0xb03416ad, 0xa06386a1, 0xceef9de0, 0x7d7bb023, 0x13f7ab62,
+ 0xc122ede4, 0xafaef6a5, 0x1c3adb66, 0x72b6c027, 0x807cadd4,
+ 0xeef0b695, 0x5d649b56, 0x33e88017, 0xe13dc691, 0x8fb1ddd0,
+ 0x3c25f013, 0x52a9eb52, 0x42fe7b5e, 0x2c72601f, 0x9fe64ddc,
+ 0xf16a569d, 0x23bf101b, 0x4d330b5a, 0xfea72699, 0x902b3dd8,
+ 0xde080681, 0xb0841dc0, 0x03103003, 0x6d9c2b42, 0xbf496dc4,
+ 0xd1c57685, 0x62515b46, 0x0cdd4007, 0x1c8ad00b, 0x7206cb4a,
+ 0xc192e689, 0xaf1efdc8, 0x7dcbbb4e, 0x1347a00f, 0xa0d38dcc,
+ 0xce5f968d},
+ {0x00000000, 0xe71da697, 0x154a4b6f, 0xf257edf8, 0x2a9496de,
+ 0xcd893049, 0x3fdeddb1, 0xd8c37b26, 0x55292dbc, 0xb2348b2b,
+ 0x406366d3, 0xa77ec044, 0x7fbdbb62, 0x98a01df5, 0x6af7f00d,
+ 0x8dea569a, 0xaa525b78, 0x4d4ffdef, 0xbf181017, 0x5805b680,
+ 0x80c6cda6, 0x67db6b31, 0x958c86c9, 0x7291205e, 0xff7b76c4,
+ 0x1866d053, 0xea313dab, 0x0d2c9b3c, 0xd5efe01a, 0x32f2468d,
+ 0xc0a5ab75, 0x27b80de2, 0x8fd5b0b1, 0x68c81626, 0x9a9ffbde,
+ 0x7d825d49, 0xa541266f, 0x425c80f8, 0xb00b6d00, 0x5716cb97,
+ 0xdafc9d0d, 0x3de13b9a, 0xcfb6d662, 0x28ab70f5, 0xf0680bd3,
+ 0x1775ad44, 0xe52240bc, 0x023fe62b, 0x2587ebc9, 0xc29a4d5e,
+ 0x30cda0a6, 0xd7d00631, 0x0f137d17, 0xe80edb80, 0x1a593678,
+ 0xfd4490ef, 0x70aec675, 0x97b360e2, 0x65e48d1a, 0x82f92b8d,
+ 0x5a3a50ab, 0xbd27f63c, 0x4f701bc4, 0xa86dbd53, 0xc4da6723,
+ 0x23c7c1b4, 0xd1902c4c, 0x368d8adb, 0xee4ef1fd, 0x0953576a,
+ 0xfb04ba92, 0x1c191c05, 0x91f34a9f, 0x76eeec08, 0x84b901f0,
+ 0x63a4a767, 0xbb67dc41, 0x5c7a7ad6, 0xae2d972e, 0x493031b9,
+ 0x6e883c5b, 0x89959acc, 0x7bc27734, 0x9cdfd1a3, 0x441caa85,
+ 0xa3010c12, 0x5156e1ea, 0xb64b477d, 0x3ba111e7, 0xdcbcb770,
+ 0x2eeb5a88, 0xc9f6fc1f, 0x11358739, 0xf62821ae, 0x047fcc56,
+ 0xe3626ac1, 0x4b0fd792, 0xac127105, 0x5e459cfd, 0xb9583a6a,
+ 0x619b414c, 0x8686e7db, 0x74d10a23, 0x93ccacb4, 0x1e26fa2e,
+ 0xf93b5cb9, 0x0b6cb141, 0xec7117d6, 0x34b26cf0, 0xd3afca67,
+ 0x21f8279f, 0xc6e58108, 0xe15d8cea, 0x06402a7d, 0xf417c785,
+ 0x130a6112, 0xcbc91a34, 0x2cd4bca3, 0xde83515b, 0x399ef7cc,
+ 0xb474a156, 0x536907c1, 0xa13eea39, 0x46234cae, 0x9ee03788,
+ 0x79fd911f, 0x8baa7ce7, 0x6cb7da70, 0x52c5c807, 0xb5d86e90,
+ 0x478f8368, 0xa09225ff, 0x78515ed9, 0x9f4cf84e, 0x6d1b15b6,
+ 0x8a06b321, 0x07ece5bb, 0xe0f1432c, 0x12a6aed4, 0xf5bb0843,
+ 0x2d787365, 0xca65d5f2, 0x3832380a, 0xdf2f9e9d, 0xf897937f,
+ 0x1f8a35e8, 0xedddd810, 0x0ac07e87, 0xd20305a1, 0x351ea336,
+ 0xc7494ece, 0x2054e859, 0xadbebec3, 0x4aa31854, 0xb8f4f5ac,
+ 0x5fe9533b, 0x872a281d, 0x60378e8a, 0x92606372, 0x757dc5e5,
+ 0xdd1078b6, 0x3a0dde21, 0xc85a33d9, 0x2f47954e, 0xf784ee68,
+ 0x109948ff, 0xe2cea507, 0x05d30390, 0x8839550a, 0x6f24f39d,
+ 0x9d731e65, 0x7a6eb8f2, 0xa2adc3d4, 0x45b06543, 0xb7e788bb,
+ 0x50fa2e2c, 0x774223ce, 0x905f8559, 0x620868a1, 0x8515ce36,
+ 0x5dd6b510, 0xbacb1387, 0x489cfe7f, 0xaf8158e8, 0x226b0e72,
+ 0xc576a8e5, 0x3721451d, 0xd03ce38a, 0x08ff98ac, 0xefe23e3b,
+ 0x1db5d3c3, 0xfaa87554, 0x961faf24, 0x710209b3, 0x8355e44b,
+ 0x644842dc, 0xbc8b39fa, 0x5b969f6d, 0xa9c17295, 0x4edcd402,
+ 0xc3368298, 0x242b240f, 0xd67cc9f7, 0x31616f60, 0xe9a21446,
+ 0x0ebfb2d1, 0xfce85f29, 0x1bf5f9be, 0x3c4df45c, 0xdb5052cb,
+ 0x2907bf33, 0xce1a19a4, 0x16d96282, 0xf1c4c415, 0x039329ed,
+ 0xe48e8f7a, 0x6964d9e0, 0x8e797f77, 0x7c2e928f, 0x9b333418,
+ 0x43f04f3e, 0xa4ede9a9, 0x56ba0451, 0xb1a7a2c6, 0x19ca1f95,
+ 0xfed7b902, 0x0c8054fa, 0xeb9df26d, 0x335e894b, 0xd4432fdc,
+ 0x2614c224, 0xc10964b3, 0x4ce33229, 0xabfe94be, 0x59a97946,
+ 0xbeb4dfd1, 0x6677a4f7, 0x816a0260, 0x733def98, 0x9420490f,
+ 0xb39844ed, 0x5485e27a, 0xa6d20f82, 0x41cfa915, 0x990cd233,
+ 0x7e1174a4, 0x8c46995c, 0x6b5b3fcb, 0xe6b16951, 0x01accfc6,
+ 0xf3fb223e, 0x14e684a9, 0xcc25ff8f, 0x2b385918, 0xd96fb4e0,
+ 0x3e721277},
+ {0x00000000, 0xa58b900e, 0x9066265d, 0x35edb653, 0xfbbd4afb,
+ 0x5e36daf5, 0x6bdb6ca6, 0xce50fca8, 0x2c0b93b7, 0x898003b9,
+ 0xbc6db5ea, 0x19e625e4, 0xd7b6d94c, 0x723d4942, 0x47d0ff11,
+ 0xe25b6f1f, 0x5817276e, 0xfd9cb760, 0xc8710133, 0x6dfa913d,
+ 0xa3aa6d95, 0x0621fd9b, 0x33cc4bc8, 0x9647dbc6, 0x741cb4d9,
+ 0xd19724d7, 0xe47a9284, 0x41f1028a, 0x8fa1fe22, 0x2a2a6e2c,
+ 0x1fc7d87f, 0xba4c4871, 0xb02e4edc, 0x15a5ded2, 0x20486881,
+ 0x85c3f88f, 0x4b930427, 0xee189429, 0xdbf5227a, 0x7e7eb274,
+ 0x9c25dd6b, 0x39ae4d65, 0x0c43fb36, 0xa9c86b38, 0x67989790,
+ 0xc213079e, 0xf7feb1cd, 0x527521c3, 0xe83969b2, 0x4db2f9bc,
+ 0x785f4fef, 0xddd4dfe1, 0x13842349, 0xb60fb347, 0x83e20514,
+ 0x2669951a, 0xc432fa05, 0x61b96a0b, 0x5454dc58, 0xf1df4c56,
+ 0x3f8fb0fe, 0x9a0420f0, 0xafe996a3, 0x0a6206ad, 0xbb2d9bf9,
+ 0x1ea60bf7, 0x2b4bbda4, 0x8ec02daa, 0x4090d102, 0xe51b410c,
+ 0xd0f6f75f, 0x757d6751, 0x9726084e, 0x32ad9840, 0x07402e13,
+ 0xa2cbbe1d, 0x6c9b42b5, 0xc910d2bb, 0xfcfd64e8, 0x5976f4e6,
+ 0xe33abc97, 0x46b12c99, 0x735c9aca, 0xd6d70ac4, 0x1887f66c,
+ 0xbd0c6662, 0x88e1d031, 0x2d6a403f, 0xcf312f20, 0x6ababf2e,
+ 0x5f57097d, 0xfadc9973, 0x348c65db, 0x9107f5d5, 0xa4ea4386,
+ 0x0161d388, 0x0b03d525, 0xae88452b, 0x9b65f378, 0x3eee6376,
+ 0xf0be9fde, 0x55350fd0, 0x60d8b983, 0xc553298d, 0x27084692,
+ 0x8283d69c, 0xb76e60cf, 0x12e5f0c1, 0xdcb50c69, 0x793e9c67,
+ 0x4cd32a34, 0xe958ba3a, 0x5314f24b, 0xf69f6245, 0xc372d416,
+ 0x66f94418, 0xa8a9b8b0, 0x0d2228be, 0x38cf9eed, 0x9d440ee3,
+ 0x7f1f61fc, 0xda94f1f2, 0xef7947a1, 0x4af2d7af, 0x84a22b07,
+ 0x2129bb09, 0x14c40d5a, 0xb14f9d54, 0xad2a31b3, 0x08a1a1bd,
+ 0x3d4c17ee, 0x98c787e0, 0x56977b48, 0xf31ceb46, 0xc6f15d15,
+ 0x637acd1b, 0x8121a204, 0x24aa320a, 0x11478459, 0xb4cc1457,
+ 0x7a9ce8ff, 0xdf1778f1, 0xeafacea2, 0x4f715eac, 0xf53d16dd,
+ 0x50b686d3, 0x655b3080, 0xc0d0a08e, 0x0e805c26, 0xab0bcc28,
+ 0x9ee67a7b, 0x3b6dea75, 0xd936856a, 0x7cbd1564, 0x4950a337,
+ 0xecdb3339, 0x228bcf91, 0x87005f9f, 0xb2ede9cc, 0x176679c2,
+ 0x1d047f6f, 0xb88fef61, 0x8d625932, 0x28e9c93c, 0xe6b93594,
+ 0x4332a59a, 0x76df13c9, 0xd35483c7, 0x310fecd8, 0x94847cd6,
+ 0xa169ca85, 0x04e25a8b, 0xcab2a623, 0x6f39362d, 0x5ad4807e,
+ 0xff5f1070, 0x45135801, 0xe098c80f, 0xd5757e5c, 0x70feee52,
+ 0xbeae12fa, 0x1b2582f4, 0x2ec834a7, 0x8b43a4a9, 0x6918cbb6,
+ 0xcc935bb8, 0xf97eedeb, 0x5cf57de5, 0x92a5814d, 0x372e1143,
+ 0x02c3a710, 0xa748371e, 0x1607aa4a, 0xb38c3a44, 0x86618c17,
+ 0x23ea1c19, 0xedbae0b1, 0x483170bf, 0x7ddcc6ec, 0xd85756e2,
+ 0x3a0c39fd, 0x9f87a9f3, 0xaa6a1fa0, 0x0fe18fae, 0xc1b17306,
+ 0x643ae308, 0x51d7555b, 0xf45cc555, 0x4e108d24, 0xeb9b1d2a,
+ 0xde76ab79, 0x7bfd3b77, 0xb5adc7df, 0x102657d1, 0x25cbe182,
+ 0x8040718c, 0x621b1e93, 0xc7908e9d, 0xf27d38ce, 0x57f6a8c0,
+ 0x99a65468, 0x3c2dc466, 0x09c07235, 0xac4be23b, 0xa629e496,
+ 0x03a27498, 0x364fc2cb, 0x93c452c5, 0x5d94ae6d, 0xf81f3e63,
+ 0xcdf28830, 0x6879183e, 0x8a227721, 0x2fa9e72f, 0x1a44517c,
+ 0xbfcfc172, 0x719f3dda, 0xd414add4, 0xe1f91b87, 0x44728b89,
+ 0xfe3ec3f8, 0x5bb553f6, 0x6e58e5a5, 0xcbd375ab, 0x05838903,
+ 0xa008190d, 0x95e5af5e, 0x306e3f50, 0xd235504f, 0x77bec041,
+ 0x42537612, 0xe7d8e61c, 0x29881ab4, 0x8c038aba, 0xb9ee3ce9,
+ 0x1c65ace7}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0x0e908ba500000000, 0x5d26669000000000,
+ 0x53b6ed3500000000, 0xfb4abdfb00000000, 0xf5da365e00000000,
+ 0xa66cdb6b00000000, 0xa8fc50ce00000000, 0xb7930b2c00000000,
+ 0xb903808900000000, 0xeab56dbc00000000, 0xe425e61900000000,
+ 0x4cd9b6d700000000, 0x42493d7200000000, 0x11ffd04700000000,
+ 0x1f6f5be200000000, 0x6e27175800000000, 0x60b79cfd00000000,
+ 0x330171c800000000, 0x3d91fa6d00000000, 0x956daaa300000000,
+ 0x9bfd210600000000, 0xc84bcc3300000000, 0xc6db479600000000,
+ 0xd9b41c7400000000, 0xd72497d100000000, 0x84927ae400000000,
+ 0x8a02f14100000000, 0x22fea18f00000000, 0x2c6e2a2a00000000,
+ 0x7fd8c71f00000000, 0x71484cba00000000, 0xdc4e2eb000000000,
+ 0xd2dea51500000000, 0x8168482000000000, 0x8ff8c38500000000,
+ 0x2704934b00000000, 0x299418ee00000000, 0x7a22f5db00000000,
+ 0x74b27e7e00000000, 0x6bdd259c00000000, 0x654dae3900000000,
+ 0x36fb430c00000000, 0x386bc8a900000000, 0x9097986700000000,
+ 0x9e0713c200000000, 0xcdb1fef700000000, 0xc321755200000000,
+ 0xb26939e800000000, 0xbcf9b24d00000000, 0xef4f5f7800000000,
+ 0xe1dfd4dd00000000, 0x4923841300000000, 0x47b30fb600000000,
+ 0x1405e28300000000, 0x1a95692600000000, 0x05fa32c400000000,
+ 0x0b6ab96100000000, 0x58dc545400000000, 0x564cdff100000000,
+ 0xfeb08f3f00000000, 0xf020049a00000000, 0xa396e9af00000000,
+ 0xad06620a00000000, 0xf99b2dbb00000000, 0xf70ba61e00000000,
+ 0xa4bd4b2b00000000, 0xaa2dc08e00000000, 0x02d1904000000000,
+ 0x0c411be500000000, 0x5ff7f6d000000000, 0x51677d7500000000,
+ 0x4e08269700000000, 0x4098ad3200000000, 0x132e400700000000,
+ 0x1dbecba200000000, 0xb5429b6c00000000, 0xbbd210c900000000,
+ 0xe864fdfc00000000, 0xe6f4765900000000, 0x97bc3ae300000000,
+ 0x992cb14600000000, 0xca9a5c7300000000, 0xc40ad7d600000000,
+ 0x6cf6871800000000, 0x62660cbd00000000, 0x31d0e18800000000,
+ 0x3f406a2d00000000, 0x202f31cf00000000, 0x2ebfba6a00000000,
+ 0x7d09575f00000000, 0x7399dcfa00000000, 0xdb658c3400000000,
+ 0xd5f5079100000000, 0x8643eaa400000000, 0x88d3610100000000,
+ 0x25d5030b00000000, 0x2b4588ae00000000, 0x78f3659b00000000,
+ 0x7663ee3e00000000, 0xde9fbef000000000, 0xd00f355500000000,
+ 0x83b9d86000000000, 0x8d2953c500000000, 0x9246082700000000,
+ 0x9cd6838200000000, 0xcf606eb700000000, 0xc1f0e51200000000,
+ 0x690cb5dc00000000, 0x679c3e7900000000, 0x342ad34c00000000,
+ 0x3aba58e900000000, 0x4bf2145300000000, 0x45629ff600000000,
+ 0x16d472c300000000, 0x1844f96600000000, 0xb0b8a9a800000000,
+ 0xbe28220d00000000, 0xed9ecf3800000000, 0xe30e449d00000000,
+ 0xfc611f7f00000000, 0xf2f194da00000000, 0xa14779ef00000000,
+ 0xafd7f24a00000000, 0x072ba28400000000, 0x09bb292100000000,
+ 0x5a0dc41400000000, 0x549d4fb100000000, 0xb3312aad00000000,
+ 0xbda1a10800000000, 0xee174c3d00000000, 0xe087c79800000000,
+ 0x487b975600000000, 0x46eb1cf300000000, 0x155df1c600000000,
+ 0x1bcd7a6300000000, 0x04a2218100000000, 0x0a32aa2400000000,
+ 0x5984471100000000, 0x5714ccb400000000, 0xffe89c7a00000000,
+ 0xf17817df00000000, 0xa2cefaea00000000, 0xac5e714f00000000,
+ 0xdd163df500000000, 0xd386b65000000000, 0x80305b6500000000,
+ 0x8ea0d0c000000000, 0x265c800e00000000, 0x28cc0bab00000000,
+ 0x7b7ae69e00000000, 0x75ea6d3b00000000, 0x6a8536d900000000,
+ 0x6415bd7c00000000, 0x37a3504900000000, 0x3933dbec00000000,
+ 0x91cf8b2200000000, 0x9f5f008700000000, 0xcce9edb200000000,
+ 0xc279661700000000, 0x6f7f041d00000000, 0x61ef8fb800000000,
+ 0x3259628d00000000, 0x3cc9e92800000000, 0x9435b9e600000000,
+ 0x9aa5324300000000, 0xc913df7600000000, 0xc78354d300000000,
+ 0xd8ec0f3100000000, 0xd67c849400000000, 0x85ca69a100000000,
+ 0x8b5ae20400000000, 0x23a6b2ca00000000, 0x2d36396f00000000,
+ 0x7e80d45a00000000, 0x70105fff00000000, 0x0158134500000000,
+ 0x0fc898e000000000, 0x5c7e75d500000000, 0x52eefe7000000000,
+ 0xfa12aebe00000000, 0xf482251b00000000, 0xa734c82e00000000,
+ 0xa9a4438b00000000, 0xb6cb186900000000, 0xb85b93cc00000000,
+ 0xebed7ef900000000, 0xe57df55c00000000, 0x4d81a59200000000,
+ 0x43112e3700000000, 0x10a7c30200000000, 0x1e3748a700000000,
+ 0x4aaa071600000000, 0x443a8cb300000000, 0x178c618600000000,
+ 0x191cea2300000000, 0xb1e0baed00000000, 0xbf70314800000000,
+ 0xecc6dc7d00000000, 0xe25657d800000000, 0xfd390c3a00000000,
+ 0xf3a9879f00000000, 0xa01f6aaa00000000, 0xae8fe10f00000000,
+ 0x0673b1c100000000, 0x08e33a6400000000, 0x5b55d75100000000,
+ 0x55c55cf400000000, 0x248d104e00000000, 0x2a1d9beb00000000,
+ 0x79ab76de00000000, 0x773bfd7b00000000, 0xdfc7adb500000000,
+ 0xd157261000000000, 0x82e1cb2500000000, 0x8c71408000000000,
+ 0x931e1b6200000000, 0x9d8e90c700000000, 0xce387df200000000,
+ 0xc0a8f65700000000, 0x6854a69900000000, 0x66c42d3c00000000,
+ 0x3572c00900000000, 0x3be24bac00000000, 0x96e429a600000000,
+ 0x9874a20300000000, 0xcbc24f3600000000, 0xc552c49300000000,
+ 0x6dae945d00000000, 0x633e1ff800000000, 0x3088f2cd00000000,
+ 0x3e18796800000000, 0x2177228a00000000, 0x2fe7a92f00000000,
+ 0x7c51441a00000000, 0x72c1cfbf00000000, 0xda3d9f7100000000,
+ 0xd4ad14d400000000, 0x871bf9e100000000, 0x898b724400000000,
+ 0xf8c33efe00000000, 0xf653b55b00000000, 0xa5e5586e00000000,
+ 0xab75d3cb00000000, 0x0389830500000000, 0x0d1908a000000000,
+ 0x5eafe59500000000, 0x503f6e3000000000, 0x4f5035d200000000,
+ 0x41c0be7700000000, 0x1276534200000000, 0x1ce6d8e700000000,
+ 0xb41a882900000000, 0xba8a038c00000000, 0xe93ceeb900000000,
+ 0xe7ac651c00000000},
+ {0x0000000000000000, 0x97a61de700000000, 0x6f4b4a1500000000,
+ 0xf8ed57f200000000, 0xde96942a00000000, 0x493089cd00000000,
+ 0xb1ddde3f00000000, 0x267bc3d800000000, 0xbc2d295500000000,
+ 0x2b8b34b200000000, 0xd366634000000000, 0x44c07ea700000000,
+ 0x62bbbd7f00000000, 0xf51da09800000000, 0x0df0f76a00000000,
+ 0x9a56ea8d00000000, 0x785b52aa00000000, 0xeffd4f4d00000000,
+ 0x171018bf00000000, 0x80b6055800000000, 0xa6cdc68000000000,
+ 0x316bdb6700000000, 0xc9868c9500000000, 0x5e20917200000000,
+ 0xc4767bff00000000, 0x53d0661800000000, 0xab3d31ea00000000,
+ 0x3c9b2c0d00000000, 0x1ae0efd500000000, 0x8d46f23200000000,
+ 0x75aba5c000000000, 0xe20db82700000000, 0xb1b0d58f00000000,
+ 0x2616c86800000000, 0xdefb9f9a00000000, 0x495d827d00000000,
+ 0x6f2641a500000000, 0xf8805c4200000000, 0x006d0bb000000000,
+ 0x97cb165700000000, 0x0d9dfcda00000000, 0x9a3be13d00000000,
+ 0x62d6b6cf00000000, 0xf570ab2800000000, 0xd30b68f000000000,
+ 0x44ad751700000000, 0xbc4022e500000000, 0x2be63f0200000000,
+ 0xc9eb872500000000, 0x5e4d9ac200000000, 0xa6a0cd3000000000,
+ 0x3106d0d700000000, 0x177d130f00000000, 0x80db0ee800000000,
+ 0x7836591a00000000, 0xef9044fd00000000, 0x75c6ae7000000000,
+ 0xe260b39700000000, 0x1a8de46500000000, 0x8d2bf98200000000,
+ 0xab503a5a00000000, 0x3cf627bd00000000, 0xc41b704f00000000,
+ 0x53bd6da800000000, 0x2367dac400000000, 0xb4c1c72300000000,
+ 0x4c2c90d100000000, 0xdb8a8d3600000000, 0xfdf14eee00000000,
+ 0x6a57530900000000, 0x92ba04fb00000000, 0x051c191c00000000,
+ 0x9f4af39100000000, 0x08ecee7600000000, 0xf001b98400000000,
+ 0x67a7a46300000000, 0x41dc67bb00000000, 0xd67a7a5c00000000,
+ 0x2e972dae00000000, 0xb931304900000000, 0x5b3c886e00000000,
+ 0xcc9a958900000000, 0x3477c27b00000000, 0xa3d1df9c00000000,
+ 0x85aa1c4400000000, 0x120c01a300000000, 0xeae1565100000000,
+ 0x7d474bb600000000, 0xe711a13b00000000, 0x70b7bcdc00000000,
+ 0x885aeb2e00000000, 0x1ffcf6c900000000, 0x3987351100000000,
+ 0xae2128f600000000, 0x56cc7f0400000000, 0xc16a62e300000000,
+ 0x92d70f4b00000000, 0x057112ac00000000, 0xfd9c455e00000000,
+ 0x6a3a58b900000000, 0x4c419b6100000000, 0xdbe7868600000000,
+ 0x230ad17400000000, 0xb4accc9300000000, 0x2efa261e00000000,
+ 0xb95c3bf900000000, 0x41b16c0b00000000, 0xd61771ec00000000,
+ 0xf06cb23400000000, 0x67caafd300000000, 0x9f27f82100000000,
+ 0x0881e5c600000000, 0xea8c5de100000000, 0x7d2a400600000000,
+ 0x85c717f400000000, 0x12610a1300000000, 0x341ac9cb00000000,
+ 0xa3bcd42c00000000, 0x5b5183de00000000, 0xccf79e3900000000,
+ 0x56a174b400000000, 0xc107695300000000, 0x39ea3ea100000000,
+ 0xae4c234600000000, 0x8837e09e00000000, 0x1f91fd7900000000,
+ 0xe77caa8b00000000, 0x70dab76c00000000, 0x07c8c55200000000,
+ 0x906ed8b500000000, 0x68838f4700000000, 0xff2592a000000000,
+ 0xd95e517800000000, 0x4ef84c9f00000000, 0xb6151b6d00000000,
+ 0x21b3068a00000000, 0xbbe5ec0700000000, 0x2c43f1e000000000,
+ 0xd4aea61200000000, 0x4308bbf500000000, 0x6573782d00000000,
+ 0xf2d565ca00000000, 0x0a38323800000000, 0x9d9e2fdf00000000,
+ 0x7f9397f800000000, 0xe8358a1f00000000, 0x10d8dded00000000,
+ 0x877ec00a00000000, 0xa10503d200000000, 0x36a31e3500000000,
+ 0xce4e49c700000000, 0x59e8542000000000, 0xc3bebead00000000,
+ 0x5418a34a00000000, 0xacf5f4b800000000, 0x3b53e95f00000000,
+ 0x1d282a8700000000, 0x8a8e376000000000, 0x7263609200000000,
+ 0xe5c57d7500000000, 0xb67810dd00000000, 0x21de0d3a00000000,
+ 0xd9335ac800000000, 0x4e95472f00000000, 0x68ee84f700000000,
+ 0xff48991000000000, 0x07a5cee200000000, 0x9003d30500000000,
+ 0x0a55398800000000, 0x9df3246f00000000, 0x651e739d00000000,
+ 0xf2b86e7a00000000, 0xd4c3ada200000000, 0x4365b04500000000,
+ 0xbb88e7b700000000, 0x2c2efa5000000000, 0xce23427700000000,
+ 0x59855f9000000000, 0xa168086200000000, 0x36ce158500000000,
+ 0x10b5d65d00000000, 0x8713cbba00000000, 0x7ffe9c4800000000,
+ 0xe85881af00000000, 0x720e6b2200000000, 0xe5a876c500000000,
+ 0x1d45213700000000, 0x8ae33cd000000000, 0xac98ff0800000000,
+ 0x3b3ee2ef00000000, 0xc3d3b51d00000000, 0x5475a8fa00000000,
+ 0x24af1f9600000000, 0xb309027100000000, 0x4be4558300000000,
+ 0xdc42486400000000, 0xfa398bbc00000000, 0x6d9f965b00000000,
+ 0x9572c1a900000000, 0x02d4dc4e00000000, 0x988236c300000000,
+ 0x0f242b2400000000, 0xf7c97cd600000000, 0x606f613100000000,
+ 0x4614a2e900000000, 0xd1b2bf0e00000000, 0x295fe8fc00000000,
+ 0xbef9f51b00000000, 0x5cf44d3c00000000, 0xcb5250db00000000,
+ 0x33bf072900000000, 0xa4191ace00000000, 0x8262d91600000000,
+ 0x15c4c4f100000000, 0xed29930300000000, 0x7a8f8ee400000000,
+ 0xe0d9646900000000, 0x777f798e00000000, 0x8f922e7c00000000,
+ 0x1834339b00000000, 0x3e4ff04300000000, 0xa9e9eda400000000,
+ 0x5104ba5600000000, 0xc6a2a7b100000000, 0x951fca1900000000,
+ 0x02b9d7fe00000000, 0xfa54800c00000000, 0x6df29deb00000000,
+ 0x4b895e3300000000, 0xdc2f43d400000000, 0x24c2142600000000,
+ 0xb36409c100000000, 0x2932e34c00000000, 0xbe94feab00000000,
+ 0x4679a95900000000, 0xd1dfb4be00000000, 0xf7a4776600000000,
+ 0x60026a8100000000, 0x98ef3d7300000000, 0x0f49209400000000,
+ 0xed4498b300000000, 0x7ae2855400000000, 0x820fd2a600000000,
+ 0x15a9cf4100000000, 0x33d20c9900000000, 0xa474117e00000000,
+ 0x5c99468c00000000, 0xcb3f5b6b00000000, 0x5169b1e600000000,
+ 0xc6cfac0100000000, 0x3e22fbf300000000, 0xa984e61400000000,
+ 0x8fff25cc00000000, 0x1859382b00000000, 0xe0b46fd900000000,
+ 0x7712723e00000000},
+ {0x0000000000000000, 0x411b8c6e00000000, 0x823618dd00000000,
+ 0xc32d94b300000000, 0x456b416100000000, 0x0470cd0f00000000,
+ 0xc75d59bc00000000, 0x8646d5d200000000, 0x8ad682c200000000,
+ 0xcbcd0eac00000000, 0x08e09a1f00000000, 0x49fb167100000000,
+ 0xcfbdc3a300000000, 0x8ea64fcd00000000, 0x4d8bdb7e00000000,
+ 0x0c90571000000000, 0x55ab745e00000000, 0x14b0f83000000000,
+ 0xd79d6c8300000000, 0x9686e0ed00000000, 0x10c0353f00000000,
+ 0x51dbb95100000000, 0x92f62de200000000, 0xd3eda18c00000000,
+ 0xdf7df69c00000000, 0x9e667af200000000, 0x5d4bee4100000000,
+ 0x1c50622f00000000, 0x9a16b7fd00000000, 0xdb0d3b9300000000,
+ 0x1820af2000000000, 0x593b234e00000000, 0xaa56e9bc00000000,
+ 0xeb4d65d200000000, 0x2860f16100000000, 0x697b7d0f00000000,
+ 0xef3da8dd00000000, 0xae2624b300000000, 0x6d0bb00000000000,
+ 0x2c103c6e00000000, 0x20806b7e00000000, 0x619be71000000000,
+ 0xa2b673a300000000, 0xe3adffcd00000000, 0x65eb2a1f00000000,
+ 0x24f0a67100000000, 0xe7dd32c200000000, 0xa6c6beac00000000,
+ 0xfffd9de200000000, 0xbee6118c00000000, 0x7dcb853f00000000,
+ 0x3cd0095100000000, 0xba96dc8300000000, 0xfb8d50ed00000000,
+ 0x38a0c45e00000000, 0x79bb483000000000, 0x752b1f2000000000,
+ 0x3430934e00000000, 0xf71d07fd00000000, 0xb6068b9300000000,
+ 0x30405e4100000000, 0x715bd22f00000000, 0xb276469c00000000,
+ 0xf36dcaf200000000, 0x15aba3a200000000, 0x54b02fcc00000000,
+ 0x979dbb7f00000000, 0xd686371100000000, 0x50c0e2c300000000,
+ 0x11db6ead00000000, 0xd2f6fa1e00000000, 0x93ed767000000000,
+ 0x9f7d216000000000, 0xde66ad0e00000000, 0x1d4b39bd00000000,
+ 0x5c50b5d300000000, 0xda16600100000000, 0x9b0dec6f00000000,
+ 0x582078dc00000000, 0x193bf4b200000000, 0x4000d7fc00000000,
+ 0x011b5b9200000000, 0xc236cf2100000000, 0x832d434f00000000,
+ 0x056b969d00000000, 0x44701af300000000, 0x875d8e4000000000,
+ 0xc646022e00000000, 0xcad6553e00000000, 0x8bcdd95000000000,
+ 0x48e04de300000000, 0x09fbc18d00000000, 0x8fbd145f00000000,
+ 0xcea6983100000000, 0x0d8b0c8200000000, 0x4c9080ec00000000,
+ 0xbffd4a1e00000000, 0xfee6c67000000000, 0x3dcb52c300000000,
+ 0x7cd0dead00000000, 0xfa960b7f00000000, 0xbb8d871100000000,
+ 0x78a013a200000000, 0x39bb9fcc00000000, 0x352bc8dc00000000,
+ 0x743044b200000000, 0xb71dd00100000000, 0xf6065c6f00000000,
+ 0x704089bd00000000, 0x315b05d300000000, 0xf276916000000000,
+ 0xb36d1d0e00000000, 0xea563e4000000000, 0xab4db22e00000000,
+ 0x6860269d00000000, 0x297baaf300000000, 0xaf3d7f2100000000,
+ 0xee26f34f00000000, 0x2d0b67fc00000000, 0x6c10eb9200000000,
+ 0x6080bc8200000000, 0x219b30ec00000000, 0xe2b6a45f00000000,
+ 0xa3ad283100000000, 0x25ebfde300000000, 0x64f0718d00000000,
+ 0xa7dde53e00000000, 0xe6c6695000000000, 0x6b50369e00000000,
+ 0x2a4bbaf000000000, 0xe9662e4300000000, 0xa87da22d00000000,
+ 0x2e3b77ff00000000, 0x6f20fb9100000000, 0xac0d6f2200000000,
+ 0xed16e34c00000000, 0xe186b45c00000000, 0xa09d383200000000,
+ 0x63b0ac8100000000, 0x22ab20ef00000000, 0xa4edf53d00000000,
+ 0xe5f6795300000000, 0x26dbede000000000, 0x67c0618e00000000,
+ 0x3efb42c000000000, 0x7fe0ceae00000000, 0xbccd5a1d00000000,
+ 0xfdd6d67300000000, 0x7b9003a100000000, 0x3a8b8fcf00000000,
+ 0xf9a61b7c00000000, 0xb8bd971200000000, 0xb42dc00200000000,
+ 0xf5364c6c00000000, 0x361bd8df00000000, 0x770054b100000000,
+ 0xf146816300000000, 0xb05d0d0d00000000, 0x737099be00000000,
+ 0x326b15d000000000, 0xc106df2200000000, 0x801d534c00000000,
+ 0x4330c7ff00000000, 0x022b4b9100000000, 0x846d9e4300000000,
+ 0xc576122d00000000, 0x065b869e00000000, 0x47400af000000000,
+ 0x4bd05de000000000, 0x0acbd18e00000000, 0xc9e6453d00000000,
+ 0x88fdc95300000000, 0x0ebb1c8100000000, 0x4fa090ef00000000,
+ 0x8c8d045c00000000, 0xcd96883200000000, 0x94adab7c00000000,
+ 0xd5b6271200000000, 0x169bb3a100000000, 0x57803fcf00000000,
+ 0xd1c6ea1d00000000, 0x90dd667300000000, 0x53f0f2c000000000,
+ 0x12eb7eae00000000, 0x1e7b29be00000000, 0x5f60a5d000000000,
+ 0x9c4d316300000000, 0xdd56bd0d00000000, 0x5b1068df00000000,
+ 0x1a0be4b100000000, 0xd926700200000000, 0x983dfc6c00000000,
+ 0x7efb953c00000000, 0x3fe0195200000000, 0xfccd8de100000000,
+ 0xbdd6018f00000000, 0x3b90d45d00000000, 0x7a8b583300000000,
+ 0xb9a6cc8000000000, 0xf8bd40ee00000000, 0xf42d17fe00000000,
+ 0xb5369b9000000000, 0x761b0f2300000000, 0x3700834d00000000,
+ 0xb146569f00000000, 0xf05ddaf100000000, 0x33704e4200000000,
+ 0x726bc22c00000000, 0x2b50e16200000000, 0x6a4b6d0c00000000,
+ 0xa966f9bf00000000, 0xe87d75d100000000, 0x6e3ba00300000000,
+ 0x2f202c6d00000000, 0xec0db8de00000000, 0xad1634b000000000,
+ 0xa18663a000000000, 0xe09defce00000000, 0x23b07b7d00000000,
+ 0x62abf71300000000, 0xe4ed22c100000000, 0xa5f6aeaf00000000,
+ 0x66db3a1c00000000, 0x27c0b67200000000, 0xd4ad7c8000000000,
+ 0x95b6f0ee00000000, 0x569b645d00000000, 0x1780e83300000000,
+ 0x91c63de100000000, 0xd0ddb18f00000000, 0x13f0253c00000000,
+ 0x52eba95200000000, 0x5e7bfe4200000000, 0x1f60722c00000000,
+ 0xdc4de69f00000000, 0x9d566af100000000, 0x1b10bf2300000000,
+ 0x5a0b334d00000000, 0x9926a7fe00000000, 0xd83d2b9000000000,
+ 0x810608de00000000, 0xc01d84b000000000, 0x0330100300000000,
+ 0x422b9c6d00000000, 0xc46d49bf00000000, 0x8576c5d100000000,
+ 0x465b516200000000, 0x0740dd0c00000000, 0x0bd08a1c00000000,
+ 0x4acb067200000000, 0x89e692c100000000, 0xc8fd1eaf00000000,
+ 0x4ebbcb7d00000000, 0x0fa0471300000000, 0xcc8dd3a000000000,
+ 0x8d965fce00000000},
+ {0x0000000000000000, 0x1dfdb50100000000, 0x3afa6b0300000000,
+ 0x2707de0200000000, 0x74f4d70600000000, 0x6909620700000000,
+ 0x4e0ebc0500000000, 0x53f3090400000000, 0xe8e8af0d00000000,
+ 0xf5151a0c00000000, 0xd212c40e00000000, 0xcfef710f00000000,
+ 0x9c1c780b00000000, 0x81e1cd0a00000000, 0xa6e6130800000000,
+ 0xbb1ba60900000000, 0xd0d15f1b00000000, 0xcd2cea1a00000000,
+ 0xea2b341800000000, 0xf7d6811900000000, 0xa425881d00000000,
+ 0xb9d83d1c00000000, 0x9edfe31e00000000, 0x8322561f00000000,
+ 0x3839f01600000000, 0x25c4451700000000, 0x02c39b1500000000,
+ 0x1f3e2e1400000000, 0x4ccd271000000000, 0x5130921100000000,
+ 0x76374c1300000000, 0x6bcaf91200000000, 0xa0a3bf3600000000,
+ 0xbd5e0a3700000000, 0x9a59d43500000000, 0x87a4613400000000,
+ 0xd457683000000000, 0xc9aadd3100000000, 0xeead033300000000,
+ 0xf350b63200000000, 0x484b103b00000000, 0x55b6a53a00000000,
+ 0x72b17b3800000000, 0x6f4cce3900000000, 0x3cbfc73d00000000,
+ 0x2142723c00000000, 0x0645ac3e00000000, 0x1bb8193f00000000,
+ 0x7072e02d00000000, 0x6d8f552c00000000, 0x4a888b2e00000000,
+ 0x57753e2f00000000, 0x0486372b00000000, 0x197b822a00000000,
+ 0x3e7c5c2800000000, 0x2381e92900000000, 0x989a4f2000000000,
+ 0x8567fa2100000000, 0xa260242300000000, 0xbf9d912200000000,
+ 0xec6e982600000000, 0xf1932d2700000000, 0xd694f32500000000,
+ 0xcb69462400000000, 0x40477f6d00000000, 0x5dbaca6c00000000,
+ 0x7abd146e00000000, 0x6740a16f00000000, 0x34b3a86b00000000,
+ 0x294e1d6a00000000, 0x0e49c36800000000, 0x13b4766900000000,
+ 0xa8afd06000000000, 0xb552656100000000, 0x9255bb6300000000,
+ 0x8fa80e6200000000, 0xdc5b076600000000, 0xc1a6b26700000000,
+ 0xe6a16c6500000000, 0xfb5cd96400000000, 0x9096207600000000,
+ 0x8d6b957700000000, 0xaa6c4b7500000000, 0xb791fe7400000000,
+ 0xe462f77000000000, 0xf99f427100000000, 0xde989c7300000000,
+ 0xc365297200000000, 0x787e8f7b00000000, 0x65833a7a00000000,
+ 0x4284e47800000000, 0x5f79517900000000, 0x0c8a587d00000000,
+ 0x1177ed7c00000000, 0x3670337e00000000, 0x2b8d867f00000000,
+ 0xe0e4c05b00000000, 0xfd19755a00000000, 0xda1eab5800000000,
+ 0xc7e31e5900000000, 0x9410175d00000000, 0x89eda25c00000000,
+ 0xaeea7c5e00000000, 0xb317c95f00000000, 0x080c6f5600000000,
+ 0x15f1da5700000000, 0x32f6045500000000, 0x2f0bb15400000000,
+ 0x7cf8b85000000000, 0x61050d5100000000, 0x4602d35300000000,
+ 0x5bff665200000000, 0x30359f4000000000, 0x2dc82a4100000000,
+ 0x0acff44300000000, 0x1732414200000000, 0x44c1484600000000,
+ 0x593cfd4700000000, 0x7e3b234500000000, 0x63c6964400000000,
+ 0xd8dd304d00000000, 0xc520854c00000000, 0xe2275b4e00000000,
+ 0xffdaee4f00000000, 0xac29e74b00000000, 0xb1d4524a00000000,
+ 0x96d38c4800000000, 0x8b2e394900000000, 0x808efeda00000000,
+ 0x9d734bdb00000000, 0xba7495d900000000, 0xa78920d800000000,
+ 0xf47a29dc00000000, 0xe9879cdd00000000, 0xce8042df00000000,
+ 0xd37df7de00000000, 0x686651d700000000, 0x759be4d600000000,
+ 0x529c3ad400000000, 0x4f618fd500000000, 0x1c9286d100000000,
+ 0x016f33d000000000, 0x2668edd200000000, 0x3b9558d300000000,
+ 0x505fa1c100000000, 0x4da214c000000000, 0x6aa5cac200000000,
+ 0x77587fc300000000, 0x24ab76c700000000, 0x3956c3c600000000,
+ 0x1e511dc400000000, 0x03aca8c500000000, 0xb8b70ecc00000000,
+ 0xa54abbcd00000000, 0x824d65cf00000000, 0x9fb0d0ce00000000,
+ 0xcc43d9ca00000000, 0xd1be6ccb00000000, 0xf6b9b2c900000000,
+ 0xeb4407c800000000, 0x202d41ec00000000, 0x3dd0f4ed00000000,
+ 0x1ad72aef00000000, 0x072a9fee00000000, 0x54d996ea00000000,
+ 0x492423eb00000000, 0x6e23fde900000000, 0x73de48e800000000,
+ 0xc8c5eee100000000, 0xd5385be000000000, 0xf23f85e200000000,
+ 0xefc230e300000000, 0xbc3139e700000000, 0xa1cc8ce600000000,
+ 0x86cb52e400000000, 0x9b36e7e500000000, 0xf0fc1ef700000000,
+ 0xed01abf600000000, 0xca0675f400000000, 0xd7fbc0f500000000,
+ 0x8408c9f100000000, 0x99f57cf000000000, 0xbef2a2f200000000,
+ 0xa30f17f300000000, 0x1814b1fa00000000, 0x05e904fb00000000,
+ 0x22eedaf900000000, 0x3f136ff800000000, 0x6ce066fc00000000,
+ 0x711dd3fd00000000, 0x561a0dff00000000, 0x4be7b8fe00000000,
+ 0xc0c981b700000000, 0xdd3434b600000000, 0xfa33eab400000000,
+ 0xe7ce5fb500000000, 0xb43d56b100000000, 0xa9c0e3b000000000,
+ 0x8ec73db200000000, 0x933a88b300000000, 0x28212eba00000000,
+ 0x35dc9bbb00000000, 0x12db45b900000000, 0x0f26f0b800000000,
+ 0x5cd5f9bc00000000, 0x41284cbd00000000, 0x662f92bf00000000,
+ 0x7bd227be00000000, 0x1018deac00000000, 0x0de56bad00000000,
+ 0x2ae2b5af00000000, 0x371f00ae00000000, 0x64ec09aa00000000,
+ 0x7911bcab00000000, 0x5e1662a900000000, 0x43ebd7a800000000,
+ 0xf8f071a100000000, 0xe50dc4a000000000, 0xc20a1aa200000000,
+ 0xdff7afa300000000, 0x8c04a6a700000000, 0x91f913a600000000,
+ 0xb6fecda400000000, 0xab0378a500000000, 0x606a3e8100000000,
+ 0x7d978b8000000000, 0x5a90558200000000, 0x476de08300000000,
+ 0x149ee98700000000, 0x09635c8600000000, 0x2e64828400000000,
+ 0x3399378500000000, 0x8882918c00000000, 0x957f248d00000000,
+ 0xb278fa8f00000000, 0xaf854f8e00000000, 0xfc76468a00000000,
+ 0xe18bf38b00000000, 0xc68c2d8900000000, 0xdb71988800000000,
+ 0xb0bb619a00000000, 0xad46d49b00000000, 0x8a410a9900000000,
+ 0x97bcbf9800000000, 0xc44fb69c00000000, 0xd9b2039d00000000,
+ 0xfeb5dd9f00000000, 0xe348689e00000000, 0x5853ce9700000000,
+ 0x45ae7b9600000000, 0x62a9a59400000000, 0x7f54109500000000,
+ 0x2ca7199100000000, 0x315aac9000000000, 0x165d729200000000,
+ 0x0ba0c79300000000},
+ {0x0000000000000000, 0x24d9076300000000, 0x48b20fc600000000,
+ 0x6c6b08a500000000, 0xd1626e5700000000, 0xf5bb693400000000,
+ 0x99d0619100000000, 0xbd0966f200000000, 0xa2c5dcae00000000,
+ 0x861cdbcd00000000, 0xea77d36800000000, 0xceaed40b00000000,
+ 0x73a7b2f900000000, 0x577eb59a00000000, 0x3b15bd3f00000000,
+ 0x1fccba5c00000000, 0x058dc88600000000, 0x2154cfe500000000,
+ 0x4d3fc74000000000, 0x69e6c02300000000, 0xd4efa6d100000000,
+ 0xf036a1b200000000, 0x9c5da91700000000, 0xb884ae7400000000,
+ 0xa748142800000000, 0x8391134b00000000, 0xeffa1bee00000000,
+ 0xcb231c8d00000000, 0x762a7a7f00000000, 0x52f37d1c00000000,
+ 0x3e9875b900000000, 0x1a4172da00000000, 0x4b1ce0d600000000,
+ 0x6fc5e7b500000000, 0x03aeef1000000000, 0x2777e87300000000,
+ 0x9a7e8e8100000000, 0xbea789e200000000, 0xd2cc814700000000,
+ 0xf615862400000000, 0xe9d93c7800000000, 0xcd003b1b00000000,
+ 0xa16b33be00000000, 0x85b234dd00000000, 0x38bb522f00000000,
+ 0x1c62554c00000000, 0x70095de900000000, 0x54d05a8a00000000,
+ 0x4e91285000000000, 0x6a482f3300000000, 0x0623279600000000,
+ 0x22fa20f500000000, 0x9ff3460700000000, 0xbb2a416400000000,
+ 0xd74149c100000000, 0xf3984ea200000000, 0xec54f4fe00000000,
+ 0xc88df39d00000000, 0xa4e6fb3800000000, 0x803ffc5b00000000,
+ 0x3d369aa900000000, 0x19ef9dca00000000, 0x7584956f00000000,
+ 0x515d920c00000000, 0xd73eb17600000000, 0xf3e7b61500000000,
+ 0x9f8cbeb000000000, 0xbb55b9d300000000, 0x065cdf2100000000,
+ 0x2285d84200000000, 0x4eeed0e700000000, 0x6a37d78400000000,
+ 0x75fb6dd800000000, 0x51226abb00000000, 0x3d49621e00000000,
+ 0x1990657d00000000, 0xa499038f00000000, 0x804004ec00000000,
+ 0xec2b0c4900000000, 0xc8f20b2a00000000, 0xd2b379f000000000,
+ 0xf66a7e9300000000, 0x9a01763600000000, 0xbed8715500000000,
+ 0x03d117a700000000, 0x270810c400000000, 0x4b63186100000000,
+ 0x6fba1f0200000000, 0x7076a55e00000000, 0x54afa23d00000000,
+ 0x38c4aa9800000000, 0x1c1dadfb00000000, 0xa114cb0900000000,
+ 0x85cdcc6a00000000, 0xe9a6c4cf00000000, 0xcd7fc3ac00000000,
+ 0x9c2251a000000000, 0xb8fb56c300000000, 0xd4905e6600000000,
+ 0xf049590500000000, 0x4d403ff700000000, 0x6999389400000000,
+ 0x05f2303100000000, 0x212b375200000000, 0x3ee78d0e00000000,
+ 0x1a3e8a6d00000000, 0x765582c800000000, 0x528c85ab00000000,
+ 0xef85e35900000000, 0xcb5ce43a00000000, 0xa737ec9f00000000,
+ 0x83eeebfc00000000, 0x99af992600000000, 0xbd769e4500000000,
+ 0xd11d96e000000000, 0xf5c4918300000000, 0x48cdf77100000000,
+ 0x6c14f01200000000, 0x007ff8b700000000, 0x24a6ffd400000000,
+ 0x3b6a458800000000, 0x1fb342eb00000000, 0x73d84a4e00000000,
+ 0x57014d2d00000000, 0xea082bdf00000000, 0xced12cbc00000000,
+ 0xa2ba241900000000, 0x8663237a00000000, 0xae7d62ed00000000,
+ 0x8aa4658e00000000, 0xe6cf6d2b00000000, 0xc2166a4800000000,
+ 0x7f1f0cba00000000, 0x5bc60bd900000000, 0x37ad037c00000000,
+ 0x1374041f00000000, 0x0cb8be4300000000, 0x2861b92000000000,
+ 0x440ab18500000000, 0x60d3b6e600000000, 0xdddad01400000000,
+ 0xf903d77700000000, 0x9568dfd200000000, 0xb1b1d8b100000000,
+ 0xabf0aa6b00000000, 0x8f29ad0800000000, 0xe342a5ad00000000,
+ 0xc79ba2ce00000000, 0x7a92c43c00000000, 0x5e4bc35f00000000,
+ 0x3220cbfa00000000, 0x16f9cc9900000000, 0x093576c500000000,
+ 0x2dec71a600000000, 0x4187790300000000, 0x655e7e6000000000,
+ 0xd857189200000000, 0xfc8e1ff100000000, 0x90e5175400000000,
+ 0xb43c103700000000, 0xe561823b00000000, 0xc1b8855800000000,
+ 0xadd38dfd00000000, 0x890a8a9e00000000, 0x3403ec6c00000000,
+ 0x10daeb0f00000000, 0x7cb1e3aa00000000, 0x5868e4c900000000,
+ 0x47a45e9500000000, 0x637d59f600000000, 0x0f16515300000000,
+ 0x2bcf563000000000, 0x96c630c200000000, 0xb21f37a100000000,
+ 0xde743f0400000000, 0xfaad386700000000, 0xe0ec4abd00000000,
+ 0xc4354dde00000000, 0xa85e457b00000000, 0x8c87421800000000,
+ 0x318e24ea00000000, 0x1557238900000000, 0x793c2b2c00000000,
+ 0x5de52c4f00000000, 0x4229961300000000, 0x66f0917000000000,
+ 0x0a9b99d500000000, 0x2e429eb600000000, 0x934bf84400000000,
+ 0xb792ff2700000000, 0xdbf9f78200000000, 0xff20f0e100000000,
+ 0x7943d39b00000000, 0x5d9ad4f800000000, 0x31f1dc5d00000000,
+ 0x1528db3e00000000, 0xa821bdcc00000000, 0x8cf8baaf00000000,
+ 0xe093b20a00000000, 0xc44ab56900000000, 0xdb860f3500000000,
+ 0xff5f085600000000, 0x933400f300000000, 0xb7ed079000000000,
+ 0x0ae4616200000000, 0x2e3d660100000000, 0x42566ea400000000,
+ 0x668f69c700000000, 0x7cce1b1d00000000, 0x58171c7e00000000,
+ 0x347c14db00000000, 0x10a513b800000000, 0xadac754a00000000,
+ 0x8975722900000000, 0xe51e7a8c00000000, 0xc1c77def00000000,
+ 0xde0bc7b300000000, 0xfad2c0d000000000, 0x96b9c87500000000,
+ 0xb260cf1600000000, 0x0f69a9e400000000, 0x2bb0ae8700000000,
+ 0x47dba62200000000, 0x6302a14100000000, 0x325f334d00000000,
+ 0x1686342e00000000, 0x7aed3c8b00000000, 0x5e343be800000000,
+ 0xe33d5d1a00000000, 0xc7e45a7900000000, 0xab8f52dc00000000,
+ 0x8f5655bf00000000, 0x909aefe300000000, 0xb443e88000000000,
+ 0xd828e02500000000, 0xfcf1e74600000000, 0x41f881b400000000,
+ 0x652186d700000000, 0x094a8e7200000000, 0x2d93891100000000,
+ 0x37d2fbcb00000000, 0x130bfca800000000, 0x7f60f40d00000000,
+ 0x5bb9f36e00000000, 0xe6b0959c00000000, 0xc26992ff00000000,
+ 0xae029a5a00000000, 0x8adb9d3900000000, 0x9517276500000000,
+ 0xb1ce200600000000, 0xdda528a300000000, 0xf97c2fc000000000,
+ 0x4475493200000000, 0x60ac4e5100000000, 0x0cc746f400000000,
+ 0x281e419700000000},
+ {0x0000000000000000, 0x08e3603c00000000, 0x10c6c17800000000,
+ 0x1825a14400000000, 0x208c83f100000000, 0x286fe3cd00000000,
+ 0x304a428900000000, 0x38a922b500000000, 0x011e763800000000,
+ 0x09fd160400000000, 0x11d8b74000000000, 0x193bd77c00000000,
+ 0x2192f5c900000000, 0x297195f500000000, 0x315434b100000000,
+ 0x39b7548d00000000, 0x023cec7000000000, 0x0adf8c4c00000000,
+ 0x12fa2d0800000000, 0x1a194d3400000000, 0x22b06f8100000000,
+ 0x2a530fbd00000000, 0x3276aef900000000, 0x3a95cec500000000,
+ 0x03229a4800000000, 0x0bc1fa7400000000, 0x13e45b3000000000,
+ 0x1b073b0c00000000, 0x23ae19b900000000, 0x2b4d798500000000,
+ 0x3368d8c100000000, 0x3b8bb8fd00000000, 0x0478d8e100000000,
+ 0x0c9bb8dd00000000, 0x14be199900000000, 0x1c5d79a500000000,
+ 0x24f45b1000000000, 0x2c173b2c00000000, 0x34329a6800000000,
+ 0x3cd1fa5400000000, 0x0566aed900000000, 0x0d85cee500000000,
+ 0x15a06fa100000000, 0x1d430f9d00000000, 0x25ea2d2800000000,
+ 0x2d094d1400000000, 0x352cec5000000000, 0x3dcf8c6c00000000,
+ 0x0644349100000000, 0x0ea754ad00000000, 0x1682f5e900000000,
+ 0x1e6195d500000000, 0x26c8b76000000000, 0x2e2bd75c00000000,
+ 0x360e761800000000, 0x3eed162400000000, 0x075a42a900000000,
+ 0x0fb9229500000000, 0x179c83d100000000, 0x1f7fe3ed00000000,
+ 0x27d6c15800000000, 0x2f35a16400000000, 0x3710002000000000,
+ 0x3ff3601c00000000, 0x49f6c11800000000, 0x4115a12400000000,
+ 0x5930006000000000, 0x51d3605c00000000, 0x697a42e900000000,
+ 0x619922d500000000, 0x79bc839100000000, 0x715fe3ad00000000,
+ 0x48e8b72000000000, 0x400bd71c00000000, 0x582e765800000000,
+ 0x50cd166400000000, 0x686434d100000000, 0x608754ed00000000,
+ 0x78a2f5a900000000, 0x7041959500000000, 0x4bca2d6800000000,
+ 0x43294d5400000000, 0x5b0cec1000000000, 0x53ef8c2c00000000,
+ 0x6b46ae9900000000, 0x63a5cea500000000, 0x7b806fe100000000,
+ 0x73630fdd00000000, 0x4ad45b5000000000, 0x42373b6c00000000,
+ 0x5a129a2800000000, 0x52f1fa1400000000, 0x6a58d8a100000000,
+ 0x62bbb89d00000000, 0x7a9e19d900000000, 0x727d79e500000000,
+ 0x4d8e19f900000000, 0x456d79c500000000, 0x5d48d88100000000,
+ 0x55abb8bd00000000, 0x6d029a0800000000, 0x65e1fa3400000000,
+ 0x7dc45b7000000000, 0x75273b4c00000000, 0x4c906fc100000000,
+ 0x44730ffd00000000, 0x5c56aeb900000000, 0x54b5ce8500000000,
+ 0x6c1cec3000000000, 0x64ff8c0c00000000, 0x7cda2d4800000000,
+ 0x74394d7400000000, 0x4fb2f58900000000, 0x475195b500000000,
+ 0x5f7434f100000000, 0x579754cd00000000, 0x6f3e767800000000,
+ 0x67dd164400000000, 0x7ff8b70000000000, 0x771bd73c00000000,
+ 0x4eac83b100000000, 0x464fe38d00000000, 0x5e6a42c900000000,
+ 0x568922f500000000, 0x6e20004000000000, 0x66c3607c00000000,
+ 0x7ee6c13800000000, 0x7605a10400000000, 0x92ec833100000000,
+ 0x9a0fe30d00000000, 0x822a424900000000, 0x8ac9227500000000,
+ 0xb26000c000000000, 0xba8360fc00000000, 0xa2a6c1b800000000,
+ 0xaa45a18400000000, 0x93f2f50900000000, 0x9b11953500000000,
+ 0x8334347100000000, 0x8bd7544d00000000, 0xb37e76f800000000,
+ 0xbb9d16c400000000, 0xa3b8b78000000000, 0xab5bd7bc00000000,
+ 0x90d06f4100000000, 0x98330f7d00000000, 0x8016ae3900000000,
+ 0x88f5ce0500000000, 0xb05cecb000000000, 0xb8bf8c8c00000000,
+ 0xa09a2dc800000000, 0xa8794df400000000, 0x91ce197900000000,
+ 0x992d794500000000, 0x8108d80100000000, 0x89ebb83d00000000,
+ 0xb1429a8800000000, 0xb9a1fab400000000, 0xa1845bf000000000,
+ 0xa9673bcc00000000, 0x96945bd000000000, 0x9e773bec00000000,
+ 0x86529aa800000000, 0x8eb1fa9400000000, 0xb618d82100000000,
+ 0xbefbb81d00000000, 0xa6de195900000000, 0xae3d796500000000,
+ 0x978a2de800000000, 0x9f694dd400000000, 0x874cec9000000000,
+ 0x8faf8cac00000000, 0xb706ae1900000000, 0xbfe5ce2500000000,
+ 0xa7c06f6100000000, 0xaf230f5d00000000, 0x94a8b7a000000000,
+ 0x9c4bd79c00000000, 0x846e76d800000000, 0x8c8d16e400000000,
+ 0xb424345100000000, 0xbcc7546d00000000, 0xa4e2f52900000000,
+ 0xac01951500000000, 0x95b6c19800000000, 0x9d55a1a400000000,
+ 0x857000e000000000, 0x8d9360dc00000000, 0xb53a426900000000,
+ 0xbdd9225500000000, 0xa5fc831100000000, 0xad1fe32d00000000,
+ 0xdb1a422900000000, 0xd3f9221500000000, 0xcbdc835100000000,
+ 0xc33fe36d00000000, 0xfb96c1d800000000, 0xf375a1e400000000,
+ 0xeb5000a000000000, 0xe3b3609c00000000, 0xda04341100000000,
+ 0xd2e7542d00000000, 0xcac2f56900000000, 0xc221955500000000,
+ 0xfa88b7e000000000, 0xf26bd7dc00000000, 0xea4e769800000000,
+ 0xe2ad16a400000000, 0xd926ae5900000000, 0xd1c5ce6500000000,
+ 0xc9e06f2100000000, 0xc1030f1d00000000, 0xf9aa2da800000000,
+ 0xf1494d9400000000, 0xe96cecd000000000, 0xe18f8cec00000000,
+ 0xd838d86100000000, 0xd0dbb85d00000000, 0xc8fe191900000000,
+ 0xc01d792500000000, 0xf8b45b9000000000, 0xf0573bac00000000,
+ 0xe8729ae800000000, 0xe091fad400000000, 0xdf629ac800000000,
+ 0xd781faf400000000, 0xcfa45bb000000000, 0xc7473b8c00000000,
+ 0xffee193900000000, 0xf70d790500000000, 0xef28d84100000000,
+ 0xe7cbb87d00000000, 0xde7cecf000000000, 0xd69f8ccc00000000,
+ 0xceba2d8800000000, 0xc6594db400000000, 0xfef06f0100000000,
+ 0xf6130f3d00000000, 0xee36ae7900000000, 0xe6d5ce4500000000,
+ 0xdd5e76b800000000, 0xd5bd168400000000, 0xcd98b7c000000000,
+ 0xc57bd7fc00000000, 0xfdd2f54900000000, 0xf531957500000000,
+ 0xed14343100000000, 0xe5f7540d00000000, 0xdc40008000000000,
+ 0xd4a360bc00000000, 0xcc86c1f800000000, 0xc465a1c400000000,
+ 0xfccc837100000000, 0xf42fe34d00000000, 0xec0a420900000000,
+ 0xe4e9223500000000},
+ {0x0000000000000000, 0xd1e8e70e00000000, 0xa2d1cf1d00000000,
+ 0x7339281300000000, 0x44a39f3b00000000, 0x954b783500000000,
+ 0xe672502600000000, 0x379ab72800000000, 0x88463f7700000000,
+ 0x59aed87900000000, 0x2a97f06a00000000, 0xfb7f176400000000,
+ 0xcce5a04c00000000, 0x1d0d474200000000, 0x6e346f5100000000,
+ 0xbfdc885f00000000, 0x108d7eee00000000, 0xc16599e000000000,
+ 0xb25cb1f300000000, 0x63b456fd00000000, 0x542ee1d500000000,
+ 0x85c606db00000000, 0xf6ff2ec800000000, 0x2717c9c600000000,
+ 0x98cb419900000000, 0x4923a69700000000, 0x3a1a8e8400000000,
+ 0xebf2698a00000000, 0xdc68dea200000000, 0x0d8039ac00000000,
+ 0x7eb911bf00000000, 0xaf51f6b100000000, 0x611c8c0700000000,
+ 0xb0f46b0900000000, 0xc3cd431a00000000, 0x1225a41400000000,
+ 0x25bf133c00000000, 0xf457f43200000000, 0x876edc2100000000,
+ 0x56863b2f00000000, 0xe95ab37000000000, 0x38b2547e00000000,
+ 0x4b8b7c6d00000000, 0x9a639b6300000000, 0xadf92c4b00000000,
+ 0x7c11cb4500000000, 0x0f28e35600000000, 0xdec0045800000000,
+ 0x7191f2e900000000, 0xa07915e700000000, 0xd3403df400000000,
+ 0x02a8dafa00000000, 0x35326dd200000000, 0xe4da8adc00000000,
+ 0x97e3a2cf00000000, 0x460b45c100000000, 0xf9d7cd9e00000000,
+ 0x283f2a9000000000, 0x5b06028300000000, 0x8aeee58d00000000,
+ 0xbd7452a500000000, 0x6c9cb5ab00000000, 0x1fa59db800000000,
+ 0xce4d7ab600000000, 0xc238180f00000000, 0x13d0ff0100000000,
+ 0x60e9d71200000000, 0xb101301c00000000, 0x869b873400000000,
+ 0x5773603a00000000, 0x244a482900000000, 0xf5a2af2700000000,
+ 0x4a7e277800000000, 0x9b96c07600000000, 0xe8afe86500000000,
+ 0x39470f6b00000000, 0x0eddb84300000000, 0xdf355f4d00000000,
+ 0xac0c775e00000000, 0x7de4905000000000, 0xd2b566e100000000,
+ 0x035d81ef00000000, 0x7064a9fc00000000, 0xa18c4ef200000000,
+ 0x9616f9da00000000, 0x47fe1ed400000000, 0x34c736c700000000,
+ 0xe52fd1c900000000, 0x5af3599600000000, 0x8b1bbe9800000000,
+ 0xf822968b00000000, 0x29ca718500000000, 0x1e50c6ad00000000,
+ 0xcfb821a300000000, 0xbc8109b000000000, 0x6d69eebe00000000,
+ 0xa324940800000000, 0x72cc730600000000, 0x01f55b1500000000,
+ 0xd01dbc1b00000000, 0xe7870b3300000000, 0x366fec3d00000000,
+ 0x4556c42e00000000, 0x94be232000000000, 0x2b62ab7f00000000,
+ 0xfa8a4c7100000000, 0x89b3646200000000, 0x585b836c00000000,
+ 0x6fc1344400000000, 0xbe29d34a00000000, 0xcd10fb5900000000,
+ 0x1cf81c5700000000, 0xb3a9eae600000000, 0x62410de800000000,
+ 0x117825fb00000000, 0xc090c2f500000000, 0xf70a75dd00000000,
+ 0x26e292d300000000, 0x55dbbac000000000, 0x84335dce00000000,
+ 0x3befd59100000000, 0xea07329f00000000, 0x993e1a8c00000000,
+ 0x48d6fd8200000000, 0x7f4c4aaa00000000, 0xaea4ada400000000,
+ 0xdd9d85b700000000, 0x0c7562b900000000, 0x8471301e00000000,
+ 0x5599d71000000000, 0x26a0ff0300000000, 0xf748180d00000000,
+ 0xc0d2af2500000000, 0x113a482b00000000, 0x6203603800000000,
+ 0xb3eb873600000000, 0x0c370f6900000000, 0xdddfe86700000000,
+ 0xaee6c07400000000, 0x7f0e277a00000000, 0x4894905200000000,
+ 0x997c775c00000000, 0xea455f4f00000000, 0x3badb84100000000,
+ 0x94fc4ef000000000, 0x4514a9fe00000000, 0x362d81ed00000000,
+ 0xe7c566e300000000, 0xd05fd1cb00000000, 0x01b736c500000000,
+ 0x728e1ed600000000, 0xa366f9d800000000, 0x1cba718700000000,
+ 0xcd52968900000000, 0xbe6bbe9a00000000, 0x6f83599400000000,
+ 0x5819eebc00000000, 0x89f109b200000000, 0xfac821a100000000,
+ 0x2b20c6af00000000, 0xe56dbc1900000000, 0x34855b1700000000,
+ 0x47bc730400000000, 0x9654940a00000000, 0xa1ce232200000000,
+ 0x7026c42c00000000, 0x031fec3f00000000, 0xd2f70b3100000000,
+ 0x6d2b836e00000000, 0xbcc3646000000000, 0xcffa4c7300000000,
+ 0x1e12ab7d00000000, 0x29881c5500000000, 0xf860fb5b00000000,
+ 0x8b59d34800000000, 0x5ab1344600000000, 0xf5e0c2f700000000,
+ 0x240825f900000000, 0x57310dea00000000, 0x86d9eae400000000,
+ 0xb1435dcc00000000, 0x60abbac200000000, 0x139292d100000000,
+ 0xc27a75df00000000, 0x7da6fd8000000000, 0xac4e1a8e00000000,
+ 0xdf77329d00000000, 0x0e9fd59300000000, 0x390562bb00000000,
+ 0xe8ed85b500000000, 0x9bd4ada600000000, 0x4a3c4aa800000000,
+ 0x4649281100000000, 0x97a1cf1f00000000, 0xe498e70c00000000,
+ 0x3570000200000000, 0x02eab72a00000000, 0xd302502400000000,
+ 0xa03b783700000000, 0x71d39f3900000000, 0xce0f176600000000,
+ 0x1fe7f06800000000, 0x6cded87b00000000, 0xbd363f7500000000,
+ 0x8aac885d00000000, 0x5b446f5300000000, 0x287d474000000000,
+ 0xf995a04e00000000, 0x56c456ff00000000, 0x872cb1f100000000,
+ 0xf41599e200000000, 0x25fd7eec00000000, 0x1267c9c400000000,
+ 0xc38f2eca00000000, 0xb0b606d900000000, 0x615ee1d700000000,
+ 0xde82698800000000, 0x0f6a8e8600000000, 0x7c53a69500000000,
+ 0xadbb419b00000000, 0x9a21f6b300000000, 0x4bc911bd00000000,
+ 0x38f039ae00000000, 0xe918dea000000000, 0x2755a41600000000,
+ 0xf6bd431800000000, 0x85846b0b00000000, 0x546c8c0500000000,
+ 0x63f63b2d00000000, 0xb21edc2300000000, 0xc127f43000000000,
+ 0x10cf133e00000000, 0xaf139b6100000000, 0x7efb7c6f00000000,
+ 0x0dc2547c00000000, 0xdc2ab37200000000, 0xebb0045a00000000,
+ 0x3a58e35400000000, 0x4961cb4700000000, 0x98892c4900000000,
+ 0x37d8daf800000000, 0xe6303df600000000, 0x950915e500000000,
+ 0x44e1f2eb00000000, 0x737b45c300000000, 0xa293a2cd00000000,
+ 0xd1aa8ade00000000, 0x00426dd000000000, 0xbf9ee58f00000000,
+ 0x6e76028100000000, 0x1d4f2a9200000000, 0xcca7cd9c00000000,
+ 0xfb3d7ab400000000, 0x2ad59dba00000000, 0x59ecb5a900000000,
+ 0x880452a700000000},
+ {0x0000000000000000, 0xaa05daf100000000, 0x150dc53800000000,
+ 0xbf081fc900000000, 0x2a1a8a7100000000, 0x801f508000000000,
+ 0x3f174f4900000000, 0x951295b800000000, 0x543414e300000000,
+ 0xfe31ce1200000000, 0x4139d1db00000000, 0xeb3c0b2a00000000,
+ 0x7e2e9e9200000000, 0xd42b446300000000, 0x6b235baa00000000,
+ 0xc126815b00000000, 0xe96e591d00000000, 0x436b83ec00000000,
+ 0xfc639c2500000000, 0x566646d400000000, 0xc374d36c00000000,
+ 0x6971099d00000000, 0xd679165400000000, 0x7c7ccca500000000,
+ 0xbd5a4dfe00000000, 0x175f970f00000000, 0xa85788c600000000,
+ 0x0252523700000000, 0x9740c78f00000000, 0x3d451d7e00000000,
+ 0x824d02b700000000, 0x2848d84600000000, 0xd2ddb23a00000000,
+ 0x78d868cb00000000, 0xc7d0770200000000, 0x6dd5adf300000000,
+ 0xf8c7384b00000000, 0x52c2e2ba00000000, 0xedcafd7300000000,
+ 0x47cf278200000000, 0x86e9a6d900000000, 0x2cec7c2800000000,
+ 0x93e463e100000000, 0x39e1b91000000000, 0xacf32ca800000000,
+ 0x06f6f65900000000, 0xb9fee99000000000, 0x13fb336100000000,
+ 0x3bb3eb2700000000, 0x91b631d600000000, 0x2ebe2e1f00000000,
+ 0x84bbf4ee00000000, 0x11a9615600000000, 0xbbacbba700000000,
+ 0x04a4a46e00000000, 0xaea17e9f00000000, 0x6f87ffc400000000,
+ 0xc582253500000000, 0x7a8a3afc00000000, 0xd08fe00d00000000,
+ 0x459d75b500000000, 0xef98af4400000000, 0x5090b08d00000000,
+ 0xfa956a7c00000000, 0xa4bb657500000000, 0x0ebebf8400000000,
+ 0xb1b6a04d00000000, 0x1bb37abc00000000, 0x8ea1ef0400000000,
+ 0x24a435f500000000, 0x9bac2a3c00000000, 0x31a9f0cd00000000,
+ 0xf08f719600000000, 0x5a8aab6700000000, 0xe582b4ae00000000,
+ 0x4f876e5f00000000, 0xda95fbe700000000, 0x7090211600000000,
+ 0xcf983edf00000000, 0x659de42e00000000, 0x4dd53c6800000000,
+ 0xe7d0e69900000000, 0x58d8f95000000000, 0xf2dd23a100000000,
+ 0x67cfb61900000000, 0xcdca6ce800000000, 0x72c2732100000000,
+ 0xd8c7a9d000000000, 0x19e1288b00000000, 0xb3e4f27a00000000,
+ 0x0cecedb300000000, 0xa6e9374200000000, 0x33fba2fa00000000,
+ 0x99fe780b00000000, 0x26f667c200000000, 0x8cf3bd3300000000,
+ 0x7666d74f00000000, 0xdc630dbe00000000, 0x636b127700000000,
+ 0xc96ec88600000000, 0x5c7c5d3e00000000, 0xf67987cf00000000,
+ 0x4971980600000000, 0xe37442f700000000, 0x2252c3ac00000000,
+ 0x8857195d00000000, 0x375f069400000000, 0x9d5adc6500000000,
+ 0x084849dd00000000, 0xa24d932c00000000, 0x1d458ce500000000,
+ 0xb740561400000000, 0x9f088e5200000000, 0x350d54a300000000,
+ 0x8a054b6a00000000, 0x2000919b00000000, 0xb512042300000000,
+ 0x1f17ded200000000, 0xa01fc11b00000000, 0x0a1a1bea00000000,
+ 0xcb3c9ab100000000, 0x6139404000000000, 0xde315f8900000000,
+ 0x7434857800000000, 0xe12610c000000000, 0x4b23ca3100000000,
+ 0xf42bd5f800000000, 0x5e2e0f0900000000, 0x4877cbea00000000,
+ 0xe272111b00000000, 0x5d7a0ed200000000, 0xf77fd42300000000,
+ 0x626d419b00000000, 0xc8689b6a00000000, 0x776084a300000000,
+ 0xdd655e5200000000, 0x1c43df0900000000, 0xb64605f800000000,
+ 0x094e1a3100000000, 0xa34bc0c000000000, 0x3659557800000000,
+ 0x9c5c8f8900000000, 0x2354904000000000, 0x89514ab100000000,
+ 0xa11992f700000000, 0x0b1c480600000000, 0xb41457cf00000000,
+ 0x1e118d3e00000000, 0x8b03188600000000, 0x2106c27700000000,
+ 0x9e0eddbe00000000, 0x340b074f00000000, 0xf52d861400000000,
+ 0x5f285ce500000000, 0xe020432c00000000, 0x4a2599dd00000000,
+ 0xdf370c6500000000, 0x7532d69400000000, 0xca3ac95d00000000,
+ 0x603f13ac00000000, 0x9aaa79d000000000, 0x30afa32100000000,
+ 0x8fa7bce800000000, 0x25a2661900000000, 0xb0b0f3a100000000,
+ 0x1ab5295000000000, 0xa5bd369900000000, 0x0fb8ec6800000000,
+ 0xce9e6d3300000000, 0x649bb7c200000000, 0xdb93a80b00000000,
+ 0x719672fa00000000, 0xe484e74200000000, 0x4e813db300000000,
+ 0xf189227a00000000, 0x5b8cf88b00000000, 0x73c420cd00000000,
+ 0xd9c1fa3c00000000, 0x66c9e5f500000000, 0xcccc3f0400000000,
+ 0x59deaabc00000000, 0xf3db704d00000000, 0x4cd36f8400000000,
+ 0xe6d6b57500000000, 0x27f0342e00000000, 0x8df5eedf00000000,
+ 0x32fdf11600000000, 0x98f82be700000000, 0x0deabe5f00000000,
+ 0xa7ef64ae00000000, 0x18e77b6700000000, 0xb2e2a19600000000,
+ 0xecccae9f00000000, 0x46c9746e00000000, 0xf9c16ba700000000,
+ 0x53c4b15600000000, 0xc6d624ee00000000, 0x6cd3fe1f00000000,
+ 0xd3dbe1d600000000, 0x79de3b2700000000, 0xb8f8ba7c00000000,
+ 0x12fd608d00000000, 0xadf57f4400000000, 0x07f0a5b500000000,
+ 0x92e2300d00000000, 0x38e7eafc00000000, 0x87eff53500000000,
+ 0x2dea2fc400000000, 0x05a2f78200000000, 0xafa72d7300000000,
+ 0x10af32ba00000000, 0xbaaae84b00000000, 0x2fb87df300000000,
+ 0x85bda70200000000, 0x3ab5b8cb00000000, 0x90b0623a00000000,
+ 0x5196e36100000000, 0xfb93399000000000, 0x449b265900000000,
+ 0xee9efca800000000, 0x7b8c691000000000, 0xd189b3e100000000,
+ 0x6e81ac2800000000, 0xc48476d900000000, 0x3e111ca500000000,
+ 0x9414c65400000000, 0x2b1cd99d00000000, 0x8119036c00000000,
+ 0x140b96d400000000, 0xbe0e4c2500000000, 0x010653ec00000000,
+ 0xab03891d00000000, 0x6a25084600000000, 0xc020d2b700000000,
+ 0x7f28cd7e00000000, 0xd52d178f00000000, 0x403f823700000000,
+ 0xea3a58c600000000, 0x5532470f00000000, 0xff379dfe00000000,
+ 0xd77f45b800000000, 0x7d7a9f4900000000, 0xc272808000000000,
+ 0x68775a7100000000, 0xfd65cfc900000000, 0x5760153800000000,
+ 0xe8680af100000000, 0x426dd00000000000, 0x834b515b00000000,
+ 0x294e8baa00000000, 0x9646946300000000, 0x3c434e9200000000,
+ 0xa951db2a00000000, 0x035401db00000000, 0xbc5c1e1200000000,
+ 0x1659c4e300000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87,
+ 0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede,
+ 0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab,
+ 0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c,
+ 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1,
+ 0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7,
+ 0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e,
+ 0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308,
+ 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5,
+ 0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472,
+ 0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07,
+ 0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e,
+ 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa,
+ 0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec,
+ 0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6,
+ 0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0,
+ 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3,
+ 0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba,
+ 0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf,
+ 0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975,
+ 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8,
+ 0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde,
+ 0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a,
+ 0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c,
+ 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1,
+ 0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65,
+ 0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410,
+ 0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649,
+ 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a,
+ 0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c,
+ 0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946,
+ 0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450,
+ 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e,
+ 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857,
+ 0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022,
+ 0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5,
+ 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758,
+ 0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e,
+ 0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d,
+ 0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b,
+ 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6,
+ 0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401,
+ 0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74,
+ 0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d,
+ 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073,
+ 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65,
+ 0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f,
+ 0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749,
+ 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a,
+ 0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033,
+ 0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846,
+ 0x0d7139d7},
+ {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563,
+ 0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f,
+ 0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875,
+ 0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536,
+ 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8,
+ 0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43,
+ 0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f,
+ 0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184,
+ 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a,
+ 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39,
+ 0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523,
+ 0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f,
+ 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d,
+ 0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6,
+ 0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b,
+ 0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0,
+ 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151,
+ 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d,
+ 0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47,
+ 0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a,
+ 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964,
+ 0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef,
+ 0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d,
+ 0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6,
+ 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348,
+ 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53,
+ 0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449,
+ 0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645,
+ 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4,
+ 0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f,
+ 0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2,
+ 0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69,
+ 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46,
+ 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a,
+ 0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650,
+ 0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13,
+ 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded,
+ 0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366,
+ 0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57,
+ 0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc,
+ 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222,
+ 0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61,
+ 0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b,
+ 0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277,
+ 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558,
+ 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3,
+ 0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e,
+ 0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5,
+ 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74,
+ 0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78,
+ 0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262,
+ 0x1c53e98a},
+ {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b,
+ 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40,
+ 0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580,
+ 0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7,
+ 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a,
+ 0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37,
+ 0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75,
+ 0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218,
+ 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5,
+ 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2,
+ 0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02,
+ 0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59,
+ 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1,
+ 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c,
+ 0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a,
+ 0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307,
+ 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486,
+ 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd,
+ 0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d,
+ 0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2,
+ 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f,
+ 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72,
+ 0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8,
+ 0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985,
+ 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268,
+ 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94,
+ 0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454,
+ 0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f,
+ 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e,
+ 0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3,
+ 0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915,
+ 0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778,
+ 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821,
+ 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a,
+ 0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba,
+ 0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d,
+ 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560,
+ 0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d,
+ 0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe,
+ 0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3,
+ 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e,
+ 0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509,
+ 0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9,
+ 0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92,
+ 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb,
+ 0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6,
+ 0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50,
+ 0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d,
+ 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc,
+ 0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7,
+ 0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927,
+ 0x3f88e851},
+ {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96,
+ 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8,
+ 0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0,
+ 0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14,
+ 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7,
+ 0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4,
+ 0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe,
+ 0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad,
+ 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e,
+ 0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa,
+ 0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2,
+ 0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c,
+ 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab,
+ 0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8,
+ 0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d,
+ 0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e,
+ 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7,
+ 0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99,
+ 0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1,
+ 0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690,
+ 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933,
+ 0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20,
+ 0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf,
+ 0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc,
+ 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f,
+ 0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92,
+ 0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca,
+ 0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4,
+ 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd,
+ 0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de,
+ 0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb,
+ 0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8,
+ 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474,
+ 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a,
+ 0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252,
+ 0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6,
+ 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55,
+ 0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846,
+ 0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7,
+ 0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4,
+ 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47,
+ 0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3,
+ 0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb,
+ 0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5,
+ 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49,
+ 0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a,
+ 0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f,
+ 0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c,
+ 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305,
+ 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b,
+ 0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523,
+ 0x3dee8ca6}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0x85d996dd, 0x4bb55c60, 0xce6ccabd, 0x966ab9c0,
+ 0x13b32f1d, 0xdddfe5a0, 0x5806737d, 0x6dd3035a, 0xe80a9587,
+ 0x26665f3a, 0xa3bfc9e7, 0xfbb9ba9a, 0x7e602c47, 0xb00ce6fa,
+ 0x35d57027, 0xdaa607b4, 0x5f7f9169, 0x91135bd4, 0x14cacd09,
+ 0x4cccbe74, 0xc91528a9, 0x0779e214, 0x82a074c9, 0xb77504ee,
+ 0x32ac9233, 0xfcc0588e, 0x7919ce53, 0x211fbd2e, 0xa4c62bf3,
+ 0x6aaae14e, 0xef737793, 0xf54b7eb3, 0x7092e86e, 0xbefe22d3,
+ 0x3b27b40e, 0x6321c773, 0xe6f851ae, 0x28949b13, 0xad4d0dce,
+ 0x98987de9, 0x1d41eb34, 0xd32d2189, 0x56f4b754, 0x0ef2c429,
+ 0x8b2b52f4, 0x45479849, 0xc09e0e94, 0x2fed7907, 0xaa34efda,
+ 0x64582567, 0xe181b3ba, 0xb987c0c7, 0x3c5e561a, 0xf2329ca7,
+ 0x77eb0a7a, 0x423e7a5d, 0xc7e7ec80, 0x098b263d, 0x8c52b0e0,
+ 0xd454c39d, 0x518d5540, 0x9fe19ffd, 0x1a380920, 0xab918dbd,
+ 0x2e481b60, 0xe024d1dd, 0x65fd4700, 0x3dfb347d, 0xb822a2a0,
+ 0x764e681d, 0xf397fec0, 0xc6428ee7, 0x439b183a, 0x8df7d287,
+ 0x082e445a, 0x50283727, 0xd5f1a1fa, 0x1b9d6b47, 0x9e44fd9a,
+ 0x71378a09, 0xf4ee1cd4, 0x3a82d669, 0xbf5b40b4, 0xe75d33c9,
+ 0x6284a514, 0xace86fa9, 0x2931f974, 0x1ce48953, 0x993d1f8e,
+ 0x5751d533, 0xd28843ee, 0x8a8e3093, 0x0f57a64e, 0xc13b6cf3,
+ 0x44e2fa2e, 0x5edaf30e, 0xdb0365d3, 0x156faf6e, 0x90b639b3,
+ 0xc8b04ace, 0x4d69dc13, 0x830516ae, 0x06dc8073, 0x3309f054,
+ 0xb6d06689, 0x78bcac34, 0xfd653ae9, 0xa5634994, 0x20badf49,
+ 0xeed615f4, 0x6b0f8329, 0x847cf4ba, 0x01a56267, 0xcfc9a8da,
+ 0x4a103e07, 0x12164d7a, 0x97cfdba7, 0x59a3111a, 0xdc7a87c7,
+ 0xe9aff7e0, 0x6c76613d, 0xa21aab80, 0x27c33d5d, 0x7fc54e20,
+ 0xfa1cd8fd, 0x34701240, 0xb1a9849d, 0x17256aa0, 0x92fcfc7d,
+ 0x5c9036c0, 0xd949a01d, 0x814fd360, 0x049645bd, 0xcafa8f00,
+ 0x4f2319dd, 0x7af669fa, 0xff2fff27, 0x3143359a, 0xb49aa347,
+ 0xec9cd03a, 0x694546e7, 0xa7298c5a, 0x22f01a87, 0xcd836d14,
+ 0x485afbc9, 0x86363174, 0x03efa7a9, 0x5be9d4d4, 0xde304209,
+ 0x105c88b4, 0x95851e69, 0xa0506e4e, 0x2589f893, 0xebe5322e,
+ 0x6e3ca4f3, 0x363ad78e, 0xb3e34153, 0x7d8f8bee, 0xf8561d33,
+ 0xe26e1413, 0x67b782ce, 0xa9db4873, 0x2c02deae, 0x7404add3,
+ 0xf1dd3b0e, 0x3fb1f1b3, 0xba68676e, 0x8fbd1749, 0x0a648194,
+ 0xc4084b29, 0x41d1ddf4, 0x19d7ae89, 0x9c0e3854, 0x5262f2e9,
+ 0xd7bb6434, 0x38c813a7, 0xbd11857a, 0x737d4fc7, 0xf6a4d91a,
+ 0xaea2aa67, 0x2b7b3cba, 0xe517f607, 0x60ce60da, 0x551b10fd,
+ 0xd0c28620, 0x1eae4c9d, 0x9b77da40, 0xc371a93d, 0x46a83fe0,
+ 0x88c4f55d, 0x0d1d6380, 0xbcb4e71d, 0x396d71c0, 0xf701bb7d,
+ 0x72d82da0, 0x2ade5edd, 0xaf07c800, 0x616b02bd, 0xe4b29460,
+ 0xd167e447, 0x54be729a, 0x9ad2b827, 0x1f0b2efa, 0x470d5d87,
+ 0xc2d4cb5a, 0x0cb801e7, 0x8961973a, 0x6612e0a9, 0xe3cb7674,
+ 0x2da7bcc9, 0xa87e2a14, 0xf0785969, 0x75a1cfb4, 0xbbcd0509,
+ 0x3e1493d4, 0x0bc1e3f3, 0x8e18752e, 0x4074bf93, 0xc5ad294e,
+ 0x9dab5a33, 0x1872ccee, 0xd61e0653, 0x53c7908e, 0x49ff99ae,
+ 0xcc260f73, 0x024ac5ce, 0x87935313, 0xdf95206e, 0x5a4cb6b3,
+ 0x94207c0e, 0x11f9ead3, 0x242c9af4, 0xa1f50c29, 0x6f99c694,
+ 0xea405049, 0xb2462334, 0x379fb5e9, 0xf9f37f54, 0x7c2ae989,
+ 0x93599e1a, 0x168008c7, 0xd8ecc27a, 0x5d3554a7, 0x053327da,
+ 0x80eab107, 0x4e867bba, 0xcb5fed67, 0xfe8a9d40, 0x7b530b9d,
+ 0xb53fc120, 0x30e657fd, 0x68e02480, 0xed39b25d, 0x235578e0,
+ 0xa68cee3d},
+ {0x00000000, 0x76e10f9d, 0xadc46ee1, 0xdb25617c, 0x1b8fac19,
+ 0x6d6ea384, 0xb64bc2f8, 0xc0aacd65, 0x361e5933, 0x40ff56ae,
+ 0x9bda37d2, 0xed3b384f, 0x2d91f52a, 0x5b70fab7, 0x80559bcb,
+ 0xf6b49456, 0x6c3cb266, 0x1addbdfb, 0xc1f8dc87, 0xb719d31a,
+ 0x77b31e7f, 0x015211e2, 0xda77709e, 0xac967f03, 0x5a22eb55,
+ 0x2cc3e4c8, 0xf7e685b4, 0x81078a29, 0x41ad474c, 0x374c48d1,
+ 0xec6929ad, 0x9a882630, 0xd87864cd, 0xae996b50, 0x75bc0a2c,
+ 0x035d05b1, 0xc3f7c8d4, 0xb516c749, 0x6e33a635, 0x18d2a9a8,
+ 0xee663dfe, 0x98873263, 0x43a2531f, 0x35435c82, 0xf5e991e7,
+ 0x83089e7a, 0x582dff06, 0x2eccf09b, 0xb444d6ab, 0xc2a5d936,
+ 0x1980b84a, 0x6f61b7d7, 0xafcb7ab2, 0xd92a752f, 0x020f1453,
+ 0x74ee1bce, 0x825a8f98, 0xf4bb8005, 0x2f9ee179, 0x597feee4,
+ 0x99d52381, 0xef342c1c, 0x34114d60, 0x42f042fd, 0xf1f7b941,
+ 0x8716b6dc, 0x5c33d7a0, 0x2ad2d83d, 0xea781558, 0x9c991ac5,
+ 0x47bc7bb9, 0x315d7424, 0xc7e9e072, 0xb108efef, 0x6a2d8e93,
+ 0x1ccc810e, 0xdc664c6b, 0xaa8743f6, 0x71a2228a, 0x07432d17,
+ 0x9dcb0b27, 0xeb2a04ba, 0x300f65c6, 0x46ee6a5b, 0x8644a73e,
+ 0xf0a5a8a3, 0x2b80c9df, 0x5d61c642, 0xabd55214, 0xdd345d89,
+ 0x06113cf5, 0x70f03368, 0xb05afe0d, 0xc6bbf190, 0x1d9e90ec,
+ 0x6b7f9f71, 0x298fdd8c, 0x5f6ed211, 0x844bb36d, 0xf2aabcf0,
+ 0x32007195, 0x44e17e08, 0x9fc41f74, 0xe92510e9, 0x1f9184bf,
+ 0x69708b22, 0xb255ea5e, 0xc4b4e5c3, 0x041e28a6, 0x72ff273b,
+ 0xa9da4647, 0xdf3b49da, 0x45b36fea, 0x33526077, 0xe877010b,
+ 0x9e960e96, 0x5e3cc3f3, 0x28ddcc6e, 0xf3f8ad12, 0x8519a28f,
+ 0x73ad36d9, 0x054c3944, 0xde695838, 0xa88857a5, 0x68229ac0,
+ 0x1ec3955d, 0xc5e6f421, 0xb307fbbc, 0xe2ef7383, 0x940e7c1e,
+ 0x4f2b1d62, 0x39ca12ff, 0xf960df9a, 0x8f81d007, 0x54a4b17b,
+ 0x2245bee6, 0xd4f12ab0, 0xa210252d, 0x79354451, 0x0fd44bcc,
+ 0xcf7e86a9, 0xb99f8934, 0x62bae848, 0x145be7d5, 0x8ed3c1e5,
+ 0xf832ce78, 0x2317af04, 0x55f6a099, 0x955c6dfc, 0xe3bd6261,
+ 0x3898031d, 0x4e790c80, 0xb8cd98d6, 0xce2c974b, 0x1509f637,
+ 0x63e8f9aa, 0xa34234cf, 0xd5a33b52, 0x0e865a2e, 0x786755b3,
+ 0x3a97174e, 0x4c7618d3, 0x975379af, 0xe1b27632, 0x2118bb57,
+ 0x57f9b4ca, 0x8cdcd5b6, 0xfa3dda2b, 0x0c894e7d, 0x7a6841e0,
+ 0xa14d209c, 0xd7ac2f01, 0x1706e264, 0x61e7edf9, 0xbac28c85,
+ 0xcc238318, 0x56aba528, 0x204aaab5, 0xfb6fcbc9, 0x8d8ec454,
+ 0x4d240931, 0x3bc506ac, 0xe0e067d0, 0x9601684d, 0x60b5fc1b,
+ 0x1654f386, 0xcd7192fa, 0xbb909d67, 0x7b3a5002, 0x0ddb5f9f,
+ 0xd6fe3ee3, 0xa01f317e, 0x1318cac2, 0x65f9c55f, 0xbedca423,
+ 0xc83dabbe, 0x089766db, 0x7e766946, 0xa553083a, 0xd3b207a7,
+ 0x250693f1, 0x53e79c6c, 0x88c2fd10, 0xfe23f28d, 0x3e893fe8,
+ 0x48683075, 0x934d5109, 0xe5ac5e94, 0x7f2478a4, 0x09c57739,
+ 0xd2e01645, 0xa40119d8, 0x64abd4bd, 0x124adb20, 0xc96fba5c,
+ 0xbf8eb5c1, 0x493a2197, 0x3fdb2e0a, 0xe4fe4f76, 0x921f40eb,
+ 0x52b58d8e, 0x24548213, 0xff71e36f, 0x8990ecf2, 0xcb60ae0f,
+ 0xbd81a192, 0x66a4c0ee, 0x1045cf73, 0xd0ef0216, 0xa60e0d8b,
+ 0x7d2b6cf7, 0x0bca636a, 0xfd7ef73c, 0x8b9ff8a1, 0x50ba99dd,
+ 0x265b9640, 0xe6f15b25, 0x901054b8, 0x4b3535c4, 0x3dd43a59,
+ 0xa75c1c69, 0xd1bd13f4, 0x0a987288, 0x7c797d15, 0xbcd3b070,
+ 0xca32bfed, 0x1117de91, 0x67f6d10c, 0x9142455a, 0xe7a34ac7,
+ 0x3c862bbb, 0x4a672426, 0x8acde943, 0xfc2ce6de, 0x270987a2,
+ 0x51e8883f},
+ {0x00000000, 0xe8dbfbb9, 0x91b186a8, 0x796a7d11, 0x63657c8a,
+ 0x8bbe8733, 0xf2d4fa22, 0x1a0f019b, 0x87cc89cf, 0x6f177276,
+ 0x167d0f67, 0xfea6f4de, 0xe4a9f545, 0x0c720efc, 0x751873ed,
+ 0x9dc38854, 0x4f9f6244, 0xa74499fd, 0xde2ee4ec, 0x36f51f55,
+ 0x2cfa1ece, 0xc421e577, 0xbd4b9866, 0x559063df, 0xc853eb8b,
+ 0x20881032, 0x59e26d23, 0xb139969a, 0xab369701, 0x43ed6cb8,
+ 0x3a8711a9, 0xd25cea10, 0x9e3ec588, 0x76e53e31, 0x0f8f4320,
+ 0xe754b899, 0xfd5bb902, 0x158042bb, 0x6cea3faa, 0x8431c413,
+ 0x19f24c47, 0xf129b7fe, 0x8843caef, 0x60983156, 0x7a9730cd,
+ 0x924ccb74, 0xeb26b665, 0x03fd4ddc, 0xd1a1a7cc, 0x397a5c75,
+ 0x40102164, 0xa8cbdadd, 0xb2c4db46, 0x5a1f20ff, 0x23755dee,
+ 0xcbaea657, 0x566d2e03, 0xbeb6d5ba, 0xc7dca8ab, 0x2f075312,
+ 0x35085289, 0xddd3a930, 0xa4b9d421, 0x4c622f98, 0x7d7bfbca,
+ 0x95a00073, 0xecca7d62, 0x041186db, 0x1e1e8740, 0xf6c57cf9,
+ 0x8faf01e8, 0x6774fa51, 0xfab77205, 0x126c89bc, 0x6b06f4ad,
+ 0x83dd0f14, 0x99d20e8f, 0x7109f536, 0x08638827, 0xe0b8739e,
+ 0x32e4998e, 0xda3f6237, 0xa3551f26, 0x4b8ee49f, 0x5181e504,
+ 0xb95a1ebd, 0xc03063ac, 0x28eb9815, 0xb5281041, 0x5df3ebf8,
+ 0x249996e9, 0xcc426d50, 0xd64d6ccb, 0x3e969772, 0x47fcea63,
+ 0xaf2711da, 0xe3453e42, 0x0b9ec5fb, 0x72f4b8ea, 0x9a2f4353,
+ 0x802042c8, 0x68fbb971, 0x1191c460, 0xf94a3fd9, 0x6489b78d,
+ 0x8c524c34, 0xf5383125, 0x1de3ca9c, 0x07eccb07, 0xef3730be,
+ 0x965d4daf, 0x7e86b616, 0xacda5c06, 0x4401a7bf, 0x3d6bdaae,
+ 0xd5b02117, 0xcfbf208c, 0x2764db35, 0x5e0ea624, 0xb6d55d9d,
+ 0x2b16d5c9, 0xc3cd2e70, 0xbaa75361, 0x527ca8d8, 0x4873a943,
+ 0xa0a852fa, 0xd9c22feb, 0x3119d452, 0xbbf0874e, 0x532b7cf7,
+ 0x2a4101e6, 0xc29afa5f, 0xd895fbc4, 0x304e007d, 0x49247d6c,
+ 0xa1ff86d5, 0x3c3c0e81, 0xd4e7f538, 0xad8d8829, 0x45567390,
+ 0x5f59720b, 0xb78289b2, 0xcee8f4a3, 0x26330f1a, 0xf46fe50a,
+ 0x1cb41eb3, 0x65de63a2, 0x8d05981b, 0x970a9980, 0x7fd16239,
+ 0x06bb1f28, 0xee60e491, 0x73a36cc5, 0x9b78977c, 0xe212ea6d,
+ 0x0ac911d4, 0x10c6104f, 0xf81debf6, 0x817796e7, 0x69ac6d5e,
+ 0x25ce42c6, 0xcd15b97f, 0xb47fc46e, 0x5ca43fd7, 0x46ab3e4c,
+ 0xae70c5f5, 0xd71ab8e4, 0x3fc1435d, 0xa202cb09, 0x4ad930b0,
+ 0x33b34da1, 0xdb68b618, 0xc167b783, 0x29bc4c3a, 0x50d6312b,
+ 0xb80dca92, 0x6a512082, 0x828adb3b, 0xfbe0a62a, 0x133b5d93,
+ 0x09345c08, 0xe1efa7b1, 0x9885daa0, 0x705e2119, 0xed9da94d,
+ 0x054652f4, 0x7c2c2fe5, 0x94f7d45c, 0x8ef8d5c7, 0x66232e7e,
+ 0x1f49536f, 0xf792a8d6, 0xc68b7c84, 0x2e50873d, 0x573afa2c,
+ 0xbfe10195, 0xa5ee000e, 0x4d35fbb7, 0x345f86a6, 0xdc847d1f,
+ 0x4147f54b, 0xa99c0ef2, 0xd0f673e3, 0x382d885a, 0x222289c1,
+ 0xcaf97278, 0xb3930f69, 0x5b48f4d0, 0x89141ec0, 0x61cfe579,
+ 0x18a59868, 0xf07e63d1, 0xea71624a, 0x02aa99f3, 0x7bc0e4e2,
+ 0x931b1f5b, 0x0ed8970f, 0xe6036cb6, 0x9f6911a7, 0x77b2ea1e,
+ 0x6dbdeb85, 0x8566103c, 0xfc0c6d2d, 0x14d79694, 0x58b5b90c,
+ 0xb06e42b5, 0xc9043fa4, 0x21dfc41d, 0x3bd0c586, 0xd30b3e3f,
+ 0xaa61432e, 0x42bab897, 0xdf7930c3, 0x37a2cb7a, 0x4ec8b66b,
+ 0xa6134dd2, 0xbc1c4c49, 0x54c7b7f0, 0x2dadcae1, 0xc5763158,
+ 0x172adb48, 0xfff120f1, 0x869b5de0, 0x6e40a659, 0x744fa7c2,
+ 0x9c945c7b, 0xe5fe216a, 0x0d25dad3, 0x90e65287, 0x783da93e,
+ 0x0157d42f, 0xe98c2f96, 0xf3832e0d, 0x1b58d5b4, 0x6232a8a5,
+ 0x8ae9531c},
+ {0x00000000, 0x919168ae, 0x6325a087, 0xf2b4c829, 0x874c31d4,
+ 0x16dd597a, 0xe4699153, 0x75f8f9fd, 0x4f9f1373, 0xde0e7bdd,
+ 0x2cbab3f4, 0xbd2bdb5a, 0xc8d322a7, 0x59424a09, 0xabf68220,
+ 0x3a67ea8e, 0x9e3e27e6, 0x0faf4f48, 0xfd1b8761, 0x6c8aefcf,
+ 0x19721632, 0x88e37e9c, 0x7a57b6b5, 0xebc6de1b, 0xd1a13495,
+ 0x40305c3b, 0xb2849412, 0x2315fcbc, 0x56ed0541, 0xc77c6def,
+ 0x35c8a5c6, 0xa459cd68, 0x7d7b3f17, 0xecea57b9, 0x1e5e9f90,
+ 0x8fcff73e, 0xfa370ec3, 0x6ba6666d, 0x9912ae44, 0x0883c6ea,
+ 0x32e42c64, 0xa37544ca, 0x51c18ce3, 0xc050e44d, 0xb5a81db0,
+ 0x2439751e, 0xd68dbd37, 0x471cd599, 0xe34518f1, 0x72d4705f,
+ 0x8060b876, 0x11f1d0d8, 0x64092925, 0xf598418b, 0x072c89a2,
+ 0x96bde10c, 0xacda0b82, 0x3d4b632c, 0xcfffab05, 0x5e6ec3ab,
+ 0x2b963a56, 0xba0752f8, 0x48b39ad1, 0xd922f27f, 0xfaf67e2e,
+ 0x6b671680, 0x99d3dea9, 0x0842b607, 0x7dba4ffa, 0xec2b2754,
+ 0x1e9fef7d, 0x8f0e87d3, 0xb5696d5d, 0x24f805f3, 0xd64ccdda,
+ 0x47dda574, 0x32255c89, 0xa3b43427, 0x5100fc0e, 0xc09194a0,
+ 0x64c859c8, 0xf5593166, 0x07edf94f, 0x967c91e1, 0xe384681c,
+ 0x721500b2, 0x80a1c89b, 0x1130a035, 0x2b574abb, 0xbac62215,
+ 0x4872ea3c, 0xd9e38292, 0xac1b7b6f, 0x3d8a13c1, 0xcf3edbe8,
+ 0x5eafb346, 0x878d4139, 0x161c2997, 0xe4a8e1be, 0x75398910,
+ 0x00c170ed, 0x91501843, 0x63e4d06a, 0xf275b8c4, 0xc812524a,
+ 0x59833ae4, 0xab37f2cd, 0x3aa69a63, 0x4f5e639e, 0xdecf0b30,
+ 0x2c7bc319, 0xbdeaabb7, 0x19b366df, 0x88220e71, 0x7a96c658,
+ 0xeb07aef6, 0x9eff570b, 0x0f6e3fa5, 0xfddaf78c, 0x6c4b9f22,
+ 0x562c75ac, 0xc7bd1d02, 0x3509d52b, 0xa498bd85, 0xd1604478,
+ 0x40f12cd6, 0xb245e4ff, 0x23d48c51, 0xf4edfd5c, 0x657c95f2,
+ 0x97c85ddb, 0x06593575, 0x73a1cc88, 0xe230a426, 0x10846c0f,
+ 0x811504a1, 0xbb72ee2f, 0x2ae38681, 0xd8574ea8, 0x49c62606,
+ 0x3c3edffb, 0xadafb755, 0x5f1b7f7c, 0xce8a17d2, 0x6ad3daba,
+ 0xfb42b214, 0x09f67a3d, 0x98671293, 0xed9feb6e, 0x7c0e83c0,
+ 0x8eba4be9, 0x1f2b2347, 0x254cc9c9, 0xb4dda167, 0x4669694e,
+ 0xd7f801e0, 0xa200f81d, 0x339190b3, 0xc125589a, 0x50b43034,
+ 0x8996c24b, 0x1807aae5, 0xeab362cc, 0x7b220a62, 0x0edaf39f,
+ 0x9f4b9b31, 0x6dff5318, 0xfc6e3bb6, 0xc609d138, 0x5798b996,
+ 0xa52c71bf, 0x34bd1911, 0x4145e0ec, 0xd0d48842, 0x2260406b,
+ 0xb3f128c5, 0x17a8e5ad, 0x86398d03, 0x748d452a, 0xe51c2d84,
+ 0x90e4d479, 0x0175bcd7, 0xf3c174fe, 0x62501c50, 0x5837f6de,
+ 0xc9a69e70, 0x3b125659, 0xaa833ef7, 0xdf7bc70a, 0x4eeaafa4,
+ 0xbc5e678d, 0x2dcf0f23, 0x0e1b8372, 0x9f8aebdc, 0x6d3e23f5,
+ 0xfcaf4b5b, 0x8957b2a6, 0x18c6da08, 0xea721221, 0x7be37a8f,
+ 0x41849001, 0xd015f8af, 0x22a13086, 0xb3305828, 0xc6c8a1d5,
+ 0x5759c97b, 0xa5ed0152, 0x347c69fc, 0x9025a494, 0x01b4cc3a,
+ 0xf3000413, 0x62916cbd, 0x17699540, 0x86f8fdee, 0x744c35c7,
+ 0xe5dd5d69, 0xdfbab7e7, 0x4e2bdf49, 0xbc9f1760, 0x2d0e7fce,
+ 0x58f68633, 0xc967ee9d, 0x3bd326b4, 0xaa424e1a, 0x7360bc65,
+ 0xe2f1d4cb, 0x10451ce2, 0x81d4744c, 0xf42c8db1, 0x65bde51f,
+ 0x97092d36, 0x06984598, 0x3cffaf16, 0xad6ec7b8, 0x5fda0f91,
+ 0xce4b673f, 0xbbb39ec2, 0x2a22f66c, 0xd8963e45, 0x490756eb,
+ 0xed5e9b83, 0x7ccff32d, 0x8e7b3b04, 0x1fea53aa, 0x6a12aa57,
+ 0xfb83c2f9, 0x09370ad0, 0x98a6627e, 0xa2c188f0, 0x3350e05e,
+ 0xc1e42877, 0x507540d9, 0x258db924, 0xb41cd18a, 0x46a819a3,
+ 0xd739710d}};
+
+#endif
+
+#endif
+
+#if N == 5
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xaf449247, 0x85f822cf, 0x2abcb088, 0xd08143df,
+ 0x7fc5d198, 0x55796110, 0xfa3df357, 0x7a7381ff, 0xd53713b8,
+ 0xff8ba330, 0x50cf3177, 0xaaf2c220, 0x05b65067, 0x2f0ae0ef,
+ 0x804e72a8, 0xf4e703fe, 0x5ba391b9, 0x711f2131, 0xde5bb376,
+ 0x24664021, 0x8b22d266, 0xa19e62ee, 0x0edaf0a9, 0x8e948201,
+ 0x21d01046, 0x0b6ca0ce, 0xa4283289, 0x5e15c1de, 0xf1515399,
+ 0xdbede311, 0x74a97156, 0x32bf01bd, 0x9dfb93fa, 0xb7472372,
+ 0x1803b135, 0xe23e4262, 0x4d7ad025, 0x67c660ad, 0xc882f2ea,
+ 0x48cc8042, 0xe7881205, 0xcd34a28d, 0x627030ca, 0x984dc39d,
+ 0x370951da, 0x1db5e152, 0xb2f17315, 0xc6580243, 0x691c9004,
+ 0x43a0208c, 0xece4b2cb, 0x16d9419c, 0xb99dd3db, 0x93216353,
+ 0x3c65f114, 0xbc2b83bc, 0x136f11fb, 0x39d3a173, 0x96973334,
+ 0x6caac063, 0xc3ee5224, 0xe952e2ac, 0x461670eb, 0x657e037a,
+ 0xca3a913d, 0xe08621b5, 0x4fc2b3f2, 0xb5ff40a5, 0x1abbd2e2,
+ 0x3007626a, 0x9f43f02d, 0x1f0d8285, 0xb04910c2, 0x9af5a04a,
+ 0x35b1320d, 0xcf8cc15a, 0x60c8531d, 0x4a74e395, 0xe53071d2,
+ 0x91990084, 0x3edd92c3, 0x1461224b, 0xbb25b00c, 0x4118435b,
+ 0xee5cd11c, 0xc4e06194, 0x6ba4f3d3, 0xebea817b, 0x44ae133c,
+ 0x6e12a3b4, 0xc15631f3, 0x3b6bc2a4, 0x942f50e3, 0xbe93e06b,
+ 0x11d7722c, 0x57c102c7, 0xf8859080, 0xd2392008, 0x7d7db24f,
+ 0x87404118, 0x2804d35f, 0x02b863d7, 0xadfcf190, 0x2db28338,
+ 0x82f6117f, 0xa84aa1f7, 0x070e33b0, 0xfd33c0e7, 0x527752a0,
+ 0x78cbe228, 0xd78f706f, 0xa3260139, 0x0c62937e, 0x26de23f6,
+ 0x899ab1b1, 0x73a742e6, 0xdce3d0a1, 0xf65f6029, 0x591bf26e,
+ 0xd95580c6, 0x76111281, 0x5cada209, 0xf3e9304e, 0x09d4c319,
+ 0xa690515e, 0x8c2ce1d6, 0x23687391, 0xcafc06f4, 0x65b894b3,
+ 0x4f04243b, 0xe040b67c, 0x1a7d452b, 0xb539d76c, 0x9f8567e4,
+ 0x30c1f5a3, 0xb08f870b, 0x1fcb154c, 0x3577a5c4, 0x9a333783,
+ 0x600ec4d4, 0xcf4a5693, 0xe5f6e61b, 0x4ab2745c, 0x3e1b050a,
+ 0x915f974d, 0xbbe327c5, 0x14a7b582, 0xee9a46d5, 0x41ded492,
+ 0x6b62641a, 0xc426f65d, 0x446884f5, 0xeb2c16b2, 0xc190a63a,
+ 0x6ed4347d, 0x94e9c72a, 0x3bad556d, 0x1111e5e5, 0xbe5577a2,
+ 0xf8430749, 0x5707950e, 0x7dbb2586, 0xd2ffb7c1, 0x28c24496,
+ 0x8786d6d1, 0xad3a6659, 0x027ef41e, 0x823086b6, 0x2d7414f1,
+ 0x07c8a479, 0xa88c363e, 0x52b1c569, 0xfdf5572e, 0xd749e7a6,
+ 0x780d75e1, 0x0ca404b7, 0xa3e096f0, 0x895c2678, 0x2618b43f,
+ 0xdc254768, 0x7361d52f, 0x59dd65a7, 0xf699f7e0, 0x76d78548,
+ 0xd993170f, 0xf32fa787, 0x5c6b35c0, 0xa656c697, 0x091254d0,
+ 0x23aee458, 0x8cea761f, 0xaf82058e, 0x00c697c9, 0x2a7a2741,
+ 0x853eb506, 0x7f034651, 0xd047d416, 0xfafb649e, 0x55bff6d9,
+ 0xd5f18471, 0x7ab51636, 0x5009a6be, 0xff4d34f9, 0x0570c7ae,
+ 0xaa3455e9, 0x8088e561, 0x2fcc7726, 0x5b650670, 0xf4219437,
+ 0xde9d24bf, 0x71d9b6f8, 0x8be445af, 0x24a0d7e8, 0x0e1c6760,
+ 0xa158f527, 0x2116878f, 0x8e5215c8, 0xa4eea540, 0x0baa3707,
+ 0xf197c450, 0x5ed35617, 0x746fe69f, 0xdb2b74d8, 0x9d3d0433,
+ 0x32799674, 0x18c526fc, 0xb781b4bb, 0x4dbc47ec, 0xe2f8d5ab,
+ 0xc8446523, 0x6700f764, 0xe74e85cc, 0x480a178b, 0x62b6a703,
+ 0xcdf23544, 0x37cfc613, 0x988b5454, 0xb237e4dc, 0x1d73769b,
+ 0x69da07cd, 0xc69e958a, 0xec222502, 0x4366b745, 0xb95b4412,
+ 0x161fd655, 0x3ca366dd, 0x93e7f49a, 0x13a98632, 0xbced1475,
+ 0x9651a4fd, 0x391536ba, 0xc328c5ed, 0x6c6c57aa, 0x46d0e722,
+ 0xe9947565},
+ {0x00000000, 0x4e890ba9, 0x9d121752, 0xd39b1cfb, 0xe15528e5,
+ 0xafdc234c, 0x7c473fb7, 0x32ce341e, 0x19db578b, 0x57525c22,
+ 0x84c940d9, 0xca404b70, 0xf88e7f6e, 0xb60774c7, 0x659c683c,
+ 0x2b156395, 0x33b6af16, 0x7d3fa4bf, 0xaea4b844, 0xe02db3ed,
+ 0xd2e387f3, 0x9c6a8c5a, 0x4ff190a1, 0x01789b08, 0x2a6df89d,
+ 0x64e4f334, 0xb77fefcf, 0xf9f6e466, 0xcb38d078, 0x85b1dbd1,
+ 0x562ac72a, 0x18a3cc83, 0x676d5e2c, 0x29e45585, 0xfa7f497e,
+ 0xb4f642d7, 0x863876c9, 0xc8b17d60, 0x1b2a619b, 0x55a36a32,
+ 0x7eb609a7, 0x303f020e, 0xe3a41ef5, 0xad2d155c, 0x9fe32142,
+ 0xd16a2aeb, 0x02f13610, 0x4c783db9, 0x54dbf13a, 0x1a52fa93,
+ 0xc9c9e668, 0x8740edc1, 0xb58ed9df, 0xfb07d276, 0x289cce8d,
+ 0x6615c524, 0x4d00a6b1, 0x0389ad18, 0xd012b1e3, 0x9e9bba4a,
+ 0xac558e54, 0xe2dc85fd, 0x31479906, 0x7fce92af, 0xcedabc58,
+ 0x8053b7f1, 0x53c8ab0a, 0x1d41a0a3, 0x2f8f94bd, 0x61069f14,
+ 0xb29d83ef, 0xfc148846, 0xd701ebd3, 0x9988e07a, 0x4a13fc81,
+ 0x049af728, 0x3654c336, 0x78ddc89f, 0xab46d464, 0xe5cfdfcd,
+ 0xfd6c134e, 0xb3e518e7, 0x607e041c, 0x2ef70fb5, 0x1c393bab,
+ 0x52b03002, 0x812b2cf9, 0xcfa22750, 0xe4b744c5, 0xaa3e4f6c,
+ 0x79a55397, 0x372c583e, 0x05e26c20, 0x4b6b6789, 0x98f07b72,
+ 0xd67970db, 0xa9b7e274, 0xe73ee9dd, 0x34a5f526, 0x7a2cfe8f,
+ 0x48e2ca91, 0x066bc138, 0xd5f0ddc3, 0x9b79d66a, 0xb06cb5ff,
+ 0xfee5be56, 0x2d7ea2ad, 0x63f7a904, 0x51399d1a, 0x1fb096b3,
+ 0xcc2b8a48, 0x82a281e1, 0x9a014d62, 0xd48846cb, 0x07135a30,
+ 0x499a5199, 0x7b546587, 0x35dd6e2e, 0xe64672d5, 0xa8cf797c,
+ 0x83da1ae9, 0xcd531140, 0x1ec80dbb, 0x50410612, 0x628f320c,
+ 0x2c0639a5, 0xff9d255e, 0xb1142ef7, 0x46c47ef1, 0x084d7558,
+ 0xdbd669a3, 0x955f620a, 0xa7915614, 0xe9185dbd, 0x3a834146,
+ 0x740a4aef, 0x5f1f297a, 0x119622d3, 0xc20d3e28, 0x8c843581,
+ 0xbe4a019f, 0xf0c30a36, 0x235816cd, 0x6dd11d64, 0x7572d1e7,
+ 0x3bfbda4e, 0xe860c6b5, 0xa6e9cd1c, 0x9427f902, 0xdaaef2ab,
+ 0x0935ee50, 0x47bce5f9, 0x6ca9866c, 0x22208dc5, 0xf1bb913e,
+ 0xbf329a97, 0x8dfcae89, 0xc375a520, 0x10eeb9db, 0x5e67b272,
+ 0x21a920dd, 0x6f202b74, 0xbcbb378f, 0xf2323c26, 0xc0fc0838,
+ 0x8e750391, 0x5dee1f6a, 0x136714c3, 0x38727756, 0x76fb7cff,
+ 0xa5606004, 0xebe96bad, 0xd9275fb3, 0x97ae541a, 0x443548e1,
+ 0x0abc4348, 0x121f8fcb, 0x5c968462, 0x8f0d9899, 0xc1849330,
+ 0xf34aa72e, 0xbdc3ac87, 0x6e58b07c, 0x20d1bbd5, 0x0bc4d840,
+ 0x454dd3e9, 0x96d6cf12, 0xd85fc4bb, 0xea91f0a5, 0xa418fb0c,
+ 0x7783e7f7, 0x390aec5e, 0x881ec2a9, 0xc697c900, 0x150cd5fb,
+ 0x5b85de52, 0x694bea4c, 0x27c2e1e5, 0xf459fd1e, 0xbad0f6b7,
+ 0x91c59522, 0xdf4c9e8b, 0x0cd78270, 0x425e89d9, 0x7090bdc7,
+ 0x3e19b66e, 0xed82aa95, 0xa30ba13c, 0xbba86dbf, 0xf5216616,
+ 0x26ba7aed, 0x68337144, 0x5afd455a, 0x14744ef3, 0xc7ef5208,
+ 0x896659a1, 0xa2733a34, 0xecfa319d, 0x3f612d66, 0x71e826cf,
+ 0x432612d1, 0x0daf1978, 0xde340583, 0x90bd0e2a, 0xef739c85,
+ 0xa1fa972c, 0x72618bd7, 0x3ce8807e, 0x0e26b460, 0x40afbfc9,
+ 0x9334a332, 0xddbda89b, 0xf6a8cb0e, 0xb821c0a7, 0x6bbadc5c,
+ 0x2533d7f5, 0x17fde3eb, 0x5974e842, 0x8aeff4b9, 0xc466ff10,
+ 0xdcc53393, 0x924c383a, 0x41d724c1, 0x0f5e2f68, 0x3d901b76,
+ 0x731910df, 0xa0820c24, 0xee0b078d, 0xc51e6418, 0x8b976fb1,
+ 0x580c734a, 0x168578e3, 0x244b4cfd, 0x6ac24754, 0xb9595baf,
+ 0xf7d05006},
+ {0x00000000, 0x8d88fde2, 0xc060fd85, 0x4de80067, 0x5bb0fd4b,
+ 0xd63800a9, 0x9bd000ce, 0x1658fd2c, 0xb761fa96, 0x3ae90774,
+ 0x77010713, 0xfa89faf1, 0xecd107dd, 0x6159fa3f, 0x2cb1fa58,
+ 0xa13907ba, 0xb5b2f36d, 0x383a0e8f, 0x75d20ee8, 0xf85af30a,
+ 0xee020e26, 0x638af3c4, 0x2e62f3a3, 0xa3ea0e41, 0x02d309fb,
+ 0x8f5bf419, 0xc2b3f47e, 0x4f3b099c, 0x5963f4b0, 0xd4eb0952,
+ 0x99030935, 0x148bf4d7, 0xb014e09b, 0x3d9c1d79, 0x70741d1e,
+ 0xfdfce0fc, 0xeba41dd0, 0x662ce032, 0x2bc4e055, 0xa64c1db7,
+ 0x07751a0d, 0x8afde7ef, 0xc715e788, 0x4a9d1a6a, 0x5cc5e746,
+ 0xd14d1aa4, 0x9ca51ac3, 0x112de721, 0x05a613f6, 0x882eee14,
+ 0xc5c6ee73, 0x484e1391, 0x5e16eebd, 0xd39e135f, 0x9e761338,
+ 0x13feeeda, 0xb2c7e960, 0x3f4f1482, 0x72a714e5, 0xff2fe907,
+ 0xe977142b, 0x64ffe9c9, 0x2917e9ae, 0xa49f144c, 0xbb58c777,
+ 0x36d03a95, 0x7b383af2, 0xf6b0c710, 0xe0e83a3c, 0x6d60c7de,
+ 0x2088c7b9, 0xad003a5b, 0x0c393de1, 0x81b1c003, 0xcc59c064,
+ 0x41d13d86, 0x5789c0aa, 0xda013d48, 0x97e93d2f, 0x1a61c0cd,
+ 0x0eea341a, 0x8362c9f8, 0xce8ac99f, 0x4302347d, 0x555ac951,
+ 0xd8d234b3, 0x953a34d4, 0x18b2c936, 0xb98bce8c, 0x3403336e,
+ 0x79eb3309, 0xf463ceeb, 0xe23b33c7, 0x6fb3ce25, 0x225bce42,
+ 0xafd333a0, 0x0b4c27ec, 0x86c4da0e, 0xcb2cda69, 0x46a4278b,
+ 0x50fcdaa7, 0xdd742745, 0x909c2722, 0x1d14dac0, 0xbc2ddd7a,
+ 0x31a52098, 0x7c4d20ff, 0xf1c5dd1d, 0xe79d2031, 0x6a15ddd3,
+ 0x27fdddb4, 0xaa752056, 0xbefed481, 0x33762963, 0x7e9e2904,
+ 0xf316d4e6, 0xe54e29ca, 0x68c6d428, 0x252ed44f, 0xa8a629ad,
+ 0x099f2e17, 0x8417d3f5, 0xc9ffd392, 0x44772e70, 0x522fd35c,
+ 0xdfa72ebe, 0x924f2ed9, 0x1fc7d33b, 0xadc088af, 0x2048754d,
+ 0x6da0752a, 0xe02888c8, 0xf67075e4, 0x7bf88806, 0x36108861,
+ 0xbb987583, 0x1aa17239, 0x97298fdb, 0xdac18fbc, 0x5749725e,
+ 0x41118f72, 0xcc997290, 0x817172f7, 0x0cf98f15, 0x18727bc2,
+ 0x95fa8620, 0xd8128647, 0x559a7ba5, 0x43c28689, 0xce4a7b6b,
+ 0x83a27b0c, 0x0e2a86ee, 0xaf138154, 0x229b7cb6, 0x6f737cd1,
+ 0xe2fb8133, 0xf4a37c1f, 0x792b81fd, 0x34c3819a, 0xb94b7c78,
+ 0x1dd46834, 0x905c95d6, 0xddb495b1, 0x503c6853, 0x4664957f,
+ 0xcbec689d, 0x860468fa, 0x0b8c9518, 0xaab592a2, 0x273d6f40,
+ 0x6ad56f27, 0xe75d92c5, 0xf1056fe9, 0x7c8d920b, 0x3165926c,
+ 0xbced6f8e, 0xa8669b59, 0x25ee66bb, 0x680666dc, 0xe58e9b3e,
+ 0xf3d66612, 0x7e5e9bf0, 0x33b69b97, 0xbe3e6675, 0x1f0761cf,
+ 0x928f9c2d, 0xdf679c4a, 0x52ef61a8, 0x44b79c84, 0xc93f6166,
+ 0x84d76101, 0x095f9ce3, 0x16984fd8, 0x9b10b23a, 0xd6f8b25d,
+ 0x5b704fbf, 0x4d28b293, 0xc0a04f71, 0x8d484f16, 0x00c0b2f4,
+ 0xa1f9b54e, 0x2c7148ac, 0x619948cb, 0xec11b529, 0xfa494805,
+ 0x77c1b5e7, 0x3a29b580, 0xb7a14862, 0xa32abcb5, 0x2ea24157,
+ 0x634a4130, 0xeec2bcd2, 0xf89a41fe, 0x7512bc1c, 0x38fabc7b,
+ 0xb5724199, 0x144b4623, 0x99c3bbc1, 0xd42bbba6, 0x59a34644,
+ 0x4ffbbb68, 0xc273468a, 0x8f9b46ed, 0x0213bb0f, 0xa68caf43,
+ 0x2b0452a1, 0x66ec52c6, 0xeb64af24, 0xfd3c5208, 0x70b4afea,
+ 0x3d5caf8d, 0xb0d4526f, 0x11ed55d5, 0x9c65a837, 0xd18da850,
+ 0x5c0555b2, 0x4a5da89e, 0xc7d5557c, 0x8a3d551b, 0x07b5a8f9,
+ 0x133e5c2e, 0x9eb6a1cc, 0xd35ea1ab, 0x5ed65c49, 0x488ea165,
+ 0xc5065c87, 0x88ee5ce0, 0x0566a102, 0xa45fa6b8, 0x29d75b5a,
+ 0x643f5b3d, 0xe9b7a6df, 0xffef5bf3, 0x7267a611, 0x3f8fa676,
+ 0xb2075b94},
+ {0x00000000, 0x80f0171f, 0xda91287f, 0x5a613f60, 0x6e5356bf,
+ 0xeea341a0, 0xb4c27ec0, 0x343269df, 0xdca6ad7e, 0x5c56ba61,
+ 0x06378501, 0x86c7921e, 0xb2f5fbc1, 0x3205ecde, 0x6864d3be,
+ 0xe894c4a1, 0x623c5cbd, 0xe2cc4ba2, 0xb8ad74c2, 0x385d63dd,
+ 0x0c6f0a02, 0x8c9f1d1d, 0xd6fe227d, 0x560e3562, 0xbe9af1c3,
+ 0x3e6ae6dc, 0x640bd9bc, 0xe4fbcea3, 0xd0c9a77c, 0x5039b063,
+ 0x0a588f03, 0x8aa8981c, 0xc478b97a, 0x4488ae65, 0x1ee99105,
+ 0x9e19861a, 0xaa2befc5, 0x2adbf8da, 0x70bac7ba, 0xf04ad0a5,
+ 0x18de1404, 0x982e031b, 0xc24f3c7b, 0x42bf2b64, 0x768d42bb,
+ 0xf67d55a4, 0xac1c6ac4, 0x2cec7ddb, 0xa644e5c7, 0x26b4f2d8,
+ 0x7cd5cdb8, 0xfc25daa7, 0xc817b378, 0x48e7a467, 0x12869b07,
+ 0x92768c18, 0x7ae248b9, 0xfa125fa6, 0xa07360c6, 0x208377d9,
+ 0x14b11e06, 0x94410919, 0xce203679, 0x4ed02166, 0x538074b5,
+ 0xd37063aa, 0x89115cca, 0x09e14bd5, 0x3dd3220a, 0xbd233515,
+ 0xe7420a75, 0x67b21d6a, 0x8f26d9cb, 0x0fd6ced4, 0x55b7f1b4,
+ 0xd547e6ab, 0xe1758f74, 0x6185986b, 0x3be4a70b, 0xbb14b014,
+ 0x31bc2808, 0xb14c3f17, 0xeb2d0077, 0x6bdd1768, 0x5fef7eb7,
+ 0xdf1f69a8, 0x857e56c8, 0x058e41d7, 0xed1a8576, 0x6dea9269,
+ 0x378bad09, 0xb77bba16, 0x8349d3c9, 0x03b9c4d6, 0x59d8fbb6,
+ 0xd928eca9, 0x97f8cdcf, 0x1708dad0, 0x4d69e5b0, 0xcd99f2af,
+ 0xf9ab9b70, 0x795b8c6f, 0x233ab30f, 0xa3caa410, 0x4b5e60b1,
+ 0xcbae77ae, 0x91cf48ce, 0x113f5fd1, 0x250d360e, 0xa5fd2111,
+ 0xff9c1e71, 0x7f6c096e, 0xf5c49172, 0x7534866d, 0x2f55b90d,
+ 0xafa5ae12, 0x9b97c7cd, 0x1b67d0d2, 0x4106efb2, 0xc1f6f8ad,
+ 0x29623c0c, 0xa9922b13, 0xf3f31473, 0x7303036c, 0x47316ab3,
+ 0xc7c17dac, 0x9da042cc, 0x1d5055d3, 0xa700e96a, 0x27f0fe75,
+ 0x7d91c115, 0xfd61d60a, 0xc953bfd5, 0x49a3a8ca, 0x13c297aa,
+ 0x933280b5, 0x7ba64414, 0xfb56530b, 0xa1376c6b, 0x21c77b74,
+ 0x15f512ab, 0x950505b4, 0xcf643ad4, 0x4f942dcb, 0xc53cb5d7,
+ 0x45cca2c8, 0x1fad9da8, 0x9f5d8ab7, 0xab6fe368, 0x2b9ff477,
+ 0x71fecb17, 0xf10edc08, 0x199a18a9, 0x996a0fb6, 0xc30b30d6,
+ 0x43fb27c9, 0x77c94e16, 0xf7395909, 0xad586669, 0x2da87176,
+ 0x63785010, 0xe388470f, 0xb9e9786f, 0x39196f70, 0x0d2b06af,
+ 0x8ddb11b0, 0xd7ba2ed0, 0x574a39cf, 0xbfdefd6e, 0x3f2eea71,
+ 0x654fd511, 0xe5bfc20e, 0xd18dabd1, 0x517dbcce, 0x0b1c83ae,
+ 0x8bec94b1, 0x01440cad, 0x81b41bb2, 0xdbd524d2, 0x5b2533cd,
+ 0x6f175a12, 0xefe74d0d, 0xb586726d, 0x35766572, 0xdde2a1d3,
+ 0x5d12b6cc, 0x077389ac, 0x87839eb3, 0xb3b1f76c, 0x3341e073,
+ 0x6920df13, 0xe9d0c80c, 0xf4809ddf, 0x74708ac0, 0x2e11b5a0,
+ 0xaee1a2bf, 0x9ad3cb60, 0x1a23dc7f, 0x4042e31f, 0xc0b2f400,
+ 0x282630a1, 0xa8d627be, 0xf2b718de, 0x72470fc1, 0x4675661e,
+ 0xc6857101, 0x9ce44e61, 0x1c14597e, 0x96bcc162, 0x164cd67d,
+ 0x4c2de91d, 0xccddfe02, 0xf8ef97dd, 0x781f80c2, 0x227ebfa2,
+ 0xa28ea8bd, 0x4a1a6c1c, 0xcaea7b03, 0x908b4463, 0x107b537c,
+ 0x24493aa3, 0xa4b92dbc, 0xfed812dc, 0x7e2805c3, 0x30f824a5,
+ 0xb00833ba, 0xea690cda, 0x6a991bc5, 0x5eab721a, 0xde5b6505,
+ 0x843a5a65, 0x04ca4d7a, 0xec5e89db, 0x6cae9ec4, 0x36cfa1a4,
+ 0xb63fb6bb, 0x820ddf64, 0x02fdc87b, 0x589cf71b, 0xd86ce004,
+ 0x52c47818, 0xd2346f07, 0x88555067, 0x08a54778, 0x3c972ea7,
+ 0xbc6739b8, 0xe60606d8, 0x66f611c7, 0x8e62d566, 0x0e92c279,
+ 0x54f3fd19, 0xd403ea06, 0xe03183d9, 0x60c194c6, 0x3aa0aba6,
+ 0xba50bcb9},
+ {0x00000000, 0x9570d495, 0xf190af6b, 0x64e07bfe, 0x38505897,
+ 0xad208c02, 0xc9c0f7fc, 0x5cb02369, 0x70a0b12e, 0xe5d065bb,
+ 0x81301e45, 0x1440cad0, 0x48f0e9b9, 0xdd803d2c, 0xb96046d2,
+ 0x2c109247, 0xe141625c, 0x7431b6c9, 0x10d1cd37, 0x85a119a2,
+ 0xd9113acb, 0x4c61ee5e, 0x288195a0, 0xbdf14135, 0x91e1d372,
+ 0x049107e7, 0x60717c19, 0xf501a88c, 0xa9b18be5, 0x3cc15f70,
+ 0x5821248e, 0xcd51f01b, 0x19f3c2f9, 0x8c83166c, 0xe8636d92,
+ 0x7d13b907, 0x21a39a6e, 0xb4d34efb, 0xd0333505, 0x4543e190,
+ 0x695373d7, 0xfc23a742, 0x98c3dcbc, 0x0db30829, 0x51032b40,
+ 0xc473ffd5, 0xa093842b, 0x35e350be, 0xf8b2a0a5, 0x6dc27430,
+ 0x09220fce, 0x9c52db5b, 0xc0e2f832, 0x55922ca7, 0x31725759,
+ 0xa40283cc, 0x8812118b, 0x1d62c51e, 0x7982bee0, 0xecf26a75,
+ 0xb042491c, 0x25329d89, 0x41d2e677, 0xd4a232e2, 0x33e785f2,
+ 0xa6975167, 0xc2772a99, 0x5707fe0c, 0x0bb7dd65, 0x9ec709f0,
+ 0xfa27720e, 0x6f57a69b, 0x434734dc, 0xd637e049, 0xb2d79bb7,
+ 0x27a74f22, 0x7b176c4b, 0xee67b8de, 0x8a87c320, 0x1ff717b5,
+ 0xd2a6e7ae, 0x47d6333b, 0x233648c5, 0xb6469c50, 0xeaf6bf39,
+ 0x7f866bac, 0x1b661052, 0x8e16c4c7, 0xa2065680, 0x37768215,
+ 0x5396f9eb, 0xc6e62d7e, 0x9a560e17, 0x0f26da82, 0x6bc6a17c,
+ 0xfeb675e9, 0x2a14470b, 0xbf64939e, 0xdb84e860, 0x4ef43cf5,
+ 0x12441f9c, 0x8734cb09, 0xe3d4b0f7, 0x76a46462, 0x5ab4f625,
+ 0xcfc422b0, 0xab24594e, 0x3e548ddb, 0x62e4aeb2, 0xf7947a27,
+ 0x937401d9, 0x0604d54c, 0xcb552557, 0x5e25f1c2, 0x3ac58a3c,
+ 0xafb55ea9, 0xf3057dc0, 0x6675a955, 0x0295d2ab, 0x97e5063e,
+ 0xbbf59479, 0x2e8540ec, 0x4a653b12, 0xdf15ef87, 0x83a5ccee,
+ 0x16d5187b, 0x72356385, 0xe745b710, 0x67cf0be4, 0xf2bfdf71,
+ 0x965fa48f, 0x032f701a, 0x5f9f5373, 0xcaef87e6, 0xae0ffc18,
+ 0x3b7f288d, 0x176fbaca, 0x821f6e5f, 0xe6ff15a1, 0x738fc134,
+ 0x2f3fe25d, 0xba4f36c8, 0xdeaf4d36, 0x4bdf99a3, 0x868e69b8,
+ 0x13febd2d, 0x771ec6d3, 0xe26e1246, 0xbede312f, 0x2baee5ba,
+ 0x4f4e9e44, 0xda3e4ad1, 0xf62ed896, 0x635e0c03, 0x07be77fd,
+ 0x92cea368, 0xce7e8001, 0x5b0e5494, 0x3fee2f6a, 0xaa9efbff,
+ 0x7e3cc91d, 0xeb4c1d88, 0x8fac6676, 0x1adcb2e3, 0x466c918a,
+ 0xd31c451f, 0xb7fc3ee1, 0x228cea74, 0x0e9c7833, 0x9becaca6,
+ 0xff0cd758, 0x6a7c03cd, 0x36cc20a4, 0xa3bcf431, 0xc75c8fcf,
+ 0x522c5b5a, 0x9f7dab41, 0x0a0d7fd4, 0x6eed042a, 0xfb9dd0bf,
+ 0xa72df3d6, 0x325d2743, 0x56bd5cbd, 0xc3cd8828, 0xefdd1a6f,
+ 0x7aadcefa, 0x1e4db504, 0x8b3d6191, 0xd78d42f8, 0x42fd966d,
+ 0x261ded93, 0xb36d3906, 0x54288e16, 0xc1585a83, 0xa5b8217d,
+ 0x30c8f5e8, 0x6c78d681, 0xf9080214, 0x9de879ea, 0x0898ad7f,
+ 0x24883f38, 0xb1f8ebad, 0xd5189053, 0x406844c6, 0x1cd867af,
+ 0x89a8b33a, 0xed48c8c4, 0x78381c51, 0xb569ec4a, 0x201938df,
+ 0x44f94321, 0xd18997b4, 0x8d39b4dd, 0x18496048, 0x7ca91bb6,
+ 0xe9d9cf23, 0xc5c95d64, 0x50b989f1, 0x3459f20f, 0xa129269a,
+ 0xfd9905f3, 0x68e9d166, 0x0c09aa98, 0x99797e0d, 0x4ddb4cef,
+ 0xd8ab987a, 0xbc4be384, 0x293b3711, 0x758b1478, 0xe0fbc0ed,
+ 0x841bbb13, 0x116b6f86, 0x3d7bfdc1, 0xa80b2954, 0xcceb52aa,
+ 0x599b863f, 0x052ba556, 0x905b71c3, 0xf4bb0a3d, 0x61cbdea8,
+ 0xac9a2eb3, 0x39eafa26, 0x5d0a81d8, 0xc87a554d, 0x94ca7624,
+ 0x01baa2b1, 0x655ad94f, 0xf02a0dda, 0xdc3a9f9d, 0x494a4b08,
+ 0x2daa30f6, 0xb8dae463, 0xe46ac70a, 0x711a139f, 0x15fa6861,
+ 0x808abcf4},
+ {0x00000000, 0xcf9e17c8, 0x444d29d1, 0x8bd33e19, 0x889a53a2,
+ 0x4704446a, 0xccd77a73, 0x03496dbb, 0xca45a105, 0x05dbb6cd,
+ 0x8e0888d4, 0x41969f1c, 0x42dff2a7, 0x8d41e56f, 0x0692db76,
+ 0xc90cccbe, 0x4ffa444b, 0x80645383, 0x0bb76d9a, 0xc4297a52,
+ 0xc76017e9, 0x08fe0021, 0x832d3e38, 0x4cb329f0, 0x85bfe54e,
+ 0x4a21f286, 0xc1f2cc9f, 0x0e6cdb57, 0x0d25b6ec, 0xc2bba124,
+ 0x49689f3d, 0x86f688f5, 0x9ff48896, 0x506a9f5e, 0xdbb9a147,
+ 0x1427b68f, 0x176edb34, 0xd8f0ccfc, 0x5323f2e5, 0x9cbde52d,
+ 0x55b12993, 0x9a2f3e5b, 0x11fc0042, 0xde62178a, 0xdd2b7a31,
+ 0x12b56df9, 0x996653e0, 0x56f84428, 0xd00eccdd, 0x1f90db15,
+ 0x9443e50c, 0x5bddf2c4, 0x58949f7f, 0x970a88b7, 0x1cd9b6ae,
+ 0xd347a166, 0x1a4b6dd8, 0xd5d57a10, 0x5e064409, 0x919853c1,
+ 0x92d13e7a, 0x5d4f29b2, 0xd69c17ab, 0x19020063, 0xe498176d,
+ 0x2b0600a5, 0xa0d53ebc, 0x6f4b2974, 0x6c0244cf, 0xa39c5307,
+ 0x284f6d1e, 0xe7d17ad6, 0x2eddb668, 0xe143a1a0, 0x6a909fb9,
+ 0xa50e8871, 0xa647e5ca, 0x69d9f202, 0xe20acc1b, 0x2d94dbd3,
+ 0xab625326, 0x64fc44ee, 0xef2f7af7, 0x20b16d3f, 0x23f80084,
+ 0xec66174c, 0x67b52955, 0xa82b3e9d, 0x6127f223, 0xaeb9e5eb,
+ 0x256adbf2, 0xeaf4cc3a, 0xe9bda181, 0x2623b649, 0xadf08850,
+ 0x626e9f98, 0x7b6c9ffb, 0xb4f28833, 0x3f21b62a, 0xf0bfa1e2,
+ 0xf3f6cc59, 0x3c68db91, 0xb7bbe588, 0x7825f240, 0xb1293efe,
+ 0x7eb72936, 0xf564172f, 0x3afa00e7, 0x39b36d5c, 0xf62d7a94,
+ 0x7dfe448d, 0xb2605345, 0x3496dbb0, 0xfb08cc78, 0x70dbf261,
+ 0xbf45e5a9, 0xbc0c8812, 0x73929fda, 0xf841a1c3, 0x37dfb60b,
+ 0xfed37ab5, 0x314d6d7d, 0xba9e5364, 0x750044ac, 0x76492917,
+ 0xb9d73edf, 0x320400c6, 0xfd9a170e, 0x1241289b, 0xdddf3f53,
+ 0x560c014a, 0x99921682, 0x9adb7b39, 0x55456cf1, 0xde9652e8,
+ 0x11084520, 0xd804899e, 0x179a9e56, 0x9c49a04f, 0x53d7b787,
+ 0x509eda3c, 0x9f00cdf4, 0x14d3f3ed, 0xdb4de425, 0x5dbb6cd0,
+ 0x92257b18, 0x19f64501, 0xd66852c9, 0xd5213f72, 0x1abf28ba,
+ 0x916c16a3, 0x5ef2016b, 0x97fecdd5, 0x5860da1d, 0xd3b3e404,
+ 0x1c2df3cc, 0x1f649e77, 0xd0fa89bf, 0x5b29b7a6, 0x94b7a06e,
+ 0x8db5a00d, 0x422bb7c5, 0xc9f889dc, 0x06669e14, 0x052ff3af,
+ 0xcab1e467, 0x4162da7e, 0x8efccdb6, 0x47f00108, 0x886e16c0,
+ 0x03bd28d9, 0xcc233f11, 0xcf6a52aa, 0x00f44562, 0x8b277b7b,
+ 0x44b96cb3, 0xc24fe446, 0x0dd1f38e, 0x8602cd97, 0x499cda5f,
+ 0x4ad5b7e4, 0x854ba02c, 0x0e989e35, 0xc10689fd, 0x080a4543,
+ 0xc794528b, 0x4c476c92, 0x83d97b5a, 0x809016e1, 0x4f0e0129,
+ 0xc4dd3f30, 0x0b4328f8, 0xf6d93ff6, 0x3947283e, 0xb2941627,
+ 0x7d0a01ef, 0x7e436c54, 0xb1dd7b9c, 0x3a0e4585, 0xf590524d,
+ 0x3c9c9ef3, 0xf302893b, 0x78d1b722, 0xb74fa0ea, 0xb406cd51,
+ 0x7b98da99, 0xf04be480, 0x3fd5f348, 0xb9237bbd, 0x76bd6c75,
+ 0xfd6e526c, 0x32f045a4, 0x31b9281f, 0xfe273fd7, 0x75f401ce,
+ 0xba6a1606, 0x7366dab8, 0xbcf8cd70, 0x372bf369, 0xf8b5e4a1,
+ 0xfbfc891a, 0x34629ed2, 0xbfb1a0cb, 0x702fb703, 0x692db760,
+ 0xa6b3a0a8, 0x2d609eb1, 0xe2fe8979, 0xe1b7e4c2, 0x2e29f30a,
+ 0xa5facd13, 0x6a64dadb, 0xa3681665, 0x6cf601ad, 0xe7253fb4,
+ 0x28bb287c, 0x2bf245c7, 0xe46c520f, 0x6fbf6c16, 0xa0217bde,
+ 0x26d7f32b, 0xe949e4e3, 0x629adafa, 0xad04cd32, 0xae4da089,
+ 0x61d3b741, 0xea008958, 0x259e9e90, 0xec92522e, 0x230c45e6,
+ 0xa8df7bff, 0x67416c37, 0x6408018c, 0xab961644, 0x2045285d,
+ 0xefdb3f95},
+ {0x00000000, 0x24825136, 0x4904a26c, 0x6d86f35a, 0x920944d8,
+ 0xb68b15ee, 0xdb0de6b4, 0xff8fb782, 0xff638ff1, 0xdbe1dec7,
+ 0xb6672d9d, 0x92e57cab, 0x6d6acb29, 0x49e89a1f, 0x246e6945,
+ 0x00ec3873, 0x25b619a3, 0x01344895, 0x6cb2bbcf, 0x4830eaf9,
+ 0xb7bf5d7b, 0x933d0c4d, 0xfebbff17, 0xda39ae21, 0xdad59652,
+ 0xfe57c764, 0x93d1343e, 0xb7536508, 0x48dcd28a, 0x6c5e83bc,
+ 0x01d870e6, 0x255a21d0, 0x4b6c3346, 0x6fee6270, 0x0268912a,
+ 0x26eac01c, 0xd965779e, 0xfde726a8, 0x9061d5f2, 0xb4e384c4,
+ 0xb40fbcb7, 0x908ded81, 0xfd0b1edb, 0xd9894fed, 0x2606f86f,
+ 0x0284a959, 0x6f025a03, 0x4b800b35, 0x6eda2ae5, 0x4a587bd3,
+ 0x27de8889, 0x035cd9bf, 0xfcd36e3d, 0xd8513f0b, 0xb5d7cc51,
+ 0x91559d67, 0x91b9a514, 0xb53bf422, 0xd8bd0778, 0xfc3f564e,
+ 0x03b0e1cc, 0x2732b0fa, 0x4ab443a0, 0x6e361296, 0x96d8668c,
+ 0xb25a37ba, 0xdfdcc4e0, 0xfb5e95d6, 0x04d12254, 0x20537362,
+ 0x4dd58038, 0x6957d10e, 0x69bbe97d, 0x4d39b84b, 0x20bf4b11,
+ 0x043d1a27, 0xfbb2ada5, 0xdf30fc93, 0xb2b60fc9, 0x96345eff,
+ 0xb36e7f2f, 0x97ec2e19, 0xfa6add43, 0xdee88c75, 0x21673bf7,
+ 0x05e56ac1, 0x6863999b, 0x4ce1c8ad, 0x4c0df0de, 0x688fa1e8,
+ 0x050952b2, 0x218b0384, 0xde04b406, 0xfa86e530, 0x9700166a,
+ 0xb382475c, 0xddb455ca, 0xf93604fc, 0x94b0f7a6, 0xb032a690,
+ 0x4fbd1112, 0x6b3f4024, 0x06b9b37e, 0x223be248, 0x22d7da3b,
+ 0x06558b0d, 0x6bd37857, 0x4f512961, 0xb0de9ee3, 0x945ccfd5,
+ 0xf9da3c8f, 0xdd586db9, 0xf8024c69, 0xdc801d5f, 0xb106ee05,
+ 0x9584bf33, 0x6a0b08b1, 0x4e895987, 0x230faadd, 0x078dfbeb,
+ 0x0761c398, 0x23e392ae, 0x4e6561f4, 0x6ae730c2, 0x95688740,
+ 0xb1ead676, 0xdc6c252c, 0xf8ee741a, 0xf6c1cb59, 0xd2439a6f,
+ 0xbfc56935, 0x9b473803, 0x64c88f81, 0x404adeb7, 0x2dcc2ded,
+ 0x094e7cdb, 0x09a244a8, 0x2d20159e, 0x40a6e6c4, 0x6424b7f2,
+ 0x9bab0070, 0xbf295146, 0xd2afa21c, 0xf62df32a, 0xd377d2fa,
+ 0xf7f583cc, 0x9a737096, 0xbef121a0, 0x417e9622, 0x65fcc714,
+ 0x087a344e, 0x2cf86578, 0x2c145d0b, 0x08960c3d, 0x6510ff67,
+ 0x4192ae51, 0xbe1d19d3, 0x9a9f48e5, 0xf719bbbf, 0xd39bea89,
+ 0xbdadf81f, 0x992fa929, 0xf4a95a73, 0xd02b0b45, 0x2fa4bcc7,
+ 0x0b26edf1, 0x66a01eab, 0x42224f9d, 0x42ce77ee, 0x664c26d8,
+ 0x0bcad582, 0x2f4884b4, 0xd0c73336, 0xf4456200, 0x99c3915a,
+ 0xbd41c06c, 0x981be1bc, 0xbc99b08a, 0xd11f43d0, 0xf59d12e6,
+ 0x0a12a564, 0x2e90f452, 0x43160708, 0x6794563e, 0x67786e4d,
+ 0x43fa3f7b, 0x2e7ccc21, 0x0afe9d17, 0xf5712a95, 0xd1f37ba3,
+ 0xbc7588f9, 0x98f7d9cf, 0x6019add5, 0x449bfce3, 0x291d0fb9,
+ 0x0d9f5e8f, 0xf210e90d, 0xd692b83b, 0xbb144b61, 0x9f961a57,
+ 0x9f7a2224, 0xbbf87312, 0xd67e8048, 0xf2fcd17e, 0x0d7366fc,
+ 0x29f137ca, 0x4477c490, 0x60f595a6, 0x45afb476, 0x612de540,
+ 0x0cab161a, 0x2829472c, 0xd7a6f0ae, 0xf324a198, 0x9ea252c2,
+ 0xba2003f4, 0xbacc3b87, 0x9e4e6ab1, 0xf3c899eb, 0xd74ac8dd,
+ 0x28c57f5f, 0x0c472e69, 0x61c1dd33, 0x45438c05, 0x2b759e93,
+ 0x0ff7cfa5, 0x62713cff, 0x46f36dc9, 0xb97cda4b, 0x9dfe8b7d,
+ 0xf0787827, 0xd4fa2911, 0xd4161162, 0xf0944054, 0x9d12b30e,
+ 0xb990e238, 0x461f55ba, 0x629d048c, 0x0f1bf7d6, 0x2b99a6e0,
+ 0x0ec38730, 0x2a41d606, 0x47c7255c, 0x6345746a, 0x9ccac3e8,
+ 0xb84892de, 0xd5ce6184, 0xf14c30b2, 0xf1a008c1, 0xd52259f7,
+ 0xb8a4aaad, 0x9c26fb9b, 0x63a94c19, 0x472b1d2f, 0x2aadee75,
+ 0x0e2fbf43},
+ {0x00000000, 0x36f290f3, 0x6de521e6, 0x5b17b115, 0xdbca43cc,
+ 0xed38d33f, 0xb62f622a, 0x80ddf2d9, 0x6ce581d9, 0x5a17112a,
+ 0x0100a03f, 0x37f230cc, 0xb72fc215, 0x81dd52e6, 0xdacae3f3,
+ 0xec387300, 0xd9cb03b2, 0xef399341, 0xb42e2254, 0x82dcb2a7,
+ 0x0201407e, 0x34f3d08d, 0x6fe46198, 0x5916f16b, 0xb52e826b,
+ 0x83dc1298, 0xd8cba38d, 0xee39337e, 0x6ee4c1a7, 0x58165154,
+ 0x0301e041, 0x35f370b2, 0x68e70125, 0x5e1591d6, 0x050220c3,
+ 0x33f0b030, 0xb32d42e9, 0x85dfd21a, 0xdec8630f, 0xe83af3fc,
+ 0x040280fc, 0x32f0100f, 0x69e7a11a, 0x5f1531e9, 0xdfc8c330,
+ 0xe93a53c3, 0xb22de2d6, 0x84df7225, 0xb12c0297, 0x87de9264,
+ 0xdcc92371, 0xea3bb382, 0x6ae6415b, 0x5c14d1a8, 0x070360bd,
+ 0x31f1f04e, 0xddc9834e, 0xeb3b13bd, 0xb02ca2a8, 0x86de325b,
+ 0x0603c082, 0x30f15071, 0x6be6e164, 0x5d147197, 0xd1ce024a,
+ 0xe73c92b9, 0xbc2b23ac, 0x8ad9b35f, 0x0a044186, 0x3cf6d175,
+ 0x67e16060, 0x5113f093, 0xbd2b8393, 0x8bd91360, 0xd0cea275,
+ 0xe63c3286, 0x66e1c05f, 0x501350ac, 0x0b04e1b9, 0x3df6714a,
+ 0x080501f8, 0x3ef7910b, 0x65e0201e, 0x5312b0ed, 0xd3cf4234,
+ 0xe53dd2c7, 0xbe2a63d2, 0x88d8f321, 0x64e08021, 0x521210d2,
+ 0x0905a1c7, 0x3ff73134, 0xbf2ac3ed, 0x89d8531e, 0xd2cfe20b,
+ 0xe43d72f8, 0xb929036f, 0x8fdb939c, 0xd4cc2289, 0xe23eb27a,
+ 0x62e340a3, 0x5411d050, 0x0f066145, 0x39f4f1b6, 0xd5cc82b6,
+ 0xe33e1245, 0xb829a350, 0x8edb33a3, 0x0e06c17a, 0x38f45189,
+ 0x63e3e09c, 0x5511706f, 0x60e200dd, 0x5610902e, 0x0d07213b,
+ 0x3bf5b1c8, 0xbb284311, 0x8ddad3e2, 0xd6cd62f7, 0xe03ff204,
+ 0x0c078104, 0x3af511f7, 0x61e2a0e2, 0x57103011, 0xd7cdc2c8,
+ 0xe13f523b, 0xba28e32e, 0x8cda73dd, 0x78ed02d5, 0x4e1f9226,
+ 0x15082333, 0x23fab3c0, 0xa3274119, 0x95d5d1ea, 0xcec260ff,
+ 0xf830f00c, 0x1408830c, 0x22fa13ff, 0x79eda2ea, 0x4f1f3219,
+ 0xcfc2c0c0, 0xf9305033, 0xa227e126, 0x94d571d5, 0xa1260167,
+ 0x97d49194, 0xccc32081, 0xfa31b072, 0x7aec42ab, 0x4c1ed258,
+ 0x1709634d, 0x21fbf3be, 0xcdc380be, 0xfb31104d, 0xa026a158,
+ 0x96d431ab, 0x1609c372, 0x20fb5381, 0x7bece294, 0x4d1e7267,
+ 0x100a03f0, 0x26f89303, 0x7def2216, 0x4b1db2e5, 0xcbc0403c,
+ 0xfd32d0cf, 0xa62561da, 0x90d7f129, 0x7cef8229, 0x4a1d12da,
+ 0x110aa3cf, 0x27f8333c, 0xa725c1e5, 0x91d75116, 0xcac0e003,
+ 0xfc3270f0, 0xc9c10042, 0xff3390b1, 0xa42421a4, 0x92d6b157,
+ 0x120b438e, 0x24f9d37d, 0x7fee6268, 0x491cf29b, 0xa524819b,
+ 0x93d61168, 0xc8c1a07d, 0xfe33308e, 0x7eeec257, 0x481c52a4,
+ 0x130be3b1, 0x25f97342, 0xa923009f, 0x9fd1906c, 0xc4c62179,
+ 0xf234b18a, 0x72e94353, 0x441bd3a0, 0x1f0c62b5, 0x29fef246,
+ 0xc5c68146, 0xf33411b5, 0xa823a0a0, 0x9ed13053, 0x1e0cc28a,
+ 0x28fe5279, 0x73e9e36c, 0x451b739f, 0x70e8032d, 0x461a93de,
+ 0x1d0d22cb, 0x2bffb238, 0xab2240e1, 0x9dd0d012, 0xc6c76107,
+ 0xf035f1f4, 0x1c0d82f4, 0x2aff1207, 0x71e8a312, 0x471a33e1,
+ 0xc7c7c138, 0xf13551cb, 0xaa22e0de, 0x9cd0702d, 0xc1c401ba,
+ 0xf7369149, 0xac21205c, 0x9ad3b0af, 0x1a0e4276, 0x2cfcd285,
+ 0x77eb6390, 0x4119f363, 0xad218063, 0x9bd31090, 0xc0c4a185,
+ 0xf6363176, 0x76ebc3af, 0x4019535c, 0x1b0ee249, 0x2dfc72ba,
+ 0x180f0208, 0x2efd92fb, 0x75ea23ee, 0x4318b31d, 0xc3c541c4,
+ 0xf537d137, 0xae206022, 0x98d2f0d1, 0x74ea83d1, 0x42181322,
+ 0x190fa237, 0x2ffd32c4, 0xaf20c01d, 0x99d250ee, 0xc2c5e1fb,
+ 0xf4377108}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0xf390f23600000000, 0xe621e56d00000000,
+ 0x15b1175b00000000, 0xcc43cadb00000000, 0x3fd338ed00000000,
+ 0x2a622fb600000000, 0xd9f2dd8000000000, 0xd981e56c00000000,
+ 0x2a11175a00000000, 0x3fa0000100000000, 0xcc30f23700000000,
+ 0x15c22fb700000000, 0xe652dd8100000000, 0xf3e3cada00000000,
+ 0x007338ec00000000, 0xb203cbd900000000, 0x419339ef00000000,
+ 0x54222eb400000000, 0xa7b2dc8200000000, 0x7e40010200000000,
+ 0x8dd0f33400000000, 0x9861e46f00000000, 0x6bf1165900000000,
+ 0x6b822eb500000000, 0x9812dc8300000000, 0x8da3cbd800000000,
+ 0x7e3339ee00000000, 0xa7c1e46e00000000, 0x5451165800000000,
+ 0x41e0010300000000, 0xb270f33500000000, 0x2501e76800000000,
+ 0xd691155e00000000, 0xc320020500000000, 0x30b0f03300000000,
+ 0xe9422db300000000, 0x1ad2df8500000000, 0x0f63c8de00000000,
+ 0xfcf33ae800000000, 0xfc80020400000000, 0x0f10f03200000000,
+ 0x1aa1e76900000000, 0xe931155f00000000, 0x30c3c8df00000000,
+ 0xc3533ae900000000, 0xd6e22db200000000, 0x2572df8400000000,
+ 0x97022cb100000000, 0x6492de8700000000, 0x7123c9dc00000000,
+ 0x82b33bea00000000, 0x5b41e66a00000000, 0xa8d1145c00000000,
+ 0xbd60030700000000, 0x4ef0f13100000000, 0x4e83c9dd00000000,
+ 0xbd133beb00000000, 0xa8a22cb000000000, 0x5b32de8600000000,
+ 0x82c0030600000000, 0x7150f13000000000, 0x64e1e66b00000000,
+ 0x9771145d00000000, 0x4a02ced100000000, 0xb9923ce700000000,
+ 0xac232bbc00000000, 0x5fb3d98a00000000, 0x8641040a00000000,
+ 0x75d1f63c00000000, 0x6060e16700000000, 0x93f0135100000000,
+ 0x93832bbd00000000, 0x6013d98b00000000, 0x75a2ced000000000,
+ 0x86323ce600000000, 0x5fc0e16600000000, 0xac50135000000000,
+ 0xb9e1040b00000000, 0x4a71f63d00000000, 0xf801050800000000,
+ 0x0b91f73e00000000, 0x1e20e06500000000, 0xedb0125300000000,
+ 0x3442cfd300000000, 0xc7d23de500000000, 0xd2632abe00000000,
+ 0x21f3d88800000000, 0x2180e06400000000, 0xd210125200000000,
+ 0xc7a1050900000000, 0x3431f73f00000000, 0xedc32abf00000000,
+ 0x1e53d88900000000, 0x0be2cfd200000000, 0xf8723de400000000,
+ 0x6f0329b900000000, 0x9c93db8f00000000, 0x8922ccd400000000,
+ 0x7ab23ee200000000, 0xa340e36200000000, 0x50d0115400000000,
+ 0x4561060f00000000, 0xb6f1f43900000000, 0xb682ccd500000000,
+ 0x45123ee300000000, 0x50a329b800000000, 0xa333db8e00000000,
+ 0x7ac1060e00000000, 0x8951f43800000000, 0x9ce0e36300000000,
+ 0x6f70115500000000, 0xdd00e26000000000, 0x2e90105600000000,
+ 0x3b21070d00000000, 0xc8b1f53b00000000, 0x114328bb00000000,
+ 0xe2d3da8d00000000, 0xf762cdd600000000, 0x04f23fe000000000,
+ 0x0481070c00000000, 0xf711f53a00000000, 0xe2a0e26100000000,
+ 0x1130105700000000, 0xc8c2cdd700000000, 0x3b523fe100000000,
+ 0x2ee328ba00000000, 0xdd73da8c00000000, 0xd502ed7800000000,
+ 0x26921f4e00000000, 0x3323081500000000, 0xc0b3fa2300000000,
+ 0x194127a300000000, 0xead1d59500000000, 0xff60c2ce00000000,
+ 0x0cf030f800000000, 0x0c83081400000000, 0xff13fa2200000000,
+ 0xeaa2ed7900000000, 0x19321f4f00000000, 0xc0c0c2cf00000000,
+ 0x335030f900000000, 0x26e127a200000000, 0xd571d59400000000,
+ 0x670126a100000000, 0x9491d49700000000, 0x8120c3cc00000000,
+ 0x72b031fa00000000, 0xab42ec7a00000000, 0x58d21e4c00000000,
+ 0x4d63091700000000, 0xbef3fb2100000000, 0xbe80c3cd00000000,
+ 0x4d1031fb00000000, 0x58a126a000000000, 0xab31d49600000000,
+ 0x72c3091600000000, 0x8153fb2000000000, 0x94e2ec7b00000000,
+ 0x67721e4d00000000, 0xf0030a1000000000, 0x0393f82600000000,
+ 0x1622ef7d00000000, 0xe5b21d4b00000000, 0x3c40c0cb00000000,
+ 0xcfd032fd00000000, 0xda6125a600000000, 0x29f1d79000000000,
+ 0x2982ef7c00000000, 0xda121d4a00000000, 0xcfa30a1100000000,
+ 0x3c33f82700000000, 0xe5c125a700000000, 0x1651d79100000000,
+ 0x03e0c0ca00000000, 0xf07032fc00000000, 0x4200c1c900000000,
+ 0xb19033ff00000000, 0xa42124a400000000, 0x57b1d69200000000,
+ 0x8e430b1200000000, 0x7dd3f92400000000, 0x6862ee7f00000000,
+ 0x9bf21c4900000000, 0x9b8124a500000000, 0x6811d69300000000,
+ 0x7da0c1c800000000, 0x8e3033fe00000000, 0x57c2ee7e00000000,
+ 0xa4521c4800000000, 0xb1e30b1300000000, 0x4273f92500000000,
+ 0x9f0023a900000000, 0x6c90d19f00000000, 0x7921c6c400000000,
+ 0x8ab134f200000000, 0x5343e97200000000, 0xa0d31b4400000000,
+ 0xb5620c1f00000000, 0x46f2fe2900000000, 0x4681c6c500000000,
+ 0xb51134f300000000, 0xa0a023a800000000, 0x5330d19e00000000,
+ 0x8ac20c1e00000000, 0x7952fe2800000000, 0x6ce3e97300000000,
+ 0x9f731b4500000000, 0x2d03e87000000000, 0xde931a4600000000,
+ 0xcb220d1d00000000, 0x38b2ff2b00000000, 0xe14022ab00000000,
+ 0x12d0d09d00000000, 0x0761c7c600000000, 0xf4f135f000000000,
+ 0xf4820d1c00000000, 0x0712ff2a00000000, 0x12a3e87100000000,
+ 0xe1331a4700000000, 0x38c1c7c700000000, 0xcb5135f100000000,
+ 0xdee022aa00000000, 0x2d70d09c00000000, 0xba01c4c100000000,
+ 0x499136f700000000, 0x5c2021ac00000000, 0xafb0d39a00000000,
+ 0x76420e1a00000000, 0x85d2fc2c00000000, 0x9063eb7700000000,
+ 0x63f3194100000000, 0x638021ad00000000, 0x9010d39b00000000,
+ 0x85a1c4c000000000, 0x763136f600000000, 0xafc3eb7600000000,
+ 0x5c53194000000000, 0x49e20e1b00000000, 0xba72fc2d00000000,
+ 0x08020f1800000000, 0xfb92fd2e00000000, 0xee23ea7500000000,
+ 0x1db3184300000000, 0xc441c5c300000000, 0x37d137f500000000,
+ 0x226020ae00000000, 0xd1f0d29800000000, 0xd183ea7400000000,
+ 0x2213184200000000, 0x37a20f1900000000, 0xc432fd2f00000000,
+ 0x1dc020af00000000, 0xee50d29900000000, 0xfbe1c5c200000000,
+ 0x087137f400000000},
+ {0x0000000000000000, 0x3651822400000000, 0x6ca2044900000000,
+ 0x5af3866d00000000, 0xd844099200000000, 0xee158bb600000000,
+ 0xb4e60ddb00000000, 0x82b78fff00000000, 0xf18f63ff00000000,
+ 0xc7dee1db00000000, 0x9d2d67b600000000, 0xab7ce59200000000,
+ 0x29cb6a6d00000000, 0x1f9ae84900000000, 0x45696e2400000000,
+ 0x7338ec0000000000, 0xa319b62500000000, 0x9548340100000000,
+ 0xcfbbb26c00000000, 0xf9ea304800000000, 0x7b5dbfb700000000,
+ 0x4d0c3d9300000000, 0x17ffbbfe00000000, 0x21ae39da00000000,
+ 0x5296d5da00000000, 0x64c757fe00000000, 0x3e34d19300000000,
+ 0x086553b700000000, 0x8ad2dc4800000000, 0xbc835e6c00000000,
+ 0xe670d80100000000, 0xd0215a2500000000, 0x46336c4b00000000,
+ 0x7062ee6f00000000, 0x2a91680200000000, 0x1cc0ea2600000000,
+ 0x9e7765d900000000, 0xa826e7fd00000000, 0xf2d5619000000000,
+ 0xc484e3b400000000, 0xb7bc0fb400000000, 0x81ed8d9000000000,
+ 0xdb1e0bfd00000000, 0xed4f89d900000000, 0x6ff8062600000000,
+ 0x59a9840200000000, 0x035a026f00000000, 0x350b804b00000000,
+ 0xe52ada6e00000000, 0xd37b584a00000000, 0x8988de2700000000,
+ 0xbfd95c0300000000, 0x3d6ed3fc00000000, 0x0b3f51d800000000,
+ 0x51ccd7b500000000, 0x679d559100000000, 0x14a5b99100000000,
+ 0x22f43bb500000000, 0x7807bdd800000000, 0x4e563ffc00000000,
+ 0xcce1b00300000000, 0xfab0322700000000, 0xa043b44a00000000,
+ 0x9612366e00000000, 0x8c66d89600000000, 0xba375ab200000000,
+ 0xe0c4dcdf00000000, 0xd6955efb00000000, 0x5422d10400000000,
+ 0x6273532000000000, 0x3880d54d00000000, 0x0ed1576900000000,
+ 0x7de9bb6900000000, 0x4bb8394d00000000, 0x114bbf2000000000,
+ 0x271a3d0400000000, 0xa5adb2fb00000000, 0x93fc30df00000000,
+ 0xc90fb6b200000000, 0xff5e349600000000, 0x2f7f6eb300000000,
+ 0x192eec9700000000, 0x43dd6afa00000000, 0x758ce8de00000000,
+ 0xf73b672100000000, 0xc16ae50500000000, 0x9b99636800000000,
+ 0xadc8e14c00000000, 0xdef00d4c00000000, 0xe8a18f6800000000,
+ 0xb252090500000000, 0x84038b2100000000, 0x06b404de00000000,
+ 0x30e586fa00000000, 0x6a16009700000000, 0x5c4782b300000000,
+ 0xca55b4dd00000000, 0xfc0436f900000000, 0xa6f7b09400000000,
+ 0x90a632b000000000, 0x1211bd4f00000000, 0x24403f6b00000000,
+ 0x7eb3b90600000000, 0x48e23b2200000000, 0x3bdad72200000000,
+ 0x0d8b550600000000, 0x5778d36b00000000, 0x6129514f00000000,
+ 0xe39edeb000000000, 0xd5cf5c9400000000, 0x8f3cdaf900000000,
+ 0xb96d58dd00000000, 0x694c02f800000000, 0x5f1d80dc00000000,
+ 0x05ee06b100000000, 0x33bf849500000000, 0xb1080b6a00000000,
+ 0x8759894e00000000, 0xddaa0f2300000000, 0xebfb8d0700000000,
+ 0x98c3610700000000, 0xae92e32300000000, 0xf461654e00000000,
+ 0xc230e76a00000000, 0x4087689500000000, 0x76d6eab100000000,
+ 0x2c256cdc00000000, 0x1a74eef800000000, 0x59cbc1f600000000,
+ 0x6f9a43d200000000, 0x3569c5bf00000000, 0x0338479b00000000,
+ 0x818fc86400000000, 0xb7de4a4000000000, 0xed2dcc2d00000000,
+ 0xdb7c4e0900000000, 0xa844a20900000000, 0x9e15202d00000000,
+ 0xc4e6a64000000000, 0xf2b7246400000000, 0x7000ab9b00000000,
+ 0x465129bf00000000, 0x1ca2afd200000000, 0x2af32df600000000,
+ 0xfad277d300000000, 0xcc83f5f700000000, 0x9670739a00000000,
+ 0xa021f1be00000000, 0x22967e4100000000, 0x14c7fc6500000000,
+ 0x4e347a0800000000, 0x7865f82c00000000, 0x0b5d142c00000000,
+ 0x3d0c960800000000, 0x67ff106500000000, 0x51ae924100000000,
+ 0xd3191dbe00000000, 0xe5489f9a00000000, 0xbfbb19f700000000,
+ 0x89ea9bd300000000, 0x1ff8adbd00000000, 0x29a92f9900000000,
+ 0x735aa9f400000000, 0x450b2bd000000000, 0xc7bca42f00000000,
+ 0xf1ed260b00000000, 0xab1ea06600000000, 0x9d4f224200000000,
+ 0xee77ce4200000000, 0xd8264c6600000000, 0x82d5ca0b00000000,
+ 0xb484482f00000000, 0x3633c7d000000000, 0x006245f400000000,
+ 0x5a91c39900000000, 0x6cc041bd00000000, 0xbce11b9800000000,
+ 0x8ab099bc00000000, 0xd0431fd100000000, 0xe6129df500000000,
+ 0x64a5120a00000000, 0x52f4902e00000000, 0x0807164300000000,
+ 0x3e56946700000000, 0x4d6e786700000000, 0x7b3ffa4300000000,
+ 0x21cc7c2e00000000, 0x179dfe0a00000000, 0x952a71f500000000,
+ 0xa37bf3d100000000, 0xf98875bc00000000, 0xcfd9f79800000000,
+ 0xd5ad196000000000, 0xe3fc9b4400000000, 0xb90f1d2900000000,
+ 0x8f5e9f0d00000000, 0x0de910f200000000, 0x3bb892d600000000,
+ 0x614b14bb00000000, 0x571a969f00000000, 0x24227a9f00000000,
+ 0x1273f8bb00000000, 0x48807ed600000000, 0x7ed1fcf200000000,
+ 0xfc66730d00000000, 0xca37f12900000000, 0x90c4774400000000,
+ 0xa695f56000000000, 0x76b4af4500000000, 0x40e52d6100000000,
+ 0x1a16ab0c00000000, 0x2c47292800000000, 0xaef0a6d700000000,
+ 0x98a124f300000000, 0xc252a29e00000000, 0xf40320ba00000000,
+ 0x873bccba00000000, 0xb16a4e9e00000000, 0xeb99c8f300000000,
+ 0xddc84ad700000000, 0x5f7fc52800000000, 0x692e470c00000000,
+ 0x33ddc16100000000, 0x058c434500000000, 0x939e752b00000000,
+ 0xa5cff70f00000000, 0xff3c716200000000, 0xc96df34600000000,
+ 0x4bda7cb900000000, 0x7d8bfe9d00000000, 0x277878f000000000,
+ 0x1129fad400000000, 0x621116d400000000, 0x544094f000000000,
+ 0x0eb3129d00000000, 0x38e290b900000000, 0xba551f4600000000,
+ 0x8c049d6200000000, 0xd6f71b0f00000000, 0xe0a6992b00000000,
+ 0x3087c30e00000000, 0x06d6412a00000000, 0x5c25c74700000000,
+ 0x6a74456300000000, 0xe8c3ca9c00000000, 0xde9248b800000000,
+ 0x8461ced500000000, 0xb2304cf100000000, 0xc108a0f100000000,
+ 0xf75922d500000000, 0xadaaa4b800000000, 0x9bfb269c00000000,
+ 0x194ca96300000000, 0x2f1d2b4700000000, 0x75eead2a00000000,
+ 0x43bf2f0e00000000},
+ {0x0000000000000000, 0xc8179ecf00000000, 0xd1294d4400000000,
+ 0x193ed38b00000000, 0xa2539a8800000000, 0x6a44044700000000,
+ 0x737ad7cc00000000, 0xbb6d490300000000, 0x05a145ca00000000,
+ 0xcdb6db0500000000, 0xd488088e00000000, 0x1c9f964100000000,
+ 0xa7f2df4200000000, 0x6fe5418d00000000, 0x76db920600000000,
+ 0xbecc0cc900000000, 0x4b44fa4f00000000, 0x8353648000000000,
+ 0x9a6db70b00000000, 0x527a29c400000000, 0xe91760c700000000,
+ 0x2100fe0800000000, 0x383e2d8300000000, 0xf029b34c00000000,
+ 0x4ee5bf8500000000, 0x86f2214a00000000, 0x9fccf2c100000000,
+ 0x57db6c0e00000000, 0xecb6250d00000000, 0x24a1bbc200000000,
+ 0x3d9f684900000000, 0xf588f68600000000, 0x9688f49f00000000,
+ 0x5e9f6a5000000000, 0x47a1b9db00000000, 0x8fb6271400000000,
+ 0x34db6e1700000000, 0xfcccf0d800000000, 0xe5f2235300000000,
+ 0x2de5bd9c00000000, 0x9329b15500000000, 0x5b3e2f9a00000000,
+ 0x4200fc1100000000, 0x8a1762de00000000, 0x317a2bdd00000000,
+ 0xf96db51200000000, 0xe053669900000000, 0x2844f85600000000,
+ 0xddcc0ed000000000, 0x15db901f00000000, 0x0ce5439400000000,
+ 0xc4f2dd5b00000000, 0x7f9f945800000000, 0xb7880a9700000000,
+ 0xaeb6d91c00000000, 0x66a147d300000000, 0xd86d4b1a00000000,
+ 0x107ad5d500000000, 0x0944065e00000000, 0xc153989100000000,
+ 0x7a3ed19200000000, 0xb2294f5d00000000, 0xab179cd600000000,
+ 0x6300021900000000, 0x6d1798e400000000, 0xa500062b00000000,
+ 0xbc3ed5a000000000, 0x74294b6f00000000, 0xcf44026c00000000,
+ 0x07539ca300000000, 0x1e6d4f2800000000, 0xd67ad1e700000000,
+ 0x68b6dd2e00000000, 0xa0a143e100000000, 0xb99f906a00000000,
+ 0x71880ea500000000, 0xcae547a600000000, 0x02f2d96900000000,
+ 0x1bcc0ae200000000, 0xd3db942d00000000, 0x265362ab00000000,
+ 0xee44fc6400000000, 0xf77a2fef00000000, 0x3f6db12000000000,
+ 0x8400f82300000000, 0x4c1766ec00000000, 0x5529b56700000000,
+ 0x9d3e2ba800000000, 0x23f2276100000000, 0xebe5b9ae00000000,
+ 0xf2db6a2500000000, 0x3accf4ea00000000, 0x81a1bde900000000,
+ 0x49b6232600000000, 0x5088f0ad00000000, 0x989f6e6200000000,
+ 0xfb9f6c7b00000000, 0x3388f2b400000000, 0x2ab6213f00000000,
+ 0xe2a1bff000000000, 0x59ccf6f300000000, 0x91db683c00000000,
+ 0x88e5bbb700000000, 0x40f2257800000000, 0xfe3e29b100000000,
+ 0x3629b77e00000000, 0x2f1764f500000000, 0xe700fa3a00000000,
+ 0x5c6db33900000000, 0x947a2df600000000, 0x8d44fe7d00000000,
+ 0x455360b200000000, 0xb0db963400000000, 0x78cc08fb00000000,
+ 0x61f2db7000000000, 0xa9e545bf00000000, 0x12880cbc00000000,
+ 0xda9f927300000000, 0xc3a141f800000000, 0x0bb6df3700000000,
+ 0xb57ad3fe00000000, 0x7d6d4d3100000000, 0x64539eba00000000,
+ 0xac44007500000000, 0x1729497600000000, 0xdf3ed7b900000000,
+ 0xc600043200000000, 0x0e179afd00000000, 0x9b28411200000000,
+ 0x533fdfdd00000000, 0x4a010c5600000000, 0x8216929900000000,
+ 0x397bdb9a00000000, 0xf16c455500000000, 0xe85296de00000000,
+ 0x2045081100000000, 0x9e8904d800000000, 0x569e9a1700000000,
+ 0x4fa0499c00000000, 0x87b7d75300000000, 0x3cda9e5000000000,
+ 0xf4cd009f00000000, 0xedf3d31400000000, 0x25e44ddb00000000,
+ 0xd06cbb5d00000000, 0x187b259200000000, 0x0145f61900000000,
+ 0xc95268d600000000, 0x723f21d500000000, 0xba28bf1a00000000,
+ 0xa3166c9100000000, 0x6b01f25e00000000, 0xd5cdfe9700000000,
+ 0x1dda605800000000, 0x04e4b3d300000000, 0xccf32d1c00000000,
+ 0x779e641f00000000, 0xbf89fad000000000, 0xa6b7295b00000000,
+ 0x6ea0b79400000000, 0x0da0b58d00000000, 0xc5b72b4200000000,
+ 0xdc89f8c900000000, 0x149e660600000000, 0xaff32f0500000000,
+ 0x67e4b1ca00000000, 0x7eda624100000000, 0xb6cdfc8e00000000,
+ 0x0801f04700000000, 0xc0166e8800000000, 0xd928bd0300000000,
+ 0x113f23cc00000000, 0xaa526acf00000000, 0x6245f40000000000,
+ 0x7b7b278b00000000, 0xb36cb94400000000, 0x46e44fc200000000,
+ 0x8ef3d10d00000000, 0x97cd028600000000, 0x5fda9c4900000000,
+ 0xe4b7d54a00000000, 0x2ca04b8500000000, 0x359e980e00000000,
+ 0xfd8906c100000000, 0x43450a0800000000, 0x8b5294c700000000,
+ 0x926c474c00000000, 0x5a7bd98300000000, 0xe116908000000000,
+ 0x29010e4f00000000, 0x303fddc400000000, 0xf828430b00000000,
+ 0xf63fd9f600000000, 0x3e28473900000000, 0x271694b200000000,
+ 0xef010a7d00000000, 0x546c437e00000000, 0x9c7bddb100000000,
+ 0x85450e3a00000000, 0x4d5290f500000000, 0xf39e9c3c00000000,
+ 0x3b8902f300000000, 0x22b7d17800000000, 0xeaa04fb700000000,
+ 0x51cd06b400000000, 0x99da987b00000000, 0x80e44bf000000000,
+ 0x48f3d53f00000000, 0xbd7b23b900000000, 0x756cbd7600000000,
+ 0x6c526efd00000000, 0xa445f03200000000, 0x1f28b93100000000,
+ 0xd73f27fe00000000, 0xce01f47500000000, 0x06166aba00000000,
+ 0xb8da667300000000, 0x70cdf8bc00000000, 0x69f32b3700000000,
+ 0xa1e4b5f800000000, 0x1a89fcfb00000000, 0xd29e623400000000,
+ 0xcba0b1bf00000000, 0x03b72f7000000000, 0x60b72d6900000000,
+ 0xa8a0b3a600000000, 0xb19e602d00000000, 0x7989fee200000000,
+ 0xc2e4b7e100000000, 0x0af3292e00000000, 0x13cdfaa500000000,
+ 0xdbda646a00000000, 0x651668a300000000, 0xad01f66c00000000,
+ 0xb43f25e700000000, 0x7c28bb2800000000, 0xc745f22b00000000,
+ 0x0f526ce400000000, 0x166cbf6f00000000, 0xde7b21a000000000,
+ 0x2bf3d72600000000, 0xe3e449e900000000, 0xfada9a6200000000,
+ 0x32cd04ad00000000, 0x89a04dae00000000, 0x41b7d36100000000,
+ 0x588900ea00000000, 0x909e9e2500000000, 0x2e5292ec00000000,
+ 0xe6450c2300000000, 0xff7bdfa800000000, 0x376c416700000000,
+ 0x8c01086400000000, 0x441696ab00000000, 0x5d28452000000000,
+ 0x953fdbef00000000},
+ {0x0000000000000000, 0x95d4709500000000, 0x6baf90f100000000,
+ 0xfe7be06400000000, 0x9758503800000000, 0x028c20ad00000000,
+ 0xfcf7c0c900000000, 0x6923b05c00000000, 0x2eb1a07000000000,
+ 0xbb65d0e500000000, 0x451e308100000000, 0xd0ca401400000000,
+ 0xb9e9f04800000000, 0x2c3d80dd00000000, 0xd24660b900000000,
+ 0x4792102c00000000, 0x5c6241e100000000, 0xc9b6317400000000,
+ 0x37cdd11000000000, 0xa219a18500000000, 0xcb3a11d900000000,
+ 0x5eee614c00000000, 0xa095812800000000, 0x3541f1bd00000000,
+ 0x72d3e19100000000, 0xe707910400000000, 0x197c716000000000,
+ 0x8ca801f500000000, 0xe58bb1a900000000, 0x705fc13c00000000,
+ 0x8e24215800000000, 0x1bf051cd00000000, 0xf9c2f31900000000,
+ 0x6c16838c00000000, 0x926d63e800000000, 0x07b9137d00000000,
+ 0x6e9aa32100000000, 0xfb4ed3b400000000, 0x053533d000000000,
+ 0x90e1434500000000, 0xd773536900000000, 0x42a723fc00000000,
+ 0xbcdcc39800000000, 0x2908b30d00000000, 0x402b035100000000,
+ 0xd5ff73c400000000, 0x2b8493a000000000, 0xbe50e33500000000,
+ 0xa5a0b2f800000000, 0x3074c26d00000000, 0xce0f220900000000,
+ 0x5bdb529c00000000, 0x32f8e2c000000000, 0xa72c925500000000,
+ 0x5957723100000000, 0xcc8302a400000000, 0x8b11128800000000,
+ 0x1ec5621d00000000, 0xe0be827900000000, 0x756af2ec00000000,
+ 0x1c4942b000000000, 0x899d322500000000, 0x77e6d24100000000,
+ 0xe232a2d400000000, 0xf285e73300000000, 0x675197a600000000,
+ 0x992a77c200000000, 0x0cfe075700000000, 0x65ddb70b00000000,
+ 0xf009c79e00000000, 0x0e7227fa00000000, 0x9ba6576f00000000,
+ 0xdc34474300000000, 0x49e037d600000000, 0xb79bd7b200000000,
+ 0x224fa72700000000, 0x4b6c177b00000000, 0xdeb867ee00000000,
+ 0x20c3878a00000000, 0xb517f71f00000000, 0xaee7a6d200000000,
+ 0x3b33d64700000000, 0xc548362300000000, 0x509c46b600000000,
+ 0x39bff6ea00000000, 0xac6b867f00000000, 0x5210661b00000000,
+ 0xc7c4168e00000000, 0x805606a200000000, 0x1582763700000000,
+ 0xebf9965300000000, 0x7e2de6c600000000, 0x170e569a00000000,
+ 0x82da260f00000000, 0x7ca1c66b00000000, 0xe975b6fe00000000,
+ 0x0b47142a00000000, 0x9e9364bf00000000, 0x60e884db00000000,
+ 0xf53cf44e00000000, 0x9c1f441200000000, 0x09cb348700000000,
+ 0xf7b0d4e300000000, 0x6264a47600000000, 0x25f6b45a00000000,
+ 0xb022c4cf00000000, 0x4e5924ab00000000, 0xdb8d543e00000000,
+ 0xb2aee46200000000, 0x277a94f700000000, 0xd901749300000000,
+ 0x4cd5040600000000, 0x572555cb00000000, 0xc2f1255e00000000,
+ 0x3c8ac53a00000000, 0xa95eb5af00000000, 0xc07d05f300000000,
+ 0x55a9756600000000, 0xabd2950200000000, 0x3e06e59700000000,
+ 0x7994f5bb00000000, 0xec40852e00000000, 0x123b654a00000000,
+ 0x87ef15df00000000, 0xeecca58300000000, 0x7b18d51600000000,
+ 0x8563357200000000, 0x10b745e700000000, 0xe40bcf6700000000,
+ 0x71dfbff200000000, 0x8fa45f9600000000, 0x1a702f0300000000,
+ 0x73539f5f00000000, 0xe687efca00000000, 0x18fc0fae00000000,
+ 0x8d287f3b00000000, 0xcaba6f1700000000, 0x5f6e1f8200000000,
+ 0xa115ffe600000000, 0x34c18f7300000000, 0x5de23f2f00000000,
+ 0xc8364fba00000000, 0x364dafde00000000, 0xa399df4b00000000,
+ 0xb8698e8600000000, 0x2dbdfe1300000000, 0xd3c61e7700000000,
+ 0x46126ee200000000, 0x2f31debe00000000, 0xbae5ae2b00000000,
+ 0x449e4e4f00000000, 0xd14a3eda00000000, 0x96d82ef600000000,
+ 0x030c5e6300000000, 0xfd77be0700000000, 0x68a3ce9200000000,
+ 0x01807ece00000000, 0x94540e5b00000000, 0x6a2fee3f00000000,
+ 0xfffb9eaa00000000, 0x1dc93c7e00000000, 0x881d4ceb00000000,
+ 0x7666ac8f00000000, 0xe3b2dc1a00000000, 0x8a916c4600000000,
+ 0x1f451cd300000000, 0xe13efcb700000000, 0x74ea8c2200000000,
+ 0x33789c0e00000000, 0xa6acec9b00000000, 0x58d70cff00000000,
+ 0xcd037c6a00000000, 0xa420cc3600000000, 0x31f4bca300000000,
+ 0xcf8f5cc700000000, 0x5a5b2c5200000000, 0x41ab7d9f00000000,
+ 0xd47f0d0a00000000, 0x2a04ed6e00000000, 0xbfd09dfb00000000,
+ 0xd6f32da700000000, 0x43275d3200000000, 0xbd5cbd5600000000,
+ 0x2888cdc300000000, 0x6f1addef00000000, 0xfacead7a00000000,
+ 0x04b54d1e00000000, 0x91613d8b00000000, 0xf8428dd700000000,
+ 0x6d96fd4200000000, 0x93ed1d2600000000, 0x06396db300000000,
+ 0x168e285400000000, 0x835a58c100000000, 0x7d21b8a500000000,
+ 0xe8f5c83000000000, 0x81d6786c00000000, 0x140208f900000000,
+ 0xea79e89d00000000, 0x7fad980800000000, 0x383f882400000000,
+ 0xadebf8b100000000, 0x539018d500000000, 0xc644684000000000,
+ 0xaf67d81c00000000, 0x3ab3a88900000000, 0xc4c848ed00000000,
+ 0x511c387800000000, 0x4aec69b500000000, 0xdf38192000000000,
+ 0x2143f94400000000, 0xb49789d100000000, 0xddb4398d00000000,
+ 0x4860491800000000, 0xb61ba97c00000000, 0x23cfd9e900000000,
+ 0x645dc9c500000000, 0xf189b95000000000, 0x0ff2593400000000,
+ 0x9a2629a100000000, 0xf30599fd00000000, 0x66d1e96800000000,
+ 0x98aa090c00000000, 0x0d7e799900000000, 0xef4cdb4d00000000,
+ 0x7a98abd800000000, 0x84e34bbc00000000, 0x11373b2900000000,
+ 0x78148b7500000000, 0xedc0fbe000000000, 0x13bb1b8400000000,
+ 0x866f6b1100000000, 0xc1fd7b3d00000000, 0x54290ba800000000,
+ 0xaa52ebcc00000000, 0x3f869b5900000000, 0x56a52b0500000000,
+ 0xc3715b9000000000, 0x3d0abbf400000000, 0xa8decb6100000000,
+ 0xb32e9aac00000000, 0x26faea3900000000, 0xd8810a5d00000000,
+ 0x4d557ac800000000, 0x2476ca9400000000, 0xb1a2ba0100000000,
+ 0x4fd95a6500000000, 0xda0d2af000000000, 0x9d9f3adc00000000,
+ 0x084b4a4900000000, 0xf630aa2d00000000, 0x63e4dab800000000,
+ 0x0ac76ae400000000, 0x9f131a7100000000, 0x6168fa1500000000,
+ 0xf4bc8a8000000000},
+ {0x0000000000000000, 0x1f17f08000000000, 0x7f2891da00000000,
+ 0x603f615a00000000, 0xbf56536e00000000, 0xa041a3ee00000000,
+ 0xc07ec2b400000000, 0xdf69323400000000, 0x7eada6dc00000000,
+ 0x61ba565c00000000, 0x0185370600000000, 0x1e92c78600000000,
+ 0xc1fbf5b200000000, 0xdeec053200000000, 0xbed3646800000000,
+ 0xa1c494e800000000, 0xbd5c3c6200000000, 0xa24bcce200000000,
+ 0xc274adb800000000, 0xdd635d3800000000, 0x020a6f0c00000000,
+ 0x1d1d9f8c00000000, 0x7d22fed600000000, 0x62350e5600000000,
+ 0xc3f19abe00000000, 0xdce66a3e00000000, 0xbcd90b6400000000,
+ 0xa3cefbe400000000, 0x7ca7c9d000000000, 0x63b0395000000000,
+ 0x038f580a00000000, 0x1c98a88a00000000, 0x7ab978c400000000,
+ 0x65ae884400000000, 0x0591e91e00000000, 0x1a86199e00000000,
+ 0xc5ef2baa00000000, 0xdaf8db2a00000000, 0xbac7ba7000000000,
+ 0xa5d04af000000000, 0x0414de1800000000, 0x1b032e9800000000,
+ 0x7b3c4fc200000000, 0x642bbf4200000000, 0xbb428d7600000000,
+ 0xa4557df600000000, 0xc46a1cac00000000, 0xdb7dec2c00000000,
+ 0xc7e544a600000000, 0xd8f2b42600000000, 0xb8cdd57c00000000,
+ 0xa7da25fc00000000, 0x78b317c800000000, 0x67a4e74800000000,
+ 0x079b861200000000, 0x188c769200000000, 0xb948e27a00000000,
+ 0xa65f12fa00000000, 0xc66073a000000000, 0xd977832000000000,
+ 0x061eb11400000000, 0x1909419400000000, 0x793620ce00000000,
+ 0x6621d04e00000000, 0xb574805300000000, 0xaa6370d300000000,
+ 0xca5c118900000000, 0xd54be10900000000, 0x0a22d33d00000000,
+ 0x153523bd00000000, 0x750a42e700000000, 0x6a1db26700000000,
+ 0xcbd9268f00000000, 0xd4ced60f00000000, 0xb4f1b75500000000,
+ 0xabe647d500000000, 0x748f75e100000000, 0x6b98856100000000,
+ 0x0ba7e43b00000000, 0x14b014bb00000000, 0x0828bc3100000000,
+ 0x173f4cb100000000, 0x77002deb00000000, 0x6817dd6b00000000,
+ 0xb77eef5f00000000, 0xa8691fdf00000000, 0xc8567e8500000000,
+ 0xd7418e0500000000, 0x76851aed00000000, 0x6992ea6d00000000,
+ 0x09ad8b3700000000, 0x16ba7bb700000000, 0xc9d3498300000000,
+ 0xd6c4b90300000000, 0xb6fbd85900000000, 0xa9ec28d900000000,
+ 0xcfcdf89700000000, 0xd0da081700000000, 0xb0e5694d00000000,
+ 0xaff299cd00000000, 0x709babf900000000, 0x6f8c5b7900000000,
+ 0x0fb33a2300000000, 0x10a4caa300000000, 0xb1605e4b00000000,
+ 0xae77aecb00000000, 0xce48cf9100000000, 0xd15f3f1100000000,
+ 0x0e360d2500000000, 0x1121fda500000000, 0x711e9cff00000000,
+ 0x6e096c7f00000000, 0x7291c4f500000000, 0x6d86347500000000,
+ 0x0db9552f00000000, 0x12aea5af00000000, 0xcdc7979b00000000,
+ 0xd2d0671b00000000, 0xb2ef064100000000, 0xadf8f6c100000000,
+ 0x0c3c622900000000, 0x132b92a900000000, 0x7314f3f300000000,
+ 0x6c03037300000000, 0xb36a314700000000, 0xac7dc1c700000000,
+ 0xcc42a09d00000000, 0xd355501d00000000, 0x6ae900a700000000,
+ 0x75fef02700000000, 0x15c1917d00000000, 0x0ad661fd00000000,
+ 0xd5bf53c900000000, 0xcaa8a34900000000, 0xaa97c21300000000,
+ 0xb580329300000000, 0x1444a67b00000000, 0x0b5356fb00000000,
+ 0x6b6c37a100000000, 0x747bc72100000000, 0xab12f51500000000,
+ 0xb405059500000000, 0xd43a64cf00000000, 0xcb2d944f00000000,
+ 0xd7b53cc500000000, 0xc8a2cc4500000000, 0xa89dad1f00000000,
+ 0xb78a5d9f00000000, 0x68e36fab00000000, 0x77f49f2b00000000,
+ 0x17cbfe7100000000, 0x08dc0ef100000000, 0xa9189a1900000000,
+ 0xb60f6a9900000000, 0xd6300bc300000000, 0xc927fb4300000000,
+ 0x164ec97700000000, 0x095939f700000000, 0x696658ad00000000,
+ 0x7671a82d00000000, 0x1050786300000000, 0x0f4788e300000000,
+ 0x6f78e9b900000000, 0x706f193900000000, 0xaf062b0d00000000,
+ 0xb011db8d00000000, 0xd02ebad700000000, 0xcf394a5700000000,
+ 0x6efddebf00000000, 0x71ea2e3f00000000, 0x11d54f6500000000,
+ 0x0ec2bfe500000000, 0xd1ab8dd100000000, 0xcebc7d5100000000,
+ 0xae831c0b00000000, 0xb194ec8b00000000, 0xad0c440100000000,
+ 0xb21bb48100000000, 0xd224d5db00000000, 0xcd33255b00000000,
+ 0x125a176f00000000, 0x0d4de7ef00000000, 0x6d7286b500000000,
+ 0x7265763500000000, 0xd3a1e2dd00000000, 0xccb6125d00000000,
+ 0xac89730700000000, 0xb39e838700000000, 0x6cf7b1b300000000,
+ 0x73e0413300000000, 0x13df206900000000, 0x0cc8d0e900000000,
+ 0xdf9d80f400000000, 0xc08a707400000000, 0xa0b5112e00000000,
+ 0xbfa2e1ae00000000, 0x60cbd39a00000000, 0x7fdc231a00000000,
+ 0x1fe3424000000000, 0x00f4b2c000000000, 0xa130262800000000,
+ 0xbe27d6a800000000, 0xde18b7f200000000, 0xc10f477200000000,
+ 0x1e66754600000000, 0x017185c600000000, 0x614ee49c00000000,
+ 0x7e59141c00000000, 0x62c1bc9600000000, 0x7dd64c1600000000,
+ 0x1de92d4c00000000, 0x02feddcc00000000, 0xdd97eff800000000,
+ 0xc2801f7800000000, 0xa2bf7e2200000000, 0xbda88ea200000000,
+ 0x1c6c1a4a00000000, 0x037beaca00000000, 0x63448b9000000000,
+ 0x7c537b1000000000, 0xa33a492400000000, 0xbc2db9a400000000,
+ 0xdc12d8fe00000000, 0xc305287e00000000, 0xa524f83000000000,
+ 0xba3308b000000000, 0xda0c69ea00000000, 0xc51b996a00000000,
+ 0x1a72ab5e00000000, 0x05655bde00000000, 0x655a3a8400000000,
+ 0x7a4dca0400000000, 0xdb895eec00000000, 0xc49eae6c00000000,
+ 0xa4a1cf3600000000, 0xbbb63fb600000000, 0x64df0d8200000000,
+ 0x7bc8fd0200000000, 0x1bf79c5800000000, 0x04e06cd800000000,
+ 0x1878c45200000000, 0x076f34d200000000, 0x6750558800000000,
+ 0x7847a50800000000, 0xa72e973c00000000, 0xb83967bc00000000,
+ 0xd80606e600000000, 0xc711f66600000000, 0x66d5628e00000000,
+ 0x79c2920e00000000, 0x19fdf35400000000, 0x06ea03d400000000,
+ 0xd98331e000000000, 0xc694c16000000000, 0xa6aba03a00000000,
+ 0xb9bc50ba00000000},
+ {0x0000000000000000, 0xe2fd888d00000000, 0x85fd60c000000000,
+ 0x6700e84d00000000, 0x4bfdb05b00000000, 0xa90038d600000000,
+ 0xce00d09b00000000, 0x2cfd581600000000, 0x96fa61b700000000,
+ 0x7407e93a00000000, 0x1307017700000000, 0xf1fa89fa00000000,
+ 0xdd07d1ec00000000, 0x3ffa596100000000, 0x58fab12c00000000,
+ 0xba0739a100000000, 0x6df3b2b500000000, 0x8f0e3a3800000000,
+ 0xe80ed27500000000, 0x0af35af800000000, 0x260e02ee00000000,
+ 0xc4f38a6300000000, 0xa3f3622e00000000, 0x410eeaa300000000,
+ 0xfb09d30200000000, 0x19f45b8f00000000, 0x7ef4b3c200000000,
+ 0x9c093b4f00000000, 0xb0f4635900000000, 0x5209ebd400000000,
+ 0x3509039900000000, 0xd7f48b1400000000, 0x9be014b000000000,
+ 0x791d9c3d00000000, 0x1e1d747000000000, 0xfce0fcfd00000000,
+ 0xd01da4eb00000000, 0x32e02c6600000000, 0x55e0c42b00000000,
+ 0xb71d4ca600000000, 0x0d1a750700000000, 0xefe7fd8a00000000,
+ 0x88e715c700000000, 0x6a1a9d4a00000000, 0x46e7c55c00000000,
+ 0xa41a4dd100000000, 0xc31aa59c00000000, 0x21e72d1100000000,
+ 0xf613a60500000000, 0x14ee2e8800000000, 0x73eec6c500000000,
+ 0x91134e4800000000, 0xbdee165e00000000, 0x5f139ed300000000,
+ 0x3813769e00000000, 0xdaeefe1300000000, 0x60e9c7b200000000,
+ 0x82144f3f00000000, 0xe514a77200000000, 0x07e92fff00000000,
+ 0x2b1477e900000000, 0xc9e9ff6400000000, 0xaee9172900000000,
+ 0x4c149fa400000000, 0x77c758bb00000000, 0x953ad03600000000,
+ 0xf23a387b00000000, 0x10c7b0f600000000, 0x3c3ae8e000000000,
+ 0xdec7606d00000000, 0xb9c7882000000000, 0x5b3a00ad00000000,
+ 0xe13d390c00000000, 0x03c0b18100000000, 0x64c059cc00000000,
+ 0x863dd14100000000, 0xaac0895700000000, 0x483d01da00000000,
+ 0x2f3de99700000000, 0xcdc0611a00000000, 0x1a34ea0e00000000,
+ 0xf8c9628300000000, 0x9fc98ace00000000, 0x7d34024300000000,
+ 0x51c95a5500000000, 0xb334d2d800000000, 0xd4343a9500000000,
+ 0x36c9b21800000000, 0x8cce8bb900000000, 0x6e33033400000000,
+ 0x0933eb7900000000, 0xebce63f400000000, 0xc7333be200000000,
+ 0x25ceb36f00000000, 0x42ce5b2200000000, 0xa033d3af00000000,
+ 0xec274c0b00000000, 0x0edac48600000000, 0x69da2ccb00000000,
+ 0x8b27a44600000000, 0xa7dafc5000000000, 0x452774dd00000000,
+ 0x22279c9000000000, 0xc0da141d00000000, 0x7add2dbc00000000,
+ 0x9820a53100000000, 0xff204d7c00000000, 0x1dddc5f100000000,
+ 0x31209de700000000, 0xd3dd156a00000000, 0xb4ddfd2700000000,
+ 0x562075aa00000000, 0x81d4febe00000000, 0x6329763300000000,
+ 0x04299e7e00000000, 0xe6d416f300000000, 0xca294ee500000000,
+ 0x28d4c66800000000, 0x4fd42e2500000000, 0xad29a6a800000000,
+ 0x172e9f0900000000, 0xf5d3178400000000, 0x92d3ffc900000000,
+ 0x702e774400000000, 0x5cd32f5200000000, 0xbe2ea7df00000000,
+ 0xd92e4f9200000000, 0x3bd3c71f00000000, 0xaf88c0ad00000000,
+ 0x4d75482000000000, 0x2a75a06d00000000, 0xc88828e000000000,
+ 0xe47570f600000000, 0x0688f87b00000000, 0x6188103600000000,
+ 0x837598bb00000000, 0x3972a11a00000000, 0xdb8f299700000000,
+ 0xbc8fc1da00000000, 0x5e72495700000000, 0x728f114100000000,
+ 0x907299cc00000000, 0xf772718100000000, 0x158ff90c00000000,
+ 0xc27b721800000000, 0x2086fa9500000000, 0x478612d800000000,
+ 0xa57b9a5500000000, 0x8986c24300000000, 0x6b7b4ace00000000,
+ 0x0c7ba28300000000, 0xee862a0e00000000, 0x548113af00000000,
+ 0xb67c9b2200000000, 0xd17c736f00000000, 0x3381fbe200000000,
+ 0x1f7ca3f400000000, 0xfd812b7900000000, 0x9a81c33400000000,
+ 0x787c4bb900000000, 0x3468d41d00000000, 0xd6955c9000000000,
+ 0xb195b4dd00000000, 0x53683c5000000000, 0x7f95644600000000,
+ 0x9d68eccb00000000, 0xfa68048600000000, 0x18958c0b00000000,
+ 0xa292b5aa00000000, 0x406f3d2700000000, 0x276fd56a00000000,
+ 0xc5925de700000000, 0xe96f05f100000000, 0x0b928d7c00000000,
+ 0x6c92653100000000, 0x8e6fedbc00000000, 0x599b66a800000000,
+ 0xbb66ee2500000000, 0xdc66066800000000, 0x3e9b8ee500000000,
+ 0x1266d6f300000000, 0xf09b5e7e00000000, 0x979bb63300000000,
+ 0x75663ebe00000000, 0xcf61071f00000000, 0x2d9c8f9200000000,
+ 0x4a9c67df00000000, 0xa861ef5200000000, 0x849cb74400000000,
+ 0x66613fc900000000, 0x0161d78400000000, 0xe39c5f0900000000,
+ 0xd84f981600000000, 0x3ab2109b00000000, 0x5db2f8d600000000,
+ 0xbf4f705b00000000, 0x93b2284d00000000, 0x714fa0c000000000,
+ 0x164f488d00000000, 0xf4b2c00000000000, 0x4eb5f9a100000000,
+ 0xac48712c00000000, 0xcb48996100000000, 0x29b511ec00000000,
+ 0x054849fa00000000, 0xe7b5c17700000000, 0x80b5293a00000000,
+ 0x6248a1b700000000, 0xb5bc2aa300000000, 0x5741a22e00000000,
+ 0x30414a6300000000, 0xd2bcc2ee00000000, 0xfe419af800000000,
+ 0x1cbc127500000000, 0x7bbcfa3800000000, 0x994172b500000000,
+ 0x23464b1400000000, 0xc1bbc39900000000, 0xa6bb2bd400000000,
+ 0x4446a35900000000, 0x68bbfb4f00000000, 0x8a4673c200000000,
+ 0xed469b8f00000000, 0x0fbb130200000000, 0x43af8ca600000000,
+ 0xa152042b00000000, 0xc652ec6600000000, 0x24af64eb00000000,
+ 0x08523cfd00000000, 0xeaafb47000000000, 0x8daf5c3d00000000,
+ 0x6f52d4b000000000, 0xd555ed1100000000, 0x37a8659c00000000,
+ 0x50a88dd100000000, 0xb255055c00000000, 0x9ea85d4a00000000,
+ 0x7c55d5c700000000, 0x1b553d8a00000000, 0xf9a8b50700000000,
+ 0x2e5c3e1300000000, 0xcca1b69e00000000, 0xaba15ed300000000,
+ 0x495cd65e00000000, 0x65a18e4800000000, 0x875c06c500000000,
+ 0xe05cee8800000000, 0x02a1660500000000, 0xb8a65fa400000000,
+ 0x5a5bd72900000000, 0x3d5b3f6400000000, 0xdfa6b7e900000000,
+ 0xf35befff00000000, 0x11a6677200000000, 0x76a68f3f00000000,
+ 0x945b07b200000000},
+ {0x0000000000000000, 0xa90b894e00000000, 0x5217129d00000000,
+ 0xfb1c9bd300000000, 0xe52855e100000000, 0x4c23dcaf00000000,
+ 0xb73f477c00000000, 0x1e34ce3200000000, 0x8b57db1900000000,
+ 0x225c525700000000, 0xd940c98400000000, 0x704b40ca00000000,
+ 0x6e7f8ef800000000, 0xc77407b600000000, 0x3c689c6500000000,
+ 0x9563152b00000000, 0x16afb63300000000, 0xbfa43f7d00000000,
+ 0x44b8a4ae00000000, 0xedb32de000000000, 0xf387e3d200000000,
+ 0x5a8c6a9c00000000, 0xa190f14f00000000, 0x089b780100000000,
+ 0x9df86d2a00000000, 0x34f3e46400000000, 0xcfef7fb700000000,
+ 0x66e4f6f900000000, 0x78d038cb00000000, 0xd1dbb18500000000,
+ 0x2ac72a5600000000, 0x83cca31800000000, 0x2c5e6d6700000000,
+ 0x8555e42900000000, 0x7e497ffa00000000, 0xd742f6b400000000,
+ 0xc976388600000000, 0x607db1c800000000, 0x9b612a1b00000000,
+ 0x326aa35500000000, 0xa709b67e00000000, 0x0e023f3000000000,
+ 0xf51ea4e300000000, 0x5c152dad00000000, 0x4221e39f00000000,
+ 0xeb2a6ad100000000, 0x1036f10200000000, 0xb93d784c00000000,
+ 0x3af1db5400000000, 0x93fa521a00000000, 0x68e6c9c900000000,
+ 0xc1ed408700000000, 0xdfd98eb500000000, 0x76d207fb00000000,
+ 0x8dce9c2800000000, 0x24c5156600000000, 0xb1a6004d00000000,
+ 0x18ad890300000000, 0xe3b112d000000000, 0x4aba9b9e00000000,
+ 0x548e55ac00000000, 0xfd85dce200000000, 0x0699473100000000,
+ 0xaf92ce7f00000000, 0x58bcdace00000000, 0xf1b7538000000000,
+ 0x0aabc85300000000, 0xa3a0411d00000000, 0xbd948f2f00000000,
+ 0x149f066100000000, 0xef839db200000000, 0x468814fc00000000,
+ 0xd3eb01d700000000, 0x7ae0889900000000, 0x81fc134a00000000,
+ 0x28f79a0400000000, 0x36c3543600000000, 0x9fc8dd7800000000,
+ 0x64d446ab00000000, 0xcddfcfe500000000, 0x4e136cfd00000000,
+ 0xe718e5b300000000, 0x1c047e6000000000, 0xb50ff72e00000000,
+ 0xab3b391c00000000, 0x0230b05200000000, 0xf92c2b8100000000,
+ 0x5027a2cf00000000, 0xc544b7e400000000, 0x6c4f3eaa00000000,
+ 0x9753a57900000000, 0x3e582c3700000000, 0x206ce20500000000,
+ 0x89676b4b00000000, 0x727bf09800000000, 0xdb7079d600000000,
+ 0x74e2b7a900000000, 0xdde93ee700000000, 0x26f5a53400000000,
+ 0x8ffe2c7a00000000, 0x91cae24800000000, 0x38c16b0600000000,
+ 0xc3ddf0d500000000, 0x6ad6799b00000000, 0xffb56cb000000000,
+ 0x56bee5fe00000000, 0xada27e2d00000000, 0x04a9f76300000000,
+ 0x1a9d395100000000, 0xb396b01f00000000, 0x488a2bcc00000000,
+ 0xe181a28200000000, 0x624d019a00000000, 0xcb4688d400000000,
+ 0x305a130700000000, 0x99519a4900000000, 0x8765547b00000000,
+ 0x2e6edd3500000000, 0xd57246e600000000, 0x7c79cfa800000000,
+ 0xe91ada8300000000, 0x401153cd00000000, 0xbb0dc81e00000000,
+ 0x1206415000000000, 0x0c328f6200000000, 0xa539062c00000000,
+ 0x5e259dff00000000, 0xf72e14b100000000, 0xf17ec44600000000,
+ 0x58754d0800000000, 0xa369d6db00000000, 0x0a625f9500000000,
+ 0x145691a700000000, 0xbd5d18e900000000, 0x4641833a00000000,
+ 0xef4a0a7400000000, 0x7a291f5f00000000, 0xd322961100000000,
+ 0x283e0dc200000000, 0x8135848c00000000, 0x9f014abe00000000,
+ 0x360ac3f000000000, 0xcd16582300000000, 0x641dd16d00000000,
+ 0xe7d1727500000000, 0x4edafb3b00000000, 0xb5c660e800000000,
+ 0x1ccde9a600000000, 0x02f9279400000000, 0xabf2aeda00000000,
+ 0x50ee350900000000, 0xf9e5bc4700000000, 0x6c86a96c00000000,
+ 0xc58d202200000000, 0x3e91bbf100000000, 0x979a32bf00000000,
+ 0x89aefc8d00000000, 0x20a575c300000000, 0xdbb9ee1000000000,
+ 0x72b2675e00000000, 0xdd20a92100000000, 0x742b206f00000000,
+ 0x8f37bbbc00000000, 0x263c32f200000000, 0x3808fcc000000000,
+ 0x9103758e00000000, 0x6a1fee5d00000000, 0xc314671300000000,
+ 0x5677723800000000, 0xff7cfb7600000000, 0x046060a500000000,
+ 0xad6be9eb00000000, 0xb35f27d900000000, 0x1a54ae9700000000,
+ 0xe148354400000000, 0x4843bc0a00000000, 0xcb8f1f1200000000,
+ 0x6284965c00000000, 0x99980d8f00000000, 0x309384c100000000,
+ 0x2ea74af300000000, 0x87acc3bd00000000, 0x7cb0586e00000000,
+ 0xd5bbd12000000000, 0x40d8c40b00000000, 0xe9d34d4500000000,
+ 0x12cfd69600000000, 0xbbc45fd800000000, 0xa5f091ea00000000,
+ 0x0cfb18a400000000, 0xf7e7837700000000, 0x5eec0a3900000000,
+ 0xa9c21e8800000000, 0x00c997c600000000, 0xfbd50c1500000000,
+ 0x52de855b00000000, 0x4cea4b6900000000, 0xe5e1c22700000000,
+ 0x1efd59f400000000, 0xb7f6d0ba00000000, 0x2295c59100000000,
+ 0x8b9e4cdf00000000, 0x7082d70c00000000, 0xd9895e4200000000,
+ 0xc7bd907000000000, 0x6eb6193e00000000, 0x95aa82ed00000000,
+ 0x3ca10ba300000000, 0xbf6da8bb00000000, 0x166621f500000000,
+ 0xed7aba2600000000, 0x4471336800000000, 0x5a45fd5a00000000,
+ 0xf34e741400000000, 0x0852efc700000000, 0xa159668900000000,
+ 0x343a73a200000000, 0x9d31faec00000000, 0x662d613f00000000,
+ 0xcf26e87100000000, 0xd112264300000000, 0x7819af0d00000000,
+ 0x830534de00000000, 0x2a0ebd9000000000, 0x859c73ef00000000,
+ 0x2c97faa100000000, 0xd78b617200000000, 0x7e80e83c00000000,
+ 0x60b4260e00000000, 0xc9bfaf4000000000, 0x32a3349300000000,
+ 0x9ba8bddd00000000, 0x0ecba8f600000000, 0xa7c021b800000000,
+ 0x5cdcba6b00000000, 0xf5d7332500000000, 0xebe3fd1700000000,
+ 0x42e8745900000000, 0xb9f4ef8a00000000, 0x10ff66c400000000,
+ 0x9333c5dc00000000, 0x3a384c9200000000, 0xc124d74100000000,
+ 0x682f5e0f00000000, 0x761b903d00000000, 0xdf10197300000000,
+ 0x240c82a000000000, 0x8d070bee00000000, 0x18641ec500000000,
+ 0xb16f978b00000000, 0x4a730c5800000000, 0xe378851600000000,
+ 0xfd4c4b2400000000, 0x5447c26a00000000, 0xaf5b59b900000000,
+ 0x0650d0f700000000},
+ {0x0000000000000000, 0x479244af00000000, 0xcf22f88500000000,
+ 0x88b0bc2a00000000, 0xdf4381d000000000, 0x98d1c57f00000000,
+ 0x1061795500000000, 0x57f33dfa00000000, 0xff81737a00000000,
+ 0xb81337d500000000, 0x30a38bff00000000, 0x7731cf5000000000,
+ 0x20c2f2aa00000000, 0x6750b60500000000, 0xefe00a2f00000000,
+ 0xa8724e8000000000, 0xfe03e7f400000000, 0xb991a35b00000000,
+ 0x31211f7100000000, 0x76b35bde00000000, 0x2140662400000000,
+ 0x66d2228b00000000, 0xee629ea100000000, 0xa9f0da0e00000000,
+ 0x0182948e00000000, 0x4610d02100000000, 0xcea06c0b00000000,
+ 0x893228a400000000, 0xdec1155e00000000, 0x995351f100000000,
+ 0x11e3eddb00000000, 0x5671a97400000000, 0xbd01bf3200000000,
+ 0xfa93fb9d00000000, 0x722347b700000000, 0x35b1031800000000,
+ 0x62423ee200000000, 0x25d07a4d00000000, 0xad60c66700000000,
+ 0xeaf282c800000000, 0x4280cc4800000000, 0x051288e700000000,
+ 0x8da234cd00000000, 0xca30706200000000, 0x9dc34d9800000000,
+ 0xda51093700000000, 0x52e1b51d00000000, 0x1573f1b200000000,
+ 0x430258c600000000, 0x04901c6900000000, 0x8c20a04300000000,
+ 0xcbb2e4ec00000000, 0x9c41d91600000000, 0xdbd39db900000000,
+ 0x5363219300000000, 0x14f1653c00000000, 0xbc832bbc00000000,
+ 0xfb116f1300000000, 0x73a1d33900000000, 0x3433979600000000,
+ 0x63c0aa6c00000000, 0x2452eec300000000, 0xace252e900000000,
+ 0xeb70164600000000, 0x7a037e6500000000, 0x3d913aca00000000,
+ 0xb52186e000000000, 0xf2b3c24f00000000, 0xa540ffb500000000,
+ 0xe2d2bb1a00000000, 0x6a62073000000000, 0x2df0439f00000000,
+ 0x85820d1f00000000, 0xc21049b000000000, 0x4aa0f59a00000000,
+ 0x0d32b13500000000, 0x5ac18ccf00000000, 0x1d53c86000000000,
+ 0x95e3744a00000000, 0xd27130e500000000, 0x8400999100000000,
+ 0xc392dd3e00000000, 0x4b22611400000000, 0x0cb025bb00000000,
+ 0x5b43184100000000, 0x1cd15cee00000000, 0x9461e0c400000000,
+ 0xd3f3a46b00000000, 0x7b81eaeb00000000, 0x3c13ae4400000000,
+ 0xb4a3126e00000000, 0xf33156c100000000, 0xa4c26b3b00000000,
+ 0xe3502f9400000000, 0x6be093be00000000, 0x2c72d71100000000,
+ 0xc702c15700000000, 0x809085f800000000, 0x082039d200000000,
+ 0x4fb27d7d00000000, 0x1841408700000000, 0x5fd3042800000000,
+ 0xd763b80200000000, 0x90f1fcad00000000, 0x3883b22d00000000,
+ 0x7f11f68200000000, 0xf7a14aa800000000, 0xb0330e0700000000,
+ 0xe7c033fd00000000, 0xa052775200000000, 0x28e2cb7800000000,
+ 0x6f708fd700000000, 0x390126a300000000, 0x7e93620c00000000,
+ 0xf623de2600000000, 0xb1b19a8900000000, 0xe642a77300000000,
+ 0xa1d0e3dc00000000, 0x29605ff600000000, 0x6ef21b5900000000,
+ 0xc68055d900000000, 0x8112117600000000, 0x09a2ad5c00000000,
+ 0x4e30e9f300000000, 0x19c3d40900000000, 0x5e5190a600000000,
+ 0xd6e12c8c00000000, 0x9173682300000000, 0xf406fcca00000000,
+ 0xb394b86500000000, 0x3b24044f00000000, 0x7cb640e000000000,
+ 0x2b457d1a00000000, 0x6cd739b500000000, 0xe467859f00000000,
+ 0xa3f5c13000000000, 0x0b878fb000000000, 0x4c15cb1f00000000,
+ 0xc4a5773500000000, 0x8337339a00000000, 0xd4c40e6000000000,
+ 0x93564acf00000000, 0x1be6f6e500000000, 0x5c74b24a00000000,
+ 0x0a051b3e00000000, 0x4d975f9100000000, 0xc527e3bb00000000,
+ 0x82b5a71400000000, 0xd5469aee00000000, 0x92d4de4100000000,
+ 0x1a64626b00000000, 0x5df626c400000000, 0xf584684400000000,
+ 0xb2162ceb00000000, 0x3aa690c100000000, 0x7d34d46e00000000,
+ 0x2ac7e99400000000, 0x6d55ad3b00000000, 0xe5e5111100000000,
+ 0xa27755be00000000, 0x490743f800000000, 0x0e95075700000000,
+ 0x8625bb7d00000000, 0xc1b7ffd200000000, 0x9644c22800000000,
+ 0xd1d6868700000000, 0x59663aad00000000, 0x1ef47e0200000000,
+ 0xb686308200000000, 0xf114742d00000000, 0x79a4c80700000000,
+ 0x3e368ca800000000, 0x69c5b15200000000, 0x2e57f5fd00000000,
+ 0xa6e749d700000000, 0xe1750d7800000000, 0xb704a40c00000000,
+ 0xf096e0a300000000, 0x78265c8900000000, 0x3fb4182600000000,
+ 0x684725dc00000000, 0x2fd5617300000000, 0xa765dd5900000000,
+ 0xe0f799f600000000, 0x4885d77600000000, 0x0f1793d900000000,
+ 0x87a72ff300000000, 0xc0356b5c00000000, 0x97c656a600000000,
+ 0xd054120900000000, 0x58e4ae2300000000, 0x1f76ea8c00000000,
+ 0x8e0582af00000000, 0xc997c60000000000, 0x41277a2a00000000,
+ 0x06b53e8500000000, 0x5146037f00000000, 0x16d447d000000000,
+ 0x9e64fbfa00000000, 0xd9f6bf5500000000, 0x7184f1d500000000,
+ 0x3616b57a00000000, 0xbea6095000000000, 0xf9344dff00000000,
+ 0xaec7700500000000, 0xe95534aa00000000, 0x61e5888000000000,
+ 0x2677cc2f00000000, 0x7006655b00000000, 0x379421f400000000,
+ 0xbf249dde00000000, 0xf8b6d97100000000, 0xaf45e48b00000000,
+ 0xe8d7a02400000000, 0x60671c0e00000000, 0x27f558a100000000,
+ 0x8f87162100000000, 0xc815528e00000000, 0x40a5eea400000000,
+ 0x0737aa0b00000000, 0x50c497f100000000, 0x1756d35e00000000,
+ 0x9fe66f7400000000, 0xd8742bdb00000000, 0x33043d9d00000000,
+ 0x7496793200000000, 0xfc26c51800000000, 0xbbb481b700000000,
+ 0xec47bc4d00000000, 0xabd5f8e200000000, 0x236544c800000000,
+ 0x64f7006700000000, 0xcc854ee700000000, 0x8b170a4800000000,
+ 0x03a7b66200000000, 0x4435f2cd00000000, 0x13c6cf3700000000,
+ 0x54548b9800000000, 0xdce437b200000000, 0x9b76731d00000000,
+ 0xcd07da6900000000, 0x8a959ec600000000, 0x022522ec00000000,
+ 0x45b7664300000000, 0x12445bb900000000, 0x55d61f1600000000,
+ 0xdd66a33c00000000, 0x9af4e79300000000, 0x3286a91300000000,
+ 0x7514edbc00000000, 0xfda4519600000000, 0xba36153900000000,
+ 0xedc528c300000000, 0xaa576c6c00000000, 0x22e7d04600000000,
+ 0x657594e900000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59,
+ 0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4,
+ 0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67,
+ 0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef,
+ 0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97,
+ 0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88,
+ 0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687,
+ 0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698,
+ 0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0,
+ 0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068,
+ 0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb,
+ 0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056,
+ 0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016,
+ 0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009,
+ 0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028,
+ 0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037,
+ 0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a,
+ 0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7,
+ 0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054,
+ 0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7,
+ 0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af,
+ 0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0,
+ 0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4,
+ 0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab,
+ 0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3,
+ 0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a,
+ 0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9,
+ 0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54,
+ 0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09,
+ 0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16,
+ 0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37,
+ 0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28,
+ 0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e,
+ 0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3,
+ 0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40,
+ 0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8,
+ 0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0,
+ 0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf,
+ 0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6,
+ 0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9,
+ 0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1,
+ 0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059,
+ 0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca,
+ 0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067,
+ 0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031,
+ 0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e,
+ 0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f,
+ 0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010,
+ 0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d,
+ 0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0,
+ 0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073,
+ 0xd8ac6b35},
+ {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2,
+ 0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd,
+ 0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696,
+ 0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3,
+ 0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f,
+ 0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35,
+ 0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5,
+ 0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f,
+ 0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673,
+ 0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46,
+ 0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d,
+ 0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632,
+ 0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28,
+ 0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192,
+ 0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c,
+ 0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6,
+ 0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0,
+ 0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff,
+ 0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4,
+ 0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95,
+ 0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9,
+ 0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03,
+ 0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7,
+ 0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d,
+ 0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151,
+ 0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808,
+ 0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343,
+ 0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c,
+ 0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a,
+ 0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0,
+ 0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e,
+ 0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594,
+ 0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6,
+ 0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399,
+ 0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2,
+ 0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7,
+ 0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb,
+ 0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571,
+ 0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289,
+ 0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33,
+ 0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f,
+ 0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a,
+ 0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461,
+ 0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e,
+ 0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c,
+ 0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6,
+ 0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918,
+ 0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2,
+ 0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484,
+ 0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb,
+ 0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0,
+ 0xa140efa8},
+ {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706,
+ 0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed,
+ 0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289,
+ 0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a,
+ 0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214,
+ 0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3,
+ 0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3,
+ 0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254,
+ 0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a,
+ 0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9,
+ 0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad,
+ 0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746,
+ 0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060,
+ 0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187,
+ 0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef,
+ 0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408,
+ 0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e,
+ 0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495,
+ 0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1,
+ 0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532,
+ 0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c,
+ 0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb,
+ 0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb,
+ 0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c,
+ 0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42,
+ 0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060,
+ 0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04,
+ 0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef,
+ 0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99,
+ 0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e,
+ 0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16,
+ 0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1,
+ 0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7,
+ 0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c,
+ 0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38,
+ 0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb,
+ 0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5,
+ 0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42,
+ 0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62,
+ 0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85,
+ 0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb,
+ 0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18,
+ 0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c,
+ 0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997,
+ 0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1,
+ 0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36,
+ 0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e,
+ 0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9,
+ 0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf,
+ 0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24,
+ 0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040,
+ 0x917cd6a1},
+ {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf,
+ 0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd,
+ 0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896,
+ 0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9,
+ 0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3,
+ 0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f,
+ 0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d,
+ 0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1,
+ 0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab,
+ 0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4,
+ 0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f,
+ 0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d,
+ 0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4,
+ 0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978,
+ 0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad,
+ 0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621,
+ 0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46,
+ 0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854,
+ 0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f,
+ 0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a,
+ 0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890,
+ 0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c,
+ 0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4,
+ 0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238,
+ 0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622,
+ 0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab,
+ 0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0,
+ 0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2,
+ 0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295,
+ 0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19,
+ 0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc,
+ 0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140,
+ 0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd,
+ 0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf,
+ 0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184,
+ 0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb,
+ 0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1,
+ 0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d,
+ 0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb,
+ 0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257,
+ 0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d,
+ 0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22,
+ 0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069,
+ 0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b,
+ 0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6,
+ 0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a,
+ 0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf,
+ 0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33,
+ 0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254,
+ 0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146,
+ 0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d,
+ 0x18ba364e}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0x43cba687, 0xc7903cd4, 0x845b9a53, 0xcf270873,
+ 0x8cecaef4, 0x08b734a7, 0x4b7c9220, 0x9e4f10e6, 0xdd84b661,
+ 0x59df2c32, 0x1a148ab5, 0x51681895, 0x12a3be12, 0x96f82441,
+ 0xd53382c6, 0x7d995117, 0x3e52f790, 0xba096dc3, 0xf9c2cb44,
+ 0xb2be5964, 0xf175ffe3, 0x752e65b0, 0x36e5c337, 0xe3d641f1,
+ 0xa01de776, 0x24467d25, 0x678ddba2, 0x2cf14982, 0x6f3aef05,
+ 0xeb617556, 0xa8aad3d1, 0xfa32a32e, 0xb9f905a9, 0x3da29ffa,
+ 0x7e69397d, 0x3515ab5d, 0x76de0dda, 0xf2859789, 0xb14e310e,
+ 0x647db3c8, 0x27b6154f, 0xa3ed8f1c, 0xe026299b, 0xab5abbbb,
+ 0xe8911d3c, 0x6cca876f, 0x2f0121e8, 0x87abf239, 0xc46054be,
+ 0x403bceed, 0x03f0686a, 0x488cfa4a, 0x0b475ccd, 0x8f1cc69e,
+ 0xccd76019, 0x19e4e2df, 0x5a2f4458, 0xde74de0b, 0x9dbf788c,
+ 0xd6c3eaac, 0x95084c2b, 0x1153d678, 0x529870ff, 0xf465465d,
+ 0xb7aee0da, 0x33f57a89, 0x703edc0e, 0x3b424e2e, 0x7889e8a9,
+ 0xfcd272fa, 0xbf19d47d, 0x6a2a56bb, 0x29e1f03c, 0xadba6a6f,
+ 0xee71cce8, 0xa50d5ec8, 0xe6c6f84f, 0x629d621c, 0x2156c49b,
+ 0x89fc174a, 0xca37b1cd, 0x4e6c2b9e, 0x0da78d19, 0x46db1f39,
+ 0x0510b9be, 0x814b23ed, 0xc280856a, 0x17b307ac, 0x5478a12b,
+ 0xd0233b78, 0x93e89dff, 0xd8940fdf, 0x9b5fa958, 0x1f04330b,
+ 0x5ccf958c, 0x0e57e573, 0x4d9c43f4, 0xc9c7d9a7, 0x8a0c7f20,
+ 0xc170ed00, 0x82bb4b87, 0x06e0d1d4, 0x452b7753, 0x9018f595,
+ 0xd3d35312, 0x5788c941, 0x14436fc6, 0x5f3ffde6, 0x1cf45b61,
+ 0x98afc132, 0xdb6467b5, 0x73ceb464, 0x300512e3, 0xb45e88b0,
+ 0xf7952e37, 0xbce9bc17, 0xff221a90, 0x7b7980c3, 0x38b22644,
+ 0xed81a482, 0xae4a0205, 0x2a119856, 0x69da3ed1, 0x22a6acf1,
+ 0x616d0a76, 0xe5369025, 0xa6fd36a2, 0xe8cb8cba, 0xab002a3d,
+ 0x2f5bb06e, 0x6c9016e9, 0x27ec84c9, 0x6427224e, 0xe07cb81d,
+ 0xa3b71e9a, 0x76849c5c, 0x354f3adb, 0xb114a088, 0xf2df060f,
+ 0xb9a3942f, 0xfa6832a8, 0x7e33a8fb, 0x3df80e7c, 0x9552ddad,
+ 0xd6997b2a, 0x52c2e179, 0x110947fe, 0x5a75d5de, 0x19be7359,
+ 0x9de5e90a, 0xde2e4f8d, 0x0b1dcd4b, 0x48d66bcc, 0xcc8df19f,
+ 0x8f465718, 0xc43ac538, 0x87f163bf, 0x03aaf9ec, 0x40615f6b,
+ 0x12f92f94, 0x51328913, 0xd5691340, 0x96a2b5c7, 0xddde27e7,
+ 0x9e158160, 0x1a4e1b33, 0x5985bdb4, 0x8cb63f72, 0xcf7d99f5,
+ 0x4b2603a6, 0x08eda521, 0x43913701, 0x005a9186, 0x84010bd5,
+ 0xc7caad52, 0x6f607e83, 0x2cabd804, 0xa8f04257, 0xeb3be4d0,
+ 0xa04776f0, 0xe38cd077, 0x67d74a24, 0x241ceca3, 0xf12f6e65,
+ 0xb2e4c8e2, 0x36bf52b1, 0x7574f436, 0x3e086616, 0x7dc3c091,
+ 0xf9985ac2, 0xba53fc45, 0x1caecae7, 0x5f656c60, 0xdb3ef633,
+ 0x98f550b4, 0xd389c294, 0x90426413, 0x1419fe40, 0x57d258c7,
+ 0x82e1da01, 0xc12a7c86, 0x4571e6d5, 0x06ba4052, 0x4dc6d272,
+ 0x0e0d74f5, 0x8a56eea6, 0xc99d4821, 0x61379bf0, 0x22fc3d77,
+ 0xa6a7a724, 0xe56c01a3, 0xae109383, 0xeddb3504, 0x6980af57,
+ 0x2a4b09d0, 0xff788b16, 0xbcb32d91, 0x38e8b7c2, 0x7b231145,
+ 0x305f8365, 0x739425e2, 0xf7cfbfb1, 0xb4041936, 0xe69c69c9,
+ 0xa557cf4e, 0x210c551d, 0x62c7f39a, 0x29bb61ba, 0x6a70c73d,
+ 0xee2b5d6e, 0xade0fbe9, 0x78d3792f, 0x3b18dfa8, 0xbf4345fb,
+ 0xfc88e37c, 0xb7f4715c, 0xf43fd7db, 0x70644d88, 0x33afeb0f,
+ 0x9b0538de, 0xd8ce9e59, 0x5c95040a, 0x1f5ea28d, 0x542230ad,
+ 0x17e9962a, 0x93b20c79, 0xd079aafe, 0x054a2838, 0x46818ebf,
+ 0xc2da14ec, 0x8111b26b, 0xca6d204b, 0x89a686cc, 0x0dfd1c9f,
+ 0x4e36ba18},
+ {0x00000000, 0xe1b652ef, 0x836bd405, 0x62dd86ea, 0x06d7a80b,
+ 0xe761fae4, 0x85bc7c0e, 0x640a2ee1, 0x0cae5117, 0xed1803f8,
+ 0x8fc58512, 0x6e73d7fd, 0x0a79f91c, 0xebcfabf3, 0x89122d19,
+ 0x68a47ff6, 0x185ca32e, 0xf9eaf1c1, 0x9b37772b, 0x7a8125c4,
+ 0x1e8b0b25, 0xff3d59ca, 0x9de0df20, 0x7c568dcf, 0x14f2f239,
+ 0xf544a0d6, 0x9799263c, 0x762f74d3, 0x12255a32, 0xf39308dd,
+ 0x914e8e37, 0x70f8dcd8, 0x30b8465d, 0xd10e14b2, 0xb3d39258,
+ 0x5265c0b7, 0x366fee56, 0xd7d9bcb9, 0xb5043a53, 0x54b268bc,
+ 0x3c16174a, 0xdda045a5, 0xbf7dc34f, 0x5ecb91a0, 0x3ac1bf41,
+ 0xdb77edae, 0xb9aa6b44, 0x581c39ab, 0x28e4e573, 0xc952b79c,
+ 0xab8f3176, 0x4a396399, 0x2e334d78, 0xcf851f97, 0xad58997d,
+ 0x4ceecb92, 0x244ab464, 0xc5fce68b, 0xa7216061, 0x4697328e,
+ 0x229d1c6f, 0xc32b4e80, 0xa1f6c86a, 0x40409a85, 0x60708dba,
+ 0x81c6df55, 0xe31b59bf, 0x02ad0b50, 0x66a725b1, 0x8711775e,
+ 0xe5ccf1b4, 0x047aa35b, 0x6cdedcad, 0x8d688e42, 0xefb508a8,
+ 0x0e035a47, 0x6a0974a6, 0x8bbf2649, 0xe962a0a3, 0x08d4f24c,
+ 0x782c2e94, 0x999a7c7b, 0xfb47fa91, 0x1af1a87e, 0x7efb869f,
+ 0x9f4dd470, 0xfd90529a, 0x1c260075, 0x74827f83, 0x95342d6c,
+ 0xf7e9ab86, 0x165ff969, 0x7255d788, 0x93e38567, 0xf13e038d,
+ 0x10885162, 0x50c8cbe7, 0xb17e9908, 0xd3a31fe2, 0x32154d0d,
+ 0x561f63ec, 0xb7a93103, 0xd574b7e9, 0x34c2e506, 0x5c669af0,
+ 0xbdd0c81f, 0xdf0d4ef5, 0x3ebb1c1a, 0x5ab132fb, 0xbb076014,
+ 0xd9dae6fe, 0x386cb411, 0x489468c9, 0xa9223a26, 0xcbffbccc,
+ 0x2a49ee23, 0x4e43c0c2, 0xaff5922d, 0xcd2814c7, 0x2c9e4628,
+ 0x443a39de, 0xa58c6b31, 0xc751eddb, 0x26e7bf34, 0x42ed91d5,
+ 0xa35bc33a, 0xc18645d0, 0x2030173f, 0x81e66bae, 0x60503941,
+ 0x028dbfab, 0xe33bed44, 0x8731c3a5, 0x6687914a, 0x045a17a0,
+ 0xe5ec454f, 0x8d483ab9, 0x6cfe6856, 0x0e23eebc, 0xef95bc53,
+ 0x8b9f92b2, 0x6a29c05d, 0x08f446b7, 0xe9421458, 0x99bac880,
+ 0x780c9a6f, 0x1ad11c85, 0xfb674e6a, 0x9f6d608b, 0x7edb3264,
+ 0x1c06b48e, 0xfdb0e661, 0x95149997, 0x74a2cb78, 0x167f4d92,
+ 0xf7c91f7d, 0x93c3319c, 0x72756373, 0x10a8e599, 0xf11eb776,
+ 0xb15e2df3, 0x50e87f1c, 0x3235f9f6, 0xd383ab19, 0xb78985f8,
+ 0x563fd717, 0x34e251fd, 0xd5540312, 0xbdf07ce4, 0x5c462e0b,
+ 0x3e9ba8e1, 0xdf2dfa0e, 0xbb27d4ef, 0x5a918600, 0x384c00ea,
+ 0xd9fa5205, 0xa9028edd, 0x48b4dc32, 0x2a695ad8, 0xcbdf0837,
+ 0xafd526d6, 0x4e637439, 0x2cbef2d3, 0xcd08a03c, 0xa5acdfca,
+ 0x441a8d25, 0x26c70bcf, 0xc7715920, 0xa37b77c1, 0x42cd252e,
+ 0x2010a3c4, 0xc1a6f12b, 0xe196e614, 0x0020b4fb, 0x62fd3211,
+ 0x834b60fe, 0xe7414e1f, 0x06f71cf0, 0x642a9a1a, 0x859cc8f5,
+ 0xed38b703, 0x0c8ee5ec, 0x6e536306, 0x8fe531e9, 0xebef1f08,
+ 0x0a594de7, 0x6884cb0d, 0x893299e2, 0xf9ca453a, 0x187c17d5,
+ 0x7aa1913f, 0x9b17c3d0, 0xff1ded31, 0x1eabbfde, 0x7c763934,
+ 0x9dc06bdb, 0xf564142d, 0x14d246c2, 0x760fc028, 0x97b992c7,
+ 0xf3b3bc26, 0x1205eec9, 0x70d86823, 0x916e3acc, 0xd12ea049,
+ 0x3098f2a6, 0x5245744c, 0xb3f326a3, 0xd7f90842, 0x364f5aad,
+ 0x5492dc47, 0xb5248ea8, 0xdd80f15e, 0x3c36a3b1, 0x5eeb255b,
+ 0xbf5d77b4, 0xdb575955, 0x3ae10bba, 0x583c8d50, 0xb98adfbf,
+ 0xc9720367, 0x28c45188, 0x4a19d762, 0xabaf858d, 0xcfa5ab6c,
+ 0x2e13f983, 0x4cce7f69, 0xad782d86, 0xc5dc5270, 0x246a009f,
+ 0x46b78675, 0xa701d49a, 0xc30bfa7b, 0x22bda894, 0x40602e7e,
+ 0xa1d67c91},
+ {0x00000000, 0x5880e2d7, 0xf106b474, 0xa98656a3, 0xe20d68e9,
+ 0xba8d8a3e, 0x130bdc9d, 0x4b8b3e4a, 0x851da109, 0xdd9d43de,
+ 0x741b157d, 0x2c9bf7aa, 0x6710c9e0, 0x3f902b37, 0x96167d94,
+ 0xce969f43, 0x0a3b4213, 0x52bba0c4, 0xfb3df667, 0xa3bd14b0,
+ 0xe8362afa, 0xb0b6c82d, 0x19309e8e, 0x41b07c59, 0x8f26e31a,
+ 0xd7a601cd, 0x7e20576e, 0x26a0b5b9, 0x6d2b8bf3, 0x35ab6924,
+ 0x9c2d3f87, 0xc4addd50, 0x14768426, 0x4cf666f1, 0xe5703052,
+ 0xbdf0d285, 0xf67beccf, 0xaefb0e18, 0x077d58bb, 0x5ffdba6c,
+ 0x916b252f, 0xc9ebc7f8, 0x606d915b, 0x38ed738c, 0x73664dc6,
+ 0x2be6af11, 0x8260f9b2, 0xdae01b65, 0x1e4dc635, 0x46cd24e2,
+ 0xef4b7241, 0xb7cb9096, 0xfc40aedc, 0xa4c04c0b, 0x0d461aa8,
+ 0x55c6f87f, 0x9b50673c, 0xc3d085eb, 0x6a56d348, 0x32d6319f,
+ 0x795d0fd5, 0x21dded02, 0x885bbba1, 0xd0db5976, 0x28ec084d,
+ 0x706cea9a, 0xd9eabc39, 0x816a5eee, 0xcae160a4, 0x92618273,
+ 0x3be7d4d0, 0x63673607, 0xadf1a944, 0xf5714b93, 0x5cf71d30,
+ 0x0477ffe7, 0x4ffcc1ad, 0x177c237a, 0xbefa75d9, 0xe67a970e,
+ 0x22d74a5e, 0x7a57a889, 0xd3d1fe2a, 0x8b511cfd, 0xc0da22b7,
+ 0x985ac060, 0x31dc96c3, 0x695c7414, 0xa7caeb57, 0xff4a0980,
+ 0x56cc5f23, 0x0e4cbdf4, 0x45c783be, 0x1d476169, 0xb4c137ca,
+ 0xec41d51d, 0x3c9a8c6b, 0x641a6ebc, 0xcd9c381f, 0x951cdac8,
+ 0xde97e482, 0x86170655, 0x2f9150f6, 0x7711b221, 0xb9872d62,
+ 0xe107cfb5, 0x48819916, 0x10017bc1, 0x5b8a458b, 0x030aa75c,
+ 0xaa8cf1ff, 0xf20c1328, 0x36a1ce78, 0x6e212caf, 0xc7a77a0c,
+ 0x9f2798db, 0xd4aca691, 0x8c2c4446, 0x25aa12e5, 0x7d2af032,
+ 0xb3bc6f71, 0xeb3c8da6, 0x42badb05, 0x1a3a39d2, 0x51b10798,
+ 0x0931e54f, 0xa0b7b3ec, 0xf837513b, 0x50d8119a, 0x0858f34d,
+ 0xa1dea5ee, 0xf95e4739, 0xb2d57973, 0xea559ba4, 0x43d3cd07,
+ 0x1b532fd0, 0xd5c5b093, 0x8d455244, 0x24c304e7, 0x7c43e630,
+ 0x37c8d87a, 0x6f483aad, 0xc6ce6c0e, 0x9e4e8ed9, 0x5ae35389,
+ 0x0263b15e, 0xabe5e7fd, 0xf365052a, 0xb8ee3b60, 0xe06ed9b7,
+ 0x49e88f14, 0x11686dc3, 0xdffef280, 0x877e1057, 0x2ef846f4,
+ 0x7678a423, 0x3df39a69, 0x657378be, 0xccf52e1d, 0x9475ccca,
+ 0x44ae95bc, 0x1c2e776b, 0xb5a821c8, 0xed28c31f, 0xa6a3fd55,
+ 0xfe231f82, 0x57a54921, 0x0f25abf6, 0xc1b334b5, 0x9933d662,
+ 0x30b580c1, 0x68356216, 0x23be5c5c, 0x7b3ebe8b, 0xd2b8e828,
+ 0x8a380aff, 0x4e95d7af, 0x16153578, 0xbf9363db, 0xe713810c,
+ 0xac98bf46, 0xf4185d91, 0x5d9e0b32, 0x051ee9e5, 0xcb8876a6,
+ 0x93089471, 0x3a8ec2d2, 0x620e2005, 0x29851e4f, 0x7105fc98,
+ 0xd883aa3b, 0x800348ec, 0x783419d7, 0x20b4fb00, 0x8932ada3,
+ 0xd1b24f74, 0x9a39713e, 0xc2b993e9, 0x6b3fc54a, 0x33bf279d,
+ 0xfd29b8de, 0xa5a95a09, 0x0c2f0caa, 0x54afee7d, 0x1f24d037,
+ 0x47a432e0, 0xee226443, 0xb6a28694, 0x720f5bc4, 0x2a8fb913,
+ 0x8309efb0, 0xdb890d67, 0x9002332d, 0xc882d1fa, 0x61048759,
+ 0x3984658e, 0xf712facd, 0xaf92181a, 0x06144eb9, 0x5e94ac6e,
+ 0x151f9224, 0x4d9f70f3, 0xe4192650, 0xbc99c487, 0x6c429df1,
+ 0x34c27f26, 0x9d442985, 0xc5c4cb52, 0x8e4ff518, 0xd6cf17cf,
+ 0x7f49416c, 0x27c9a3bb, 0xe95f3cf8, 0xb1dfde2f, 0x1859888c,
+ 0x40d96a5b, 0x0b525411, 0x53d2b6c6, 0xfa54e065, 0xa2d402b2,
+ 0x6679dfe2, 0x3ef93d35, 0x977f6b96, 0xcfff8941, 0x8474b70b,
+ 0xdcf455dc, 0x7572037f, 0x2df2e1a8, 0xe3647eeb, 0xbbe49c3c,
+ 0x1262ca9f, 0x4ae22848, 0x01691602, 0x59e9f4d5, 0xf06fa276,
+ 0xa8ef40a1},
+ {0x00000000, 0x463b6765, 0x8c76ceca, 0xca4da9af, 0x59ebed4e,
+ 0x1fd08a2b, 0xd59d2384, 0x93a644e1, 0xb2d6db9d, 0xf4edbcf8,
+ 0x3ea01557, 0x789b7232, 0xeb3d36d3, 0xad0651b6, 0x674bf819,
+ 0x21709f7c, 0x25abc6e0, 0x6390a185, 0xa9dd082a, 0xefe66f4f,
+ 0x7c402bae, 0x3a7b4ccb, 0xf036e564, 0xb60d8201, 0x977d1d7d,
+ 0xd1467a18, 0x1b0bd3b7, 0x5d30b4d2, 0xce96f033, 0x88ad9756,
+ 0x42e03ef9, 0x04db599c, 0x0b50fc1a, 0x4d6b9b7f, 0x872632d0,
+ 0xc11d55b5, 0x52bb1154, 0x14807631, 0xdecddf9e, 0x98f6b8fb,
+ 0xb9862787, 0xffbd40e2, 0x35f0e94d, 0x73cb8e28, 0xe06dcac9,
+ 0xa656adac, 0x6c1b0403, 0x2a206366, 0x2efb3afa, 0x68c05d9f,
+ 0xa28df430, 0xe4b69355, 0x7710d7b4, 0x312bb0d1, 0xfb66197e,
+ 0xbd5d7e1b, 0x9c2de167, 0xda168602, 0x105b2fad, 0x566048c8,
+ 0xc5c60c29, 0x83fd6b4c, 0x49b0c2e3, 0x0f8ba586, 0x16a0f835,
+ 0x509b9f50, 0x9ad636ff, 0xdced519a, 0x4f4b157b, 0x0970721e,
+ 0xc33ddbb1, 0x8506bcd4, 0xa47623a8, 0xe24d44cd, 0x2800ed62,
+ 0x6e3b8a07, 0xfd9dcee6, 0xbba6a983, 0x71eb002c, 0x37d06749,
+ 0x330b3ed5, 0x753059b0, 0xbf7df01f, 0xf946977a, 0x6ae0d39b,
+ 0x2cdbb4fe, 0xe6961d51, 0xa0ad7a34, 0x81dde548, 0xc7e6822d,
+ 0x0dab2b82, 0x4b904ce7, 0xd8360806, 0x9e0d6f63, 0x5440c6cc,
+ 0x127ba1a9, 0x1df0042f, 0x5bcb634a, 0x9186cae5, 0xd7bdad80,
+ 0x441be961, 0x02208e04, 0xc86d27ab, 0x8e5640ce, 0xaf26dfb2,
+ 0xe91db8d7, 0x23501178, 0x656b761d, 0xf6cd32fc, 0xb0f65599,
+ 0x7abbfc36, 0x3c809b53, 0x385bc2cf, 0x7e60a5aa, 0xb42d0c05,
+ 0xf2166b60, 0x61b02f81, 0x278b48e4, 0xedc6e14b, 0xabfd862e,
+ 0x8a8d1952, 0xccb67e37, 0x06fbd798, 0x40c0b0fd, 0xd366f41c,
+ 0x955d9379, 0x5f103ad6, 0x192b5db3, 0x2c40f16b, 0x6a7b960e,
+ 0xa0363fa1, 0xe60d58c4, 0x75ab1c25, 0x33907b40, 0xf9ddd2ef,
+ 0xbfe6b58a, 0x9e962af6, 0xd8ad4d93, 0x12e0e43c, 0x54db8359,
+ 0xc77dc7b8, 0x8146a0dd, 0x4b0b0972, 0x0d306e17, 0x09eb378b,
+ 0x4fd050ee, 0x859df941, 0xc3a69e24, 0x5000dac5, 0x163bbda0,
+ 0xdc76140f, 0x9a4d736a, 0xbb3dec16, 0xfd068b73, 0x374b22dc,
+ 0x717045b9, 0xe2d60158, 0xa4ed663d, 0x6ea0cf92, 0x289ba8f7,
+ 0x27100d71, 0x612b6a14, 0xab66c3bb, 0xed5da4de, 0x7efbe03f,
+ 0x38c0875a, 0xf28d2ef5, 0xb4b64990, 0x95c6d6ec, 0xd3fdb189,
+ 0x19b01826, 0x5f8b7f43, 0xcc2d3ba2, 0x8a165cc7, 0x405bf568,
+ 0x0660920d, 0x02bbcb91, 0x4480acf4, 0x8ecd055b, 0xc8f6623e,
+ 0x5b5026df, 0x1d6b41ba, 0xd726e815, 0x911d8f70, 0xb06d100c,
+ 0xf6567769, 0x3c1bdec6, 0x7a20b9a3, 0xe986fd42, 0xafbd9a27,
+ 0x65f03388, 0x23cb54ed, 0x3ae0095e, 0x7cdb6e3b, 0xb696c794,
+ 0xf0ada0f1, 0x630be410, 0x25308375, 0xef7d2ada, 0xa9464dbf,
+ 0x8836d2c3, 0xce0db5a6, 0x04401c09, 0x427b7b6c, 0xd1dd3f8d,
+ 0x97e658e8, 0x5dabf147, 0x1b909622, 0x1f4bcfbe, 0x5970a8db,
+ 0x933d0174, 0xd5066611, 0x46a022f0, 0x009b4595, 0xcad6ec3a,
+ 0x8ced8b5f, 0xad9d1423, 0xeba67346, 0x21ebdae9, 0x67d0bd8c,
+ 0xf476f96d, 0xb24d9e08, 0x780037a7, 0x3e3b50c2, 0x31b0f544,
+ 0x778b9221, 0xbdc63b8e, 0xfbfd5ceb, 0x685b180a, 0x2e607f6f,
+ 0xe42dd6c0, 0xa216b1a5, 0x83662ed9, 0xc55d49bc, 0x0f10e013,
+ 0x492b8776, 0xda8dc397, 0x9cb6a4f2, 0x56fb0d5d, 0x10c06a38,
+ 0x141b33a4, 0x522054c1, 0x986dfd6e, 0xde569a0b, 0x4df0deea,
+ 0x0bcbb98f, 0xc1861020, 0x87bd7745, 0xa6cde839, 0xe0f68f5c,
+ 0x2abb26f3, 0x6c804196, 0xff260577, 0xb91d6212, 0x7350cbbd,
+ 0x356bacd8}};
+
+#endif
+
+#endif
+
+#if N == 6
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0x3db1ecdc, 0x7b63d9b8, 0x46d23564, 0xf6c7b370,
+ 0xcb765fac, 0x8da46ac8, 0xb0158614, 0x36fe60a1, 0x0b4f8c7d,
+ 0x4d9db919, 0x702c55c5, 0xc039d3d1, 0xfd883f0d, 0xbb5a0a69,
+ 0x86ebe6b5, 0x6dfcc142, 0x504d2d9e, 0x169f18fa, 0x2b2ef426,
+ 0x9b3b7232, 0xa68a9eee, 0xe058ab8a, 0xdde94756, 0x5b02a1e3,
+ 0x66b34d3f, 0x2061785b, 0x1dd09487, 0xadc51293, 0x9074fe4f,
+ 0xd6a6cb2b, 0xeb1727f7, 0xdbf98284, 0xe6486e58, 0xa09a5b3c,
+ 0x9d2bb7e0, 0x2d3e31f4, 0x108fdd28, 0x565de84c, 0x6bec0490,
+ 0xed07e225, 0xd0b60ef9, 0x96643b9d, 0xabd5d741, 0x1bc05155,
+ 0x2671bd89, 0x60a388ed, 0x5d126431, 0xb60543c6, 0x8bb4af1a,
+ 0xcd669a7e, 0xf0d776a2, 0x40c2f0b6, 0x7d731c6a, 0x3ba1290e,
+ 0x0610c5d2, 0x80fb2367, 0xbd4acfbb, 0xfb98fadf, 0xc6291603,
+ 0x763c9017, 0x4b8d7ccb, 0x0d5f49af, 0x30eea573, 0x6c820349,
+ 0x5133ef95, 0x17e1daf1, 0x2a50362d, 0x9a45b039, 0xa7f45ce5,
+ 0xe1266981, 0xdc97855d, 0x5a7c63e8, 0x67cd8f34, 0x211fba50,
+ 0x1cae568c, 0xacbbd098, 0x910a3c44, 0xd7d80920, 0xea69e5fc,
+ 0x017ec20b, 0x3ccf2ed7, 0x7a1d1bb3, 0x47acf76f, 0xf7b9717b,
+ 0xca089da7, 0x8cdaa8c3, 0xb16b441f, 0x3780a2aa, 0x0a314e76,
+ 0x4ce37b12, 0x715297ce, 0xc14711da, 0xfcf6fd06, 0xba24c862,
+ 0x879524be, 0xb77b81cd, 0x8aca6d11, 0xcc185875, 0xf1a9b4a9,
+ 0x41bc32bd, 0x7c0dde61, 0x3adfeb05, 0x076e07d9, 0x8185e16c,
+ 0xbc340db0, 0xfae638d4, 0xc757d408, 0x7742521c, 0x4af3bec0,
+ 0x0c218ba4, 0x31906778, 0xda87408f, 0xe736ac53, 0xa1e49937,
+ 0x9c5575eb, 0x2c40f3ff, 0x11f11f23, 0x57232a47, 0x6a92c69b,
+ 0xec79202e, 0xd1c8ccf2, 0x971af996, 0xaaab154a, 0x1abe935e,
+ 0x270f7f82, 0x61dd4ae6, 0x5c6ca63a, 0xd9040692, 0xe4b5ea4e,
+ 0xa267df2a, 0x9fd633f6, 0x2fc3b5e2, 0x1272593e, 0x54a06c5a,
+ 0x69118086, 0xeffa6633, 0xd24b8aef, 0x9499bf8b, 0xa9285357,
+ 0x193dd543, 0x248c399f, 0x625e0cfb, 0x5fefe027, 0xb4f8c7d0,
+ 0x89492b0c, 0xcf9b1e68, 0xf22af2b4, 0x423f74a0, 0x7f8e987c,
+ 0x395cad18, 0x04ed41c4, 0x8206a771, 0xbfb74bad, 0xf9657ec9,
+ 0xc4d49215, 0x74c11401, 0x4970f8dd, 0x0fa2cdb9, 0x32132165,
+ 0x02fd8416, 0x3f4c68ca, 0x799e5dae, 0x442fb172, 0xf43a3766,
+ 0xc98bdbba, 0x8f59eede, 0xb2e80202, 0x3403e4b7, 0x09b2086b,
+ 0x4f603d0f, 0x72d1d1d3, 0xc2c457c7, 0xff75bb1b, 0xb9a78e7f,
+ 0x841662a3, 0x6f014554, 0x52b0a988, 0x14629cec, 0x29d37030,
+ 0x99c6f624, 0xa4771af8, 0xe2a52f9c, 0xdf14c340, 0x59ff25f5,
+ 0x644ec929, 0x229cfc4d, 0x1f2d1091, 0xaf389685, 0x92897a59,
+ 0xd45b4f3d, 0xe9eaa3e1, 0xb58605db, 0x8837e907, 0xcee5dc63,
+ 0xf35430bf, 0x4341b6ab, 0x7ef05a77, 0x38226f13, 0x059383cf,
+ 0x8378657a, 0xbec989a6, 0xf81bbcc2, 0xc5aa501e, 0x75bfd60a,
+ 0x480e3ad6, 0x0edc0fb2, 0x336de36e, 0xd87ac499, 0xe5cb2845,
+ 0xa3191d21, 0x9ea8f1fd, 0x2ebd77e9, 0x130c9b35, 0x55deae51,
+ 0x686f428d, 0xee84a438, 0xd33548e4, 0x95e77d80, 0xa856915c,
+ 0x18431748, 0x25f2fb94, 0x6320cef0, 0x5e91222c, 0x6e7f875f,
+ 0x53ce6b83, 0x151c5ee7, 0x28adb23b, 0x98b8342f, 0xa509d8f3,
+ 0xe3dbed97, 0xde6a014b, 0x5881e7fe, 0x65300b22, 0x23e23e46,
+ 0x1e53d29a, 0xae46548e, 0x93f7b852, 0xd5258d36, 0xe89461ea,
+ 0x0383461d, 0x3e32aac1, 0x78e09fa5, 0x45517379, 0xf544f56d,
+ 0xc8f519b1, 0x8e272cd5, 0xb396c009, 0x357d26bc, 0x08ccca60,
+ 0x4e1eff04, 0x73af13d8, 0xc3ba95cc, 0xfe0b7910, 0xb8d94c74,
+ 0x8568a0a8},
+ {0x00000000, 0x69790b65, 0xd2f216ca, 0xbb8b1daf, 0x7e952bd5,
+ 0x17ec20b0, 0xac673d1f, 0xc51e367a, 0xfd2a57aa, 0x94535ccf,
+ 0x2fd84160, 0x46a14a05, 0x83bf7c7f, 0xeac6771a, 0x514d6ab5,
+ 0x383461d0, 0x2125a915, 0x485ca270, 0xf3d7bfdf, 0x9aaeb4ba,
+ 0x5fb082c0, 0x36c989a5, 0x8d42940a, 0xe43b9f6f, 0xdc0ffebf,
+ 0xb576f5da, 0x0efde875, 0x6784e310, 0xa29ad56a, 0xcbe3de0f,
+ 0x7068c3a0, 0x1911c8c5, 0x424b522a, 0x2b32594f, 0x90b944e0,
+ 0xf9c04f85, 0x3cde79ff, 0x55a7729a, 0xee2c6f35, 0x87556450,
+ 0xbf610580, 0xd6180ee5, 0x6d93134a, 0x04ea182f, 0xc1f42e55,
+ 0xa88d2530, 0x1306389f, 0x7a7f33fa, 0x636efb3f, 0x0a17f05a,
+ 0xb19cedf5, 0xd8e5e690, 0x1dfbd0ea, 0x7482db8f, 0xcf09c620,
+ 0xa670cd45, 0x9e44ac95, 0xf73da7f0, 0x4cb6ba5f, 0x25cfb13a,
+ 0xe0d18740, 0x89a88c25, 0x3223918a, 0x5b5a9aef, 0x8496a454,
+ 0xedefaf31, 0x5664b29e, 0x3f1db9fb, 0xfa038f81, 0x937a84e4,
+ 0x28f1994b, 0x4188922e, 0x79bcf3fe, 0x10c5f89b, 0xab4ee534,
+ 0xc237ee51, 0x0729d82b, 0x6e50d34e, 0xd5dbcee1, 0xbca2c584,
+ 0xa5b30d41, 0xccca0624, 0x77411b8b, 0x1e3810ee, 0xdb262694,
+ 0xb25f2df1, 0x09d4305e, 0x60ad3b3b, 0x58995aeb, 0x31e0518e,
+ 0x8a6b4c21, 0xe3124744, 0x260c713e, 0x4f757a5b, 0xf4fe67f4,
+ 0x9d876c91, 0xc6ddf67e, 0xafa4fd1b, 0x142fe0b4, 0x7d56ebd1,
+ 0xb848ddab, 0xd131d6ce, 0x6abacb61, 0x03c3c004, 0x3bf7a1d4,
+ 0x528eaab1, 0xe905b71e, 0x807cbc7b, 0x45628a01, 0x2c1b8164,
+ 0x97909ccb, 0xfee997ae, 0xe7f85f6b, 0x8e81540e, 0x350a49a1,
+ 0x5c7342c4, 0x996d74be, 0xf0147fdb, 0x4b9f6274, 0x22e66911,
+ 0x1ad208c1, 0x73ab03a4, 0xc8201e0b, 0xa159156e, 0x64472314,
+ 0x0d3e2871, 0xb6b535de, 0xdfcc3ebb, 0xd25c4ee9, 0xbb25458c,
+ 0x00ae5823, 0x69d75346, 0xacc9653c, 0xc5b06e59, 0x7e3b73f6,
+ 0x17427893, 0x2f761943, 0x460f1226, 0xfd840f89, 0x94fd04ec,
+ 0x51e33296, 0x389a39f3, 0x8311245c, 0xea682f39, 0xf379e7fc,
+ 0x9a00ec99, 0x218bf136, 0x48f2fa53, 0x8deccc29, 0xe495c74c,
+ 0x5f1edae3, 0x3667d186, 0x0e53b056, 0x672abb33, 0xdca1a69c,
+ 0xb5d8adf9, 0x70c69b83, 0x19bf90e6, 0xa2348d49, 0xcb4d862c,
+ 0x90171cc3, 0xf96e17a6, 0x42e50a09, 0x2b9c016c, 0xee823716,
+ 0x87fb3c73, 0x3c7021dc, 0x55092ab9, 0x6d3d4b69, 0x0444400c,
+ 0xbfcf5da3, 0xd6b656c6, 0x13a860bc, 0x7ad16bd9, 0xc15a7676,
+ 0xa8237d13, 0xb132b5d6, 0xd84bbeb3, 0x63c0a31c, 0x0ab9a879,
+ 0xcfa79e03, 0xa6de9566, 0x1d5588c9, 0x742c83ac, 0x4c18e27c,
+ 0x2561e919, 0x9eeaf4b6, 0xf793ffd3, 0x328dc9a9, 0x5bf4c2cc,
+ 0xe07fdf63, 0x8906d406, 0x56caeabd, 0x3fb3e1d8, 0x8438fc77,
+ 0xed41f712, 0x285fc168, 0x4126ca0d, 0xfaadd7a2, 0x93d4dcc7,
+ 0xabe0bd17, 0xc299b672, 0x7912abdd, 0x106ba0b8, 0xd57596c2,
+ 0xbc0c9da7, 0x07878008, 0x6efe8b6d, 0x77ef43a8, 0x1e9648cd,
+ 0xa51d5562, 0xcc645e07, 0x097a687d, 0x60036318, 0xdb887eb7,
+ 0xb2f175d2, 0x8ac51402, 0xe3bc1f67, 0x583702c8, 0x314e09ad,
+ 0xf4503fd7, 0x9d2934b2, 0x26a2291d, 0x4fdb2278, 0x1481b897,
+ 0x7df8b3f2, 0xc673ae5d, 0xaf0aa538, 0x6a149342, 0x036d9827,
+ 0xb8e68588, 0xd19f8eed, 0xe9abef3d, 0x80d2e458, 0x3b59f9f7,
+ 0x5220f292, 0x973ec4e8, 0xfe47cf8d, 0x45ccd222, 0x2cb5d947,
+ 0x35a41182, 0x5cdd1ae7, 0xe7560748, 0x8e2f0c2d, 0x4b313a57,
+ 0x22483132, 0x99c32c9d, 0xf0ba27f8, 0xc88e4628, 0xa1f74d4d,
+ 0x1a7c50e2, 0x73055b87, 0xb61b6dfd, 0xdf626698, 0x64e97b37,
+ 0x0d907052},
+ {0x00000000, 0x7fc99b93, 0xff933726, 0x805aacb5, 0x2457680d,
+ 0x5b9ef39e, 0xdbc45f2b, 0xa40dc4b8, 0x48aed01a, 0x37674b89,
+ 0xb73de73c, 0xc8f47caf, 0x6cf9b817, 0x13302384, 0x936a8f31,
+ 0xeca314a2, 0x915da034, 0xee943ba7, 0x6ece9712, 0x11070c81,
+ 0xb50ac839, 0xcac353aa, 0x4a99ff1f, 0x3550648c, 0xd9f3702e,
+ 0xa63aebbd, 0x26604708, 0x59a9dc9b, 0xfda41823, 0x826d83b0,
+ 0x02372f05, 0x7dfeb496, 0xf9ca4629, 0x8603ddba, 0x0659710f,
+ 0x7990ea9c, 0xdd9d2e24, 0xa254b5b7, 0x220e1902, 0x5dc78291,
+ 0xb1649633, 0xcead0da0, 0x4ef7a115, 0x313e3a86, 0x9533fe3e,
+ 0xeafa65ad, 0x6aa0c918, 0x1569528b, 0x6897e61d, 0x175e7d8e,
+ 0x9704d13b, 0xe8cd4aa8, 0x4cc08e10, 0x33091583, 0xb353b936,
+ 0xcc9a22a5, 0x20393607, 0x5ff0ad94, 0xdfaa0121, 0xa0639ab2,
+ 0x046e5e0a, 0x7ba7c599, 0xfbfd692c, 0x8434f2bf, 0x28e58a13,
+ 0x572c1180, 0xd776bd35, 0xa8bf26a6, 0x0cb2e21e, 0x737b798d,
+ 0xf321d538, 0x8ce84eab, 0x604b5a09, 0x1f82c19a, 0x9fd86d2f,
+ 0xe011f6bc, 0x441c3204, 0x3bd5a997, 0xbb8f0522, 0xc4469eb1,
+ 0xb9b82a27, 0xc671b1b4, 0x462b1d01, 0x39e28692, 0x9def422a,
+ 0xe226d9b9, 0x627c750c, 0x1db5ee9f, 0xf116fa3d, 0x8edf61ae,
+ 0x0e85cd1b, 0x714c5688, 0xd5419230, 0xaa8809a3, 0x2ad2a516,
+ 0x551b3e85, 0xd12fcc3a, 0xaee657a9, 0x2ebcfb1c, 0x5175608f,
+ 0xf578a437, 0x8ab13fa4, 0x0aeb9311, 0x75220882, 0x99811c20,
+ 0xe64887b3, 0x66122b06, 0x19dbb095, 0xbdd6742d, 0xc21fefbe,
+ 0x4245430b, 0x3d8cd898, 0x40726c0e, 0x3fbbf79d, 0xbfe15b28,
+ 0xc028c0bb, 0x64250403, 0x1bec9f90, 0x9bb63325, 0xe47fa8b6,
+ 0x08dcbc14, 0x77152787, 0xf74f8b32, 0x888610a1, 0x2c8bd419,
+ 0x53424f8a, 0xd318e33f, 0xacd178ac, 0x51cb1426, 0x2e028fb5,
+ 0xae582300, 0xd191b893, 0x759c7c2b, 0x0a55e7b8, 0x8a0f4b0d,
+ 0xf5c6d09e, 0x1965c43c, 0x66ac5faf, 0xe6f6f31a, 0x993f6889,
+ 0x3d32ac31, 0x42fb37a2, 0xc2a19b17, 0xbd680084, 0xc096b412,
+ 0xbf5f2f81, 0x3f058334, 0x40cc18a7, 0xe4c1dc1f, 0x9b08478c,
+ 0x1b52eb39, 0x649b70aa, 0x88386408, 0xf7f1ff9b, 0x77ab532e,
+ 0x0862c8bd, 0xac6f0c05, 0xd3a69796, 0x53fc3b23, 0x2c35a0b0,
+ 0xa801520f, 0xd7c8c99c, 0x57926529, 0x285bfeba, 0x8c563a02,
+ 0xf39fa191, 0x73c50d24, 0x0c0c96b7, 0xe0af8215, 0x9f661986,
+ 0x1f3cb533, 0x60f52ea0, 0xc4f8ea18, 0xbb31718b, 0x3b6bdd3e,
+ 0x44a246ad, 0x395cf23b, 0x469569a8, 0xc6cfc51d, 0xb9065e8e,
+ 0x1d0b9a36, 0x62c201a5, 0xe298ad10, 0x9d513683, 0x71f22221,
+ 0x0e3bb9b2, 0x8e611507, 0xf1a88e94, 0x55a54a2c, 0x2a6cd1bf,
+ 0xaa367d0a, 0xd5ffe699, 0x792e9e35, 0x06e705a6, 0x86bda913,
+ 0xf9743280, 0x5d79f638, 0x22b06dab, 0xa2eac11e, 0xdd235a8d,
+ 0x31804e2f, 0x4e49d5bc, 0xce137909, 0xb1dae29a, 0x15d72622,
+ 0x6a1ebdb1, 0xea441104, 0x958d8a97, 0xe8733e01, 0x97baa592,
+ 0x17e00927, 0x682992b4, 0xcc24560c, 0xb3edcd9f, 0x33b7612a,
+ 0x4c7efab9, 0xa0ddee1b, 0xdf147588, 0x5f4ed93d, 0x208742ae,
+ 0x848a8616, 0xfb431d85, 0x7b19b130, 0x04d02aa3, 0x80e4d81c,
+ 0xff2d438f, 0x7f77ef3a, 0x00be74a9, 0xa4b3b011, 0xdb7a2b82,
+ 0x5b208737, 0x24e91ca4, 0xc84a0806, 0xb7839395, 0x37d93f20,
+ 0x4810a4b3, 0xec1d600b, 0x93d4fb98, 0x138e572d, 0x6c47ccbe,
+ 0x11b97828, 0x6e70e3bb, 0xee2a4f0e, 0x91e3d49d, 0x35ee1025,
+ 0x4a278bb6, 0xca7d2703, 0xb5b4bc90, 0x5917a832, 0x26de33a1,
+ 0xa6849f14, 0xd94d0487, 0x7d40c03f, 0x02895bac, 0x82d3f719,
+ 0xfd1a6c8a},
+ {0x00000000, 0xa396284c, 0x9c5d56d9, 0x3fcb7e95, 0xe3cbabf3,
+ 0x405d83bf, 0x7f96fd2a, 0xdc00d566, 0x1ce651a7, 0xbf7079eb,
+ 0x80bb077e, 0x232d2f32, 0xff2dfa54, 0x5cbbd218, 0x6370ac8d,
+ 0xc0e684c1, 0x39cca34e, 0x9a5a8b02, 0xa591f597, 0x0607dddb,
+ 0xda0708bd, 0x799120f1, 0x465a5e64, 0xe5cc7628, 0x252af2e9,
+ 0x86bcdaa5, 0xb977a430, 0x1ae18c7c, 0xc6e1591a, 0x65777156,
+ 0x5abc0fc3, 0xf92a278f, 0x7399469c, 0xd00f6ed0, 0xefc41045,
+ 0x4c523809, 0x9052ed6f, 0x33c4c523, 0x0c0fbbb6, 0xaf9993fa,
+ 0x6f7f173b, 0xcce93f77, 0xf32241e2, 0x50b469ae, 0x8cb4bcc8,
+ 0x2f229484, 0x10e9ea11, 0xb37fc25d, 0x4a55e5d2, 0xe9c3cd9e,
+ 0xd608b30b, 0x759e9b47, 0xa99e4e21, 0x0a08666d, 0x35c318f8,
+ 0x965530b4, 0x56b3b475, 0xf5259c39, 0xcaeee2ac, 0x6978cae0,
+ 0xb5781f86, 0x16ee37ca, 0x2925495f, 0x8ab36113, 0xe7328d38,
+ 0x44a4a574, 0x7b6fdbe1, 0xd8f9f3ad, 0x04f926cb, 0xa76f0e87,
+ 0x98a47012, 0x3b32585e, 0xfbd4dc9f, 0x5842f4d3, 0x67898a46,
+ 0xc41fa20a, 0x181f776c, 0xbb895f20, 0x844221b5, 0x27d409f9,
+ 0xdefe2e76, 0x7d68063a, 0x42a378af, 0xe13550e3, 0x3d358585,
+ 0x9ea3adc9, 0xa168d35c, 0x02fefb10, 0xc2187fd1, 0x618e579d,
+ 0x5e452908, 0xfdd30144, 0x21d3d422, 0x8245fc6e, 0xbd8e82fb,
+ 0x1e18aab7, 0x94abcba4, 0x373de3e8, 0x08f69d7d, 0xab60b531,
+ 0x77606057, 0xd4f6481b, 0xeb3d368e, 0x48ab1ec2, 0x884d9a03,
+ 0x2bdbb24f, 0x1410ccda, 0xb786e496, 0x6b8631f0, 0xc81019bc,
+ 0xf7db6729, 0x544d4f65, 0xad6768ea, 0x0ef140a6, 0x313a3e33,
+ 0x92ac167f, 0x4eacc319, 0xed3aeb55, 0xd2f195c0, 0x7167bd8c,
+ 0xb181394d, 0x12171101, 0x2ddc6f94, 0x8e4a47d8, 0x524a92be,
+ 0xf1dcbaf2, 0xce17c467, 0x6d81ec2b, 0x15141c31, 0xb682347d,
+ 0x89494ae8, 0x2adf62a4, 0xf6dfb7c2, 0x55499f8e, 0x6a82e11b,
+ 0xc914c957, 0x09f24d96, 0xaa6465da, 0x95af1b4f, 0x36393303,
+ 0xea39e665, 0x49afce29, 0x7664b0bc, 0xd5f298f0, 0x2cd8bf7f,
+ 0x8f4e9733, 0xb085e9a6, 0x1313c1ea, 0xcf13148c, 0x6c853cc0,
+ 0x534e4255, 0xf0d86a19, 0x303eeed8, 0x93a8c694, 0xac63b801,
+ 0x0ff5904d, 0xd3f5452b, 0x70636d67, 0x4fa813f2, 0xec3e3bbe,
+ 0x668d5aad, 0xc51b72e1, 0xfad00c74, 0x59462438, 0x8546f15e,
+ 0x26d0d912, 0x191ba787, 0xba8d8fcb, 0x7a6b0b0a, 0xd9fd2346,
+ 0xe6365dd3, 0x45a0759f, 0x99a0a0f9, 0x3a3688b5, 0x05fdf620,
+ 0xa66bde6c, 0x5f41f9e3, 0xfcd7d1af, 0xc31caf3a, 0x608a8776,
+ 0xbc8a5210, 0x1f1c7a5c, 0x20d704c9, 0x83412c85, 0x43a7a844,
+ 0xe0318008, 0xdffafe9d, 0x7c6cd6d1, 0xa06c03b7, 0x03fa2bfb,
+ 0x3c31556e, 0x9fa77d22, 0xf2269109, 0x51b0b945, 0x6e7bc7d0,
+ 0xcdedef9c, 0x11ed3afa, 0xb27b12b6, 0x8db06c23, 0x2e26446f,
+ 0xeec0c0ae, 0x4d56e8e2, 0x729d9677, 0xd10bbe3b, 0x0d0b6b5d,
+ 0xae9d4311, 0x91563d84, 0x32c015c8, 0xcbea3247, 0x687c1a0b,
+ 0x57b7649e, 0xf4214cd2, 0x282199b4, 0x8bb7b1f8, 0xb47ccf6d,
+ 0x17eae721, 0xd70c63e0, 0x749a4bac, 0x4b513539, 0xe8c71d75,
+ 0x34c7c813, 0x9751e05f, 0xa89a9eca, 0x0b0cb686, 0x81bfd795,
+ 0x2229ffd9, 0x1de2814c, 0xbe74a900, 0x62747c66, 0xc1e2542a,
+ 0xfe292abf, 0x5dbf02f3, 0x9d598632, 0x3ecfae7e, 0x0104d0eb,
+ 0xa292f8a7, 0x7e922dc1, 0xdd04058d, 0xe2cf7b18, 0x41595354,
+ 0xb87374db, 0x1be55c97, 0x242e2202, 0x87b80a4e, 0x5bb8df28,
+ 0xf82ef764, 0xc7e589f1, 0x6473a1bd, 0xa495257c, 0x07030d30,
+ 0x38c873a5, 0x9b5e5be9, 0x475e8e8f, 0xe4c8a6c3, 0xdb03d856,
+ 0x7895f01a},
+ {0x00000000, 0x2a283862, 0x545070c4, 0x7e7848a6, 0xa8a0e188,
+ 0x8288d9ea, 0xfcf0914c, 0xd6d8a92e, 0x8a30c551, 0xa018fd33,
+ 0xde60b595, 0xf4488df7, 0x229024d9, 0x08b81cbb, 0x76c0541d,
+ 0x5ce86c7f, 0xcf108ce3, 0xe538b481, 0x9b40fc27, 0xb168c445,
+ 0x67b06d6b, 0x4d985509, 0x33e01daf, 0x19c825cd, 0x452049b2,
+ 0x6f0871d0, 0x11703976, 0x3b580114, 0xed80a83a, 0xc7a89058,
+ 0xb9d0d8fe, 0x93f8e09c, 0x45501f87, 0x6f7827e5, 0x11006f43,
+ 0x3b285721, 0xedf0fe0f, 0xc7d8c66d, 0xb9a08ecb, 0x9388b6a9,
+ 0xcf60dad6, 0xe548e2b4, 0x9b30aa12, 0xb1189270, 0x67c03b5e,
+ 0x4de8033c, 0x33904b9a, 0x19b873f8, 0x8a409364, 0xa068ab06,
+ 0xde10e3a0, 0xf438dbc2, 0x22e072ec, 0x08c84a8e, 0x76b00228,
+ 0x5c983a4a, 0x00705635, 0x2a586e57, 0x542026f1, 0x7e081e93,
+ 0xa8d0b7bd, 0x82f88fdf, 0xfc80c779, 0xd6a8ff1b, 0x8aa03f0e,
+ 0xa088076c, 0xdef04fca, 0xf4d877a8, 0x2200de86, 0x0828e6e4,
+ 0x7650ae42, 0x5c789620, 0x0090fa5f, 0x2ab8c23d, 0x54c08a9b,
+ 0x7ee8b2f9, 0xa8301bd7, 0x821823b5, 0xfc606b13, 0xd6485371,
+ 0x45b0b3ed, 0x6f988b8f, 0x11e0c329, 0x3bc8fb4b, 0xed105265,
+ 0xc7386a07, 0xb94022a1, 0x93681ac3, 0xcf8076bc, 0xe5a84ede,
+ 0x9bd00678, 0xb1f83e1a, 0x67209734, 0x4d08af56, 0x3370e7f0,
+ 0x1958df92, 0xcff02089, 0xe5d818eb, 0x9ba0504d, 0xb188682f,
+ 0x6750c101, 0x4d78f963, 0x3300b1c5, 0x192889a7, 0x45c0e5d8,
+ 0x6fe8ddba, 0x1190951c, 0x3bb8ad7e, 0xed600450, 0xc7483c32,
+ 0xb9307494, 0x93184cf6, 0x00e0ac6a, 0x2ac89408, 0x54b0dcae,
+ 0x7e98e4cc, 0xa8404de2, 0x82687580, 0xfc103d26, 0xd6380544,
+ 0x8ad0693b, 0xa0f85159, 0xde8019ff, 0xf4a8219d, 0x227088b3,
+ 0x0858b0d1, 0x7620f877, 0x5c08c015, 0xce31785d, 0xe419403f,
+ 0x9a610899, 0xb04930fb, 0x669199d5, 0x4cb9a1b7, 0x32c1e911,
+ 0x18e9d173, 0x4401bd0c, 0x6e29856e, 0x1051cdc8, 0x3a79f5aa,
+ 0xeca15c84, 0xc68964e6, 0xb8f12c40, 0x92d91422, 0x0121f4be,
+ 0x2b09ccdc, 0x5571847a, 0x7f59bc18, 0xa9811536, 0x83a92d54,
+ 0xfdd165f2, 0xd7f95d90, 0x8b1131ef, 0xa139098d, 0xdf41412b,
+ 0xf5697949, 0x23b1d067, 0x0999e805, 0x77e1a0a3, 0x5dc998c1,
+ 0x8b6167da, 0xa1495fb8, 0xdf31171e, 0xf5192f7c, 0x23c18652,
+ 0x09e9be30, 0x7791f696, 0x5db9cef4, 0x0151a28b, 0x2b799ae9,
+ 0x5501d24f, 0x7f29ea2d, 0xa9f14303, 0x83d97b61, 0xfda133c7,
+ 0xd7890ba5, 0x4471eb39, 0x6e59d35b, 0x10219bfd, 0x3a09a39f,
+ 0xecd10ab1, 0xc6f932d3, 0xb8817a75, 0x92a94217, 0xce412e68,
+ 0xe469160a, 0x9a115eac, 0xb03966ce, 0x66e1cfe0, 0x4cc9f782,
+ 0x32b1bf24, 0x18998746, 0x44914753, 0x6eb97f31, 0x10c13797,
+ 0x3ae90ff5, 0xec31a6db, 0xc6199eb9, 0xb861d61f, 0x9249ee7d,
+ 0xcea18202, 0xe489ba60, 0x9af1f2c6, 0xb0d9caa4, 0x6601638a,
+ 0x4c295be8, 0x3251134e, 0x18792b2c, 0x8b81cbb0, 0xa1a9f3d2,
+ 0xdfd1bb74, 0xf5f98316, 0x23212a38, 0x0909125a, 0x77715afc,
+ 0x5d59629e, 0x01b10ee1, 0x2b993683, 0x55e17e25, 0x7fc94647,
+ 0xa911ef69, 0x8339d70b, 0xfd419fad, 0xd769a7cf, 0x01c158d4,
+ 0x2be960b6, 0x55912810, 0x7fb91072, 0xa961b95c, 0x8349813e,
+ 0xfd31c998, 0xd719f1fa, 0x8bf19d85, 0xa1d9a5e7, 0xdfa1ed41,
+ 0xf589d523, 0x23517c0d, 0x0979446f, 0x77010cc9, 0x5d2934ab,
+ 0xced1d437, 0xe4f9ec55, 0x9a81a4f3, 0xb0a99c91, 0x667135bf,
+ 0x4c590ddd, 0x3221457b, 0x18097d19, 0x44e11166, 0x6ec92904,
+ 0x10b161a2, 0x3a9959c0, 0xec41f0ee, 0xc669c88c, 0xb811802a,
+ 0x9239b848},
+ {0x00000000, 0x4713f6fb, 0x8e27edf6, 0xc9341b0d, 0xc73eddad,
+ 0x802d2b56, 0x4919305b, 0x0e0ac6a0, 0x550cbd1b, 0x121f4be0,
+ 0xdb2b50ed, 0x9c38a616, 0x923260b6, 0xd521964d, 0x1c158d40,
+ 0x5b067bbb, 0xaa197a36, 0xed0a8ccd, 0x243e97c0, 0x632d613b,
+ 0x6d27a79b, 0x2a345160, 0xe3004a6d, 0xa413bc96, 0xff15c72d,
+ 0xb80631d6, 0x71322adb, 0x3621dc20, 0x382b1a80, 0x7f38ec7b,
+ 0xb60cf776, 0xf11f018d, 0x8f43f22d, 0xc85004d6, 0x01641fdb,
+ 0x4677e920, 0x487d2f80, 0x0f6ed97b, 0xc65ac276, 0x8149348d,
+ 0xda4f4f36, 0x9d5cb9cd, 0x5468a2c0, 0x137b543b, 0x1d71929b,
+ 0x5a626460, 0x93567f6d, 0xd4458996, 0x255a881b, 0x62497ee0,
+ 0xab7d65ed, 0xec6e9316, 0xe26455b6, 0xa577a34d, 0x6c43b840,
+ 0x2b504ebb, 0x70563500, 0x3745c3fb, 0xfe71d8f6, 0xb9622e0d,
+ 0xb768e8ad, 0xf07b1e56, 0x394f055b, 0x7e5cf3a0, 0xc5f6e21b,
+ 0x82e514e0, 0x4bd10fed, 0x0cc2f916, 0x02c83fb6, 0x45dbc94d,
+ 0x8cefd240, 0xcbfc24bb, 0x90fa5f00, 0xd7e9a9fb, 0x1eddb2f6,
+ 0x59ce440d, 0x57c482ad, 0x10d77456, 0xd9e36f5b, 0x9ef099a0,
+ 0x6fef982d, 0x28fc6ed6, 0xe1c875db, 0xa6db8320, 0xa8d14580,
+ 0xefc2b37b, 0x26f6a876, 0x61e55e8d, 0x3ae32536, 0x7df0d3cd,
+ 0xb4c4c8c0, 0xf3d73e3b, 0xfdddf89b, 0xbace0e60, 0x73fa156d,
+ 0x34e9e396, 0x4ab51036, 0x0da6e6cd, 0xc492fdc0, 0x83810b3b,
+ 0x8d8bcd9b, 0xca983b60, 0x03ac206d, 0x44bfd696, 0x1fb9ad2d,
+ 0x58aa5bd6, 0x919e40db, 0xd68db620, 0xd8877080, 0x9f94867b,
+ 0x56a09d76, 0x11b36b8d, 0xe0ac6a00, 0xa7bf9cfb, 0x6e8b87f6,
+ 0x2998710d, 0x2792b7ad, 0x60814156, 0xa9b55a5b, 0xeea6aca0,
+ 0xb5a0d71b, 0xf2b321e0, 0x3b873aed, 0x7c94cc16, 0x729e0ab6,
+ 0x358dfc4d, 0xfcb9e740, 0xbbaa11bb, 0x509cc277, 0x178f348c,
+ 0xdebb2f81, 0x99a8d97a, 0x97a21fda, 0xd0b1e921, 0x1985f22c,
+ 0x5e9604d7, 0x05907f6c, 0x42838997, 0x8bb7929a, 0xcca46461,
+ 0xc2aea2c1, 0x85bd543a, 0x4c894f37, 0x0b9ab9cc, 0xfa85b841,
+ 0xbd964eba, 0x74a255b7, 0x33b1a34c, 0x3dbb65ec, 0x7aa89317,
+ 0xb39c881a, 0xf48f7ee1, 0xaf89055a, 0xe89af3a1, 0x21aee8ac,
+ 0x66bd1e57, 0x68b7d8f7, 0x2fa42e0c, 0xe6903501, 0xa183c3fa,
+ 0xdfdf305a, 0x98ccc6a1, 0x51f8ddac, 0x16eb2b57, 0x18e1edf7,
+ 0x5ff21b0c, 0x96c60001, 0xd1d5f6fa, 0x8ad38d41, 0xcdc07bba,
+ 0x04f460b7, 0x43e7964c, 0x4ded50ec, 0x0afea617, 0xc3cabd1a,
+ 0x84d94be1, 0x75c64a6c, 0x32d5bc97, 0xfbe1a79a, 0xbcf25161,
+ 0xb2f897c1, 0xf5eb613a, 0x3cdf7a37, 0x7bcc8ccc, 0x20caf777,
+ 0x67d9018c, 0xaeed1a81, 0xe9feec7a, 0xe7f42ada, 0xa0e7dc21,
+ 0x69d3c72c, 0x2ec031d7, 0x956a206c, 0xd279d697, 0x1b4dcd9a,
+ 0x5c5e3b61, 0x5254fdc1, 0x15470b3a, 0xdc731037, 0x9b60e6cc,
+ 0xc0669d77, 0x87756b8c, 0x4e417081, 0x0952867a, 0x075840da,
+ 0x404bb621, 0x897fad2c, 0xce6c5bd7, 0x3f735a5a, 0x7860aca1,
+ 0xb154b7ac, 0xf6474157, 0xf84d87f7, 0xbf5e710c, 0x766a6a01,
+ 0x31799cfa, 0x6a7fe741, 0x2d6c11ba, 0xe4580ab7, 0xa34bfc4c,
+ 0xad413aec, 0xea52cc17, 0x2366d71a, 0x647521e1, 0x1a29d241,
+ 0x5d3a24ba, 0x940e3fb7, 0xd31dc94c, 0xdd170fec, 0x9a04f917,
+ 0x5330e21a, 0x142314e1, 0x4f256f5a, 0x083699a1, 0xc10282ac,
+ 0x86117457, 0x881bb2f7, 0xcf08440c, 0x063c5f01, 0x412fa9fa,
+ 0xb030a877, 0xf7235e8c, 0x3e174581, 0x7904b37a, 0x770e75da,
+ 0x301d8321, 0xf929982c, 0xbe3a6ed7, 0xe53c156c, 0xa22fe397,
+ 0x6b1bf89a, 0x2c080e61, 0x2202c8c1, 0x65113e3a, 0xac252537,
+ 0xeb36d3cc},
+ {0x00000000, 0xa13984ee, 0x99020f9d, 0x383b8b73, 0xe975197b,
+ 0x484c9d95, 0x707716e6, 0xd14e9208, 0x099b34b7, 0xa8a2b059,
+ 0x90993b2a, 0x31a0bfc4, 0xe0ee2dcc, 0x41d7a922, 0x79ec2251,
+ 0xd8d5a6bf, 0x1336696e, 0xb20fed80, 0x8a3466f3, 0x2b0de21d,
+ 0xfa437015, 0x5b7af4fb, 0x63417f88, 0xc278fb66, 0x1aad5dd9,
+ 0xbb94d937, 0x83af5244, 0x2296d6aa, 0xf3d844a2, 0x52e1c04c,
+ 0x6ada4b3f, 0xcbe3cfd1, 0x266cd2dc, 0x87555632, 0xbf6edd41,
+ 0x1e5759af, 0xcf19cba7, 0x6e204f49, 0x561bc43a, 0xf72240d4,
+ 0x2ff7e66b, 0x8ece6285, 0xb6f5e9f6, 0x17cc6d18, 0xc682ff10,
+ 0x67bb7bfe, 0x5f80f08d, 0xfeb97463, 0x355abbb2, 0x94633f5c,
+ 0xac58b42f, 0x0d6130c1, 0xdc2fa2c9, 0x7d162627, 0x452dad54,
+ 0xe41429ba, 0x3cc18f05, 0x9df80beb, 0xa5c38098, 0x04fa0476,
+ 0xd5b4967e, 0x748d1290, 0x4cb699e3, 0xed8f1d0d, 0x4cd9a5b8,
+ 0xede02156, 0xd5dbaa25, 0x74e22ecb, 0xa5acbcc3, 0x0495382d,
+ 0x3caeb35e, 0x9d9737b0, 0x4542910f, 0xe47b15e1, 0xdc409e92,
+ 0x7d791a7c, 0xac378874, 0x0d0e0c9a, 0x353587e9, 0x940c0307,
+ 0x5fefccd6, 0xfed64838, 0xc6edc34b, 0x67d447a5, 0xb69ad5ad,
+ 0x17a35143, 0x2f98da30, 0x8ea15ede, 0x5674f861, 0xf74d7c8f,
+ 0xcf76f7fc, 0x6e4f7312, 0xbf01e11a, 0x1e3865f4, 0x2603ee87,
+ 0x873a6a69, 0x6ab57764, 0xcb8cf38a, 0xf3b778f9, 0x528efc17,
+ 0x83c06e1f, 0x22f9eaf1, 0x1ac26182, 0xbbfbe56c, 0x632e43d3,
+ 0xc217c73d, 0xfa2c4c4e, 0x5b15c8a0, 0x8a5b5aa8, 0x2b62de46,
+ 0x13595535, 0xb260d1db, 0x79831e0a, 0xd8ba9ae4, 0xe0811197,
+ 0x41b89579, 0x90f60771, 0x31cf839f, 0x09f408ec, 0xa8cd8c02,
+ 0x70182abd, 0xd121ae53, 0xe91a2520, 0x4823a1ce, 0x996d33c6,
+ 0x3854b728, 0x006f3c5b, 0xa156b8b5, 0x99b34b70, 0x388acf9e,
+ 0x00b144ed, 0xa188c003, 0x70c6520b, 0xd1ffd6e5, 0xe9c45d96,
+ 0x48fdd978, 0x90287fc7, 0x3111fb29, 0x092a705a, 0xa813f4b4,
+ 0x795d66bc, 0xd864e252, 0xe05f6921, 0x4166edcf, 0x8a85221e,
+ 0x2bbca6f0, 0x13872d83, 0xb2bea96d, 0x63f03b65, 0xc2c9bf8b,
+ 0xfaf234f8, 0x5bcbb016, 0x831e16a9, 0x22279247, 0x1a1c1934,
+ 0xbb259dda, 0x6a6b0fd2, 0xcb528b3c, 0xf369004f, 0x525084a1,
+ 0xbfdf99ac, 0x1ee61d42, 0x26dd9631, 0x87e412df, 0x56aa80d7,
+ 0xf7930439, 0xcfa88f4a, 0x6e910ba4, 0xb644ad1b, 0x177d29f5,
+ 0x2f46a286, 0x8e7f2668, 0x5f31b460, 0xfe08308e, 0xc633bbfd,
+ 0x670a3f13, 0xace9f0c2, 0x0dd0742c, 0x35ebff5f, 0x94d27bb1,
+ 0x459ce9b9, 0xe4a56d57, 0xdc9ee624, 0x7da762ca, 0xa572c475,
+ 0x044b409b, 0x3c70cbe8, 0x9d494f06, 0x4c07dd0e, 0xed3e59e0,
+ 0xd505d293, 0x743c567d, 0xd56aeec8, 0x74536a26, 0x4c68e155,
+ 0xed5165bb, 0x3c1ff7b3, 0x9d26735d, 0xa51df82e, 0x04247cc0,
+ 0xdcf1da7f, 0x7dc85e91, 0x45f3d5e2, 0xe4ca510c, 0x3584c304,
+ 0x94bd47ea, 0xac86cc99, 0x0dbf4877, 0xc65c87a6, 0x67650348,
+ 0x5f5e883b, 0xfe670cd5, 0x2f299edd, 0x8e101a33, 0xb62b9140,
+ 0x171215ae, 0xcfc7b311, 0x6efe37ff, 0x56c5bc8c, 0xf7fc3862,
+ 0x26b2aa6a, 0x878b2e84, 0xbfb0a5f7, 0x1e892119, 0xf3063c14,
+ 0x523fb8fa, 0x6a043389, 0xcb3db767, 0x1a73256f, 0xbb4aa181,
+ 0x83712af2, 0x2248ae1c, 0xfa9d08a3, 0x5ba48c4d, 0x639f073e,
+ 0xc2a683d0, 0x13e811d8, 0xb2d19536, 0x8aea1e45, 0x2bd39aab,
+ 0xe030557a, 0x4109d194, 0x79325ae7, 0xd80bde09, 0x09454c01,
+ 0xa87cc8ef, 0x9047439c, 0x317ec772, 0xe9ab61cd, 0x4892e523,
+ 0x70a96e50, 0xd190eabe, 0x00de78b6, 0xa1e7fc58, 0x99dc772b,
+ 0x38e5f3c5},
+ {0x00000000, 0xe81790a1, 0x0b5e2703, 0xe349b7a2, 0x16bc4e06,
+ 0xfeabdea7, 0x1de26905, 0xf5f5f9a4, 0x2d789c0c, 0xc56f0cad,
+ 0x2626bb0f, 0xce312bae, 0x3bc4d20a, 0xd3d342ab, 0x309af509,
+ 0xd88d65a8, 0x5af13818, 0xb2e6a8b9, 0x51af1f1b, 0xb9b88fba,
+ 0x4c4d761e, 0xa45ae6bf, 0x4713511d, 0xaf04c1bc, 0x7789a414,
+ 0x9f9e34b5, 0x7cd78317, 0x94c013b6, 0x6135ea12, 0x89227ab3,
+ 0x6a6bcd11, 0x827c5db0, 0xb5e27030, 0x5df5e091, 0xbebc5733,
+ 0x56abc792, 0xa35e3e36, 0x4b49ae97, 0xa8001935, 0x40178994,
+ 0x989aec3c, 0x708d7c9d, 0x93c4cb3f, 0x7bd35b9e, 0x8e26a23a,
+ 0x6631329b, 0x85788539, 0x6d6f1598, 0xef134828, 0x0704d889,
+ 0xe44d6f2b, 0x0c5aff8a, 0xf9af062e, 0x11b8968f, 0xf2f1212d,
+ 0x1ae6b18c, 0xc26bd424, 0x2a7c4485, 0xc935f327, 0x21226386,
+ 0xd4d79a22, 0x3cc00a83, 0xdf89bd21, 0x379e2d80, 0xb0b5e621,
+ 0x58a27680, 0xbbebc122, 0x53fc5183, 0xa609a827, 0x4e1e3886,
+ 0xad578f24, 0x45401f85, 0x9dcd7a2d, 0x75daea8c, 0x96935d2e,
+ 0x7e84cd8f, 0x8b71342b, 0x6366a48a, 0x802f1328, 0x68388389,
+ 0xea44de39, 0x02534e98, 0xe11af93a, 0x090d699b, 0xfcf8903f,
+ 0x14ef009e, 0xf7a6b73c, 0x1fb1279d, 0xc73c4235, 0x2f2bd294,
+ 0xcc626536, 0x2475f597, 0xd1800c33, 0x39979c92, 0xdade2b30,
+ 0x32c9bb91, 0x05579611, 0xed4006b0, 0x0e09b112, 0xe61e21b3,
+ 0x13ebd817, 0xfbfc48b6, 0x18b5ff14, 0xf0a26fb5, 0x282f0a1d,
+ 0xc0389abc, 0x23712d1e, 0xcb66bdbf, 0x3e93441b, 0xd684d4ba,
+ 0x35cd6318, 0xdddaf3b9, 0x5fa6ae09, 0xb7b13ea8, 0x54f8890a,
+ 0xbcef19ab, 0x491ae00f, 0xa10d70ae, 0x4244c70c, 0xaa5357ad,
+ 0x72de3205, 0x9ac9a2a4, 0x79801506, 0x919785a7, 0x64627c03,
+ 0x8c75eca2, 0x6f3c5b00, 0x872bcba1, 0xba1aca03, 0x520d5aa2,
+ 0xb144ed00, 0x59537da1, 0xaca68405, 0x44b114a4, 0xa7f8a306,
+ 0x4fef33a7, 0x9762560f, 0x7f75c6ae, 0x9c3c710c, 0x742be1ad,
+ 0x81de1809, 0x69c988a8, 0x8a803f0a, 0x6297afab, 0xe0ebf21b,
+ 0x08fc62ba, 0xebb5d518, 0x03a245b9, 0xf657bc1d, 0x1e402cbc,
+ 0xfd099b1e, 0x151e0bbf, 0xcd936e17, 0x2584feb6, 0xc6cd4914,
+ 0x2edad9b5, 0xdb2f2011, 0x3338b0b0, 0xd0710712, 0x386697b3,
+ 0x0ff8ba33, 0xe7ef2a92, 0x04a69d30, 0xecb10d91, 0x1944f435,
+ 0xf1536494, 0x121ad336, 0xfa0d4397, 0x2280263f, 0xca97b69e,
+ 0x29de013c, 0xc1c9919d, 0x343c6839, 0xdc2bf898, 0x3f624f3a,
+ 0xd775df9b, 0x5509822b, 0xbd1e128a, 0x5e57a528, 0xb6403589,
+ 0x43b5cc2d, 0xaba25c8c, 0x48ebeb2e, 0xa0fc7b8f, 0x78711e27,
+ 0x90668e86, 0x732f3924, 0x9b38a985, 0x6ecd5021, 0x86dac080,
+ 0x65937722, 0x8d84e783, 0x0aaf2c22, 0xe2b8bc83, 0x01f10b21,
+ 0xe9e69b80, 0x1c136224, 0xf404f285, 0x174d4527, 0xff5ad586,
+ 0x27d7b02e, 0xcfc0208f, 0x2c89972d, 0xc49e078c, 0x316bfe28,
+ 0xd97c6e89, 0x3a35d92b, 0xd222498a, 0x505e143a, 0xb849849b,
+ 0x5b003339, 0xb317a398, 0x46e25a3c, 0xaef5ca9d, 0x4dbc7d3f,
+ 0xa5abed9e, 0x7d268836, 0x95311897, 0x7678af35, 0x9e6f3f94,
+ 0x6b9ac630, 0x838d5691, 0x60c4e133, 0x88d37192, 0xbf4d5c12,
+ 0x575accb3, 0xb4137b11, 0x5c04ebb0, 0xa9f11214, 0x41e682b5,
+ 0xa2af3517, 0x4ab8a5b6, 0x9235c01e, 0x7a2250bf, 0x996be71d,
+ 0x717c77bc, 0x84898e18, 0x6c9e1eb9, 0x8fd7a91b, 0x67c039ba,
+ 0xe5bc640a, 0x0dabf4ab, 0xeee24309, 0x06f5d3a8, 0xf3002a0c,
+ 0x1b17baad, 0xf85e0d0f, 0x10499dae, 0xc8c4f806, 0x20d368a7,
+ 0xc39adf05, 0x2b8d4fa4, 0xde78b600, 0x366f26a1, 0xd5269103,
+ 0x3d3101a2}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0xa19017e800000000, 0x03275e0b00000000,
+ 0xa2b749e300000000, 0x064ebc1600000000, 0xa7deabfe00000000,
+ 0x0569e21d00000000, 0xa4f9f5f500000000, 0x0c9c782d00000000,
+ 0xad0c6fc500000000, 0x0fbb262600000000, 0xae2b31ce00000000,
+ 0x0ad2c43b00000000, 0xab42d3d300000000, 0x09f59a3000000000,
+ 0xa8658dd800000000, 0x1838f15a00000000, 0xb9a8e6b200000000,
+ 0x1b1faf5100000000, 0xba8fb8b900000000, 0x1e764d4c00000000,
+ 0xbfe65aa400000000, 0x1d51134700000000, 0xbcc104af00000000,
+ 0x14a4897700000000, 0xb5349e9f00000000, 0x1783d77c00000000,
+ 0xb613c09400000000, 0x12ea356100000000, 0xb37a228900000000,
+ 0x11cd6b6a00000000, 0xb05d7c8200000000, 0x3070e2b500000000,
+ 0x91e0f55d00000000, 0x3357bcbe00000000, 0x92c7ab5600000000,
+ 0x363e5ea300000000, 0x97ae494b00000000, 0x351900a800000000,
+ 0x9489174000000000, 0x3cec9a9800000000, 0x9d7c8d7000000000,
+ 0x3fcbc49300000000, 0x9e5bd37b00000000, 0x3aa2268e00000000,
+ 0x9b32316600000000, 0x3985788500000000, 0x98156f6d00000000,
+ 0x284813ef00000000, 0x89d8040700000000, 0x2b6f4de400000000,
+ 0x8aff5a0c00000000, 0x2e06aff900000000, 0x8f96b81100000000,
+ 0x2d21f1f200000000, 0x8cb1e61a00000000, 0x24d46bc200000000,
+ 0x85447c2a00000000, 0x27f335c900000000, 0x8663222100000000,
+ 0x229ad7d400000000, 0x830ac03c00000000, 0x21bd89df00000000,
+ 0x802d9e3700000000, 0x21e6b5b000000000, 0x8076a25800000000,
+ 0x22c1ebbb00000000, 0x8351fc5300000000, 0x27a809a600000000,
+ 0x86381e4e00000000, 0x248f57ad00000000, 0x851f404500000000,
+ 0x2d7acd9d00000000, 0x8ceada7500000000, 0x2e5d939600000000,
+ 0x8fcd847e00000000, 0x2b34718b00000000, 0x8aa4666300000000,
+ 0x28132f8000000000, 0x8983386800000000, 0x39de44ea00000000,
+ 0x984e530200000000, 0x3af91ae100000000, 0x9b690d0900000000,
+ 0x3f90f8fc00000000, 0x9e00ef1400000000, 0x3cb7a6f700000000,
+ 0x9d27b11f00000000, 0x35423cc700000000, 0x94d22b2f00000000,
+ 0x366562cc00000000, 0x97f5752400000000, 0x330c80d100000000,
+ 0x929c973900000000, 0x302bdeda00000000, 0x91bbc93200000000,
+ 0x1196570500000000, 0xb00640ed00000000, 0x12b1090e00000000,
+ 0xb3211ee600000000, 0x17d8eb1300000000, 0xb648fcfb00000000,
+ 0x14ffb51800000000, 0xb56fa2f000000000, 0x1d0a2f2800000000,
+ 0xbc9a38c000000000, 0x1e2d712300000000, 0xbfbd66cb00000000,
+ 0x1b44933e00000000, 0xbad484d600000000, 0x1863cd3500000000,
+ 0xb9f3dadd00000000, 0x09aea65f00000000, 0xa83eb1b700000000,
+ 0x0a89f85400000000, 0xab19efbc00000000, 0x0fe01a4900000000,
+ 0xae700da100000000, 0x0cc7444200000000, 0xad5753aa00000000,
+ 0x0532de7200000000, 0xa4a2c99a00000000, 0x0615807900000000,
+ 0xa785979100000000, 0x037c626400000000, 0xa2ec758c00000000,
+ 0x005b3c6f00000000, 0xa1cb2b8700000000, 0x03ca1aba00000000,
+ 0xa25a0d5200000000, 0x00ed44b100000000, 0xa17d535900000000,
+ 0x0584a6ac00000000, 0xa414b14400000000, 0x06a3f8a700000000,
+ 0xa733ef4f00000000, 0x0f56629700000000, 0xaec6757f00000000,
+ 0x0c713c9c00000000, 0xade12b7400000000, 0x0918de8100000000,
+ 0xa888c96900000000, 0x0a3f808a00000000, 0xabaf976200000000,
+ 0x1bf2ebe000000000, 0xba62fc0800000000, 0x18d5b5eb00000000,
+ 0xb945a20300000000, 0x1dbc57f600000000, 0xbc2c401e00000000,
+ 0x1e9b09fd00000000, 0xbf0b1e1500000000, 0x176e93cd00000000,
+ 0xb6fe842500000000, 0x1449cdc600000000, 0xb5d9da2e00000000,
+ 0x11202fdb00000000, 0xb0b0383300000000, 0x120771d000000000,
+ 0xb397663800000000, 0x33baf80f00000000, 0x922aefe700000000,
+ 0x309da60400000000, 0x910db1ec00000000, 0x35f4441900000000,
+ 0x946453f100000000, 0x36d31a1200000000, 0x97430dfa00000000,
+ 0x3f26802200000000, 0x9eb697ca00000000, 0x3c01de2900000000,
+ 0x9d91c9c100000000, 0x39683c3400000000, 0x98f82bdc00000000,
+ 0x3a4f623f00000000, 0x9bdf75d700000000, 0x2b82095500000000,
+ 0x8a121ebd00000000, 0x28a5575e00000000, 0x893540b600000000,
+ 0x2dccb54300000000, 0x8c5ca2ab00000000, 0x2eebeb4800000000,
+ 0x8f7bfca000000000, 0x271e717800000000, 0x868e669000000000,
+ 0x24392f7300000000, 0x85a9389b00000000, 0x2150cd6e00000000,
+ 0x80c0da8600000000, 0x2277936500000000, 0x83e7848d00000000,
+ 0x222caf0a00000000, 0x83bcb8e200000000, 0x210bf10100000000,
+ 0x809be6e900000000, 0x2462131c00000000, 0x85f204f400000000,
+ 0x27454d1700000000, 0x86d55aff00000000, 0x2eb0d72700000000,
+ 0x8f20c0cf00000000, 0x2d97892c00000000, 0x8c079ec400000000,
+ 0x28fe6b3100000000, 0x896e7cd900000000, 0x2bd9353a00000000,
+ 0x8a4922d200000000, 0x3a145e5000000000, 0x9b8449b800000000,
+ 0x3933005b00000000, 0x98a317b300000000, 0x3c5ae24600000000,
+ 0x9dcaf5ae00000000, 0x3f7dbc4d00000000, 0x9eedaba500000000,
+ 0x3688267d00000000, 0x9718319500000000, 0x35af787600000000,
+ 0x943f6f9e00000000, 0x30c69a6b00000000, 0x91568d8300000000,
+ 0x33e1c46000000000, 0x9271d38800000000, 0x125c4dbf00000000,
+ 0xb3cc5a5700000000, 0x117b13b400000000, 0xb0eb045c00000000,
+ 0x1412f1a900000000, 0xb582e64100000000, 0x1735afa200000000,
+ 0xb6a5b84a00000000, 0x1ec0359200000000, 0xbf50227a00000000,
+ 0x1de76b9900000000, 0xbc777c7100000000, 0x188e898400000000,
+ 0xb91e9e6c00000000, 0x1ba9d78f00000000, 0xba39c06700000000,
+ 0x0a64bce500000000, 0xabf4ab0d00000000, 0x0943e2ee00000000,
+ 0xa8d3f50600000000, 0x0c2a00f300000000, 0xadba171b00000000,
+ 0x0f0d5ef800000000, 0xae9d491000000000, 0x06f8c4c800000000,
+ 0xa768d32000000000, 0x05df9ac300000000, 0xa44f8d2b00000000,
+ 0x00b678de00000000, 0xa1266f3600000000, 0x039126d500000000,
+ 0xa201313d00000000},
+ {0x0000000000000000, 0xee8439a100000000, 0x9d0f029900000000,
+ 0x738b3b3800000000, 0x7b1975e900000000, 0x959d4c4800000000,
+ 0xe616777000000000, 0x08924ed100000000, 0xb7349b0900000000,
+ 0x59b0a2a800000000, 0x2a3b999000000000, 0xc4bfa03100000000,
+ 0xcc2deee000000000, 0x22a9d74100000000, 0x5122ec7900000000,
+ 0xbfa6d5d800000000, 0x6e69361300000000, 0x80ed0fb200000000,
+ 0xf366348a00000000, 0x1de20d2b00000000, 0x157043fa00000000,
+ 0xfbf47a5b00000000, 0x887f416300000000, 0x66fb78c200000000,
+ 0xd95dad1a00000000, 0x37d994bb00000000, 0x4452af8300000000,
+ 0xaad6962200000000, 0xa244d8f300000000, 0x4cc0e15200000000,
+ 0x3f4bda6a00000000, 0xd1cfe3cb00000000, 0xdcd26c2600000000,
+ 0x3256558700000000, 0x41dd6ebf00000000, 0xaf59571e00000000,
+ 0xa7cb19cf00000000, 0x494f206e00000000, 0x3ac41b5600000000,
+ 0xd44022f700000000, 0x6be6f72f00000000, 0x8562ce8e00000000,
+ 0xf6e9f5b600000000, 0x186dcc1700000000, 0x10ff82c600000000,
+ 0xfe7bbb6700000000, 0x8df0805f00000000, 0x6374b9fe00000000,
+ 0xb2bb5a3500000000, 0x5c3f639400000000, 0x2fb458ac00000000,
+ 0xc130610d00000000, 0xc9a22fdc00000000, 0x2726167d00000000,
+ 0x54ad2d4500000000, 0xba2914e400000000, 0x058fc13c00000000,
+ 0xeb0bf89d00000000, 0x9880c3a500000000, 0x7604fa0400000000,
+ 0x7e96b4d500000000, 0x90128d7400000000, 0xe399b64c00000000,
+ 0x0d1d8fed00000000, 0xb8a5d94c00000000, 0x5621e0ed00000000,
+ 0x25aadbd500000000, 0xcb2ee27400000000, 0xc3bcaca500000000,
+ 0x2d38950400000000, 0x5eb3ae3c00000000, 0xb037979d00000000,
+ 0x0f91424500000000, 0xe1157be400000000, 0x929e40dc00000000,
+ 0x7c1a797d00000000, 0x748837ac00000000, 0x9a0c0e0d00000000,
+ 0xe987353500000000, 0x07030c9400000000, 0xd6ccef5f00000000,
+ 0x3848d6fe00000000, 0x4bc3edc600000000, 0xa547d46700000000,
+ 0xadd59ab600000000, 0x4351a31700000000, 0x30da982f00000000,
+ 0xde5ea18e00000000, 0x61f8745600000000, 0x8f7c4df700000000,
+ 0xfcf776cf00000000, 0x12734f6e00000000, 0x1ae101bf00000000,
+ 0xf465381e00000000, 0x87ee032600000000, 0x696a3a8700000000,
+ 0x6477b56a00000000, 0x8af38ccb00000000, 0xf978b7f300000000,
+ 0x17fc8e5200000000, 0x1f6ec08300000000, 0xf1eaf92200000000,
+ 0x8261c21a00000000, 0x6ce5fbbb00000000, 0xd3432e6300000000,
+ 0x3dc717c200000000, 0x4e4c2cfa00000000, 0xa0c8155b00000000,
+ 0xa85a5b8a00000000, 0x46de622b00000000, 0x3555591300000000,
+ 0xdbd160b200000000, 0x0a1e837900000000, 0xe49abad800000000,
+ 0x971181e000000000, 0x7995b84100000000, 0x7107f69000000000,
+ 0x9f83cf3100000000, 0xec08f40900000000, 0x028ccda800000000,
+ 0xbd2a187000000000, 0x53ae21d100000000, 0x20251ae900000000,
+ 0xcea1234800000000, 0xc6336d9900000000, 0x28b7543800000000,
+ 0x5b3c6f0000000000, 0xb5b856a100000000, 0x704bb39900000000,
+ 0x9ecf8a3800000000, 0xed44b10000000000, 0x03c088a100000000,
+ 0x0b52c67000000000, 0xe5d6ffd100000000, 0x965dc4e900000000,
+ 0x78d9fd4800000000, 0xc77f289000000000, 0x29fb113100000000,
+ 0x5a702a0900000000, 0xb4f413a800000000, 0xbc665d7900000000,
+ 0x52e264d800000000, 0x21695fe000000000, 0xcfed664100000000,
+ 0x1e22858a00000000, 0xf0a6bc2b00000000, 0x832d871300000000,
+ 0x6da9beb200000000, 0x653bf06300000000, 0x8bbfc9c200000000,
+ 0xf834f2fa00000000, 0x16b0cb5b00000000, 0xa9161e8300000000,
+ 0x4792272200000000, 0x34191c1a00000000, 0xda9d25bb00000000,
+ 0xd20f6b6a00000000, 0x3c8b52cb00000000, 0x4f0069f300000000,
+ 0xa184505200000000, 0xac99dfbf00000000, 0x421de61e00000000,
+ 0x3196dd2600000000, 0xdf12e48700000000, 0xd780aa5600000000,
+ 0x390493f700000000, 0x4a8fa8cf00000000, 0xa40b916e00000000,
+ 0x1bad44b600000000, 0xf5297d1700000000, 0x86a2462f00000000,
+ 0x68267f8e00000000, 0x60b4315f00000000, 0x8e3008fe00000000,
+ 0xfdbb33c600000000, 0x133f0a6700000000, 0xc2f0e9ac00000000,
+ 0x2c74d00d00000000, 0x5fffeb3500000000, 0xb17bd29400000000,
+ 0xb9e99c4500000000, 0x576da5e400000000, 0x24e69edc00000000,
+ 0xca62a77d00000000, 0x75c472a500000000, 0x9b404b0400000000,
+ 0xe8cb703c00000000, 0x064f499d00000000, 0x0edd074c00000000,
+ 0xe0593eed00000000, 0x93d205d500000000, 0x7d563c7400000000,
+ 0xc8ee6ad500000000, 0x266a537400000000, 0x55e1684c00000000,
+ 0xbb6551ed00000000, 0xb3f71f3c00000000, 0x5d73269d00000000,
+ 0x2ef81da500000000, 0xc07c240400000000, 0x7fdaf1dc00000000,
+ 0x915ec87d00000000, 0xe2d5f34500000000, 0x0c51cae400000000,
+ 0x04c3843500000000, 0xea47bd9400000000, 0x99cc86ac00000000,
+ 0x7748bf0d00000000, 0xa6875cc600000000, 0x4803656700000000,
+ 0x3b885e5f00000000, 0xd50c67fe00000000, 0xdd9e292f00000000,
+ 0x331a108e00000000, 0x40912bb600000000, 0xae15121700000000,
+ 0x11b3c7cf00000000, 0xff37fe6e00000000, 0x8cbcc55600000000,
+ 0x6238fcf700000000, 0x6aaab22600000000, 0x842e8b8700000000,
+ 0xf7a5b0bf00000000, 0x1921891e00000000, 0x143c06f300000000,
+ 0xfab83f5200000000, 0x8933046a00000000, 0x67b73dcb00000000,
+ 0x6f25731a00000000, 0x81a14abb00000000, 0xf22a718300000000,
+ 0x1cae482200000000, 0xa3089dfa00000000, 0x4d8ca45b00000000,
+ 0x3e079f6300000000, 0xd083a6c200000000, 0xd811e81300000000,
+ 0x3695d1b200000000, 0x451eea8a00000000, 0xab9ad32b00000000,
+ 0x7a5530e000000000, 0x94d1094100000000, 0xe75a327900000000,
+ 0x09de0bd800000000, 0x014c450900000000, 0xefc87ca800000000,
+ 0x9c43479000000000, 0x72c77e3100000000, 0xcd61abe900000000,
+ 0x23e5924800000000, 0x506ea97000000000, 0xbeea90d100000000,
+ 0xb678de0000000000, 0x58fce7a100000000, 0x2b77dc9900000000,
+ 0xc5f3e53800000000},
+ {0x0000000000000000, 0xfbf6134700000000, 0xf6ed278e00000000,
+ 0x0d1b34c900000000, 0xaddd3ec700000000, 0x562b2d8000000000,
+ 0x5b30194900000000, 0xa0c60a0e00000000, 0x1bbd0c5500000000,
+ 0xe04b1f1200000000, 0xed502bdb00000000, 0x16a6389c00000000,
+ 0xb660329200000000, 0x4d9621d500000000, 0x408d151c00000000,
+ 0xbb7b065b00000000, 0x367a19aa00000000, 0xcd8c0aed00000000,
+ 0xc0973e2400000000, 0x3b612d6300000000, 0x9ba7276d00000000,
+ 0x6051342a00000000, 0x6d4a00e300000000, 0x96bc13a400000000,
+ 0x2dc715ff00000000, 0xd63106b800000000, 0xdb2a327100000000,
+ 0x20dc213600000000, 0x801a2b3800000000, 0x7bec387f00000000,
+ 0x76f70cb600000000, 0x8d011ff100000000, 0x2df2438f00000000,
+ 0xd60450c800000000, 0xdb1f640100000000, 0x20e9774600000000,
+ 0x802f7d4800000000, 0x7bd96e0f00000000, 0x76c25ac600000000,
+ 0x8d34498100000000, 0x364f4fda00000000, 0xcdb95c9d00000000,
+ 0xc0a2685400000000, 0x3b547b1300000000, 0x9b92711d00000000,
+ 0x6064625a00000000, 0x6d7f569300000000, 0x968945d400000000,
+ 0x1b885a2500000000, 0xe07e496200000000, 0xed657dab00000000,
+ 0x16936eec00000000, 0xb65564e200000000, 0x4da377a500000000,
+ 0x40b8436c00000000, 0xbb4e502b00000000, 0x0035567000000000,
+ 0xfbc3453700000000, 0xf6d871fe00000000, 0x0d2e62b900000000,
+ 0xade868b700000000, 0x561e7bf000000000, 0x5b054f3900000000,
+ 0xa0f35c7e00000000, 0x1be2f6c500000000, 0xe014e58200000000,
+ 0xed0fd14b00000000, 0x16f9c20c00000000, 0xb63fc80200000000,
+ 0x4dc9db4500000000, 0x40d2ef8c00000000, 0xbb24fccb00000000,
+ 0x005ffa9000000000, 0xfba9e9d700000000, 0xf6b2dd1e00000000,
+ 0x0d44ce5900000000, 0xad82c45700000000, 0x5674d71000000000,
+ 0x5b6fe3d900000000, 0xa099f09e00000000, 0x2d98ef6f00000000,
+ 0xd66efc2800000000, 0xdb75c8e100000000, 0x2083dba600000000,
+ 0x8045d1a800000000, 0x7bb3c2ef00000000, 0x76a8f62600000000,
+ 0x8d5ee56100000000, 0x3625e33a00000000, 0xcdd3f07d00000000,
+ 0xc0c8c4b400000000, 0x3b3ed7f300000000, 0x9bf8ddfd00000000,
+ 0x600eceba00000000, 0x6d15fa7300000000, 0x96e3e93400000000,
+ 0x3610b54a00000000, 0xcde6a60d00000000, 0xc0fd92c400000000,
+ 0x3b0b818300000000, 0x9bcd8b8d00000000, 0x603b98ca00000000,
+ 0x6d20ac0300000000, 0x96d6bf4400000000, 0x2dadb91f00000000,
+ 0xd65baa5800000000, 0xdb409e9100000000, 0x20b68dd600000000,
+ 0x807087d800000000, 0x7b86949f00000000, 0x769da05600000000,
+ 0x8d6bb31100000000, 0x006aace000000000, 0xfb9cbfa700000000,
+ 0xf6878b6e00000000, 0x0d71982900000000, 0xadb7922700000000,
+ 0x5641816000000000, 0x5b5ab5a900000000, 0xa0aca6ee00000000,
+ 0x1bd7a0b500000000, 0xe021b3f200000000, 0xed3a873b00000000,
+ 0x16cc947c00000000, 0xb60a9e7200000000, 0x4dfc8d3500000000,
+ 0x40e7b9fc00000000, 0xbb11aabb00000000, 0x77c29c5000000000,
+ 0x8c348f1700000000, 0x812fbbde00000000, 0x7ad9a89900000000,
+ 0xda1fa29700000000, 0x21e9b1d000000000, 0x2cf2851900000000,
+ 0xd704965e00000000, 0x6c7f900500000000, 0x9789834200000000,
+ 0x9a92b78b00000000, 0x6164a4cc00000000, 0xc1a2aec200000000,
+ 0x3a54bd8500000000, 0x374f894c00000000, 0xccb99a0b00000000,
+ 0x41b885fa00000000, 0xba4e96bd00000000, 0xb755a27400000000,
+ 0x4ca3b13300000000, 0xec65bb3d00000000, 0x1793a87a00000000,
+ 0x1a889cb300000000, 0xe17e8ff400000000, 0x5a0589af00000000,
+ 0xa1f39ae800000000, 0xace8ae2100000000, 0x571ebd6600000000,
+ 0xf7d8b76800000000, 0x0c2ea42f00000000, 0x013590e600000000,
+ 0xfac383a100000000, 0x5a30dfdf00000000, 0xa1c6cc9800000000,
+ 0xacddf85100000000, 0x572beb1600000000, 0xf7ede11800000000,
+ 0x0c1bf25f00000000, 0x0100c69600000000, 0xfaf6d5d100000000,
+ 0x418dd38a00000000, 0xba7bc0cd00000000, 0xb760f40400000000,
+ 0x4c96e74300000000, 0xec50ed4d00000000, 0x17a6fe0a00000000,
+ 0x1abdcac300000000, 0xe14bd98400000000, 0x6c4ac67500000000,
+ 0x97bcd53200000000, 0x9aa7e1fb00000000, 0x6151f2bc00000000,
+ 0xc197f8b200000000, 0x3a61ebf500000000, 0x377adf3c00000000,
+ 0xcc8ccc7b00000000, 0x77f7ca2000000000, 0x8c01d96700000000,
+ 0x811aedae00000000, 0x7aecfee900000000, 0xda2af4e700000000,
+ 0x21dce7a000000000, 0x2cc7d36900000000, 0xd731c02e00000000,
+ 0x6c206a9500000000, 0x97d679d200000000, 0x9acd4d1b00000000,
+ 0x613b5e5c00000000, 0xc1fd545200000000, 0x3a0b471500000000,
+ 0x371073dc00000000, 0xcce6609b00000000, 0x779d66c000000000,
+ 0x8c6b758700000000, 0x8170414e00000000, 0x7a86520900000000,
+ 0xda40580700000000, 0x21b64b4000000000, 0x2cad7f8900000000,
+ 0xd75b6cce00000000, 0x5a5a733f00000000, 0xa1ac607800000000,
+ 0xacb754b100000000, 0x574147f600000000, 0xf7874df800000000,
+ 0x0c715ebf00000000, 0x016a6a7600000000, 0xfa9c793100000000,
+ 0x41e77f6a00000000, 0xba116c2d00000000, 0xb70a58e400000000,
+ 0x4cfc4ba300000000, 0xec3a41ad00000000, 0x17cc52ea00000000,
+ 0x1ad7662300000000, 0xe121756400000000, 0x41d2291a00000000,
+ 0xba243a5d00000000, 0xb73f0e9400000000, 0x4cc91dd300000000,
+ 0xec0f17dd00000000, 0x17f9049a00000000, 0x1ae2305300000000,
+ 0xe114231400000000, 0x5a6f254f00000000, 0xa199360800000000,
+ 0xac8202c100000000, 0x5774118600000000, 0xf7b21b8800000000,
+ 0x0c4408cf00000000, 0x015f3c0600000000, 0xfaa92f4100000000,
+ 0x77a830b000000000, 0x8c5e23f700000000, 0x8145173e00000000,
+ 0x7ab3047900000000, 0xda750e7700000000, 0x21831d3000000000,
+ 0x2c9829f900000000, 0xd76e3abe00000000, 0x6c153ce500000000,
+ 0x97e32fa200000000, 0x9af81b6b00000000, 0x610e082c00000000,
+ 0xc1c8022200000000, 0x3a3e116500000000, 0x372525ac00000000,
+ 0xccd336eb00000000},
+ {0x0000000000000000, 0x6238282a00000000, 0xc470505400000000,
+ 0xa648787e00000000, 0x88e1a0a800000000, 0xead9888200000000,
+ 0x4c91f0fc00000000, 0x2ea9d8d600000000, 0x51c5308a00000000,
+ 0x33fd18a000000000, 0x95b560de00000000, 0xf78d48f400000000,
+ 0xd924902200000000, 0xbb1cb80800000000, 0x1d54c07600000000,
+ 0x7f6ce85c00000000, 0xe38c10cf00000000, 0x81b438e500000000,
+ 0x27fc409b00000000, 0x45c468b100000000, 0x6b6db06700000000,
+ 0x0955984d00000000, 0xaf1de03300000000, 0xcd25c81900000000,
+ 0xb249204500000000, 0xd071086f00000000, 0x7639701100000000,
+ 0x1401583b00000000, 0x3aa880ed00000000, 0x5890a8c700000000,
+ 0xfed8d0b900000000, 0x9ce0f89300000000, 0x871f504500000000,
+ 0xe527786f00000000, 0x436f001100000000, 0x2157283b00000000,
+ 0x0ffef0ed00000000, 0x6dc6d8c700000000, 0xcb8ea0b900000000,
+ 0xa9b6889300000000, 0xd6da60cf00000000, 0xb4e248e500000000,
+ 0x12aa309b00000000, 0x709218b100000000, 0x5e3bc06700000000,
+ 0x3c03e84d00000000, 0x9a4b903300000000, 0xf873b81900000000,
+ 0x6493408a00000000, 0x06ab68a000000000, 0xa0e310de00000000,
+ 0xc2db38f400000000, 0xec72e02200000000, 0x8e4ac80800000000,
+ 0x2802b07600000000, 0x4a3a985c00000000, 0x3556700000000000,
+ 0x576e582a00000000, 0xf126205400000000, 0x931e087e00000000,
+ 0xbdb7d0a800000000, 0xdf8ff88200000000, 0x79c780fc00000000,
+ 0x1bffa8d600000000, 0x0e3fa08a00000000, 0x6c0788a000000000,
+ 0xca4ff0de00000000, 0xa877d8f400000000, 0x86de002200000000,
+ 0xe4e6280800000000, 0x42ae507600000000, 0x2096785c00000000,
+ 0x5ffa900000000000, 0x3dc2b82a00000000, 0x9b8ac05400000000,
+ 0xf9b2e87e00000000, 0xd71b30a800000000, 0xb523188200000000,
+ 0x136b60fc00000000, 0x715348d600000000, 0xedb3b04500000000,
+ 0x8f8b986f00000000, 0x29c3e01100000000, 0x4bfbc83b00000000,
+ 0x655210ed00000000, 0x076a38c700000000, 0xa12240b900000000,
+ 0xc31a689300000000, 0xbc7680cf00000000, 0xde4ea8e500000000,
+ 0x7806d09b00000000, 0x1a3ef8b100000000, 0x3497206700000000,
+ 0x56af084d00000000, 0xf0e7703300000000, 0x92df581900000000,
+ 0x8920f0cf00000000, 0xeb18d8e500000000, 0x4d50a09b00000000,
+ 0x2f6888b100000000, 0x01c1506700000000, 0x63f9784d00000000,
+ 0xc5b1003300000000, 0xa789281900000000, 0xd8e5c04500000000,
+ 0xbadde86f00000000, 0x1c95901100000000, 0x7eadb83b00000000,
+ 0x500460ed00000000, 0x323c48c700000000, 0x947430b900000000,
+ 0xf64c189300000000, 0x6aace00000000000, 0x0894c82a00000000,
+ 0xaedcb05400000000, 0xcce4987e00000000, 0xe24d40a800000000,
+ 0x8075688200000000, 0x263d10fc00000000, 0x440538d600000000,
+ 0x3b69d08a00000000, 0x5951f8a000000000, 0xff1980de00000000,
+ 0x9d21a8f400000000, 0xb388702200000000, 0xd1b0580800000000,
+ 0x77f8207600000000, 0x15c0085c00000000, 0x5d7831ce00000000,
+ 0x3f4019e400000000, 0x9908619a00000000, 0xfb3049b000000000,
+ 0xd599916600000000, 0xb7a1b94c00000000, 0x11e9c13200000000,
+ 0x73d1e91800000000, 0x0cbd014400000000, 0x6e85296e00000000,
+ 0xc8cd511000000000, 0xaaf5793a00000000, 0x845ca1ec00000000,
+ 0xe66489c600000000, 0x402cf1b800000000, 0x2214d99200000000,
+ 0xbef4210100000000, 0xdccc092b00000000, 0x7a84715500000000,
+ 0x18bc597f00000000, 0x361581a900000000, 0x542da98300000000,
+ 0xf265d1fd00000000, 0x905df9d700000000, 0xef31118b00000000,
+ 0x8d0939a100000000, 0x2b4141df00000000, 0x497969f500000000,
+ 0x67d0b12300000000, 0x05e8990900000000, 0xa3a0e17700000000,
+ 0xc198c95d00000000, 0xda67618b00000000, 0xb85f49a100000000,
+ 0x1e1731df00000000, 0x7c2f19f500000000, 0x5286c12300000000,
+ 0x30bee90900000000, 0x96f6917700000000, 0xf4ceb95d00000000,
+ 0x8ba2510100000000, 0xe99a792b00000000, 0x4fd2015500000000,
+ 0x2dea297f00000000, 0x0343f1a900000000, 0x617bd98300000000,
+ 0xc733a1fd00000000, 0xa50b89d700000000, 0x39eb714400000000,
+ 0x5bd3596e00000000, 0xfd9b211000000000, 0x9fa3093a00000000,
+ 0xb10ad1ec00000000, 0xd332f9c600000000, 0x757a81b800000000,
+ 0x1742a99200000000, 0x682e41ce00000000, 0x0a1669e400000000,
+ 0xac5e119a00000000, 0xce6639b000000000, 0xe0cfe16600000000,
+ 0x82f7c94c00000000, 0x24bfb13200000000, 0x4687991800000000,
+ 0x5347914400000000, 0x317fb96e00000000, 0x9737c11000000000,
+ 0xf50fe93a00000000, 0xdba631ec00000000, 0xb99e19c600000000,
+ 0x1fd661b800000000, 0x7dee499200000000, 0x0282a1ce00000000,
+ 0x60ba89e400000000, 0xc6f2f19a00000000, 0xa4cad9b000000000,
+ 0x8a63016600000000, 0xe85b294c00000000, 0x4e13513200000000,
+ 0x2c2b791800000000, 0xb0cb818b00000000, 0xd2f3a9a100000000,
+ 0x74bbd1df00000000, 0x1683f9f500000000, 0x382a212300000000,
+ 0x5a12090900000000, 0xfc5a717700000000, 0x9e62595d00000000,
+ 0xe10eb10100000000, 0x8336992b00000000, 0x257ee15500000000,
+ 0x4746c97f00000000, 0x69ef11a900000000, 0x0bd7398300000000,
+ 0xad9f41fd00000000, 0xcfa769d700000000, 0xd458c10100000000,
+ 0xb660e92b00000000, 0x1028915500000000, 0x7210b97f00000000,
+ 0x5cb961a900000000, 0x3e81498300000000, 0x98c931fd00000000,
+ 0xfaf119d700000000, 0x859df18b00000000, 0xe7a5d9a100000000,
+ 0x41eda1df00000000, 0x23d589f500000000, 0x0d7c512300000000,
+ 0x6f44790900000000, 0xc90c017700000000, 0xab34295d00000000,
+ 0x37d4d1ce00000000, 0x55ecf9e400000000, 0xf3a4819a00000000,
+ 0x919ca9b000000000, 0xbf35716600000000, 0xdd0d594c00000000,
+ 0x7b45213200000000, 0x197d091800000000, 0x6611e14400000000,
+ 0x0429c96e00000000, 0xa261b11000000000, 0xc059993a00000000,
+ 0xeef041ec00000000, 0x8cc869c600000000, 0x2a8011b800000000,
+ 0x48b8399200000000},
+ {0x0000000000000000, 0x4c2896a300000000, 0xd9565d9c00000000,
+ 0x957ecb3f00000000, 0xf3abcbe300000000, 0xbf835d4000000000,
+ 0x2afd967f00000000, 0x66d500dc00000000, 0xa751e61c00000000,
+ 0xeb7970bf00000000, 0x7e07bb8000000000, 0x322f2d2300000000,
+ 0x54fa2dff00000000, 0x18d2bb5c00000000, 0x8dac706300000000,
+ 0xc184e6c000000000, 0x4ea3cc3900000000, 0x028b5a9a00000000,
+ 0x97f591a500000000, 0xdbdd070600000000, 0xbd0807da00000000,
+ 0xf120917900000000, 0x645e5a4600000000, 0x2876cce500000000,
+ 0xe9f22a2500000000, 0xa5dabc8600000000, 0x30a477b900000000,
+ 0x7c8ce11a00000000, 0x1a59e1c600000000, 0x5671776500000000,
+ 0xc30fbc5a00000000, 0x8f272af900000000, 0x9c46997300000000,
+ 0xd06e0fd000000000, 0x4510c4ef00000000, 0x0938524c00000000,
+ 0x6fed529000000000, 0x23c5c43300000000, 0xb6bb0f0c00000000,
+ 0xfa9399af00000000, 0x3b177f6f00000000, 0x773fe9cc00000000,
+ 0xe24122f300000000, 0xae69b45000000000, 0xc8bcb48c00000000,
+ 0x8494222f00000000, 0x11eae91000000000, 0x5dc27fb300000000,
+ 0xd2e5554a00000000, 0x9ecdc3e900000000, 0x0bb308d600000000,
+ 0x479b9e7500000000, 0x214e9ea900000000, 0x6d66080a00000000,
+ 0xf818c33500000000, 0xb430559600000000, 0x75b4b35600000000,
+ 0x399c25f500000000, 0xace2eeca00000000, 0xe0ca786900000000,
+ 0x861f78b500000000, 0xca37ee1600000000, 0x5f49252900000000,
+ 0x1361b38a00000000, 0x388d32e700000000, 0x74a5a44400000000,
+ 0xe1db6f7b00000000, 0xadf3f9d800000000, 0xcb26f90400000000,
+ 0x870e6fa700000000, 0x1270a49800000000, 0x5e58323b00000000,
+ 0x9fdcd4fb00000000, 0xd3f4425800000000, 0x468a896700000000,
+ 0x0aa21fc400000000, 0x6c771f1800000000, 0x205f89bb00000000,
+ 0xb521428400000000, 0xf909d42700000000, 0x762efede00000000,
+ 0x3a06687d00000000, 0xaf78a34200000000, 0xe35035e100000000,
+ 0x8585353d00000000, 0xc9ada39e00000000, 0x5cd368a100000000,
+ 0x10fbfe0200000000, 0xd17f18c200000000, 0x9d578e6100000000,
+ 0x0829455e00000000, 0x4401d3fd00000000, 0x22d4d32100000000,
+ 0x6efc458200000000, 0xfb828ebd00000000, 0xb7aa181e00000000,
+ 0xa4cbab9400000000, 0xe8e33d3700000000, 0x7d9df60800000000,
+ 0x31b560ab00000000, 0x5760607700000000, 0x1b48f6d400000000,
+ 0x8e363deb00000000, 0xc21eab4800000000, 0x039a4d8800000000,
+ 0x4fb2db2b00000000, 0xdacc101400000000, 0x96e486b700000000,
+ 0xf031866b00000000, 0xbc1910c800000000, 0x2967dbf700000000,
+ 0x654f4d5400000000, 0xea6867ad00000000, 0xa640f10e00000000,
+ 0x333e3a3100000000, 0x7f16ac9200000000, 0x19c3ac4e00000000,
+ 0x55eb3aed00000000, 0xc095f1d200000000, 0x8cbd677100000000,
+ 0x4d3981b100000000, 0x0111171200000000, 0x946fdc2d00000000,
+ 0xd8474a8e00000000, 0xbe924a5200000000, 0xf2badcf100000000,
+ 0x67c417ce00000000, 0x2bec816d00000000, 0x311c141500000000,
+ 0x7d3482b600000000, 0xe84a498900000000, 0xa462df2a00000000,
+ 0xc2b7dff600000000, 0x8e9f495500000000, 0x1be1826a00000000,
+ 0x57c914c900000000, 0x964df20900000000, 0xda6564aa00000000,
+ 0x4f1baf9500000000, 0x0333393600000000, 0x65e639ea00000000,
+ 0x29ceaf4900000000, 0xbcb0647600000000, 0xf098f2d500000000,
+ 0x7fbfd82c00000000, 0x33974e8f00000000, 0xa6e985b000000000,
+ 0xeac1131300000000, 0x8c1413cf00000000, 0xc03c856c00000000,
+ 0x55424e5300000000, 0x196ad8f000000000, 0xd8ee3e3000000000,
+ 0x94c6a89300000000, 0x01b863ac00000000, 0x4d90f50f00000000,
+ 0x2b45f5d300000000, 0x676d637000000000, 0xf213a84f00000000,
+ 0xbe3b3eec00000000, 0xad5a8d6600000000, 0xe1721bc500000000,
+ 0x740cd0fa00000000, 0x3824465900000000, 0x5ef1468500000000,
+ 0x12d9d02600000000, 0x87a71b1900000000, 0xcb8f8dba00000000,
+ 0x0a0b6b7a00000000, 0x4623fdd900000000, 0xd35d36e600000000,
+ 0x9f75a04500000000, 0xf9a0a09900000000, 0xb588363a00000000,
+ 0x20f6fd0500000000, 0x6cde6ba600000000, 0xe3f9415f00000000,
+ 0xafd1d7fc00000000, 0x3aaf1cc300000000, 0x76878a6000000000,
+ 0x10528abc00000000, 0x5c7a1c1f00000000, 0xc904d72000000000,
+ 0x852c418300000000, 0x44a8a74300000000, 0x088031e000000000,
+ 0x9dfefadf00000000, 0xd1d66c7c00000000, 0xb7036ca000000000,
+ 0xfb2bfa0300000000, 0x6e55313c00000000, 0x227da79f00000000,
+ 0x099126f200000000, 0x45b9b05100000000, 0xd0c77b6e00000000,
+ 0x9cefedcd00000000, 0xfa3aed1100000000, 0xb6127bb200000000,
+ 0x236cb08d00000000, 0x6f44262e00000000, 0xaec0c0ee00000000,
+ 0xe2e8564d00000000, 0x77969d7200000000, 0x3bbe0bd100000000,
+ 0x5d6b0b0d00000000, 0x11439dae00000000, 0x843d569100000000,
+ 0xc815c03200000000, 0x4732eacb00000000, 0x0b1a7c6800000000,
+ 0x9e64b75700000000, 0xd24c21f400000000, 0xb499212800000000,
+ 0xf8b1b78b00000000, 0x6dcf7cb400000000, 0x21e7ea1700000000,
+ 0xe0630cd700000000, 0xac4b9a7400000000, 0x3935514b00000000,
+ 0x751dc7e800000000, 0x13c8c73400000000, 0x5fe0519700000000,
+ 0xca9e9aa800000000, 0x86b60c0b00000000, 0x95d7bf8100000000,
+ 0xd9ff292200000000, 0x4c81e21d00000000, 0x00a974be00000000,
+ 0x667c746200000000, 0x2a54e2c100000000, 0xbf2a29fe00000000,
+ 0xf302bf5d00000000, 0x3286599d00000000, 0x7eaecf3e00000000,
+ 0xebd0040100000000, 0xa7f892a200000000, 0xc12d927e00000000,
+ 0x8d0504dd00000000, 0x187bcfe200000000, 0x5453594100000000,
+ 0xdb7473b800000000, 0x975ce51b00000000, 0x02222e2400000000,
+ 0x4e0ab88700000000, 0x28dfb85b00000000, 0x64f72ef800000000,
+ 0xf189e5c700000000, 0xbda1736400000000, 0x7c2595a400000000,
+ 0x300d030700000000, 0xa573c83800000000, 0xe95b5e9b00000000,
+ 0x8f8e5e4700000000, 0xc3a6c8e400000000, 0x56d803db00000000,
+ 0x1af0957800000000},
+ {0x0000000000000000, 0x939bc97f00000000, 0x263793ff00000000,
+ 0xb5ac5a8000000000, 0x0d68572400000000, 0x9ef39e5b00000000,
+ 0x2b5fc4db00000000, 0xb8c40da400000000, 0x1ad0ae4800000000,
+ 0x894b673700000000, 0x3ce73db700000000, 0xaf7cf4c800000000,
+ 0x17b8f96c00000000, 0x8423301300000000, 0x318f6a9300000000,
+ 0xa214a3ec00000000, 0x34a05d9100000000, 0xa73b94ee00000000,
+ 0x1297ce6e00000000, 0x810c071100000000, 0x39c80ab500000000,
+ 0xaa53c3ca00000000, 0x1fff994a00000000, 0x8c64503500000000,
+ 0x2e70f3d900000000, 0xbdeb3aa600000000, 0x0847602600000000,
+ 0x9bdca95900000000, 0x2318a4fd00000000, 0xb0836d8200000000,
+ 0x052f370200000000, 0x96b4fe7d00000000, 0x2946caf900000000,
+ 0xbadd038600000000, 0x0f71590600000000, 0x9cea907900000000,
+ 0x242e9ddd00000000, 0xb7b554a200000000, 0x02190e2200000000,
+ 0x9182c75d00000000, 0x339664b100000000, 0xa00dadce00000000,
+ 0x15a1f74e00000000, 0x863a3e3100000000, 0x3efe339500000000,
+ 0xad65faea00000000, 0x18c9a06a00000000, 0x8b52691500000000,
+ 0x1de6976800000000, 0x8e7d5e1700000000, 0x3bd1049700000000,
+ 0xa84acde800000000, 0x108ec04c00000000, 0x8315093300000000,
+ 0x36b953b300000000, 0xa5229acc00000000, 0x0736392000000000,
+ 0x94adf05f00000000, 0x2101aadf00000000, 0xb29a63a000000000,
+ 0x0a5e6e0400000000, 0x99c5a77b00000000, 0x2c69fdfb00000000,
+ 0xbff2348400000000, 0x138ae52800000000, 0x80112c5700000000,
+ 0x35bd76d700000000, 0xa626bfa800000000, 0x1ee2b20c00000000,
+ 0x8d797b7300000000, 0x38d521f300000000, 0xab4ee88c00000000,
+ 0x095a4b6000000000, 0x9ac1821f00000000, 0x2f6dd89f00000000,
+ 0xbcf611e000000000, 0x04321c4400000000, 0x97a9d53b00000000,
+ 0x22058fbb00000000, 0xb19e46c400000000, 0x272ab8b900000000,
+ 0xb4b171c600000000, 0x011d2b4600000000, 0x9286e23900000000,
+ 0x2a42ef9d00000000, 0xb9d926e200000000, 0x0c757c6200000000,
+ 0x9feeb51d00000000, 0x3dfa16f100000000, 0xae61df8e00000000,
+ 0x1bcd850e00000000, 0x88564c7100000000, 0x309241d500000000,
+ 0xa30988aa00000000, 0x16a5d22a00000000, 0x853e1b5500000000,
+ 0x3acc2fd100000000, 0xa957e6ae00000000, 0x1cfbbc2e00000000,
+ 0x8f60755100000000, 0x37a478f500000000, 0xa43fb18a00000000,
+ 0x1193eb0a00000000, 0x8208227500000000, 0x201c819900000000,
+ 0xb38748e600000000, 0x062b126600000000, 0x95b0db1900000000,
+ 0x2d74d6bd00000000, 0xbeef1fc200000000, 0x0b43454200000000,
+ 0x98d88c3d00000000, 0x0e6c724000000000, 0x9df7bb3f00000000,
+ 0x285be1bf00000000, 0xbbc028c000000000, 0x0304256400000000,
+ 0x909fec1b00000000, 0x2533b69b00000000, 0xb6a87fe400000000,
+ 0x14bcdc0800000000, 0x8727157700000000, 0x328b4ff700000000,
+ 0xa110868800000000, 0x19d48b2c00000000, 0x8a4f425300000000,
+ 0x3fe318d300000000, 0xac78d1ac00000000, 0x2614cb5100000000,
+ 0xb58f022e00000000, 0x002358ae00000000, 0x93b891d100000000,
+ 0x2b7c9c7500000000, 0xb8e7550a00000000, 0x0d4b0f8a00000000,
+ 0x9ed0c6f500000000, 0x3cc4651900000000, 0xaf5fac6600000000,
+ 0x1af3f6e600000000, 0x89683f9900000000, 0x31ac323d00000000,
+ 0xa237fb4200000000, 0x179ba1c200000000, 0x840068bd00000000,
+ 0x12b496c000000000, 0x812f5fbf00000000, 0x3483053f00000000,
+ 0xa718cc4000000000, 0x1fdcc1e400000000, 0x8c47089b00000000,
+ 0x39eb521b00000000, 0xaa709b6400000000, 0x0864388800000000,
+ 0x9bfff1f700000000, 0x2e53ab7700000000, 0xbdc8620800000000,
+ 0x050c6fac00000000, 0x9697a6d300000000, 0x233bfc5300000000,
+ 0xb0a0352c00000000, 0x0f5201a800000000, 0x9cc9c8d700000000,
+ 0x2965925700000000, 0xbafe5b2800000000, 0x023a568c00000000,
+ 0x91a19ff300000000, 0x240dc57300000000, 0xb7960c0c00000000,
+ 0x1582afe000000000, 0x8619669f00000000, 0x33b53c1f00000000,
+ 0xa02ef56000000000, 0x18eaf8c400000000, 0x8b7131bb00000000,
+ 0x3edd6b3b00000000, 0xad46a24400000000, 0x3bf25c3900000000,
+ 0xa869954600000000, 0x1dc5cfc600000000, 0x8e5e06b900000000,
+ 0x369a0b1d00000000, 0xa501c26200000000, 0x10ad98e200000000,
+ 0x8336519d00000000, 0x2122f27100000000, 0xb2b93b0e00000000,
+ 0x0715618e00000000, 0x948ea8f100000000, 0x2c4aa55500000000,
+ 0xbfd16c2a00000000, 0x0a7d36aa00000000, 0x99e6ffd500000000,
+ 0x359e2e7900000000, 0xa605e70600000000, 0x13a9bd8600000000,
+ 0x803274f900000000, 0x38f6795d00000000, 0xab6db02200000000,
+ 0x1ec1eaa200000000, 0x8d5a23dd00000000, 0x2f4e803100000000,
+ 0xbcd5494e00000000, 0x097913ce00000000, 0x9ae2dab100000000,
+ 0x2226d71500000000, 0xb1bd1e6a00000000, 0x041144ea00000000,
+ 0x978a8d9500000000, 0x013e73e800000000, 0x92a5ba9700000000,
+ 0x2709e01700000000, 0xb492296800000000, 0x0c5624cc00000000,
+ 0x9fcdedb300000000, 0x2a61b73300000000, 0xb9fa7e4c00000000,
+ 0x1beedda000000000, 0x887514df00000000, 0x3dd94e5f00000000,
+ 0xae42872000000000, 0x16868a8400000000, 0x851d43fb00000000,
+ 0x30b1197b00000000, 0xa32ad00400000000, 0x1cd8e48000000000,
+ 0x8f432dff00000000, 0x3aef777f00000000, 0xa974be0000000000,
+ 0x11b0b3a400000000, 0x822b7adb00000000, 0x3787205b00000000,
+ 0xa41ce92400000000, 0x06084ac800000000, 0x959383b700000000,
+ 0x203fd93700000000, 0xb3a4104800000000, 0x0b601dec00000000,
+ 0x98fbd49300000000, 0x2d578e1300000000, 0xbecc476c00000000,
+ 0x2878b91100000000, 0xbbe3706e00000000, 0x0e4f2aee00000000,
+ 0x9dd4e39100000000, 0x2510ee3500000000, 0xb68b274a00000000,
+ 0x03277dca00000000, 0x90bcb4b500000000, 0x32a8175900000000,
+ 0xa133de2600000000, 0x149f84a600000000, 0x87044dd900000000,
+ 0x3fc0407d00000000, 0xac5b890200000000, 0x19f7d38200000000,
+ 0x8a6c1afd00000000},
+ {0x0000000000000000, 0x650b796900000000, 0xca16f2d200000000,
+ 0xaf1d8bbb00000000, 0xd52b957e00000000, 0xb020ec1700000000,
+ 0x1f3d67ac00000000, 0x7a361ec500000000, 0xaa572afd00000000,
+ 0xcf5c539400000000, 0x6041d82f00000000, 0x054aa14600000000,
+ 0x7f7cbf8300000000, 0x1a77c6ea00000000, 0xb56a4d5100000000,
+ 0xd061343800000000, 0x15a9252100000000, 0x70a25c4800000000,
+ 0xdfbfd7f300000000, 0xbab4ae9a00000000, 0xc082b05f00000000,
+ 0xa589c93600000000, 0x0a94428d00000000, 0x6f9f3be400000000,
+ 0xbffe0fdc00000000, 0xdaf576b500000000, 0x75e8fd0e00000000,
+ 0x10e3846700000000, 0x6ad59aa200000000, 0x0fdee3cb00000000,
+ 0xa0c3687000000000, 0xc5c8111900000000, 0x2a524b4200000000,
+ 0x4f59322b00000000, 0xe044b99000000000, 0x854fc0f900000000,
+ 0xff79de3c00000000, 0x9a72a75500000000, 0x356f2cee00000000,
+ 0x5064558700000000, 0x800561bf00000000, 0xe50e18d600000000,
+ 0x4a13936d00000000, 0x2f18ea0400000000, 0x552ef4c100000000,
+ 0x30258da800000000, 0x9f38061300000000, 0xfa337f7a00000000,
+ 0x3ffb6e6300000000, 0x5af0170a00000000, 0xf5ed9cb100000000,
+ 0x90e6e5d800000000, 0xead0fb1d00000000, 0x8fdb827400000000,
+ 0x20c609cf00000000, 0x45cd70a600000000, 0x95ac449e00000000,
+ 0xf0a73df700000000, 0x5fbab64c00000000, 0x3ab1cf2500000000,
+ 0x4087d1e000000000, 0x258ca88900000000, 0x8a91233200000000,
+ 0xef9a5a5b00000000, 0x54a4968400000000, 0x31afefed00000000,
+ 0x9eb2645600000000, 0xfbb91d3f00000000, 0x818f03fa00000000,
+ 0xe4847a9300000000, 0x4b99f12800000000, 0x2e92884100000000,
+ 0xfef3bc7900000000, 0x9bf8c51000000000, 0x34e54eab00000000,
+ 0x51ee37c200000000, 0x2bd8290700000000, 0x4ed3506e00000000,
+ 0xe1cedbd500000000, 0x84c5a2bc00000000, 0x410db3a500000000,
+ 0x2406cacc00000000, 0x8b1b417700000000, 0xee10381e00000000,
+ 0x942626db00000000, 0xf12d5fb200000000, 0x5e30d40900000000,
+ 0x3b3bad6000000000, 0xeb5a995800000000, 0x8e51e03100000000,
+ 0x214c6b8a00000000, 0x444712e300000000, 0x3e710c2600000000,
+ 0x5b7a754f00000000, 0xf467fef400000000, 0x916c879d00000000,
+ 0x7ef6ddc600000000, 0x1bfda4af00000000, 0xb4e02f1400000000,
+ 0xd1eb567d00000000, 0xabdd48b800000000, 0xced631d100000000,
+ 0x61cbba6a00000000, 0x04c0c30300000000, 0xd4a1f73b00000000,
+ 0xb1aa8e5200000000, 0x1eb705e900000000, 0x7bbc7c8000000000,
+ 0x018a624500000000, 0x64811b2c00000000, 0xcb9c909700000000,
+ 0xae97e9fe00000000, 0x6b5ff8e700000000, 0x0e54818e00000000,
+ 0xa1490a3500000000, 0xc442735c00000000, 0xbe746d9900000000,
+ 0xdb7f14f000000000, 0x74629f4b00000000, 0x1169e62200000000,
+ 0xc108d21a00000000, 0xa403ab7300000000, 0x0b1e20c800000000,
+ 0x6e1559a100000000, 0x1423476400000000, 0x71283e0d00000000,
+ 0xde35b5b600000000, 0xbb3eccdf00000000, 0xe94e5cd200000000,
+ 0x8c4525bb00000000, 0x2358ae0000000000, 0x4653d76900000000,
+ 0x3c65c9ac00000000, 0x596eb0c500000000, 0xf6733b7e00000000,
+ 0x9378421700000000, 0x4319762f00000000, 0x26120f4600000000,
+ 0x890f84fd00000000, 0xec04fd9400000000, 0x9632e35100000000,
+ 0xf3399a3800000000, 0x5c24118300000000, 0x392f68ea00000000,
+ 0xfce779f300000000, 0x99ec009a00000000, 0x36f18b2100000000,
+ 0x53faf24800000000, 0x29ccec8d00000000, 0x4cc795e400000000,
+ 0xe3da1e5f00000000, 0x86d1673600000000, 0x56b0530e00000000,
+ 0x33bb2a6700000000, 0x9ca6a1dc00000000, 0xf9add8b500000000,
+ 0x839bc67000000000, 0xe690bf1900000000, 0x498d34a200000000,
+ 0x2c864dcb00000000, 0xc31c179000000000, 0xa6176ef900000000,
+ 0x090ae54200000000, 0x6c019c2b00000000, 0x163782ee00000000,
+ 0x733cfb8700000000, 0xdc21703c00000000, 0xb92a095500000000,
+ 0x694b3d6d00000000, 0x0c40440400000000, 0xa35dcfbf00000000,
+ 0xc656b6d600000000, 0xbc60a81300000000, 0xd96bd17a00000000,
+ 0x76765ac100000000, 0x137d23a800000000, 0xd6b532b100000000,
+ 0xb3be4bd800000000, 0x1ca3c06300000000, 0x79a8b90a00000000,
+ 0x039ea7cf00000000, 0x6695dea600000000, 0xc988551d00000000,
+ 0xac832c7400000000, 0x7ce2184c00000000, 0x19e9612500000000,
+ 0xb6f4ea9e00000000, 0xd3ff93f700000000, 0xa9c98d3200000000,
+ 0xccc2f45b00000000, 0x63df7fe000000000, 0x06d4068900000000,
+ 0xbdeaca5600000000, 0xd8e1b33f00000000, 0x77fc388400000000,
+ 0x12f741ed00000000, 0x68c15f2800000000, 0x0dca264100000000,
+ 0xa2d7adfa00000000, 0xc7dcd49300000000, 0x17bde0ab00000000,
+ 0x72b699c200000000, 0xddab127900000000, 0xb8a06b1000000000,
+ 0xc29675d500000000, 0xa79d0cbc00000000, 0x0880870700000000,
+ 0x6d8bfe6e00000000, 0xa843ef7700000000, 0xcd48961e00000000,
+ 0x62551da500000000, 0x075e64cc00000000, 0x7d687a0900000000,
+ 0x1863036000000000, 0xb77e88db00000000, 0xd275f1b200000000,
+ 0x0214c58a00000000, 0x671fbce300000000, 0xc802375800000000,
+ 0xad094e3100000000, 0xd73f50f400000000, 0xb234299d00000000,
+ 0x1d29a22600000000, 0x7822db4f00000000, 0x97b8811400000000,
+ 0xf2b3f87d00000000, 0x5dae73c600000000, 0x38a50aaf00000000,
+ 0x4293146a00000000, 0x27986d0300000000, 0x8885e6b800000000,
+ 0xed8e9fd100000000, 0x3defabe900000000, 0x58e4d28000000000,
+ 0xf7f9593b00000000, 0x92f2205200000000, 0xe8c43e9700000000,
+ 0x8dcf47fe00000000, 0x22d2cc4500000000, 0x47d9b52c00000000,
+ 0x8211a43500000000, 0xe71add5c00000000, 0x480756e700000000,
+ 0x2d0c2f8e00000000, 0x573a314b00000000, 0x3231482200000000,
+ 0x9d2cc39900000000, 0xf827baf000000000, 0x28468ec800000000,
+ 0x4d4df7a100000000, 0xe2507c1a00000000, 0x875b057300000000,
+ 0xfd6d1bb600000000, 0x986662df00000000, 0x377be96400000000,
+ 0x5270900d00000000},
+ {0x0000000000000000, 0xdcecb13d00000000, 0xb8d9637b00000000,
+ 0x6435d24600000000, 0x70b3c7f600000000, 0xac5f76cb00000000,
+ 0xc86aa48d00000000, 0x148615b000000000, 0xa160fe3600000000,
+ 0x7d8c4f0b00000000, 0x19b99d4d00000000, 0xc5552c7000000000,
+ 0xd1d339c000000000, 0x0d3f88fd00000000, 0x690a5abb00000000,
+ 0xb5e6eb8600000000, 0x42c1fc6d00000000, 0x9e2d4d5000000000,
+ 0xfa189f1600000000, 0x26f42e2b00000000, 0x32723b9b00000000,
+ 0xee9e8aa600000000, 0x8aab58e000000000, 0x5647e9dd00000000,
+ 0xe3a1025b00000000, 0x3f4db36600000000, 0x5b78612000000000,
+ 0x8794d01d00000000, 0x9312c5ad00000000, 0x4ffe749000000000,
+ 0x2bcba6d600000000, 0xf72717eb00000000, 0x8482f9db00000000,
+ 0x586e48e600000000, 0x3c5b9aa000000000, 0xe0b72b9d00000000,
+ 0xf4313e2d00000000, 0x28dd8f1000000000, 0x4ce85d5600000000,
+ 0x9004ec6b00000000, 0x25e207ed00000000, 0xf90eb6d000000000,
+ 0x9d3b649600000000, 0x41d7d5ab00000000, 0x5551c01b00000000,
+ 0x89bd712600000000, 0xed88a36000000000, 0x3164125d00000000,
+ 0xc64305b600000000, 0x1aafb48b00000000, 0x7e9a66cd00000000,
+ 0xa276d7f000000000, 0xb6f0c24000000000, 0x6a1c737d00000000,
+ 0x0e29a13b00000000, 0xd2c5100600000000, 0x6723fb8000000000,
+ 0xbbcf4abd00000000, 0xdffa98fb00000000, 0x031629c600000000,
+ 0x17903c7600000000, 0xcb7c8d4b00000000, 0xaf495f0d00000000,
+ 0x73a5ee3000000000, 0x4903826c00000000, 0x95ef335100000000,
+ 0xf1dae11700000000, 0x2d36502a00000000, 0x39b0459a00000000,
+ 0xe55cf4a700000000, 0x816926e100000000, 0x5d8597dc00000000,
+ 0xe8637c5a00000000, 0x348fcd6700000000, 0x50ba1f2100000000,
+ 0x8c56ae1c00000000, 0x98d0bbac00000000, 0x443c0a9100000000,
+ 0x2009d8d700000000, 0xfce569ea00000000, 0x0bc27e0100000000,
+ 0xd72ecf3c00000000, 0xb31b1d7a00000000, 0x6ff7ac4700000000,
+ 0x7b71b9f700000000, 0xa79d08ca00000000, 0xc3a8da8c00000000,
+ 0x1f446bb100000000, 0xaaa2803700000000, 0x764e310a00000000,
+ 0x127be34c00000000, 0xce97527100000000, 0xda1147c100000000,
+ 0x06fdf6fc00000000, 0x62c824ba00000000, 0xbe24958700000000,
+ 0xcd817bb700000000, 0x116dca8a00000000, 0x755818cc00000000,
+ 0xa9b4a9f100000000, 0xbd32bc4100000000, 0x61de0d7c00000000,
+ 0x05ebdf3a00000000, 0xd9076e0700000000, 0x6ce1858100000000,
+ 0xb00d34bc00000000, 0xd438e6fa00000000, 0x08d457c700000000,
+ 0x1c52427700000000, 0xc0bef34a00000000, 0xa48b210c00000000,
+ 0x7867903100000000, 0x8f4087da00000000, 0x53ac36e700000000,
+ 0x3799e4a100000000, 0xeb75559c00000000, 0xfff3402c00000000,
+ 0x231ff11100000000, 0x472a235700000000, 0x9bc6926a00000000,
+ 0x2e2079ec00000000, 0xf2ccc8d100000000, 0x96f91a9700000000,
+ 0x4a15abaa00000000, 0x5e93be1a00000000, 0x827f0f2700000000,
+ 0xe64add6100000000, 0x3aa66c5c00000000, 0x920604d900000000,
+ 0x4eeab5e400000000, 0x2adf67a200000000, 0xf633d69f00000000,
+ 0xe2b5c32f00000000, 0x3e59721200000000, 0x5a6ca05400000000,
+ 0x8680116900000000, 0x3366faef00000000, 0xef8a4bd200000000,
+ 0x8bbf999400000000, 0x575328a900000000, 0x43d53d1900000000,
+ 0x9f398c2400000000, 0xfb0c5e6200000000, 0x27e0ef5f00000000,
+ 0xd0c7f8b400000000, 0x0c2b498900000000, 0x681e9bcf00000000,
+ 0xb4f22af200000000, 0xa0743f4200000000, 0x7c988e7f00000000,
+ 0x18ad5c3900000000, 0xc441ed0400000000, 0x71a7068200000000,
+ 0xad4bb7bf00000000, 0xc97e65f900000000, 0x1592d4c400000000,
+ 0x0114c17400000000, 0xddf8704900000000, 0xb9cda20f00000000,
+ 0x6521133200000000, 0x1684fd0200000000, 0xca684c3f00000000,
+ 0xae5d9e7900000000, 0x72b12f4400000000, 0x66373af400000000,
+ 0xbadb8bc900000000, 0xdeee598f00000000, 0x0202e8b200000000,
+ 0xb7e4033400000000, 0x6b08b20900000000, 0x0f3d604f00000000,
+ 0xd3d1d17200000000, 0xc757c4c200000000, 0x1bbb75ff00000000,
+ 0x7f8ea7b900000000, 0xa362168400000000, 0x5445016f00000000,
+ 0x88a9b05200000000, 0xec9c621400000000, 0x3070d32900000000,
+ 0x24f6c69900000000, 0xf81a77a400000000, 0x9c2fa5e200000000,
+ 0x40c314df00000000, 0xf525ff5900000000, 0x29c94e6400000000,
+ 0x4dfc9c2200000000, 0x91102d1f00000000, 0x859638af00000000,
+ 0x597a899200000000, 0x3d4f5bd400000000, 0xe1a3eae900000000,
+ 0xdb0586b500000000, 0x07e9378800000000, 0x63dce5ce00000000,
+ 0xbf3054f300000000, 0xabb6414300000000, 0x775af07e00000000,
+ 0x136f223800000000, 0xcf83930500000000, 0x7a65788300000000,
+ 0xa689c9be00000000, 0xc2bc1bf800000000, 0x1e50aac500000000,
+ 0x0ad6bf7500000000, 0xd63a0e4800000000, 0xb20fdc0e00000000,
+ 0x6ee36d3300000000, 0x99c47ad800000000, 0x4528cbe500000000,
+ 0x211d19a300000000, 0xfdf1a89e00000000, 0xe977bd2e00000000,
+ 0x359b0c1300000000, 0x51aede5500000000, 0x8d426f6800000000,
+ 0x38a484ee00000000, 0xe44835d300000000, 0x807de79500000000,
+ 0x5c9156a800000000, 0x4817431800000000, 0x94fbf22500000000,
+ 0xf0ce206300000000, 0x2c22915e00000000, 0x5f877f6e00000000,
+ 0x836bce5300000000, 0xe75e1c1500000000, 0x3bb2ad2800000000,
+ 0x2f34b89800000000, 0xf3d809a500000000, 0x97eddbe300000000,
+ 0x4b016ade00000000, 0xfee7815800000000, 0x220b306500000000,
+ 0x463ee22300000000, 0x9ad2531e00000000, 0x8e5446ae00000000,
+ 0x52b8f79300000000, 0x368d25d500000000, 0xea6194e800000000,
+ 0x1d46830300000000, 0xc1aa323e00000000, 0xa59fe07800000000,
+ 0x7973514500000000, 0x6df544f500000000, 0xb119f5c800000000,
+ 0xd52c278e00000000, 0x09c096b300000000, 0xbc267d3500000000,
+ 0x60cacc0800000000, 0x04ff1e4e00000000, 0xd813af7300000000,
+ 0xcc95bac300000000, 0x10790bfe00000000, 0x744cd9b800000000,
+ 0xa8a0688500000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f,
+ 0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999,
+ 0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee,
+ 0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615,
+ 0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383,
+ 0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb,
+ 0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275,
+ 0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d,
+ 0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b,
+ 0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460,
+ 0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317,
+ 0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1,
+ 0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5,
+ 0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd,
+ 0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04,
+ 0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c,
+ 0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7,
+ 0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11,
+ 0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66,
+ 0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7,
+ 0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871,
+ 0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309,
+ 0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd,
+ 0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85,
+ 0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913,
+ 0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d,
+ 0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a,
+ 0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc,
+ 0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57,
+ 0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f,
+ 0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6,
+ 0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e,
+ 0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f,
+ 0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289,
+ 0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe,
+ 0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05,
+ 0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893,
+ 0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb,
+ 0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0,
+ 0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8,
+ 0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e,
+ 0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5,
+ 0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2,
+ 0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574,
+ 0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5,
+ 0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add,
+ 0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114,
+ 0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c,
+ 0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7,
+ 0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701,
+ 0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076,
+ 0x09cd8551},
+ {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193,
+ 0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2,
+ 0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c,
+ 0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71,
+ 0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a,
+ 0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d,
+ 0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71,
+ 0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436,
+ 0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d,
+ 0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000,
+ 0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae,
+ 0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf,
+ 0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930,
+ 0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277,
+ 0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff,
+ 0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8,
+ 0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef,
+ 0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e,
+ 0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20,
+ 0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95,
+ 0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e,
+ 0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9,
+ 0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d,
+ 0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a,
+ 0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151,
+ 0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4,
+ 0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a,
+ 0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b,
+ 0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c,
+ 0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b,
+ 0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3,
+ 0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4,
+ 0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b,
+ 0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a,
+ 0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4,
+ 0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189,
+ 0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92,
+ 0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5,
+ 0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9,
+ 0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe,
+ 0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5,
+ 0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8,
+ 0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66,
+ 0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707,
+ 0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8,
+ 0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f,
+ 0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707,
+ 0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40,
+ 0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017,
+ 0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876,
+ 0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8,
+ 0x7bc97a0c},
+ {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300,
+ 0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0,
+ 0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80,
+ 0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701,
+ 0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41,
+ 0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81,
+ 0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43,
+ 0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83,
+ 0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3,
+ 0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42,
+ 0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202,
+ 0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2,
+ 0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7,
+ 0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407,
+ 0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47,
+ 0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87,
+ 0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86,
+ 0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46,
+ 0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506,
+ 0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44,
+ 0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704,
+ 0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4,
+ 0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5,
+ 0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505,
+ 0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45,
+ 0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f,
+ 0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f,
+ 0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f,
+ 0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e,
+ 0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e,
+ 0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e,
+ 0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce,
+ 0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c,
+ 0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc,
+ 0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c,
+ 0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d,
+ 0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d,
+ 0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d,
+ 0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88,
+ 0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48,
+ 0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708,
+ 0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89,
+ 0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9,
+ 0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309,
+ 0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb,
+ 0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b,
+ 0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b,
+ 0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b,
+ 0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a,
+ 0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a,
+ 0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a,
+ 0x7851a2ca},
+ {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb,
+ 0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8,
+ 0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0,
+ 0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f,
+ 0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a,
+ 0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf,
+ 0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5,
+ 0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380,
+ 0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815,
+ 0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa,
+ 0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2,
+ 0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1,
+ 0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1,
+ 0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4,
+ 0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa,
+ 0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df,
+ 0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6,
+ 0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5,
+ 0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad,
+ 0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca,
+ 0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f,
+ 0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a,
+ 0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8,
+ 0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d,
+ 0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708,
+ 0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d,
+ 0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865,
+ 0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636,
+ 0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f,
+ 0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a,
+ 0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744,
+ 0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061,
+ 0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0,
+ 0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293,
+ 0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb,
+ 0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874,
+ 0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1,
+ 0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4,
+ 0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f,
+ 0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a,
+ 0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f,
+ 0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120,
+ 0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778,
+ 0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b,
+ 0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a,
+ 0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af,
+ 0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81,
+ 0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4,
+ 0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd,
+ 0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e,
+ 0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6,
+ 0x566b6848}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0x9e83da9f, 0x7d01c4e4, 0xe3821e7b, 0xbb04f912,
+ 0x2587238d, 0xc6053df6, 0x5886e769, 0x7609f225, 0xe88a28ba,
+ 0x0b0836c1, 0x958bec5e, 0xcd0d0b37, 0x538ed1a8, 0xb00ccfd3,
+ 0x2e8f154c, 0xec12e44b, 0x72913ed4, 0x911320af, 0x0f90fa30,
+ 0x57161d59, 0xc995c7c6, 0x2a17d9bd, 0xb4940322, 0x9a1b166e,
+ 0x0498ccf1, 0xe71ad28a, 0x79990815, 0x211fef7c, 0xbf9c35e3,
+ 0x5c1e2b98, 0xc29df107, 0xd825c897, 0x46a61208, 0xa5240c73,
+ 0x3ba7d6ec, 0x63213185, 0xfda2eb1a, 0x1e20f561, 0x80a32ffe,
+ 0xae2c3ab2, 0x30afe02d, 0xd32dfe56, 0x4dae24c9, 0x1528c3a0,
+ 0x8bab193f, 0x68290744, 0xf6aadddb, 0x34372cdc, 0xaab4f643,
+ 0x4936e838, 0xd7b532a7, 0x8f33d5ce, 0x11b00f51, 0xf232112a,
+ 0x6cb1cbb5, 0x423edef9, 0xdcbd0466, 0x3f3f1a1d, 0xa1bcc082,
+ 0xf93a27eb, 0x67b9fd74, 0x843be30f, 0x1ab83990, 0xf14de1f4,
+ 0x6fce3b6b, 0x8c4c2510, 0x12cfff8f, 0x4a4918e6, 0xd4cac279,
+ 0x3748dc02, 0xa9cb069d, 0x874413d1, 0x19c7c94e, 0xfa45d735,
+ 0x64c60daa, 0x3c40eac3, 0xa2c3305c, 0x41412e27, 0xdfc2f4b8,
+ 0x1d5f05bf, 0x83dcdf20, 0x605ec15b, 0xfedd1bc4, 0xa65bfcad,
+ 0x38d82632, 0xdb5a3849, 0x45d9e2d6, 0x6b56f79a, 0xf5d52d05,
+ 0x1657337e, 0x88d4e9e1, 0xd0520e88, 0x4ed1d417, 0xad53ca6c,
+ 0x33d010f3, 0x29682963, 0xb7ebf3fc, 0x5469ed87, 0xcaea3718,
+ 0x926cd071, 0x0cef0aee, 0xef6d1495, 0x71eece0a, 0x5f61db46,
+ 0xc1e201d9, 0x22601fa2, 0xbce3c53d, 0xe4652254, 0x7ae6f8cb,
+ 0x9964e6b0, 0x07e73c2f, 0xc57acd28, 0x5bf917b7, 0xb87b09cc,
+ 0x26f8d353, 0x7e7e343a, 0xe0fdeea5, 0x037ff0de, 0x9dfc2a41,
+ 0xb3733f0d, 0x2df0e592, 0xce72fbe9, 0x50f12176, 0x0877c61f,
+ 0x96f41c80, 0x757602fb, 0xebf5d864, 0xa39db332, 0x3d1e69ad,
+ 0xde9c77d6, 0x401fad49, 0x18994a20, 0x861a90bf, 0x65988ec4,
+ 0xfb1b545b, 0xd5944117, 0x4b179b88, 0xa89585f3, 0x36165f6c,
+ 0x6e90b805, 0xf013629a, 0x13917ce1, 0x8d12a67e, 0x4f8f5779,
+ 0xd10c8de6, 0x328e939d, 0xac0d4902, 0xf48bae6b, 0x6a0874f4,
+ 0x898a6a8f, 0x1709b010, 0x3986a55c, 0xa7057fc3, 0x448761b8,
+ 0xda04bb27, 0x82825c4e, 0x1c0186d1, 0xff8398aa, 0x61004235,
+ 0x7bb87ba5, 0xe53ba13a, 0x06b9bf41, 0x983a65de, 0xc0bc82b7,
+ 0x5e3f5828, 0xbdbd4653, 0x233e9ccc, 0x0db18980, 0x9332531f,
+ 0x70b04d64, 0xee3397fb, 0xb6b57092, 0x2836aa0d, 0xcbb4b476,
+ 0x55376ee9, 0x97aa9fee, 0x09294571, 0xeaab5b0a, 0x74288195,
+ 0x2cae66fc, 0xb22dbc63, 0x51afa218, 0xcf2c7887, 0xe1a36dcb,
+ 0x7f20b754, 0x9ca2a92f, 0x022173b0, 0x5aa794d9, 0xc4244e46,
+ 0x27a6503d, 0xb9258aa2, 0x52d052c6, 0xcc538859, 0x2fd19622,
+ 0xb1524cbd, 0xe9d4abd4, 0x7757714b, 0x94d56f30, 0x0a56b5af,
+ 0x24d9a0e3, 0xba5a7a7c, 0x59d86407, 0xc75bbe98, 0x9fdd59f1,
+ 0x015e836e, 0xe2dc9d15, 0x7c5f478a, 0xbec2b68d, 0x20416c12,
+ 0xc3c37269, 0x5d40a8f6, 0x05c64f9f, 0x9b459500, 0x78c78b7b,
+ 0xe64451e4, 0xc8cb44a8, 0x56489e37, 0xb5ca804c, 0x2b495ad3,
+ 0x73cfbdba, 0xed4c6725, 0x0ece795e, 0x904da3c1, 0x8af59a51,
+ 0x147640ce, 0xf7f45eb5, 0x6977842a, 0x31f16343, 0xaf72b9dc,
+ 0x4cf0a7a7, 0xd2737d38, 0xfcfc6874, 0x627fb2eb, 0x81fdac90,
+ 0x1f7e760f, 0x47f89166, 0xd97b4bf9, 0x3af95582, 0xa47a8f1d,
+ 0x66e77e1a, 0xf864a485, 0x1be6bafe, 0x85656061, 0xdde38708,
+ 0x43605d97, 0xa0e243ec, 0x3e619973, 0x10ee8c3f, 0x8e6d56a0,
+ 0x6def48db, 0xf36c9244, 0xabea752d, 0x3569afb2, 0xd6ebb1c9,
+ 0x48686b56},
+ {0x00000000, 0xc0642817, 0x80c9502e, 0x40ad7839, 0x0093a15c,
+ 0xc0f7894b, 0x805af172, 0x403ed965, 0x002643b9, 0xc0426bae,
+ 0x80ef1397, 0x408b3b80, 0x00b5e2e5, 0xc0d1caf2, 0x807cb2cb,
+ 0x40189adc, 0x414af7a9, 0x812edfbe, 0xc183a787, 0x01e78f90,
+ 0x41d956f5, 0x81bd7ee2, 0xc11006db, 0x01742ecc, 0x416cb410,
+ 0x81089c07, 0xc1a5e43e, 0x01c1cc29, 0x41ff154c, 0x819b3d5b,
+ 0xc1364562, 0x01526d75, 0xc3929f88, 0x03f6b79f, 0x435bcfa6,
+ 0x833fe7b1, 0xc3013ed4, 0x036516c3, 0x43c86efa, 0x83ac46ed,
+ 0xc3b4dc31, 0x03d0f426, 0x437d8c1f, 0x8319a408, 0xc3277d6d,
+ 0x0343557a, 0x43ee2d43, 0x838a0554, 0x82d86821, 0x42bc4036,
+ 0x0211380f, 0xc2751018, 0x824bc97d, 0x422fe16a, 0x02829953,
+ 0xc2e6b144, 0x82fe2b98, 0x429a038f, 0x02377bb6, 0xc25353a1,
+ 0x826d8ac4, 0x4209a2d3, 0x02a4daea, 0xc2c0f2fd, 0xc7234eca,
+ 0x074766dd, 0x47ea1ee4, 0x878e36f3, 0xc7b0ef96, 0x07d4c781,
+ 0x4779bfb8, 0x871d97af, 0xc7050d73, 0x07612564, 0x47cc5d5d,
+ 0x87a8754a, 0xc796ac2f, 0x07f28438, 0x475ffc01, 0x873bd416,
+ 0x8669b963, 0x460d9174, 0x06a0e94d, 0xc6c4c15a, 0x86fa183f,
+ 0x469e3028, 0x06334811, 0xc6576006, 0x864ffada, 0x462bd2cd,
+ 0x0686aaf4, 0xc6e282e3, 0x86dc5b86, 0x46b87391, 0x06150ba8,
+ 0xc67123bf, 0x04b1d142, 0xc4d5f955, 0x8478816c, 0x441ca97b,
+ 0x0422701e, 0xc4465809, 0x84eb2030, 0x448f0827, 0x049792fb,
+ 0xc4f3baec, 0x845ec2d5, 0x443aeac2, 0x040433a7, 0xc4601bb0,
+ 0x84cd6389, 0x44a94b9e, 0x45fb26eb, 0x859f0efc, 0xc53276c5,
+ 0x05565ed2, 0x456887b7, 0x850cafa0, 0xc5a1d799, 0x05c5ff8e,
+ 0x45dd6552, 0x85b94d45, 0xc514357c, 0x05701d6b, 0x454ec40e,
+ 0x852aec19, 0xc5879420, 0x05e3bc37, 0xcf41ed4f, 0x0f25c558,
+ 0x4f88bd61, 0x8fec9576, 0xcfd24c13, 0x0fb66404, 0x4f1b1c3d,
+ 0x8f7f342a, 0xcf67aef6, 0x0f0386e1, 0x4faefed8, 0x8fcad6cf,
+ 0xcff40faa, 0x0f9027bd, 0x4f3d5f84, 0x8f597793, 0x8e0b1ae6,
+ 0x4e6f32f1, 0x0ec24ac8, 0xcea662df, 0x8e98bbba, 0x4efc93ad,
+ 0x0e51eb94, 0xce35c383, 0x8e2d595f, 0x4e497148, 0x0ee40971,
+ 0xce802166, 0x8ebef803, 0x4edad014, 0x0e77a82d, 0xce13803a,
+ 0x0cd372c7, 0xccb75ad0, 0x8c1a22e9, 0x4c7e0afe, 0x0c40d39b,
+ 0xcc24fb8c, 0x8c8983b5, 0x4cedaba2, 0x0cf5317e, 0xcc911969,
+ 0x8c3c6150, 0x4c584947, 0x0c669022, 0xcc02b835, 0x8cafc00c,
+ 0x4ccbe81b, 0x4d99856e, 0x8dfdad79, 0xcd50d540, 0x0d34fd57,
+ 0x4d0a2432, 0x8d6e0c25, 0xcdc3741c, 0x0da75c0b, 0x4dbfc6d7,
+ 0x8ddbeec0, 0xcd7696f9, 0x0d12beee, 0x4d2c678b, 0x8d484f9c,
+ 0xcde537a5, 0x0d811fb2, 0x0862a385, 0xc8068b92, 0x88abf3ab,
+ 0x48cfdbbc, 0x08f102d9, 0xc8952ace, 0x883852f7, 0x485c7ae0,
+ 0x0844e03c, 0xc820c82b, 0x888db012, 0x48e99805, 0x08d74160,
+ 0xc8b36977, 0x881e114e, 0x487a3959, 0x4928542c, 0x894c7c3b,
+ 0xc9e10402, 0x09852c15, 0x49bbf570, 0x89dfdd67, 0xc972a55e,
+ 0x09168d49, 0x490e1795, 0x896a3f82, 0xc9c747bb, 0x09a36fac,
+ 0x499db6c9, 0x89f99ede, 0xc954e6e7, 0x0930cef0, 0xcbf03c0d,
+ 0x0b94141a, 0x4b396c23, 0x8b5d4434, 0xcb639d51, 0x0b07b546,
+ 0x4baacd7f, 0x8bcee568, 0xcbd67fb4, 0x0bb257a3, 0x4b1f2f9a,
+ 0x8b7b078d, 0xcb45dee8, 0x0b21f6ff, 0x4b8c8ec6, 0x8be8a6d1,
+ 0x8abacba4, 0x4adee3b3, 0x0a739b8a, 0xca17b39d, 0x8a296af8,
+ 0x4a4d42ef, 0x0ae03ad6, 0xca8412c1, 0x8a9c881d, 0x4af8a00a,
+ 0x0a55d833, 0xca31f024, 0x8a0f2941, 0x4a6b0156, 0x0ac6796f,
+ 0xcaa25178},
+ {0x00000000, 0xd4ea739b, 0xe9d396ed, 0x3d39e576, 0x93a15c00,
+ 0x474b2f9b, 0x7a72caed, 0xae98b976, 0x2643b900, 0xf2a9ca9b,
+ 0xcf902fed, 0x1b7a5c76, 0xb5e2e500, 0x6108969b, 0x5c3173ed,
+ 0x88db0076, 0x4c867201, 0x986c019a, 0xa555e4ec, 0x71bf9777,
+ 0xdf272e01, 0x0bcd5d9a, 0x36f4b8ec, 0xe21ecb77, 0x6ac5cb01,
+ 0xbe2fb89a, 0x83165dec, 0x57fc2e77, 0xf9649701, 0x2d8ee49a,
+ 0x10b701ec, 0xc45d7277, 0x980ce502, 0x4ce69699, 0x71df73ef,
+ 0xa5350074, 0x0badb902, 0xdf47ca99, 0xe27e2fef, 0x36945c74,
+ 0xbe4f5c02, 0x6aa52f99, 0x579ccaef, 0x8376b974, 0x2dee0002,
+ 0xf9047399, 0xc43d96ef, 0x10d7e574, 0xd48a9703, 0x0060e498,
+ 0x3d5901ee, 0xe9b37275, 0x472bcb03, 0x93c1b898, 0xaef85dee,
+ 0x7a122e75, 0xf2c92e03, 0x26235d98, 0x1b1ab8ee, 0xcff0cb75,
+ 0x61687203, 0xb5820198, 0x88bbe4ee, 0x5c519775, 0x3019ca05,
+ 0xe4f3b99e, 0xd9ca5ce8, 0x0d202f73, 0xa3b89605, 0x7752e59e,
+ 0x4a6b00e8, 0x9e817373, 0x165a7305, 0xc2b0009e, 0xff89e5e8,
+ 0x2b639673, 0x85fb2f05, 0x51115c9e, 0x6c28b9e8, 0xb8c2ca73,
+ 0x7c9fb804, 0xa875cb9f, 0x954c2ee9, 0x41a65d72, 0xef3ee404,
+ 0x3bd4979f, 0x06ed72e9, 0xd2070172, 0x5adc0104, 0x8e36729f,
+ 0xb30f97e9, 0x67e5e472, 0xc97d5d04, 0x1d972e9f, 0x20aecbe9,
+ 0xf444b872, 0xa8152f07, 0x7cff5c9c, 0x41c6b9ea, 0x952cca71,
+ 0x3bb47307, 0xef5e009c, 0xd267e5ea, 0x068d9671, 0x8e569607,
+ 0x5abce59c, 0x678500ea, 0xb36f7371, 0x1df7ca07, 0xc91db99c,
+ 0xf4245cea, 0x20ce2f71, 0xe4935d06, 0x30792e9d, 0x0d40cbeb,
+ 0xd9aab870, 0x77320106, 0xa3d8729d, 0x9ee197eb, 0x4a0be470,
+ 0xc2d0e406, 0x163a979d, 0x2b0372eb, 0xffe90170, 0x5171b806,
+ 0x859bcb9d, 0xb8a22eeb, 0x6c485d70, 0x6032940b, 0xb4d8e790,
+ 0x89e102e6, 0x5d0b717d, 0xf393c80b, 0x2779bb90, 0x1a405ee6,
+ 0xceaa2d7d, 0x46712d0b, 0x929b5e90, 0xafa2bbe6, 0x7b48c87d,
+ 0xd5d0710b, 0x013a0290, 0x3c03e7e6, 0xe8e9947d, 0x2cb4e60a,
+ 0xf85e9591, 0xc56770e7, 0x118d037c, 0xbf15ba0a, 0x6bffc991,
+ 0x56c62ce7, 0x822c5f7c, 0x0af75f0a, 0xde1d2c91, 0xe324c9e7,
+ 0x37ceba7c, 0x9956030a, 0x4dbc7091, 0x708595e7, 0xa46fe67c,
+ 0xf83e7109, 0x2cd40292, 0x11ede7e4, 0xc507947f, 0x6b9f2d09,
+ 0xbf755e92, 0x824cbbe4, 0x56a6c87f, 0xde7dc809, 0x0a97bb92,
+ 0x37ae5ee4, 0xe3442d7f, 0x4ddc9409, 0x9936e792, 0xa40f02e4,
+ 0x70e5717f, 0xb4b80308, 0x60527093, 0x5d6b95e5, 0x8981e67e,
+ 0x27195f08, 0xf3f32c93, 0xcecac9e5, 0x1a20ba7e, 0x92fbba08,
+ 0x4611c993, 0x7b282ce5, 0xafc25f7e, 0x015ae608, 0xd5b09593,
+ 0xe88970e5, 0x3c63037e, 0x502b5e0e, 0x84c12d95, 0xb9f8c8e3,
+ 0x6d12bb78, 0xc38a020e, 0x17607195, 0x2a5994e3, 0xfeb3e778,
+ 0x7668e70e, 0xa2829495, 0x9fbb71e3, 0x4b510278, 0xe5c9bb0e,
+ 0x3123c895, 0x0c1a2de3, 0xd8f05e78, 0x1cad2c0f, 0xc8475f94,
+ 0xf57ebae2, 0x2194c979, 0x8f0c700f, 0x5be60394, 0x66dfe6e2,
+ 0xb2359579, 0x3aee950f, 0xee04e694, 0xd33d03e2, 0x07d77079,
+ 0xa94fc90f, 0x7da5ba94, 0x409c5fe2, 0x94762c79, 0xc827bb0c,
+ 0x1ccdc897, 0x21f42de1, 0xf51e5e7a, 0x5b86e70c, 0x8f6c9497,
+ 0xb25571e1, 0x66bf027a, 0xee64020c, 0x3a8e7197, 0x07b794e1,
+ 0xd35de77a, 0x7dc55e0c, 0xa92f2d97, 0x9416c8e1, 0x40fcbb7a,
+ 0x84a1c90d, 0x504bba96, 0x6d725fe0, 0xb9982c7b, 0x1700950d,
+ 0xc3eae696, 0xfed303e0, 0x2a39707b, 0xa2e2700d, 0x76080396,
+ 0x4b31e6e0, 0x9fdb957b, 0x31432c0d, 0xe5a95f96, 0xd890bae0,
+ 0x0c7ac97b},
+ {0x00000000, 0x27652581, 0x0fcc3bd9, 0x28a91e58, 0x5f9e0669,
+ 0x78fb23e8, 0x50523db0, 0x77371831, 0xbe3c0dd2, 0x99592853,
+ 0xb1f0360b, 0x9695138a, 0xe1a20bbb, 0xc6c72e3a, 0xee6e3062,
+ 0xc90b15e3, 0x3d7f6b7f, 0x1a1a4efe, 0x32b350a6, 0x15d67527,
+ 0x62e16d16, 0x45844897, 0x6d2d56cf, 0x4a48734e, 0x834366ad,
+ 0xa426432c, 0x8c8f5d74, 0xabea78f5, 0xdcdd60c4, 0xfbb84545,
+ 0xd3115b1d, 0xf4747e9c, 0x7afed6fe, 0x5d9bf37f, 0x7532ed27,
+ 0x5257c8a6, 0x2560d097, 0x0205f516, 0x2aaceb4e, 0x0dc9cecf,
+ 0xc4c2db2c, 0xe3a7fead, 0xcb0ee0f5, 0xec6bc574, 0x9b5cdd45,
+ 0xbc39f8c4, 0x9490e69c, 0xb3f5c31d, 0x4781bd81, 0x60e49800,
+ 0x484d8658, 0x6f28a3d9, 0x181fbbe8, 0x3f7a9e69, 0x17d38031,
+ 0x30b6a5b0, 0xf9bdb053, 0xded895d2, 0xf6718b8a, 0xd114ae0b,
+ 0xa623b63a, 0x814693bb, 0xa9ef8de3, 0x8e8aa862, 0xb5fadc26,
+ 0x929ff9a7, 0xba36e7ff, 0x9d53c27e, 0xea64da4f, 0xcd01ffce,
+ 0xe5a8e196, 0xc2cdc417, 0x0bc6d1f4, 0x2ca3f475, 0x040aea2d,
+ 0x236fcfac, 0x5458d79d, 0x733df21c, 0x5b94ec44, 0x7cf1c9c5,
+ 0x8885b759, 0xafe092d8, 0x87498c80, 0xa02ca901, 0xd71bb130,
+ 0xf07e94b1, 0xd8d78ae9, 0xffb2af68, 0x36b9ba8b, 0x11dc9f0a,
+ 0x39758152, 0x1e10a4d3, 0x6927bce2, 0x4e429963, 0x66eb873b,
+ 0x418ea2ba, 0xcf040ad8, 0xe8612f59, 0xc0c83101, 0xe7ad1480,
+ 0x909a0cb1, 0xb7ff2930, 0x9f563768, 0xb83312e9, 0x7138070a,
+ 0x565d228b, 0x7ef43cd3, 0x59911952, 0x2ea60163, 0x09c324e2,
+ 0x216a3aba, 0x060f1f3b, 0xf27b61a7, 0xd51e4426, 0xfdb75a7e,
+ 0xdad27fff, 0xade567ce, 0x8a80424f, 0xa2295c17, 0x854c7996,
+ 0x4c476c75, 0x6b2249f4, 0x438b57ac, 0x64ee722d, 0x13d96a1c,
+ 0x34bc4f9d, 0x1c1551c5, 0x3b707444, 0x6af5b94d, 0x4d909ccc,
+ 0x65398294, 0x425ca715, 0x356bbf24, 0x120e9aa5, 0x3aa784fd,
+ 0x1dc2a17c, 0xd4c9b49f, 0xf3ac911e, 0xdb058f46, 0xfc60aac7,
+ 0x8b57b2f6, 0xac329777, 0x849b892f, 0xa3feacae, 0x578ad232,
+ 0x70eff7b3, 0x5846e9eb, 0x7f23cc6a, 0x0814d45b, 0x2f71f1da,
+ 0x07d8ef82, 0x20bdca03, 0xe9b6dfe0, 0xced3fa61, 0xe67ae439,
+ 0xc11fc1b8, 0xb628d989, 0x914dfc08, 0xb9e4e250, 0x9e81c7d1,
+ 0x100b6fb3, 0x376e4a32, 0x1fc7546a, 0x38a271eb, 0x4f9569da,
+ 0x68f04c5b, 0x40595203, 0x673c7782, 0xae376261, 0x895247e0,
+ 0xa1fb59b8, 0x869e7c39, 0xf1a96408, 0xd6cc4189, 0xfe655fd1,
+ 0xd9007a50, 0x2d7404cc, 0x0a11214d, 0x22b83f15, 0x05dd1a94,
+ 0x72ea02a5, 0x558f2724, 0x7d26397c, 0x5a431cfd, 0x9348091e,
+ 0xb42d2c9f, 0x9c8432c7, 0xbbe11746, 0xccd60f77, 0xebb32af6,
+ 0xc31a34ae, 0xe47f112f, 0xdf0f656b, 0xf86a40ea, 0xd0c35eb2,
+ 0xf7a67b33, 0x80916302, 0xa7f44683, 0x8f5d58db, 0xa8387d5a,
+ 0x613368b9, 0x46564d38, 0x6eff5360, 0x499a76e1, 0x3ead6ed0,
+ 0x19c84b51, 0x31615509, 0x16047088, 0xe2700e14, 0xc5152b95,
+ 0xedbc35cd, 0xcad9104c, 0xbdee087d, 0x9a8b2dfc, 0xb22233a4,
+ 0x95471625, 0x5c4c03c6, 0x7b292647, 0x5380381f, 0x74e51d9e,
+ 0x03d205af, 0x24b7202e, 0x0c1e3e76, 0x2b7b1bf7, 0xa5f1b395,
+ 0x82949614, 0xaa3d884c, 0x8d58adcd, 0xfa6fb5fc, 0xdd0a907d,
+ 0xf5a38e25, 0xd2c6aba4, 0x1bcdbe47, 0x3ca89bc6, 0x1401859e,
+ 0x3364a01f, 0x4453b82e, 0x63369daf, 0x4b9f83f7, 0x6cfaa676,
+ 0x988ed8ea, 0xbfebfd6b, 0x9742e333, 0xb027c6b2, 0xc710de83,
+ 0xe075fb02, 0xc8dce55a, 0xefb9c0db, 0x26b2d538, 0x01d7f0b9,
+ 0x297eeee1, 0x0e1bcb60, 0x792cd351, 0x5e49f6d0, 0x76e0e888,
+ 0x5185cd09}};
+
+#endif
+
+#endif
+
+#endif
+
+local const z_crc_t FAR x2n_table[] = {
+ 0x40000000, 0x20000000, 0x08000000, 0x00800000, 0x00008000,
+ 0xedb88320, 0xb1e6b092, 0xa06a2517, 0xed627dae, 0x88d14467,
+ 0xd7bbfe6a, 0xec447f11, 0x8e7ea170, 0x6427800e, 0x4d47bae0,
+ 0x09fe548f, 0x83852d0f, 0x30362f1a, 0x7b5a9cc3, 0x31fec169,
+ 0x9fec022a, 0x6c8dedc4, 0x15d6874d, 0x5fde7a4e, 0xbad90e37,
+ 0x2e4e5eef, 0x4eaba214, 0xa8a472c0, 0x429a969e, 0x148d302a,
+ 0xc40ba6d0, 0xc4e22c3c};
diff --git a/src/3rdparty/zlib/src/deflate.c b/src/3rdparty/zlib/src/deflate.c
index 1ec761448d..799fb93cc0 100644
--- a/src/3rdparty/zlib/src/deflate.c
+++ b/src/3rdparty/zlib/src/deflate.c
@@ -1,5 +1,5 @@
/* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+ * Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -52,7 +52,7 @@
#include "deflate.h"
const char deflate_copyright[] =
- " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler ";
+ " deflate 1.2.12 Copyright 1995-2022 Jean-loup Gailly and Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -190,8 +190,11 @@ local const config configuration_table[10] = {
* prev[] will be initialized on the fly.
*/
#define CLEAR_HASH(s) \
- s->head[s->hash_size-1] = NIL; \
- zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
+ do { \
+ s->head[s->hash_size-1] = NIL; \
+ zmemzero((Bytef *)s->head, \
+ (unsigned)(s->hash_size-1)*sizeof(*s->head)); \
+ } while (0)
/* ===========================================================================
* Slide the hash table when sliding the window down (could be avoided with 32
@@ -252,11 +255,6 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
int wrap = 1;
static const char my_version[] = ZLIB_VERSION;
- ushf *overlay;
- /* We overlay pending_buf and d_buf+l_buf. This works since the average
- * output size for (length,distance) codes is <= 24 bits.
- */
-
if (version == Z_NULL || version[0] != my_version[0] ||
stream_size != sizeof(z_stream)) {
return Z_VERSION_ERROR;
@@ -326,9 +324,47 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
- overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
- s->pending_buf = (uchf *) overlay;
- s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
+ /* We overlay pending_buf and sym_buf. This works since the average size
+ * for length/distance pairs over any compressed block is assured to be 31
+ * bits or less.
+ *
+ * Analysis: The longest fixed codes are a length code of 8 bits plus 5
+ * extra bits, for lengths 131 to 257. The longest fixed distance codes are
+ * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest
+ * possible fixed-codes length/distance pair is then 31 bits total.
+ *
+ * sym_buf starts one-fourth of the way into pending_buf. So there are
+ * three bytes in sym_buf for every four bytes in pending_buf. Each symbol
+ * in sym_buf is three bytes -- two for the distance and one for the
+ * literal/length. As each symbol is consumed, the pointer to the next
+ * sym_buf value to read moves forward three bytes. From that symbol, up to
+ * 31 bits are written to pending_buf. The closest the written pending_buf
+ * bits gets to the next sym_buf symbol to read is just before the last
+ * code is written. At that time, 31*(n-2) bits have been written, just
+ * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at
+ * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1
+ * symbols are written.) The closest the writing gets to what is unread is
+ * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and
+ * can range from 128 to 32768.
+ *
+ * Therefore, at a minimum, there are 142 bits of space between what is
+ * written and what is read in the overlain buffers, so the symbols cannot
+ * be overwritten by the compressed data. That space is actually 139 bits,
+ * due to the three-bit fixed-code block header.
+ *
+ * That covers the case where either Z_FIXED is specified, forcing fixed
+ * codes, or when the use of fixed codes is chosen, because that choice
+ * results in a smaller compressed block than dynamic codes. That latter
+ * condition then assures that the above analysis also covers all dynamic
+ * blocks. A dynamic-code block will only be chosen to be emitted if it has
+ * fewer bits than a fixed-code block would for the same set of symbols.
+ * Therefore its average symbol length is assured to be less than 31. So
+ * the compressed data for a dynamic block also cannot overwrite the
+ * symbols from which it is being constructed.
+ */
+
+ s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4);
+ s->pending_buf_size = (ulg)s->lit_bufsize * 4;
if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
s->pending_buf == Z_NULL) {
@@ -337,8 +373,12 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
deflateEnd (strm);
return Z_MEM_ERROR;
}
- s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
- s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
+ s->sym_buf = s->pending_buf + s->lit_bufsize;
+ s->sym_end = (s->lit_bufsize - 1) * 3;
+ /* We avoid equality with lit_bufsize*3 because of wraparound at 64K
+ * on 16 bit machines and because stored blocks are restricted to
+ * 64K-1 bytes.
+ */
s->level = level;
s->strategy = strategy;
@@ -488,13 +528,13 @@ int ZEXPORT deflateResetKeep (strm)
#ifdef GZIP
s->wrap == 2 ? GZIP_STATE :
#endif
- s->wrap ? INIT_STATE : BUSY_STATE;
+ INIT_STATE;
strm->adler =
#ifdef GZIP
s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
#endif
adler32(0L, Z_NULL, 0);
- s->last_flush = Z_NO_FLUSH;
+ s->last_flush = -2;
_tr_init(s);
@@ -549,7 +589,8 @@ int ZEXPORT deflatePrime (strm, bits, value)
if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
s = strm->state;
- if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3))
+ if (bits < 0 || bits > 16 ||
+ s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3))
return Z_BUF_ERROR;
do {
put = Buf_size - s->bi_valid;
@@ -587,12 +628,12 @@ int ZEXPORT deflateParams(strm, level, strategy)
func = configuration_table[s->level].func;
if ((strategy != s->strategy || func != configuration_table[level].func) &&
- s->high_water) {
+ s->last_flush != -2) {
/* Flush the last buffer: */
int err = deflate(strm, Z_BLOCK);
if (err == Z_STREAM_ERROR)
return err;
- if (strm->avail_out == 0)
+ if (strm->avail_in || (s->strstart - s->block_start) + s->lookahead)
return Z_BUF_ERROR;
}
if (s->level != level) {
@@ -811,6 +852,8 @@ int ZEXPORT deflate (strm, flush)
}
/* Write the header */
+ if (s->status == INIT_STATE && s->wrap == 0)
+ s->status = BUSY_STATE;
if (s->status == INIT_STATE) {
/* zlib header */
uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
@@ -1108,7 +1151,6 @@ int ZEXPORT deflateCopy (dest, source)
#else
deflate_state *ds;
deflate_state *ss;
- ushf *overlay;
if (deflateStateCheck(source) || dest == Z_NULL) {
@@ -1128,8 +1170,7 @@ int ZEXPORT deflateCopy (dest, source)
ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos));
ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos));
- overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
- ds->pending_buf = (uchf *) overlay;
+ ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4);
if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
ds->pending_buf == Z_NULL) {
@@ -1143,8 +1184,7 @@ int ZEXPORT deflateCopy (dest, source)
zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
- ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
- ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
+ ds->sym_buf = ds->pending_buf + ds->lit_bufsize;
ds->l_desc.dyn_tree = ds->dyn_ltree;
ds->d_desc.dyn_tree = ds->dyn_dtree;
@@ -1513,6 +1553,8 @@ local void fill_window(s)
s->match_start -= wsize;
s->strstart -= wsize; /* we now have strstart >= MAX_DIST */
s->block_start -= (long) wsize;
+ if (s->insert > s->strstart)
+ s->insert = s->strstart;
slide_hash(s);
more += wsize;
}
@@ -1742,6 +1784,7 @@ local block_state deflate_stored(s, flush)
s->matches = 2; /* clear hash */
zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);
s->strstart = s->w_size;
+ s->insert = s->strstart;
}
else {
if (s->window_size - s->strstart <= used) {
@@ -1750,12 +1793,14 @@ local block_state deflate_stored(s, flush)
zmemcpy(s->window, s->window + s->w_size, s->strstart);
if (s->matches < 2)
s->matches++; /* add a pending slide_hash() */
+ if (s->insert > s->strstart)
+ s->insert = s->strstart;
}
zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);
s->strstart += used;
+ s->insert += MIN(used, s->w_size - s->insert);
}
s->block_start = s->strstart;
- s->insert += MIN(used, s->w_size - s->insert);
}
if (s->high_water < s->strstart)
s->high_water = s->strstart;
@@ -1770,7 +1815,7 @@ local block_state deflate_stored(s, flush)
return block_done;
/* Fill the window with any remaining input. */
- have = s->window_size - s->strstart - 1;
+ have = s->window_size - s->strstart;
if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) {
/* Slide the window down. */
s->block_start -= s->w_size;
@@ -1779,12 +1824,15 @@ local block_state deflate_stored(s, flush)
if (s->matches < 2)
s->matches++; /* add a pending slide_hash() */
have += s->w_size; /* more space now */
+ if (s->insert > s->strstart)
+ s->insert = s->strstart;
}
if (have > s->strm->avail_in)
have = s->strm->avail_in;
if (have) {
read_buf(s->strm, s->window + s->strstart, have);
s->strstart += have;
+ s->insert += MIN(have, s->w_size - s->insert);
}
if (s->high_water < s->strstart)
s->high_water = s->strstart;
@@ -1912,7 +1960,7 @@ local block_state deflate_fast(s, flush)
FLUSH_BLOCK(s, 1);
return finish_done;
}
- if (s->last_lit)
+ if (s->sym_next)
FLUSH_BLOCK(s, 0);
return block_done;
}
@@ -2043,7 +2091,7 @@ local block_state deflate_slow(s, flush)
FLUSH_BLOCK(s, 1);
return finish_done;
}
- if (s->last_lit)
+ if (s->sym_next)
FLUSH_BLOCK(s, 0);
return block_done;
}
@@ -2118,7 +2166,7 @@ local block_state deflate_rle(s, flush)
FLUSH_BLOCK(s, 1);
return finish_done;
}
- if (s->last_lit)
+ if (s->sym_next)
FLUSH_BLOCK(s, 0);
return block_done;
}
@@ -2157,7 +2205,7 @@ local block_state deflate_huff(s, flush)
FLUSH_BLOCK(s, 1);
return finish_done;
}
- if (s->last_lit)
+ if (s->sym_next)
FLUSH_BLOCK(s, 0);
return block_done;
}
diff --git a/src/3rdparty/zlib/src/deflate.h b/src/3rdparty/zlib/src/deflate.h
index 23ecdd312b..17c226113b 100644
--- a/src/3rdparty/zlib/src/deflate.h
+++ b/src/3rdparty/zlib/src/deflate.h
@@ -1,5 +1,5 @@
/* deflate.h -- internal compression state
- * Copyright (C) 1995-2016 Jean-loup Gailly
+ * Copyright (C) 1995-2018 Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -217,7 +217,7 @@ typedef struct internal_state {
/* Depth of each subtree used as tie breaker for trees of equal frequency
*/
- uchf *l_buf; /* buffer for literals or lengths */
+ uchf *sym_buf; /* buffer for distances and literals/lengths */
uInt lit_bufsize;
/* Size of match buffer for literals/lengths. There are 4 reasons for
@@ -239,13 +239,8 @@ typedef struct internal_state {
* - I can't count above 4
*/
- uInt last_lit; /* running index in l_buf */
-
- ushf *d_buf;
- /* Buffer for distances. To simplify the code, d_buf and l_buf have
- * the same number of elements. To use different lengths, an extra flag
- * array would be necessary.
- */
+ uInt sym_next; /* running index in sym_buf */
+ uInt sym_end; /* symbol table full when sym_next reaches this */
ulg opt_len; /* bit length of current block with optimal trees */
ulg static_len; /* bit length of current block with static trees */
@@ -325,20 +320,22 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
# define _tr_tally_lit(s, c, flush) \
{ uch cc = (c); \
- s->d_buf[s->last_lit] = 0; \
- s->l_buf[s->last_lit++] = cc; \
+ s->sym_buf[s->sym_next++] = 0; \
+ s->sym_buf[s->sym_next++] = 0; \
+ s->sym_buf[s->sym_next++] = cc; \
s->dyn_ltree[cc].Freq++; \
- flush = (s->last_lit == s->lit_bufsize-1); \
+ flush = (s->sym_next == s->sym_end); \
}
# define _tr_tally_dist(s, distance, length, flush) \
{ uch len = (uch)(length); \
ush dist = (ush)(distance); \
- s->d_buf[s->last_lit] = dist; \
- s->l_buf[s->last_lit++] = len; \
+ s->sym_buf[s->sym_next++] = dist; \
+ s->sym_buf[s->sym_next++] = dist >> 8; \
+ s->sym_buf[s->sym_next++] = len; \
dist--; \
s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
s->dyn_dtree[d_code(dist)].Freq++; \
- flush = (s->last_lit == s->lit_bufsize-1); \
+ flush = (s->sym_next == s->sym_end); \
}
#else
# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
diff --git a/src/3rdparty/zlib/src/gzguts.h b/src/3rdparty/zlib/src/gzguts.h
index 20de7cb4ce..3ec32af25f 100644
--- a/src/3rdparty/zlib/src/gzguts.h
+++ b/src/3rdparty/zlib/src/gzguts.h
@@ -1,5 +1,5 @@
/* gzguts.h -- zlib internal header definitions for gz* operations
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
+ * Copyright (C) 2004-2019 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -10,15 +10,8 @@
# ifndef _CRT_NONSTDC_NO_DEPRECATE
# define _CRT_NONSTDC_NO_DEPRECATE
# endif
-#endif
-
-#ifdef _LARGEFILE64_SOURCE
-# ifndef _LARGEFILE_SOURCE
-# define _LARGEFILE_SOURCE 1
-# endif
-# ifdef _FILE_OFFSET_BITS
-# undef _FILE_OFFSET_BITS
-# endif
+// disable warnings like '=': conversion from 'size_t' to 'unsigned int', possible loss of data
+# pragma warning(disable: 4267; disable: 4244)
#endif
#ifndef QT_BOOTSTRAPPED
@@ -29,6 +22,14 @@
#define HAVE_HIDDEN
#endif
+#ifdef _LARGEFILE64_SOURCE
+# ifndef _LARGEFILE_SOURCE
+# define _LARGEFILE_SOURCE 1
+# endif
+# ifdef _FILE_OFFSET_BITS
+# undef _FILE_OFFSET_BITS
+# endif
+#endif
#ifdef HAVE_HIDDEN
# define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
@@ -57,7 +58,7 @@
# include <io.h>
#endif
-#if defined(_WIN32) || defined(__CYGWIN__)
+#if defined(_WIN32)
# define WIDECHAR
#endif
@@ -208,6 +209,7 @@ typedef struct {
/* just for writing */
int level; /* compression level */
int strategy; /* compression strategy */
+ int reset; /* true if a reset is pending after a Z_FINISH */
/* seek request */
z_off64_t skip; /* amount to skip (already rewound if backwards) */
int seek; /* true if seek request pending */
diff --git a/src/3rdparty/zlib/src/gzlib.c b/src/3rdparty/zlib/src/gzlib.c
index 4105e6aff9..dddaf26873 100644
--- a/src/3rdparty/zlib/src/gzlib.c
+++ b/src/3rdparty/zlib/src/gzlib.c
@@ -1,11 +1,11 @@
/* gzlib.c -- zlib functions common to reading and writing gzip files
- * Copyright (C) 2004-2017 Mark Adler
+ * Copyright (C) 2004-2019 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "gzguts.h"
-#if defined(_WIN32) && !defined(__BORLANDC__) && !defined(__MINGW32__)
+#if defined(_WIN32) && !defined(__BORLANDC__)
# define LSEEK _lseeki64
#else
#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
@@ -81,6 +81,8 @@ local void gz_reset(state)
state->past = 0; /* have not read past end yet */
state->how = LOOK; /* look for gzip header */
}
+ else /* for writing ... */
+ state->reset = 0; /* no deflateReset pending */
state->seek = 0; /* no seek request pending */
gz_error(state, Z_OK, NULL); /* clear error */
state->x.pos = 0; /* no uncompressed data yet */
@@ -397,7 +399,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
/* if within raw area while reading, just go there */
if (state->mode == GZ_READ && state->how == COPY &&
state->x.pos + offset >= 0) {
- ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR);
+ ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR);
if (ret == -1)
return -1;
state->x.have = 0;
diff --git a/src/3rdparty/zlib/src/gzread.c b/src/3rdparty/zlib/src/gzread.c
index 956b91ea7d..884c9bfe4c 100644
--- a/src/3rdparty/zlib/src/gzread.c
+++ b/src/3rdparty/zlib/src/gzread.c
@@ -1,5 +1,5 @@
/* gzread.c -- zlib functions for reading gzip files
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
+ * Copyright (C) 2004-2017 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -314,9 +314,9 @@ local z_size_t gz_read(state, buf, len)
got = 0;
do {
/* set n to the maximum amount of len that fits in an unsigned int */
- n = -1;
+ n = (unsigned)-1;
if (n > len)
- n = len;
+ n = (unsigned)len;
/* first just try copying data from the output buffer */
if (state->x.have) {
@@ -397,7 +397,7 @@ int ZEXPORT gzread(file, buf, len)
}
/* read len or fewer bytes to buf */
- len = gz_read(state, buf, len);
+ len = (unsigned)gz_read(state, buf, len);
/* check for an error */
if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR)
@@ -447,7 +447,6 @@ z_size_t ZEXPORT gzfread(buf, size, nitems, file)
int ZEXPORT gzgetc(file)
gzFile file;
{
- int ret;
unsigned char buf[1];
gz_statep state;
@@ -469,8 +468,7 @@ int ZEXPORT gzgetc(file)
}
/* nothing there -- try gz_read() */
- ret = gz_read(state, buf, 1);
- return ret < 1 ? -1 : buf[0];
+ return gz_read(state, buf, 1) < 1 ? -1 : buf[0];
}
int ZEXPORT gzgetc_(file)
diff --git a/src/3rdparty/zlib/src/gzwrite.c b/src/3rdparty/zlib/src/gzwrite.c
index c7b5651d70..a8ffc8f53d 100644
--- a/src/3rdparty/zlib/src/gzwrite.c
+++ b/src/3rdparty/zlib/src/gzwrite.c
@@ -1,5 +1,5 @@
/* gzwrite.c -- zlib functions for writing gzip files
- * Copyright (C) 2004-2017 Mark Adler
+ * Copyright (C) 2004-2019 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -97,6 +97,15 @@ local int gz_comp(state, flush)
return 0;
}
+ /* check for a pending reset */
+ if (state->reset) {
+ /* don't start a new gzip member unless there is data to write */
+ if (strm->avail_in == 0)
+ return 0;
+ deflateReset(strm);
+ state->reset = 0;
+ }
+
/* run deflate() on provided input until it produces no more output */
ret = Z_OK;
do {
@@ -134,7 +143,7 @@ local int gz_comp(state, flush)
/* if that completed a deflate stream, allow another to start */
if (flush == Z_FINISH)
- deflateReset(strm);
+ state->reset = 1;
/* all done, no errors */
return 0;
@@ -209,7 +218,7 @@ local z_size_t gz_write(state, buf, len)
state->in);
copy = state->size - have;
if (copy > len)
- copy = len;
+ copy = (unsigned)len;
memcpy(state->in + have, buf, copy);
state->strm.avail_in += copy;
state->x.pos += copy;
@@ -229,7 +238,7 @@ local z_size_t gz_write(state, buf, len)
do {
unsigned n = (unsigned)-1;
if (n > len)
- n = len;
+ n = (unsigned)len;
state->strm.avail_in = n;
state->x.pos += n;
if (gz_comp(state, Z_NO_FLUSH) == -1)
@@ -349,12 +358,11 @@ int ZEXPORT gzputc(file, c)
}
/* -- see zlib.h -- */
-int ZEXPORT gzputs(file, str)
+int ZEXPORT gzputs(file, s)
gzFile file;
- const char *str;
+ const char *s;
{
- int ret;
- z_size_t len;
+ z_size_t len, put;
gz_statep state;
/* get internal structure */
@@ -367,9 +375,13 @@ int ZEXPORT gzputs(file, str)
return -1;
/* write string */
- len = strlen(str);
- ret = gz_write(state, str, len);
- return ret == 0 && len != 0 ? -1 : ret;
+ len = strlen(s);
+ if ((int)len < 0 || (unsigned)len != len) {
+ gz_error(state, Z_STREAM_ERROR, "string length does not fit in int");
+ return -1;
+ }
+ put = gz_write(state, s, len);
+ return put < len ? -1 : (int)len;
}
#if defined(STDC) || defined(Z_HAVE_STDARG_H)
@@ -441,7 +453,7 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va)
strm->avail_in = state->size;
if (gz_comp(state, Z_NO_FLUSH) == -1)
return state->err;
- memcpy(state->in, state->in + state->size, left);
+ memmove(state->in, state->in + state->size, left);
strm->next_in = state->in;
strm->avail_in = left;
}
@@ -540,7 +552,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
strm->avail_in = state->size;
if (gz_comp(state, Z_NO_FLUSH) == -1)
return state->err;
- memcpy(state->in, state->in + state->size, left);
+ memmove(state->in, state->in + state->size, left);
strm->next_in = state->in;
strm->avail_in = left;
}
diff --git a/src/3rdparty/zlib/src/infback.c b/src/3rdparty/zlib/src/infback.c
index 59679ecbfc..a390c58e81 100644
--- a/src/3rdparty/zlib/src/infback.c
+++ b/src/3rdparty/zlib/src/infback.c
@@ -1,5 +1,5 @@
/* infback.c -- inflate using a call-back interface
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -477,6 +477,7 @@ void FAR *out_desc;
}
Tracev((stderr, "inflate: codes ok\n"));
state->mode = LEN;
+ /* fallthrough */
case LEN:
/* use inflate_fast() if we have enough input and output */
diff --git a/src/3rdparty/zlib/src/inffast.c b/src/3rdparty/zlib/src/inffast.c
index 0dbd1dbc09..1fec7f363f 100644
--- a/src/3rdparty/zlib/src/inffast.c
+++ b/src/3rdparty/zlib/src/inffast.c
@@ -70,7 +70,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
code const FAR *dcode; /* local strm->distcode */
unsigned lmask; /* mask for first level of length codes */
unsigned dmask; /* mask for first level of distance codes */
- code here; /* retrieved table entry */
+ code const *here; /* retrieved table entry */
unsigned op; /* code bits, operation, extra bits, or */
/* window position, window bytes to copy */
unsigned len; /* match length, unused bytes */
@@ -107,20 +107,20 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
hold += (unsigned long)(*in++) << bits;
bits += 8;
}
- here = lcode[hold & lmask];
+ here = lcode + (hold & lmask);
dolen:
- op = (unsigned)(here.bits);
+ op = (unsigned)(here->bits);
hold >>= op;
bits -= op;
- op = (unsigned)(here.op);
+ op = (unsigned)(here->op);
if (op == 0) { /* literal */
- Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+ Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ?
"inflate: literal '%c'\n" :
- "inflate: literal 0x%02x\n", here.val));
- *out++ = (unsigned char)(here.val);
+ "inflate: literal 0x%02x\n", here->val));
+ *out++ = (unsigned char)(here->val);
}
else if (op & 16) { /* length base */
- len = (unsigned)(here.val);
+ len = (unsigned)(here->val);
op &= 15; /* number of extra bits */
if (op) {
if (bits < op) {
@@ -138,14 +138,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
hold += (unsigned long)(*in++) << bits;
bits += 8;
}
- here = dcode[hold & dmask];
+ here = dcode + (hold & dmask);
dodist:
- op = (unsigned)(here.bits);
+ op = (unsigned)(here->bits);
hold >>= op;
bits -= op;
- op = (unsigned)(here.op);
+ op = (unsigned)(here->op);
if (op & 16) { /* distance base */
- dist = (unsigned)(here.val);
+ dist = (unsigned)(here->val);
op &= 15; /* number of extra bits */
if (bits < op) {
hold += (unsigned long)(*in++) << bits;
@@ -264,7 +264,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
}
}
else if ((op & 64) == 0) { /* 2nd level distance code */
- here = dcode[here.val + (hold & ((1U << op) - 1))];
+ here = dcode + here->val + (hold & ((1U << op) - 1));
goto dodist;
}
else {
@@ -274,7 +274,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
}
}
else if ((op & 64) == 0) { /* 2nd level length code */
- here = lcode[here.val + (hold & ((1U << op) - 1))];
+ here = lcode + here->val + (hold & ((1U << op) - 1));
goto dolen;
}
else if (op & 32) { /* end-of-block */
diff --git a/src/3rdparty/zlib/src/inflate.c b/src/3rdparty/zlib/src/inflate.c
index ac333e8c2e..7be8c63662 100644
--- a/src/3rdparty/zlib/src/inflate.c
+++ b/src/3rdparty/zlib/src/inflate.c
@@ -1,5 +1,5 @@
/* inflate.c -- zlib decompression
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -130,6 +130,7 @@ z_streamp strm;
state->mode = HEAD;
state->last = 0;
state->havedict = 0;
+ state->flags = -1;
state->dmax = 32768U;
state->head = Z_NULL;
state->hold = 0;
@@ -447,10 +448,10 @@ unsigned copy;
/* check function to use adler32() for zlib or crc32() for gzip */
#ifdef GUNZIP
-# define UPDATE(check, buf, len) \
+# define UPDATE_CHECK(check, buf, len) \
(state->flags ? crc32(check, buf, len) : adler32(check, buf, len))
#else
-# define UPDATE(check, buf, len) adler32(check, buf, len)
+# define UPDATE_CHECK(check, buf, len) adler32(check, buf, len)
#endif
/* check macros for header crc */
@@ -670,7 +671,6 @@ int flush;
state->mode = FLAGS;
break;
}
- state->flags = 0; /* expect zlib header */
if (state->head != Z_NULL)
state->head->done = -1;
if (!(state->wrap & 1) || /* check if zlib header allowed */
@@ -697,6 +697,7 @@ int flush;
break;
}
state->dmax = 1U << len;
+ state->flags = 0; /* indicate zlib header */
Tracev((stderr, "inflate: zlib header ok\n"));
strm->adler = state->check = adler32(0L, Z_NULL, 0);
state->mode = hold & 0x200 ? DICTID : TYPE;
@@ -722,6 +723,7 @@ int flush;
CRC2(state->check, hold);
INITBITS();
state->mode = TIME;
+ /* fallthrough */
case TIME:
NEEDBITS(32);
if (state->head != Z_NULL)
@@ -730,6 +732,7 @@ int flush;
CRC4(state->check, hold);
INITBITS();
state->mode = OS;
+ /* fallthrough */
case OS:
NEEDBITS(16);
if (state->head != Z_NULL) {
@@ -740,6 +743,7 @@ int flush;
CRC2(state->check, hold);
INITBITS();
state->mode = EXLEN;
+ /* fallthrough */
case EXLEN:
if (state->flags & 0x0400) {
NEEDBITS(16);
@@ -753,6 +757,7 @@ int flush;
else if (state->head != Z_NULL)
state->head->extra = Z_NULL;
state->mode = EXTRA;
+ /* fallthrough */
case EXTRA:
if (state->flags & 0x0400) {
copy = state->length;
@@ -775,6 +780,7 @@ int flush;
}
state->length = 0;
state->mode = NAME;
+ /* fallthrough */
case NAME:
if (state->flags & 0x0800) {
if (have == 0) goto inf_leave;
@@ -796,6 +802,7 @@ int flush;
state->head->name = Z_NULL;
state->length = 0;
state->mode = COMMENT;
+ /* fallthrough */
case COMMENT:
if (state->flags & 0x1000) {
if (have == 0) goto inf_leave;
@@ -816,6 +823,7 @@ int flush;
else if (state->head != Z_NULL)
state->head->comment = Z_NULL;
state->mode = HCRC;
+ /* fallthrough */
case HCRC:
if (state->flags & 0x0200) {
NEEDBITS(16);
@@ -839,6 +847,7 @@ int flush;
strm->adler = state->check = ZSWAP32(hold);
INITBITS();
state->mode = DICT;
+ /* fallthrough */
case DICT:
if (state->havedict == 0) {
RESTORE();
@@ -846,8 +855,10 @@ int flush;
}
strm->adler = state->check = adler32(0L, Z_NULL, 0);
state->mode = TYPE;
+ /* fallthrough */
case TYPE:
if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave;
+ /* fallthrough */
case TYPEDO:
if (state->last) {
BYTEBITS();
@@ -898,8 +909,10 @@ int flush;
INITBITS();
state->mode = COPY_;
if (flush == Z_TREES) goto inf_leave;
+ /* fallthrough */
case COPY_:
state->mode = COPY;
+ /* fallthrough */
case COPY:
copy = state->length;
if (copy) {
@@ -935,6 +948,7 @@ int flush;
Tracev((stderr, "inflate: table sizes ok\n"));
state->have = 0;
state->mode = LENLENS;
+ /* fallthrough */
case LENLENS:
while (state->have < state->ncode) {
NEEDBITS(3);
@@ -956,6 +970,7 @@ int flush;
Tracev((stderr, "inflate: code lengths ok\n"));
state->have = 0;
state->mode = CODELENS;
+ /* fallthrough */
case CODELENS:
while (state->have < state->nlen + state->ndist) {
for (;;) {
@@ -1039,8 +1054,10 @@ int flush;
Tracev((stderr, "inflate: codes ok\n"));
state->mode = LEN_;
if (flush == Z_TREES) goto inf_leave;
+ /* fallthrough */
case LEN_:
state->mode = LEN;
+ /* fallthrough */
case LEN:
if (have >= 6 && left >= 258) {
RESTORE();
@@ -1090,6 +1107,7 @@ int flush;
}
state->extra = (unsigned)(here.op) & 15;
state->mode = LENEXT;
+ /* fallthrough */
case LENEXT:
if (state->extra) {
NEEDBITS(state->extra);
@@ -1100,6 +1118,7 @@ int flush;
Tracevv((stderr, "inflate: length %u\n", state->length));
state->was = state->length;
state->mode = DIST;
+ /* fallthrough */
case DIST:
for (;;) {
here = state->distcode[BITS(state->distbits)];
@@ -1127,6 +1146,7 @@ int flush;
state->offset = (unsigned)here.val;
state->extra = (unsigned)(here.op) & 15;
state->mode = DISTEXT;
+ /* fallthrough */
case DISTEXT:
if (state->extra) {
NEEDBITS(state->extra);
@@ -1143,6 +1163,7 @@ int flush;
#endif
Tracevv((stderr, "inflate: distance %u\n", state->offset));
state->mode = MATCH;
+ /* fallthrough */
case MATCH:
if (left == 0) goto inf_leave;
copy = out - left;
@@ -1202,7 +1223,7 @@ int flush;
state->total += out;
if ((state->wrap & 4) && out)
strm->adler = state->check =
- UPDATE(state->check, put - out, out);
+ UPDATE_CHECK(state->check, put - out, out);
out = left;
if ((state->wrap & 4) && (
#ifdef GUNZIP
@@ -1218,10 +1239,11 @@ int flush;
}
#ifdef GUNZIP
state->mode = LENGTH;
+ /* fallthrough */
case LENGTH:
if (state->wrap && state->flags) {
NEEDBITS(32);
- if (hold != (state->total & 0xffffffffUL)) {
+ if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) {
strm->msg = (char *)"incorrect length check";
state->mode = BAD;
break;
@@ -1231,6 +1253,7 @@ int flush;
}
#endif
state->mode = DONE;
+ /* fallthrough */
case DONE:
ret = Z_STREAM_END;
goto inf_leave;
@@ -1240,6 +1263,7 @@ int flush;
case MEM:
return Z_MEM_ERROR;
case SYNC:
+ /* fallthrough */
default:
return Z_STREAM_ERROR;
}
@@ -1265,7 +1289,7 @@ int flush;
state->total += out;
if ((state->wrap & 4) && out)
strm->adler = state->check =
- UPDATE(state->check, strm->next_out - out, out);
+ UPDATE_CHECK(state->check, strm->next_out - out, out);
strm->data_type = (int)state->bits + (state->last ? 64 : 0) +
(state->mode == TYPE ? 128 : 0) +
(state->mode == LEN_ || state->mode == COPY_ ? 256 : 0);
@@ -1401,6 +1425,7 @@ int ZEXPORT inflateSync(strm)
z_streamp strm;
{
unsigned len; /* number of bytes to look at or looked at */
+ int flags; /* temporary to save header status */
unsigned long in, out; /* temporary to save total_in and total_out */
unsigned char buf[4]; /* to restore bit buffer to byte string */
struct inflate_state FAR *state;
@@ -1433,9 +1458,15 @@ z_streamp strm;
/* return no joy or set up to restart inflate() on a new block */
if (state->have != 4) return Z_DATA_ERROR;
+ if (state->flags == -1)
+ state->wrap = 0; /* if no header yet, treat as raw */
+ else
+ state->wrap &= ~4; /* no point in computing a check value now */
+ flags = state->flags;
in = strm->total_in; out = strm->total_out;
inflateReset(strm);
strm->total_in = in; strm->total_out = out;
+ state->flags = flags;
state->mode = TYPE;
return Z_OK;
}
@@ -1531,7 +1562,7 @@ int check;
if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
- if (check)
+ if (check && state->wrap)
state->wrap |= 4;
else
state->wrap &= ~4;
diff --git a/src/3rdparty/zlib/src/inflate.h b/src/3rdparty/zlib/src/inflate.h
index a46cce6b6d..f127b6b1fa 100644
--- a/src/3rdparty/zlib/src/inflate.h
+++ b/src/3rdparty/zlib/src/inflate.h
@@ -1,5 +1,5 @@
/* inflate.h -- internal inflate state definition
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2019 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -86,7 +86,8 @@ struct inflate_state {
int wrap; /* bit 0 true for zlib, bit 1 true for gzip,
bit 2 true to validate check value */
int havedict; /* true if dictionary provided */
- int flags; /* gzip header method and flags (0 if zlib) */
+ int flags; /* gzip header method and flags, 0 if zlib, or
+ -1 if raw or no header yet */
unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */
unsigned long check; /* protected copy of check value */
unsigned long total; /* protected copy of output count */
diff --git a/src/3rdparty/zlib/src/inftrees.c b/src/3rdparty/zlib/src/inftrees.c
index 2ea08fc13e..09462a740b 100644
--- a/src/3rdparty/zlib/src/inftrees.c
+++ b/src/3rdparty/zlib/src/inftrees.c
@@ -1,5 +1,5 @@
/* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2017 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -9,7 +9,7 @@
#define MAXBITS 15
const char inflate_copyright[] =
- " inflate 1.2.11 Copyright 1995-2017 Mark Adler ";
+ " inflate 1.2.12 Copyright 1995-2022 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -62,7 +62,7 @@ unsigned short FAR *work;
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202};
+ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 202};
static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
diff --git a/src/3rdparty/zlib/src/trees.c b/src/3rdparty/zlib/src/trees.c
index 50cf4b4571..f73fd99c37 100644
--- a/src/3rdparty/zlib/src/trees.c
+++ b/src/3rdparty/zlib/src/trees.c
@@ -1,5 +1,5 @@
/* trees.c -- output deflated data using Huffman coding
- * Copyright (C) 1995-2017 Jean-loup Gailly
+ * Copyright (C) 1995-2021 Jean-loup Gailly
* detect_data_type() function provided freely by Cosmin Truta, 2006
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -149,7 +149,7 @@ local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
local void compress_block OF((deflate_state *s, const ct_data *ltree,
const ct_data *dtree));
local int detect_data_type OF((deflate_state *s));
-local unsigned bi_reverse OF((unsigned value, int length));
+local unsigned bi_reverse OF((unsigned code, int len));
local void bi_windup OF((deflate_state *s));
local void bi_flush OF((deflate_state *s));
@@ -416,7 +416,7 @@ local void init_block(s)
s->dyn_ltree[END_BLOCK].Freq = 1;
s->opt_len = s->static_len = 0L;
- s->last_lit = s->matches = 0;
+ s->sym_next = s->matches = 0;
}
#define SMALLEST 1
@@ -870,7 +870,8 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
bi_windup(s); /* align on byte boundary */
put_short(s, (ush)stored_len);
put_short(s, (ush)~stored_len);
- zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
+ if (stored_len)
+ zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
s->pending += stored_len;
#ifdef ZLIB_DEBUG
s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
@@ -947,7 +948,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
- s->last_lit));
+ s->sym_next / 3));
if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
@@ -1016,8 +1017,9 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
unsigned dist; /* distance of matched string */
unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
{
- s->d_buf[s->last_lit] = (ush)dist;
- s->l_buf[s->last_lit++] = (uch)lc;
+ s->sym_buf[s->sym_next++] = dist;
+ s->sym_buf[s->sym_next++] = dist >> 8;
+ s->sym_buf[s->sym_next++] = lc;
if (dist == 0) {
/* lc is the unmatched char */
s->dyn_ltree[lc].Freq++;
@@ -1032,30 +1034,7 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
s->dyn_dtree[d_code(dist)].Freq++;
}
-
-#ifdef TRUNCATE_BLOCK
- /* Try to guess if it is profitable to stop the current block here */
- if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
- /* Compute an upper bound for the compressed length */
- ulg out_length = (ulg)s->last_lit*8L;
- ulg in_length = (ulg)((long)s->strstart - s->block_start);
- int dcode;
- for (dcode = 0; dcode < D_CODES; dcode++) {
- out_length += (ulg)s->dyn_dtree[dcode].Freq *
- (5L+extra_dbits[dcode]);
- }
- out_length >>= 3;
- Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
- s->last_lit, in_length, out_length,
- 100L - out_length*100L/in_length));
- if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
- }
-#endif
- return (s->last_lit == s->lit_bufsize-1);
- /* We avoid equality with lit_bufsize because of wraparound at 64K
- * on 16 bit machines and because stored blocks are restricted to
- * 64K-1 bytes.
- */
+ return (s->sym_next == s->sym_end);
}
/* ===========================================================================
@@ -1068,13 +1047,14 @@ local void compress_block(s, ltree, dtree)
{
unsigned dist; /* distance of matched string */
int lc; /* match length or unmatched char (if dist == 0) */
- unsigned lx = 0; /* running index in l_buf */
+ unsigned sx = 0; /* running index in sym_buf */
unsigned code; /* the code to send */
int extra; /* number of extra bits to send */
- if (s->last_lit != 0) do {
- dist = s->d_buf[lx];
- lc = s->l_buf[lx++];
+ if (s->sym_next != 0) do {
+ dist = s->sym_buf[sx++] & 0xff;
+ dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8;
+ lc = s->sym_buf[sx++];
if (dist == 0) {
send_code(s, lc, ltree); /* send a literal byte */
Tracecv(isgraph(lc), (stderr," '%c' ", lc));
@@ -1099,11 +1079,10 @@ local void compress_block(s, ltree, dtree)
}
} /* literal or match pair ? */
- /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
- Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
- "pendingBuf overflow");
+ /* Check that the overlay between pending_buf and sym_buf is ok: */
+ Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow");
- } while (lx < s->last_lit);
+ } while (sx < s->sym_next);
send_code(s, END_BLOCK, ltree);
}
@@ -1112,9 +1091,9 @@ local void compress_block(s, ltree, dtree)
* Check if the data type is TEXT or BINARY, using the following algorithm:
* - TEXT if the two conditions below are satisfied:
* a) There are no non-portable control characters belonging to the
- * "black list" (0..6, 14..25, 28..31).
+ * "block list" (0..6, 14..25, 28..31).
* b) There is at least one printable character belonging to the
- * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * "allow list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
* - BINARY otherwise.
* - The following partially-portable control characters form a
* "gray list" that is ignored in this detection algorithm:
@@ -1124,19 +1103,19 @@ local void compress_block(s, ltree, dtree)
local int detect_data_type(s)
deflate_state *s;
{
- /* black_mask is the bit mask of black-listed bytes
+ /* block_mask is the bit mask of block-listed bytes
* set bits 0..6, 14..25, and 28..31
* 0xf3ffc07f = binary 11110011111111111100000001111111
*/
- unsigned long black_mask = 0xf3ffc07fUL;
+ unsigned long block_mask = 0xf3ffc07fUL;
int n;
- /* Check for non-textual ("black-listed") bytes. */
- for (n = 0; n <= 31; n++, black_mask >>= 1)
- if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0))
+ /* Check for non-textual ("block-listed") bytes. */
+ for (n = 0; n <= 31; n++, block_mask >>= 1)
+ if ((block_mask & 1) && (s->dyn_ltree[n].Freq != 0))
return Z_BINARY;
- /* Check for textual ("white-listed") bytes. */
+ /* Check for textual ("allow-listed") bytes. */
if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0
|| s->dyn_ltree[13].Freq != 0)
return Z_TEXT;
@@ -1144,7 +1123,7 @@ local int detect_data_type(s)
if (s->dyn_ltree[n].Freq != 0)
return Z_TEXT;
- /* There are no "black-listed" or "white-listed" bytes:
+ /* There are no "block-listed" or "allow-listed" bytes:
* this stream either is empty or has tolerated ("gray-listed") bytes only.
*/
return Z_BINARY;
diff --git a/src/3rdparty/zlib/src/zlib.h b/src/3rdparty/zlib/src/zlib.h
index 32c2ce0957..84087ef332 100644
--- a/src/3rdparty/zlib/src/zlib.h
+++ b/src/3rdparty/zlib/src/zlib.h
@@ -1,7 +1,7 @@
/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.11, January 15th, 2017
+ version 1.2.12, March 11th, 2022
- Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+ Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -41,11 +41,11 @@
extern "C" {
#endif
-#define ZLIB_VERSION "1.2.11 (Qt)"
-#define ZLIB_VERNUM 0x12b0f
+#define ZLIB_VERSION "1.2.12 (Qt)"
+#define ZLIB_VERNUM 0x12c0
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 11
+#define ZLIB_VER_REVISION 12
#define ZLIB_VER_SUBREVISION 0
/*
@@ -547,8 +547,7 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
int strategy));
This is another version of deflateInit with more compression options. The
- fields next_in, zalloc, zfree and opaque must be initialized before by the
- caller.
+ fields zalloc, zfree and opaque must be initialized before by the caller.
The method parameter is the compression method. It must be Z_DEFLATED in
this version of the library.
@@ -716,11 +715,12 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
used to switch between compression and straight copy of the input data, or
to switch to a different kind of input data requiring a different strategy.
If the compression approach (which is a function of the level) or the
- strategy is changed, and if any input has been consumed in a previous
- deflate() call, then the input available so far is compressed with the old
- level and strategy using deflate(strm, Z_BLOCK). There are three approaches
- for the compression levels 0, 1..3, and 4..9 respectively. The new level
- and strategy will take effect at the next call of deflate().
+ strategy is changed, and if there have been any deflate() calls since the
+ state was initialized or reset, then the input available so far is
+ compressed with the old level and strategy using deflate(strm, Z_BLOCK).
+ There are three approaches for the compression levels 0, 1..3, and 4..9
+ respectively. The new level and strategy will take effect at the next call
+ of deflate().
If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does
not have enough output space to complete, then the parameter change will not
@@ -869,9 +869,11 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
detection, or add 16 to decode only the gzip format (the zlib format will
return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a
CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see
- below), inflate() will not automatically decode concatenated gzip streams.
- inflate() will return Z_STREAM_END at the end of the gzip stream. The state
- would need to be reset to continue decoding a subsequent gzip stream.
+ below), inflate() will *not* automatically decode concatenated gzip members.
+ inflate() will return Z_STREAM_END at the end of the gzip member. The state
+ would need to be reset to continue decoding a subsequent gzip member. This
+ *must* be done if there is more data after a gzip member, in order for the
+ decompression to be compliant with the gzip standard (RFC 1952).
inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
@@ -1306,14 +1308,14 @@ typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
/*
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
- Opens a gzip (.gz) file for reading or writing. The mode parameter is as
- in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
- a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
- compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
- for fixed code compression as in "wb9F". (See the description of
- deflateInit2 for more information about the strategy parameter.) 'T' will
- request transparent writing or appending with no compression and not using
- the gzip format.
+ Open the gzip (.gz) file at path for reading and decompressing, or
+ compressing and writing. The mode parameter is as in fopen ("rb" or "wb")
+ but can also include a compression level ("wb9") or a strategy: 'f' for
+ filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h",
+ 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression
+ as in "wb9F". (See the description of deflateInit2 for more information
+ about the strategy parameter.) 'T' will request transparent writing or
+ appending with no compression and not using the gzip format.
"a" can be used instead of "w" to request that the gzip stream that will
be written be appended to the file. "+" will result in an error, since
@@ -1343,9 +1345,9 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
/*
- gzdopen associates a gzFile with the file descriptor fd. File descriptors
- are obtained from calls like open, dup, creat, pipe or fileno (if the file
- has been previously opened with fopen). The mode parameter is as in gzopen.
+ Associate a gzFile with the file descriptor fd. File descriptors are
+ obtained from calls like open, dup, creat, pipe or fileno (if the file has
+ been previously opened with fopen). The mode parameter is as in gzopen.
The next call of gzclose on the returned gzFile will also close the file
descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
@@ -1366,13 +1368,13 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
/*
- Set the internal buffer size used by this library's functions. The
- default buffer size is 8192 bytes. This function must be called after
- gzopen() or gzdopen(), and before any other calls that read or write the
- file. The buffer memory allocation is always deferred to the first read or
- write. Three times that size in buffer space is allocated. A larger buffer
- size of, for example, 64K or 128K bytes will noticeably increase the speed
- of decompression (reading).
+ Set the internal buffer size used by this library's functions for file to
+ size. The default buffer size is 8192 bytes. This function must be called
+ after gzopen() or gzdopen(), and before any other calls that read or write
+ the file. The buffer memory allocation is always deferred to the first read
+ or write. Three times that size in buffer space is allocated. A larger
+ buffer size of, for example, 64K or 128K bytes will noticeably increase the
+ speed of decompression (reading).
The new buffer size also affects the maximum length for gzprintf().
@@ -1382,9 +1384,9 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
/*
- Dynamically update the compression level or strategy. See the description
- of deflateInit2 for the meaning of these parameters. Previously provided
- data is flushed before the parameter change.
+ Dynamically update the compression level and strategy for file. See the
+ description of deflateInit2 for the meaning of these parameters. Previously
+ provided data is flushed before applying the parameter changes.
gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not
opened for writing, Z_ERRNO if there is an error writing the flushed data,
@@ -1393,7 +1395,7 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
/*
- Reads the given number of uncompressed bytes from the compressed file. If
+ Read and decompress up to len uncompressed bytes from file into buf. If
the input file is not in gzip format, gzread copies the given number of
bytes into the buffer directly from the file.
@@ -1424,11 +1426,11 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
gzFile file));
/*
- Read up to nitems items of size size from file to buf, otherwise operating
- as gzread() does. This duplicates the interface of stdio's fread(), with
- size_t request and return types. If the library defines size_t, then
- z_size_t is identical to size_t. If not, then z_size_t is an unsigned
- integer type that can contain a pointer.
+ Read and decompress up to nitems items of size size from file into buf,
+ otherwise operating as gzread() does. This duplicates the interface of
+ stdio's fread(), with size_t request and return types. If the library
+ defines size_t, then z_size_t is identical to size_t. If not, then z_size_t
+ is an unsigned integer type that can contain a pointer.
gzfread() returns the number of full items read of size size, or zero if
the end of the file was reached and a full item could not be read, or if
@@ -1447,18 +1449,16 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
file, reseting and retrying on end-of-file, when size is not 1.
*/
-ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
- voidpc buf, unsigned len));
+ZEXTERN int ZEXPORT gzwrite OF((gzFile file, voidpc buf, unsigned len));
/*
- Writes the given number of uncompressed bytes into the compressed file.
- gzwrite returns the number of uncompressed bytes written or 0 in case of
- error.
+ Compress and write the len uncompressed bytes at buf to file. gzwrite
+ returns the number of uncompressed bytes written or 0 in case of error.
*/
ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
z_size_t nitems, gzFile file));
/*
- gzfwrite() writes nitems items of size size from buf to file, duplicating
+ Compress and write nitems items of size size from buf to file, duplicating
the interface of stdio's fwrite(), with size_t request and return types. If
the library defines size_t, then z_size_t is identical to size_t. If not,
then z_size_t is an unsigned integer type that can contain a pointer.
@@ -1471,22 +1471,22 @@ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
/*
- Converts, formats, and writes the arguments to the compressed file under
- control of the format string, as in fprintf. gzprintf returns the number of
+ Convert, format, compress, and write the arguments (...) to file under
+ control of the string format, as in fprintf. gzprintf returns the number of
uncompressed bytes actually written, or a negative zlib error code in case
of error. The number of uncompressed bytes written is limited to 8191, or
one less than the buffer size given to gzbuffer(). The caller should assure
that this limit is not exceeded. If it is exceeded, then gzprintf() will
return an error (0) with nothing written. In this case, there may also be a
buffer overflow with unpredictable consequences, which is possible only if
- zlib was compiled with the insecure functions sprintf() or vsprintf()
+ zlib was compiled with the insecure functions sprintf() or vsprintf(),
because the secure snprintf() or vsnprintf() functions were not available.
This can be determined using zlibCompileFlags().
*/
ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
/*
- Writes the given null-terminated string to the compressed file, excluding
+ Compress and write the given null-terminated string s to file, excluding
the terminating null character.
gzputs returns the number of characters written, or -1 in case of error.
@@ -1494,11 +1494,12 @@ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
/*
- Reads bytes from the compressed file until len-1 characters are read, or a
- newline character is read and transferred to buf, or an end-of-file
- condition is encountered. If any characters are read or if len == 1, the
- string is terminated with a null character. If no characters are read due
- to an end-of-file or len < 1, then the buffer is left untouched.
+ Read and decompress bytes from file into buf, until len-1 characters are
+ read, or until a newline character is read and transferred to buf, or an
+ end-of-file condition is encountered. If any characters are read or if len
+ is one, the string is terminated with a null character. If no characters
+ are read due to an end-of-file or len is less than one, then the buffer is
+ left untouched.
gzgets returns buf which is a null-terminated string, or it returns NULL
for end-of-file or in case of error. If there was an error, the contents at
@@ -1507,13 +1508,13 @@ ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
/*
- Writes c, converted to an unsigned char, into the compressed file. gzputc
+ Compress and write c, converted to an unsigned char, into file. gzputc
returns the value that was written, or -1 in case of error.
*/
ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
/*
- Reads one byte from the compressed file. gzgetc returns this byte or -1
+ Read and decompress one byte from file. gzgetc returns this byte or -1
in case of end of file or error. This is implemented as a macro for speed.
As such, it does not do all of the checking the other functions do. I.e.
it does not check to see if file is NULL, nor whether the structure file
@@ -1522,8 +1523,8 @@ ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
/*
- Push one character back onto the stream to be read as the first character
- on the next read. At least one character of push-back is allowed.
+ Push c back onto the stream for file to be read as the first character on
+ the next read. At least one character of push-back is always allowed.
gzungetc() returns the character pushed, or -1 on failure. gzungetc() will
fail if c is -1, and may fail if a character has been pushed but not read
yet. If gzungetc is used immediately after gzopen or gzdopen, at least the
@@ -1534,9 +1535,9 @@ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
/*
- Flushes all pending output into the compressed file. The parameter flush
- is as in the deflate() function. The return value is the zlib error number
- (see function gzerror below). gzflush is only permitted when writing.
+ Flush all pending output to file. The parameter flush is as in the
+ deflate() function. The return value is the zlib error number (see function
+ gzerror below). gzflush is only permitted when writing.
If the flush parameter is Z_FINISH, the remaining data is written and the
gzip stream is completed in the output. If gzwrite() is called again, a new
@@ -1551,8 +1552,8 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
z_off_t offset, int whence));
- Sets the starting position for the next gzread or gzwrite on the given
- compressed file. The offset represents a number of bytes in the
+ Set the starting position to offset relative to whence for the next gzread
+ or gzwrite on file. The offset represents a number of bytes in the
uncompressed data stream. The whence parameter is defined as in lseek(2);
the value SEEK_END is not supported.
@@ -1569,18 +1570,18 @@ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
/*
- Rewinds the given file. This function is supported only for reading.
+ Rewind file. This function is supported only for reading.
- gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
+ gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET).
*/
/*
ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
- Returns the starting position for the next gzread or gzwrite on the given
- compressed file. This position represents a number of bytes in the
- uncompressed data stream, and is zero when starting, even if appending or
- reading a gzip stream from the middle of a file using gzdopen().
+ Return the starting position for the next gzread or gzwrite on file.
+ This position represents a number of bytes in the uncompressed data stream,
+ and is zero when starting, even if appending or reading a gzip stream from
+ the middle of a file using gzdopen().
gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
*/
@@ -1588,22 +1589,22 @@ ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
/*
ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
- Returns the current offset in the file being read or written. This offset
- includes the count of bytes that precede the gzip stream, for example when
- appending or when using gzdopen() for reading. When reading, the offset
- does not include as yet unused buffered input. This information can be used
- for a progress indicator. On error, gzoffset() returns -1.
+ Return the current compressed (actual) read or write offset of file. This
+ offset includes the count of bytes that precede the gzip stream, for example
+ when appending or when using gzdopen() for reading. When reading, the
+ offset does not include as yet unused buffered input. This information can
+ be used for a progress indicator. On error, gzoffset() returns -1.
*/
ZEXTERN int ZEXPORT gzeof OF((gzFile file));
/*
- Returns true (1) if the end-of-file indicator has been set while reading,
- false (0) otherwise. Note that the end-of-file indicator is set only if the
- read tried to go past the end of the input, but came up short. Therefore,
- just like feof(), gzeof() may return false even if there is no more data to
- read, in the event that the last read request was for the exact number of
- bytes remaining in the input file. This will happen if the input file size
- is an exact multiple of the buffer size.
+ Return true (1) if the end-of-file indicator for file has been set while
+ reading, false (0) otherwise. Note that the end-of-file indicator is set
+ only if the read tried to go past the end of the input, but came up short.
+ Therefore, just like feof(), gzeof() may return false even if there is no
+ more data to read, in the event that the last read request was for the exact
+ number of bytes remaining in the input file. This will happen if the input
+ file size is an exact multiple of the buffer size.
If gzeof() returns true, then the read functions will return no more data,
unless the end-of-file indicator is reset by gzclearerr() and the input file
@@ -1612,7 +1613,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file));
ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
/*
- Returns true (1) if file is being copied directly while reading, or false
+ Return true (1) if file is being copied directly while reading, or false
(0) if file is a gzip stream being decompressed.
If the input file is empty, gzdirect() will return true, since the input
@@ -1633,8 +1634,8 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
ZEXTERN int ZEXPORT gzclose OF((gzFile file));
/*
- Flushes all pending output if necessary, closes the compressed file and
- deallocates the (de)compression state. Note that once file is closed, you
+ Flush all pending output for file, if necessary, close file and
+ deallocate the (de)compression state. Note that once file is closed, you
cannot call gzerror with file, since its structures have been deallocated.
gzclose must not be called more than once on the same file, just as free
must not be called more than once on the same allocation.
@@ -1658,10 +1659,10 @@ ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
/*
- Returns the error message for the last error which occurred on the given
- compressed file. errnum is set to zlib error number. If an error occurred
- in the file system and not in the compression library, errnum is set to
- Z_ERRNO and the application may consult errno to get the exact error code.
+ Return the error message for the last error which occurred on file.
+ errnum is set to zlib error number. If an error occurred in the file system
+ and not in the compression library, errnum is set to Z_ERRNO and the
+ application may consult errno to get the exact error code.
The application must not modify the returned string. Future calls to
this function may invalidate the previously returned string. If file is
@@ -1674,7 +1675,7 @@ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
/*
- Clears the error and end-of-file flags for file. This is analogous to the
+ Clear the error and end-of-file flags for file. This is analogous to the
clearerr() function in stdio. This is useful for continuing to read a gzip
file that is being written concurrently.
*/
@@ -1692,8 +1693,9 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
/*
Update a running Adler-32 checksum with the bytes buf[0..len-1] and
- return the updated checksum. If buf is Z_NULL, this function returns the
- required initial value for the checksum.
+ return the updated checksum. An Adler-32 value is in the range of a 32-bit
+ unsigned integer. If buf is Z_NULL, this function returns the required
+ initial value for the checksum.
An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed
much faster.
@@ -1726,12 +1728,13 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
negative, the result has no meaning or utility.
*/
-ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
+ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
/*
Update a running CRC-32 with the bytes buf[0..len-1] and return the
- updated CRC-32. If buf is Z_NULL, this function returns the required
- initial value for the crc. Pre- and post-conditioning (one's complement) is
- performed within this function so it shouldn't be done by the application.
+ updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer.
+ If buf is Z_NULL, this function returns the required initial value for the
+ crc. Pre- and post-conditioning (one's complement) is performed within this
+ function so it shouldn't be done by the application.
Usage example:
@@ -1743,7 +1746,7 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
if (crc != original_crc) error();
*/
-ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf,
+ZEXTERN uLong ZEXPORT crc32_z OF((uLong crc, const Bytef *buf,
z_size_t len));
/*
Same as crc32(), but with a size_t length.
@@ -1759,6 +1762,20 @@ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
len2.
*/
+/*
+ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t len2));
+
+ Return the operator corresponding to length len2, to be used with
+ crc32_combine_op().
+*/
+
+ZEXTERN uLong ZEXPORT crc32_combine_op OF((uLong crc1, uLong crc2, uLong op));
+/*
+ Give the same result as crc32_combine(), using op in place of len2. op is
+ is generated from len2 by crc32_combine_gen(). This will be faster than
+ crc32_combine() if the generated op is used more than once.
+*/
+
/* various hacks, don't look :) */
@@ -1846,6 +1863,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off64_t));
#endif
#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
@@ -1856,6 +1874,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
# define z_gzoffset z_gzoffset64
# define z_adler32_combine z_adler32_combine64
# define z_crc32_combine z_crc32_combine64
+# define z_crc32_combine_gen z_crc32_combine_gen64
# else
# define gzopen gzopen64
# define gzseek gzseek64
@@ -1863,6 +1882,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
# define gzoffset gzoffset64
# define adler32_combine adler32_combine64
# define crc32_combine crc32_combine64
+# define crc32_combine_gen crc32_combine_gen64
# endif
# ifndef Z_LARGE64
ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
@@ -1871,6 +1891,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off_t));
# endif
#else
ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
@@ -1879,12 +1900,14 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t));
#endif
#else /* Z_SOLO */
ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t));
#endif /* !Z_SOLO */
@@ -1897,7 +1920,7 @@ ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int));
ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp));
ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp));
ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
-#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO)
+#if defined(_WIN32) && !defined(Z_SOLO)
ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
const char *mode));
#endif
diff --git a/src/3rdparty/zlib/src/zutil.c b/src/3rdparty/zlib/src/zutil.c
index a76c6b0c7e..dcab28a0d5 100644
--- a/src/3rdparty/zlib/src/zutil.c
+++ b/src/3rdparty/zlib/src/zutil.c
@@ -136,8 +136,8 @@ const char * ZEXPORT zError(err)
return ERR_MSG(err);
}
-#if defined(_WIN32_WCE)
- /* The Microsoft C Run-Time Library for Windows CE doesn't have
+#if defined(_WIN32_WCE) && _WIN32_WCE < 0x800
+ /* The older Microsoft C Run-Time Library for Windows CE doesn't have
* errno. We define it as a global variable to simplify porting.
* Its value is always 0 and should not be used.
*/
diff --git a/src/3rdparty/zlib/src/zutil.h b/src/3rdparty/zlib/src/zutil.h
index 38066137fc..0d78483358 100644
--- a/src/3rdparty/zlib/src/zutil.h
+++ b/src/3rdparty/zlib/src/zutil.h
@@ -1,5 +1,5 @@
/* zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
+ * Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -21,7 +21,6 @@
#define HAVE_HIDDEN
#endif
-
#ifdef HAVE_HIDDEN
# define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
#else
@@ -38,10 +37,6 @@
# include <stdlib.h>
#endif
-#ifdef Z_SOLO
- typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */
-#endif
-
#ifndef local
# define local static
#endif
@@ -55,6 +50,17 @@ typedef unsigned short ush;
typedef ush FAR ushf;
typedef unsigned long ulg;
+#if !defined(Z_U8) && !defined(Z_SOLO) && defined(STDC)
+# include <limits.h>
+# if (ULONG_MAX == 0xffffffffffffffff)
+# define Z_U8 unsigned long
+# elif (ULLONG_MAX == 0xffffffffffffffff)
+# define Z_U8 unsigned long long
+# elif (UINT_MAX == 0xffffffffffffffff)
+# define Z_U8 unsigned
+# endif
+#endif
+
extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
/* (size given to avoid silly warnings with Visual C++) */
@@ -184,10 +190,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
# if defined(_WIN32_WCE)
# define fdopen(fd,mode) NULL /* No fdopen() */
-# ifndef _PTRDIFF_T_DEFINED
- typedef int ptrdiff_t;
-# define _PTRDIFF_T_DEFINED
-# endif
# else
# define fdopen(fd,type) _fdopen(fd,type)
# endif
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
index 16f3ea0c4d..9f7c040c17 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2017 BogDan Vatra <bogdan@kde.org>
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Copyright (C) 2016 Olivier Goffart <ogoffart@woboq.com>
** Contact: https://www.qt.io/licensing/
**
@@ -69,6 +69,7 @@ import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
+import android.view.Display;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.Menu;
@@ -675,10 +676,29 @@ public class QtActivityDelegate
@Override
public void onDisplayAdded(int displayId) { }
+ private boolean isSimilarRotation(int r1, int r2)
+ {
+ return (r1 == r2)
+ || (r1 == Surface.ROTATION_0 && r2 == Surface.ROTATION_180)
+ || (r1 == Surface.ROTATION_180 && r2 == Surface.ROTATION_0)
+ || (r1 == Surface.ROTATION_90 && r2 == Surface.ROTATION_270)
+ || (r1 == Surface.ROTATION_270 && r2 == Surface.ROTATION_90);
+ }
+
@Override
public void onDisplayChanged(int displayId) {
- m_currentRotation = m_activity.getWindowManager().getDefaultDisplay().getRotation();
- QtNative.handleOrientationChanged(m_currentRotation, m_nativeOrientation);
+ Display display = (Build.VERSION.SDK_INT < Build.VERSION_CODES.R)
+ ? m_activity.getWindowManager().getDefaultDisplay()
+ : m_activity.getDisplay();
+ m_currentRotation = display.getRotation();
+ m_layout.setActivityDisplayRotation(m_currentRotation);
+ // Process orientation change only if it comes after the size
+ // change, or if the screen is rotated by 180 degrees.
+ // Otherwise it will be processed in QtLayout.
+ if (isSimilarRotation(m_currentRotation, m_layout.displayRotation()))
+ QtNative.handleOrientationChanged(m_currentRotation, m_nativeOrientation);
+ float refreshRate = display.getRefreshRate();
+ QtNative.handleRefreshRateChanged(refreshRate);
}
@Override
@@ -806,9 +826,15 @@ public class QtActivityDelegate
else
m_nativeOrientation = Configuration.ORIENTATION_PORTRAIT;
+ m_layout.setNativeOrientation(m_nativeOrientation);
QtNative.handleOrientationChanged(rotation, m_nativeOrientation);
m_currentRotation = rotation;
+ float refreshRate = (Build.VERSION.SDK_INT < Build.VERSION_CODES.R)
+ ? m_activity.getWindowManager().getDefaultDisplay().getRefreshRate()
+ : m_activity.getDisplay().getRefreshRate();
+ QtNative.handleRefreshRateChanged(refreshRate);
+
m_layout.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
@@ -875,11 +901,11 @@ public class QtActivityDelegate
m_accessibilityDelegate.notifyLocationChange();
}
- public void notifyObjectHide(int viewId)
+ public void notifyObjectHide(int viewId, int parentId)
{
if (m_accessibilityDelegate == null)
return;
- m_accessibilityDelegate.notifyObjectHide(viewId);
+ m_accessibilityDelegate.notifyObjectHide(viewId, parentId);
}
public void notifyObjectFocus(int viewId)
@@ -889,6 +915,13 @@ public class QtActivityDelegate
m_accessibilityDelegate.notifyObjectFocus(viewId);
}
+ public void notifyValueChanged(int viewId, String value)
+ {
+ if (m_accessibilityDelegate == null)
+ return;
+ m_accessibilityDelegate.notifyValueChanged(viewId, value);
+ }
+
public void notifyQtAndroidPluginRunning(boolean running)
{
m_isPluginRunning = running;
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
index e94ce60248..123c5bc248 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
** Contact: https://www.qt.io/licensing/
**
@@ -42,16 +42,35 @@ package org.qtproject.qt5.android;
import android.app.Activity;
import android.content.Context;
+import android.os.Build;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
+import android.view.Display;
import android.view.View;
import android.view.ViewGroup;
-import android.graphics.Rect;
public class QtLayout extends ViewGroup
{
private Runnable m_startApplicationRunnable;
- private int m_bottomDisplayFrame = -1;
+
+ private int m_activityDisplayRotation = -1;
+ private int m_ownDisplayRotation = -1;
+ private int m_nativeOrientation = -1;
+
+ public void setActivityDisplayRotation(int rotation)
+ {
+ m_activityDisplayRotation = rotation;
+ }
+
+ public void setNativeOrientation(int orientation)
+ {
+ m_nativeOrientation = orientation;
+ }
+
+ public int displayRotation()
+ {
+ return m_ownDisplayRotation;
+ }
public QtLayout(Context context, Runnable startRunnable)
{
@@ -69,31 +88,40 @@ public class QtLayout extends ViewGroup
super(context, attrs, defStyle);
}
- private void handleSizeChanged (int w, int h, int oldw, int oldh)
+ @Override
+ protected void onSizeChanged (int w, int h, int oldw, int oldh)
{
DisplayMetrics metrics = new DisplayMetrics();
- ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics);
-
- Rect r = new Rect();
- ((Activity) getContext()).getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
-
- if (m_bottomDisplayFrame != r.bottom || oldh == -1) {
- m_bottomDisplayFrame = r.bottom;
- QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels, w, h,
- metrics.xdpi,
- metrics.ydpi,
- metrics.scaledDensity,
- metrics.density,
- ((metrics.heightPixels == h)
- || (metrics.heightPixels == h + r.top)
- || (m_bottomDisplayFrame > metrics.heightPixels + r.top)));
+ Display display = (Build.VERSION.SDK_INT < Build.VERSION_CODES.R)
+ ? ((Activity)getContext()).getWindowManager().getDefaultDisplay()
+ : ((Activity)getContext()).getDisplay();
+ display.getMetrics(metrics);
+
+ if ((metrics.widthPixels > metrics.heightPixels) != (w > h)) {
+ // This is an intermediate state during display rotation.
+ // The new size is still reported for old orientation, while
+ // metrics contain sizes for new orientation. Setting
+ // such parameters will produce inconsistent results, so
+ // we just skip them.
+ // We will have another onSizeChanged() with normal values
+ // a bit later.
+ return;
}
- }
- @Override
- protected void onSizeChanged (int w, int h, int oldw, int oldh)
- {
- handleSizeChanged (w, h, oldw, oldh);
+ QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels, w, h,
+ metrics.xdpi, metrics.ydpi, metrics.scaledDensity,
+ metrics.density, display.getRefreshRate());
+
+ int newRotation = display.getRotation();
+ if (m_ownDisplayRotation != m_activityDisplayRotation
+ && newRotation == m_activityDisplayRotation) {
+ // If the saved rotation value does not match the one from the
+ // activity, it means that we got orientation change before size
+ // change, and the value was cached. So we need to notify about
+ // orientation change now.
+ QtNative.handleOrientationChanged(newRotation, m_nativeOrientation);
+ }
+ m_ownDisplayRotation = newRotation;
if (m_startApplicationRunnable != null) {
m_startApplicationRunnable.run();
@@ -172,8 +200,6 @@ public class QtLayout extends ViewGroup
}
}
-
- handleSizeChanged (r, b, 0, -1);
}
// Override to allow type-checking of LayoutParams.
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
index 5792b5b2f5..b077014b81 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
@@ -103,6 +103,7 @@ public class QtNative
private static int m_displayMetricsScreenHeightPixels = 0;
private static int m_displayMetricsDesktopWidthPixels = 0;
private static int m_displayMetricsDesktopHeightPixels = 0;
+ private static float m_displayMetricsRefreshRate = 60;
private static double m_displayMetricsXDpi = .0;
private static double m_displayMetricsYDpi = .0;
private static double m_displayMetricsScaledDensity = 1.0;
@@ -614,7 +615,7 @@ public class QtNative
m_displayMetricsYDpi,
m_displayMetricsScaledDensity,
m_displayMetricsDensity,
- true);
+ m_displayMetricsRefreshRate);
}
});
m_qtThread.post(new Runnable() {
@@ -637,7 +638,7 @@ public class QtNative
double YDpi,
double scaledDensity,
double density,
- boolean forceUpdate)
+ float refreshRate)
{
/* Fix buggy dpi report */
if (XDpi < android.util.DisplayMetrics.DENSITY_LOW)
@@ -647,15 +648,9 @@ public class QtNative
synchronized (m_mainActivityMutex) {
if (m_started) {
- setDisplayMetrics(screenWidthPixels,
- screenHeightPixels,
- desktopWidthPixels,
- desktopHeightPixels,
- XDpi,
- YDpi,
- scaledDensity,
- density,
- forceUpdate);
+ setDisplayMetrics(screenWidthPixels, screenHeightPixels, desktopWidthPixels,
+ desktopHeightPixels, XDpi, YDpi, scaledDensity, density,
+ refreshRate);
} else {
m_displayMetricsScreenWidthPixels = screenWidthPixels;
m_displayMetricsScreenHeightPixels = screenHeightPixels;
@@ -665,6 +660,7 @@ public class QtNative
m_displayMetricsYDpi = YDpi;
m_displayMetricsScaledDensity = scaledDensity;
m_displayMetricsDensity = density;
+ m_displayMetricsRefreshRate = refreshRate;
}
}
}
@@ -712,9 +708,11 @@ public class QtNative
}
return 1;
}
- if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN && index == event.getActionIndex()) {
+ if (action == MotionEvent.ACTION_DOWN
+ || action == MotionEvent.ACTION_POINTER_DOWN && index == event.getActionIndex()) {
return 0;
- } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_POINTER_UP && index == event.getActionIndex()) {
+ } else if (action == MotionEvent.ACTION_UP
+ || action == MotionEvent.ACTION_POINTER_UP && index == event.getActionIndex()) {
return 3;
}
return 2;
@@ -766,6 +764,10 @@ public class QtNative
touchEnd(id, 2);
break;
+ case MotionEvent.ACTION_CANCEL:
+ touchCancel(id);
+ break;
+
default:
touchEnd(id, 1);
}
@@ -954,13 +956,13 @@ public class QtNative
});
}
- private static void notifyObjectHide(final int viewId)
+ private static void notifyObjectHide(final int viewId, final int parentId)
{
runAction(new Runnable() {
@Override
public void run() {
if (m_activityDelegate != null) {
- m_activityDelegate.notifyObjectHide(viewId);
+ m_activityDelegate.notifyObjectHide(viewId, parentId);
}
}
});
@@ -978,6 +980,18 @@ public class QtNative
});
}
+ private static void notifyValueChanged(final int viewId, final String value)
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ if (m_activityDelegate != null) {
+ m_activityDelegate.notifyValueChanged(viewId, value);
+ }
+ }
+ });
+ }
+
public static void notifyQtAndroidPluginRunning(final boolean running)
{
m_activityDelegate.notifyQtAndroidPluginRunning(running);
@@ -1344,8 +1358,9 @@ public class QtNative
double YDpi,
double scaledDensity,
double density,
- boolean forceUpdate);
+ float refreshRate);
public static native void handleOrientationChanged(int newRotation, int nativeOrientation);
+ public static native void handleRefreshRateChanged(float refreshRate);
// screen methods
// pointer methods
@@ -1356,6 +1371,7 @@ public class QtNative
public static native void touchBegin(int winId);
public static native void touchAdd(int winId, int pointerId, int action, boolean primary, int x, int y, float major, float minor, float rotation, float pressure);
public static native void touchEnd(int winId, int action);
+ public static native void touchCancel(int winId);
public static native void longPress(int winId, int x, int y);
// pointer methods
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
index 68e79c273f..433c57f598 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
@@ -84,6 +84,7 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.Objects;
public class QtServiceDelegate
{
@@ -115,10 +116,11 @@ public class QtServiceDelegate
QtNative.setService(m_service, this);
QtNative.setClassLoader(classLoader);
- QtNative.setApplicationDisplayMetrics(10, 10, 10, 10, 120, 120, 1.0, 1.0, false);
+ QtNative.setApplicationDisplayMetrics(10, 10, 10, 10, 120, 120, 1.0, 1.0, 60.0f);
if (loaderParams.containsKey(STATIC_INIT_CLASSES_KEY)) {
- for (String className: loaderParams.getStringArray(STATIC_INIT_CLASSES_KEY)) {
+ for (String className :
+ Objects.requireNonNull(loaderParams.getStringArray(STATIC_INIT_CLASSES_KEY))) {
if (className.length() == 0)
continue;
try {
@@ -128,9 +130,11 @@ public class QtServiceDelegate
Method m = initClass.getMethod("setService", Service.class, Object.class);
m.invoke(staticInitDataObject, m_service, this);
} catch (Exception e) {
- e.printStackTrace();
+ Log.d(QtNative.QtTAG,
+ "Class " + className + " does not implement setService method");
}
+ // For modules that don't need/have setService
try {
Method m = initClass.getMethod("setContext", Context.class);
m.invoke(staticInitDataObject, (Context)m_service);
diff --git a/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java
index 360902c1db..90e38231fc 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java
@@ -89,6 +89,8 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate
// this is because the Android platform window does not take
// the offset of the view on screen into account (eg status bar on top)
private final int[] m_globalOffset = new int[2];
+ private int m_oldOffsetX = 0;
+ private int m_oldOffsetY = 0;
private class HoverEventListener implements View.OnHoverListener
{
@@ -196,20 +198,60 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate
invalidateVirtualViewId(m_focusedVirtualViewId);
}
- public void notifyObjectHide(int viewId)
+ public void notifyObjectHide(int viewId, int parentId)
{
- invalidateVirtualViewId(viewId);
+ // If the object had accessibility focus, we need to clear it.
+ // Note: This code is mostly copied from
+ // AccessibilityNodeProvider::performAction, but we remove the
+ // focus only if the focused view id matches the one that was hidden.
+ if (m_focusedVirtualViewId == viewId) {
+ m_focusedVirtualViewId = INVALID_ID;
+ m_view.invalidate();
+ sendEventForVirtualViewId(viewId,
+ AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);
+ }
+ // When the object is hidden, we need to notify its parent about
+ // content change, not the hidden object itself
+ invalidateVirtualViewId(parentId);
}
public void notifyObjectFocus(int viewId)
{
if (m_view == null)
return;
+ m_focusedVirtualViewId = viewId;
m_view.invalidate();
sendEventForVirtualViewId(viewId,
AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
}
+ public void notifyValueChanged(int viewId, String value)
+ {
+ // Send a TYPE_ANNOUNCEMENT event with the new value
+ if ((viewId == INVALID_ID) || !m_manager.isEnabled()) {
+ Log.w(TAG, "notifyValueChanged() for invalid view");
+ return;
+ }
+ final ViewGroup group = (ViewGroup)m_view.getParent();
+ if (group == null) {
+ Log.w(TAG, "Could not announce value because ViewGroup was null.");
+ return;
+ }
+ final AccessibilityEvent event =
+ AccessibilityEvent.obtain(AccessibilityEvent.TYPE_ANNOUNCEMENT);
+ event.setEnabled(true);
+ event.setClassName(m_view.getClass().getName() + DEFAULT_CLASS_NAME);
+ event.setContentDescription(value);
+ if (event.getText().isEmpty() && TextUtils.isEmpty(event.getContentDescription())) {
+ Log.w(TAG, "No value to announce for " + event.getClassName());
+ return;
+ }
+ event.setPackageName(m_view.getContext().getPackageName());
+ event.setSource(m_view, viewId);
+ if (!group.requestSendAccessibilityEvent(m_view, event))
+ Log.w(TAG, "Failed to send value change announcement for " + event.getClassName());
+ }
+
public boolean sendEventForVirtualViewId(int virtualViewId, int eventType)
{
if ((virtualViewId == INVALID_ID) || !m_manager.isEnabled()) {
@@ -314,6 +356,22 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate
for (int i = 0; i < ids.length; ++i)
result.addChild(m_view, ids[i]);
+ // The offset values have changed, so we need to re-focus the
+ // currently focused item, otherwise it will have an incorrect
+ // focus frame
+ if ((m_oldOffsetX != offsetX) || (m_oldOffsetY != offsetY)) {
+ m_oldOffsetX = offsetX;
+ m_oldOffsetY = offsetY;
+ if (m_focusedVirtualViewId != INVALID_ID) {
+ m_nodeProvider.performAction(m_focusedVirtualViewId,
+ AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS,
+ new Bundle());
+ m_nodeProvider.performAction(m_focusedVirtualViewId,
+ AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS,
+ new Bundle());
+ }
+ }
+
return result;
}
@@ -356,6 +414,10 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate
node.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);
}
+ int[] ids = QtNativeAccessibility.childIdListForAccessibleObject(virtualViewId);
+ for (int i = 0; i < ids.length; ++i)
+ node.addChild(m_view, ids[i]);
+
return node;
}
diff --git a/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtNativeAccessibility.java b/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtNativeAccessibility.java
index a83174377d..448b29a98e 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtNativeAccessibility.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtNativeAccessibility.java
@@ -55,4 +55,5 @@ class QtNativeAccessibility
static native boolean scrollBackward(int objectId);
static native boolean populateNode(int objectId, AccessibilityNodeInfo node);
+ static native String valueForAccessibleObject(int objectId);
}
diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
index 487ba7e7d2..5b3e330282 100644
--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
+++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
@@ -1127,15 +1127,21 @@ public class QtActivity extends Activity
QtNative.activityDelegate().notifyAccessibilityLocationChange();
}
- public void notifyObjectHide(int viewId)
+ public void notifyObjectHide(int viewId, int parentId)
{
- QtNative.activityDelegate().notifyObjectHide(viewId);
+ QtNative.activityDelegate().notifyObjectHide(viewId, parentId);
}
public void notifyObjectFocus(int viewId)
{
QtNative.activityDelegate().notifyObjectFocus(viewId);
}
+
+ public void notifyValueChanged(int viewId, String value)
+ {
+ QtNative.activityDelegate().notifyValueChanged(viewId, value);
+ }
+
public boolean isKeyboardVisible()
{
return QtNative.activityDelegate().isKeyboardVisible();
diff --git a/src/concurrent/qtconcurrentrunbase.h b/src/concurrent/qtconcurrentrunbase.h
index aaa1245856..632689e9e0 100644
--- a/src/concurrent/qtconcurrentrunbase.h
+++ b/src/concurrent/qtconcurrentrunbase.h
@@ -84,7 +84,13 @@ public:
this->setRunnable(this);
this->reportStarted();
QFuture<T> theFuture = this->future();
- pool->start(this, /*m_priority*/ 0);
+ if (pool) {
+ pool->start(this, /*m_priority*/ 0);
+ } else {
+ this->reportCanceled();
+ this->reportFinished();
+ delete this;
+ }
return theFuture;
}
diff --git a/src/corelib/animation/qabstractanimation.h b/src/corelib/animation/qabstractanimation.h
index 7f2577d7f7..212fbea161 100644
--- a/src/corelib/animation/qabstractanimation.h
+++ b/src/corelib/animation/qabstractanimation.h
@@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE
class QAnimationGroup;
class QSequentialAnimationGroup;
class QAnimationDriver;
+class QUnifiedTimer;
class QAbstractAnimationPrivate;
class Q_CORE_EXPORT QAbstractAnimation : public QObject
diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp
index 98b02f0202..eac1524107 100644
--- a/src/corelib/animation/qvariantanimation.cpp
+++ b/src/corelib/animation/qvariantanimation.cpp
@@ -276,7 +276,9 @@ void QVariantAnimationPrivate::setCurrentValueForProgress(const qreal progress)
const qreal startProgress = currentInterval.start.first;
const qreal endProgress = currentInterval.end.first;
- const qreal localProgress = (progress - startProgress) / (endProgress - startProgress);
+ const qreal localProgress =
+ qIsNull(progress - startProgress) ? 0.0 // avoid 0/0 below
+ /* else */ : (progress - startProgress) / (endProgress - startProgress);
QVariant ret = q->interpolated(currentInterval.start.second,
currentInterval.end.second,
diff --git a/src/corelib/doc/snippets/code/doc_src_containers.cpp b/src/corelib/doc/snippets/code/doc_src_containers.cpp
index 84935580c9..2eedfffedf 100644
--- a/src/corelib/doc/snippets/code/doc_src_containers.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_containers.cpp
@@ -70,7 +70,7 @@ list << "A" << "B" << "C" << "D";
QListIterator<QString> i(list);
while (i.hasNext())
- qDebug() << i.next();
+ QString s = i.next();
//! [1]
@@ -78,7 +78,7 @@ while (i.hasNext())
QListIterator<QString> i(list);
i.toBack();
while (i.hasPrevious())
- qDebug() << i.previous();
+ QString s = i.previous();
//! [2]
@@ -217,8 +217,10 @@ foreach (str, list)
QLinkedList<QString> list;
...
QLinkedListIterator<QString> i(list);
-while (i.hasNext())
- qDebug() << i.next();
+while (i.hasNext()) {
+ QString s = i.next();
+ qDebug() << s;
+}
//! [16]
diff --git a/src/corelib/doc/snippets/code/doc_src_qiterator.cpp b/src/corelib/doc/snippets/code/doc_src_qiterator.cpp
index c7a312b00e..1a3ef98ba1 100644
--- a/src/corelib/doc/snippets/code/doc_src_qiterator.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_qiterator.cpp
@@ -53,7 +53,7 @@ QList<float> list;
...
QListIterator<float> i(list);
while (i.hasNext())
- qDebug() << i.next();
+ float f = i.next();
//! [0]
@@ -61,7 +61,7 @@ while (i.hasNext())
QListIterator<float> i(list);
i.toBack();
while (i.hasPrevious())
- qDebug() << i.previous();
+ float f = i.previous();
//! [1]
@@ -70,7 +70,7 @@ QLinkedList<float> list;
...
QLinkedListIterator<float> i(list);
while (i.hasNext())
- qDebug() << i.next();
+ float f = i.next();
//! [2]
@@ -78,7 +78,7 @@ while (i.hasNext())
QLinkedListIterator<float> i(list);
i.toBack();
while (i.hasPrevious())
- qDebug() << i.previous();
+ float f = i.previous();
//! [3]
@@ -87,7 +87,7 @@ QVector<float> vector;
...
QVectorIterator<float> i(vector);
while (i.hasNext())
- qDebug() << i.next();
+ float f = i.next();
//! [4]
@@ -95,7 +95,7 @@ while (i.hasNext())
QVectorIterator<float> i(vector);
i.toBack();
while (i.hasPrevious())
- qDebug() << i.previous();
+ float f = i.previous();
//! [5]
@@ -104,7 +104,7 @@ QSet<QString> set;
...
QSetIterator<QString> i(set);
while (i.hasNext())
- qDebug() << i.next();
+ float f = i.next();
//! [6]
@@ -112,7 +112,7 @@ while (i.hasNext())
QSetIterator<QString> i(set);
i.toBack();
while (i.hasPrevious())
- qDebug() << i.previous();
+ QString s = i.previous();
//! [7]
@@ -121,7 +121,7 @@ QList<float> list;
...
QMutableListIterator<float> i(list);
while (i.hasNext())
- qDebug() << i.next();
+ float f = i.next();
//! [8]
@@ -129,7 +129,7 @@ while (i.hasNext())
QMutableListIterator<float> i(list);
i.toBack();
while (i.hasPrevious())
- qDebug() << i.previous();
+ float f = i.previous();
//! [9]
@@ -151,7 +151,7 @@ QLinkedList<float> list;
...
QMutableLinkedListIterator<float> i(list);
while (i.hasNext())
- qDebug() << i.next();
+ float f = i.next();
//! [11]
@@ -159,7 +159,7 @@ while (i.hasNext())
QMutableLinkedListIterator<float> i(list);
i.toBack();
while (i.hasPrevious())
- qDebug() << i.previous();
+ float f = i.previous();
//! [12]
@@ -181,7 +181,7 @@ QVector<float> vector;
...
QMutableVectorIterator<float> i(vector);
while (i.hasNext())
- qDebug() << i.next();
+ float f = i.next();
//! [14]
@@ -189,7 +189,7 @@ while (i.hasNext())
QMutableVectorIterator<float> i(vector);
i.toBack();
while (i.hasPrevious())
- qDebug() << i.previous();
+ float f = i.previous();
//! [15]
@@ -211,7 +211,7 @@ QSet<float> set;
...
QMutableSetIterator<float> i(set);
while (i.hasNext())
- qDebug() << i.next();
+ float f = i.next();
//! [17]
@@ -219,7 +219,7 @@ while (i.hasNext())
QMutableSetIterator<float> i(set);
i.toBack();
while (i.hasPrevious())
- qDebug() << i.previous();
+ float f = i.previous();
//! [18]
diff --git a/src/corelib/doc/snippets/code/doc_src_qset.cpp b/src/corelib/doc/snippets/code/doc_src_qset.cpp
index 100661e00a..cb35de487c 100644
--- a/src/corelib/doc/snippets/code/doc_src_qset.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_qset.cpp
@@ -73,8 +73,10 @@ if (!set.contains("ninety-nine"))
//! [4]
QSetIterator<QWidget *> i(set);
-while (i.hasNext())
- qDebug() << i.next();
+while (i.hasNext()) {
+ QWidget *w = i.next();
+ qDebug() << w;
+}
//! [4]
diff --git a/src/corelib/doc/snippets/code/src_corelib_io_qdir.cpp b/src/corelib/doc/snippets/code/src_corelib_io_qdir.cpp
index 3b9435f022..4d79a618b7 100644
--- a/src/corelib/doc/snippets/code/src_corelib_io_qdir.cpp
+++ b/src/corelib/doc/snippets/code/src_corelib_io_qdir.cpp
@@ -54,7 +54,7 @@ void wrapInFunction()
//! [0]
QDir("/home/user/Documents")
-QDir("C:/Documents and Settings")
+QDir("C:/Users")
//! [0]
@@ -154,7 +154,7 @@ if (d1 != d2)
//! [12]
-C:/Documents and Settings/Username
+C:/Users/Username
//! [12]
diff --git a/src/corelib/doc/snippets/code/src_corelib_io_qdiriterator.cpp b/src/corelib/doc/snippets/code/src_corelib_io_qdiriterator.cpp
index 56cf9ed699..39fb629b94 100644
--- a/src/corelib/doc/snippets/code/src_corelib_io_qdiriterator.cpp
+++ b/src/corelib/doc/snippets/code/src_corelib_io_qdiriterator.cpp
@@ -51,8 +51,8 @@
//! [0]
QDirIterator it("/etc", QDirIterator::Subdirectories);
while (it.hasNext()) {
- qDebug() << it.next();
-
+ QString dir = it.next();
+ qDebug() << dir;
// /etc/.
// /etc/..
// /etc/X11
diff --git a/src/corelib/doc/snippets/code/src_corelib_io_qfileinfo.cpp b/src/corelib/doc/snippets/code/src_corelib_io_qfileinfo.cpp
index d81360ee5b..a6e73a3e6c 100644
--- a/src/corelib/doc/snippets/code/src_corelib_io_qfileinfo.cpp
+++ b/src/corelib/doc/snippets/code/src_corelib_io_qfileinfo.cpp
@@ -74,10 +74,10 @@ info2.size(); // returns 56201
//! [1]
#ifdef Q_OS_WIN
-QFileInfo info1("C:\\Documents and Settings\\Bob\\untabify.lnk");
+QFileInfo info1("C:\\Users\\Bob\\untabify.lnk");
info1.isSymLink(); // returns true
-info1.absoluteFilePath(); // returns "C:/Documents and Settings/Bob/untabify.lnk"
-info1.size(); // returns 743
+info1.absoluteFilePath(); // returns "C:/Users/Bob/untabify.lnk"
+info1.size(); // returns 63942
info1.symLinkTarget(); // returns "C:/Pretty++/untabify"
QFileInfo info2(info1.symLinkTarget());
diff --git a/src/corelib/doc/snippets/code/src_corelib_thread_qfuture.cpp b/src/corelib/doc/snippets/code/src_corelib_thread_qfuture.cpp
index dfa9b670e7..3e0ad18010 100644
--- a/src/corelib/doc/snippets/code/src_corelib_thread_qfuture.cpp
+++ b/src/corelib/doc/snippets/code/src_corelib_thread_qfuture.cpp
@@ -62,7 +62,7 @@ QFuture<QString> future;
...
QFutureIterator<QString> i(future);
while (i.hasNext())
- qDebug() << i.next();
+ QString s = i.next();
//! [1]
@@ -70,5 +70,5 @@ while (i.hasNext())
QFutureIterator<QString> i(future);
i.toBack();
while (i.hasPrevious())
- qDebug() << i.previous();
+ QString s = i.previous();
//! [2]
diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h
index 412fea96b4..03972594e7 100644
--- a/src/corelib/global/qcompilerdetection.h
+++ b/src/corelib/global/qcompilerdetection.h
@@ -1247,6 +1247,12 @@
#endif
/*
+ * "Weak overloads" - makes an otherwise confliciting overload weaker
+ * (by making it a template)
+ */
+#define Q_WEAK_OVERLOAD template <typename = void>
+
+/*
* Warning/diagnostic handling
*/
diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp
index 89f49324c0..292116cc47 100644
--- a/src/corelib/global/qlogging.cpp
+++ b/src/corelib/global/qlogging.cpp
@@ -1543,7 +1543,7 @@ static bool slog2_default_handler(QtMsgType type, const QMessageLogContext &cont
// Set as the default buffer
slog2_set_default_buffer(buffer_handle);
}
- int severity;
+ int severity = SLOG2_INFO;
//Determines the severity level
switch (type) {
case QtDebugMsg:
@@ -1669,7 +1669,7 @@ static bool android_default_message_handler(QtMsgType type,
#endif //Q_OS_ANDROID
#ifdef Q_OS_WIN
-static void win_outputDebugString_helper(QStringView message)
+static void win_outputDebugString_helper(const QString &message)
{
const int maxOutputStringLength = 32766;
static QBasicMutex m;
@@ -1681,7 +1681,7 @@ static void win_outputDebugString_helper(QStringView message)
wchar_t *messagePart = new wchar_t[maxOutputStringLength + 1];
for (int i = 0; i < message.length(); i += maxOutputStringLength ) {
const int length = std::min(message.length() - i, maxOutputStringLength );
- const int len = message.mid(i, length).toWCharArray(messagePart);
+ const int len = QStringView{message}.mid(i, length).toWCharArray(messagePart);
Q_ASSERT(len == length);
messagePart[len] = 0;
OutputDebugString(messagePart);
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index f7da997b32..f6e2b74fcd 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -408,7 +408,7 @@ inline void QDirPrivate::initFileEngine()
\snippet code/src_corelib_io_qdir.cpp 0
On Windows, the second example above will be translated to
- \c{C:\Documents and Settings} when used to access files.
+ \c{C:\Users} when used to access files.
Examples of relative paths:
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp
index eee71f1f2b..e73a6f4946 100644
--- a/src/corelib/io/qfileinfo.cpp
+++ b/src/corelib/io/qfileinfo.cpp
@@ -1069,8 +1069,8 @@ bool QFileInfo::isBundle() const
}
/*!
- Returns \c true if this object points to a symbolic link or shortcut;
- otherwise returns \c false.
+ Returns \c true if this object points to a symbolic link, shortcut,
+ or alias; otherwise returns \c false.
Symbolic links exist on Unix (including \macos and iOS) and Windows
and are typically created by the \c{ln -s} or \c{mklink} commands,
@@ -1078,8 +1078,9 @@ bool QFileInfo::isBundle() const
the \l{symLinkTarget()}{link's target}.
In addition, true will be returned for shortcuts (\c *.lnk files) on
- Windows. This behavior is deprecated and will likely change in a future
- version of Qt. Opening those will open the \c .lnk file itself.
+ Windows, and aliases on \macos. This behavior is deprecated and will
+ likely change in a future version of Qt. Opening a shortcut or alias
+ will open the \c .lnk or alias file itself.
Example:
@@ -1111,7 +1112,8 @@ bool QFileInfo::isSymLink() const
opens the \l{symLinkTarget()}{link's target}.
In contrast to isSymLink(), false will be returned for shortcuts
- (\c *.lnk files) on Windows. Use QFileInfo::isShortcut() instead.
+ (\c *.lnk files) on Windows and aliases on \macos.
+ Use QFileInfo::isShortcut() on Windows instead.
\note If the symlink points to a non existing file, exists() returns
false.
diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp
index f32bb5248b..42739097f2 100644
--- a/src/corelib/io/qfilesystemengine_unix.cpp
+++ b/src/corelib/io/qfilesystemengine_unix.cpp
@@ -887,6 +887,8 @@ bool QFileSystemEngine::fillMetaData(const QFileSystemEntry &entry, QFileSystemM
if (!data.hasFlags(QFileSystemMetaData::DirectoryType))
what |= QFileSystemMetaData::DirectoryType;
}
+ if (what & QFileSystemMetaData::AliasType)
+ what |= QFileSystemMetaData::LinkType;
#endif
#ifdef UF_HIDDEN
if (what & QFileSystemMetaData::HiddenAttribute) {
@@ -1022,8 +1024,11 @@ bool QFileSystemEngine::fillMetaData(const QFileSystemEntry &entry, QFileSystemM
#if defined(Q_OS_DARWIN)
if (what & QFileSystemMetaData::AliasType) {
- if (entryErrno == 0 && hasResourcePropertyFlag(data, entry, kCFURLIsAliasFileKey))
- data.entryFlags |= QFileSystemMetaData::AliasType;
+ if (entryErrno == 0 && hasResourcePropertyFlag(data, entry, kCFURLIsAliasFileKey)) {
+ // kCFURLIsAliasFileKey includes symbolic links, so filter those out
+ if (!(data.entryFlags & QFileSystemMetaData::LinkType))
+ data.entryFlags |= QFileSystemMetaData::AliasType;
+ }
data.knownFlagsMask |= QFileSystemMetaData::AliasType;
}
@@ -1360,10 +1365,7 @@ bool QFileSystemEngine::moveFileToTrash(const QFileSystemEntry &source,
int counter = 0;
QFile infoFile;
auto makeUniqueTrashedName = [trashedName, &counter]() -> QString {
- ++counter;
- return QString(QLatin1String("/%1-%2"))
- .arg(trashedName)
- .arg(counter, 4, 10, QLatin1Char('0'));
+ return QString::asprintf("/%ls-%04d", qUtf16Printable(trashedName), ++counter);
};
do {
while (QFile::exists(trashDir.filePath(filesDir) + uniqueTrashedName))
diff --git a/src/corelib/io/qlockfile_win.cpp b/src/corelib/io/qlockfile_win.cpp
index 277f8d4230..38ecef5550 100644
--- a/src/corelib/io/qlockfile_win.cpp
+++ b/src/corelib/io/qlockfile_win.cpp
@@ -48,6 +48,8 @@
#include "QtCore/qdebug.h"
#include "QtCore/qthread.h"
+#include "private/qsystemlibrary_p.h"
+
QT_BEGIN_NAMESPACE
static inline bool fileExists(const wchar_t *fileName)
@@ -150,7 +152,7 @@ QString QLockFilePrivate::processNameByPid(qint64 pid)
#if !defined(Q_OS_WINRT)
typedef DWORD (WINAPI *GetModuleFileNameExFunc)(HANDLE, HMODULE, LPTSTR, DWORD);
- HMODULE hPsapi = LoadLibraryA("psapi");
+ HMODULE hPsapi = QSystemLibrary::load(L"psapi");
if (!hPsapi)
return QString();
GetModuleFileNameExFunc qGetModuleFileNameEx = reinterpret_cast<GetModuleFileNameExFunc>(
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp
index 50390e57f5..0435180fa8 100644
--- a/src/corelib/io/qprocess_unix.cpp
+++ b/src/corelib/io/qprocess_unix.cpp
@@ -1,7 +1,7 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Copyright (C) 2016 Intel Corporation.
+** Copyright (C) 2021 The Qt Company Ltd.
+** Copyright (C) 2022 Intel Corporation.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -422,14 +422,14 @@ void QProcessPrivate::startProcess()
// Add the program name to the argument list.
argv[0] = nullptr;
if (!program.contains(QLatin1Char('/'))) {
+ // findExecutable() returns its argument if it's an absolute path,
+ // otherwise it searches $PATH; returns empty if not found (we handle
+ // that case much later)
const QString &exeFilePath = QStandardPaths::findExecutable(program);
- if (!exeFilePath.isEmpty()) {
- const QByteArray &tmp = QFile::encodeName(exeFilePath);
- argv[0] = ::strdup(tmp.constData());
- }
- }
- if (!argv[0])
+ argv[0] = ::strdup(QFile::encodeName(exeFilePath).constData());
+ } else {
argv[0] = ::strdup(encodedProgramName.constData());
+ }
// Add every argument to the list
for (int i = 0; i < arguments.count(); ++i)
@@ -985,12 +985,14 @@ bool QProcessPrivate::startDetached(qint64 *pid)
QByteArray tmp;
if (!program.contains(QLatin1Char('/'))) {
+ // findExecutable() returns its argument if it's an absolute path,
+ // otherwise it searches $PATH; returns empty if not found (we handle
+ // that case much later)
const QString &exeFilePath = QStandardPaths::findExecutable(program);
- if (!exeFilePath.isEmpty())
- tmp = QFile::encodeName(exeFilePath);
- }
- if (tmp.isEmpty())
+ tmp = QFile::encodeName(exeFilePath);
+ } else {
tmp = QFile::encodeName(program);
+ }
argv[0] = tmp.data();
if (envp)
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index 8bf63e8a63..76d75693c7 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -659,7 +659,7 @@ bool QResource::isCompressed() const
possible compression algorithm.
If this function returns QResource::ZstdCompression, you need to use the
- Zstandard library functios (\c{<zstd.h> header). Qt does not provide a
+ Zstandard library functios (\c{<zstd.h>} header). Qt does not provide a
wrapper.
See \l{http://facebook.github.io/zstd/zstd_manual.html}{Zstandard manual}.
diff --git a/src/corelib/io/qstandardpaths.cpp b/src/corelib/io/qstandardpaths.cpp
index 04aff3d11b..3f979d75b3 100644
--- a/src/corelib/io/qstandardpaths.cpp
+++ b/src/corelib/io/qstandardpaths.cpp
@@ -306,7 +306,7 @@ QT_BEGIN_NAMESPACE
\li "<APPROOT>/Library/Caches"
\row \li GenericDataLocation
\li "<USER>"
- \li "<APPROOT>/Documents"
+ \li "<APPROOT>/Library/Application Support"
\row \li RuntimeLocation
\li "<APPROOT>/cache"
\li not supported
diff --git a/src/corelib/io/qt_attribution.json b/src/corelib/io/qt_attribution.json
index cc62beef86..be37ffa149 100644
--- a/src/corelib/io/qt_attribution.json
+++ b/src/corelib/io/qt_attribution.json
@@ -20,7 +20,7 @@ supported by Qt (by the QNetworkCookieJar class).",
"Homepage": "Consult https://github.com/publicsuffix/list for the sha1 but download from ...",
"Homepage": "http://publicsuffix.org/",
- "Version": "d4e247a71d1b6da08dad906b098c818493166fcc, fetched on 2021-06-11",
+ "Version": "c7fe8ddee7f4e16095e51fbc3dd72f18b7a8567d, fetched on 2022-02-17",
"License": "Mozilla Public License 2.0",
"LicenseFile": "PSL-LICENSE.txt",
"LicenseId": "MPL-2.0",
diff --git a/src/corelib/io/qurltlds_p.h b/src/corelib/io/qurltlds_p.h
index 1353210a2e..c6ce557a0c 100644
--- a/src/corelib/io/qurltlds_p.h
+++ b/src/corelib/io/qurltlds_p.h
@@ -61,14953 +61,14779 @@ QT_BEGIN_NAMESPACE
// for instructions see the program at
// util/corelib/qurl-generateTLDs/
-static const quint16 tldCount = 9177;
+static const quint16 tldCount = 9212;
static const quint32 tldIndices[] = {
0,
-17,
-36,
-56,
-62,
-62,
-69,
-69,
-69,
-75,
-87,
-153,
-174,
-174,
-174,
-198,
-198,
-198,
-215,
-215,
+18,
+28,
+35,
+45,
+45,
+92,
+108,
+130,
+177,
+199,
+199,
+199,
+219,
+219,
+219,
+228,
+228,
+228,
+228,
240,
-255,
-264,
-288,
-314,
-328,
-328,
-344,
-344,
-396,
-396,
-420,
-449,
-449,
-454,
-463,
-463,
-469,
-475,
-498,
-516,
-523,
-523,
-550,
-561,
-597,
-608,
-608,
-626,
-636,
-636,
-647,
-647,
-647,
-647,
-675,
-715,
-715,
+251,
+308,
+324,
+372,
+372,
+386,
+386,
+386,
+386,
+402,
+402,
+402,
+402,
+402,
+408,
+431,
+431,
+447,
+447,
+447,
+460,
+503,
+511,
+521,
+535,
+549,
+558,
+590,
+609,
+644,
+644,
+651,
+719,
+719,
+719,
732,
-732,
-745,
-753,
-768,
-787,
-799,
-799,
+761,
+761,
+761,
+761,
+780,
+795,
+795,
806,
-814,
-840,
-849,
-849,
-860,
-881,
-881,
-881,
-913,
-926,
-946,
-946,
-946,
-946,
-946,
-952,
-971,
-971,
-978,
-996,
-1002,
-1019,
-1019,
-1025,
-1059,
-1059,
-1059,
-1082,
-1082,
-1082,
-1110,
-1117,
-1117,
-1123,
-1139,
-1139,
-1160,
-1170,
-1191,
-1191,
-1191,
-1207,
-1217,
-1217,
-1232,
-1238,
-1245,
-1279,
+825,
+825,
+825,
+832,
+832,
+839,
+839,
+855,
+886,
+900,
+900,
+909,
+919,
+934,
+947,
+963,
+963,
+963,
+963,
+981,
+981,
+981,
+981,
+995,
+1030,
+1037,
+1037,
+1054,
+1073,
+1073,
+1073,
+1083,
+1113,
+1127,
+1138,
+1138,
+1157,
+1157,
+1157,
+1157,
+1166,
+1166,
+1189,
+1225,
+1252,
1299,
-1319,
-1336,
-1336,
-1342,
-1357,
-1363,
-1370,
-1370,
-1380,
-1400,
-1405,
-1424,
-1430,
-1430,
-1430,
-1438,
-1438,
-1457,
-1475,
-1493,
-1493,
-1529,
-1541,
-1556,
-1556,
-1563,
-1563,
-1563,
-1576,
-1618,
-1656,
-1685,
-1706,
-1721,
-1741,
-1761,
-1781,
-1797,
-1797,
-1797,
-1804,
-1810,
-1816,
-1816,
-1816,
-1854,
-1860,
-1860,
-1899,
-1899,
-1933,
-1945,
-1945,
-1958,
-1986,
-1986,
-1992,
-2007,
-2013,
-2013,
-2019,
-2019,
-2025,
-2036,
-2036,
-2036,
-2036,
-2036,
-2036,
-2111,
-2111,
-2111,
-2147,
-2147,
-2158,
-2163,
-2176,
-2176,
-2195,
-2202,
-2216,
-2222,
-2254,
-2284,
-2284,
-2297,
-2319,
-2319,
-2325,
-2340,
-2350,
-2357,
-2362,
-2362,
-2362,
-2380,
-2387,
-2400,
-2400,
-2400,
-2448,
-2448,
-2455,
-2463,
+1305,
+1310,
+1310,
+1310,
+1310,
+1340,
+1385,
+1385,
+1393,
+1393,
+1419,
+1426,
+1426,
+1426,
+1426,
+1441,
+1441,
+1441,
+1505,
+1521,
+1521,
+1532,
+1573,
+1573,
+1573,
+1573,
+1580,
+1580,
+1584,
+1593,
+1619,
+1654,
+1654,
+1654,
+1708,
+1723,
+1730,
+1730,
+1747,
+1747,
+1747,
+1752,
+1817,
+1824,
+1824,
+1833,
+1833,
+1838,
+1843,
+1843,
+1843,
+1843,
+1868,
+1868,
+1874,
+1887,
+1887,
+1906,
+1906,
+1906,
+1906,
+1944,
+1944,
+1970,
+1970,
+1970,
+1987,
+2002,
+2002,
+2030,
+2051,
+2070,
+2081,
+2095,
+2131,
+2131,
+2131,
+2155,
+2174,
+2184,
+2184,
+2197,
+2220,
+2255,
+2255,
+2255,
+2295,
+2310,
+2310,
+2310,
+2339,
+2339,
+2339,
+2355,
+2355,
+2355,
+2355,
+2359,
+2386,
+2386,
+2386,
+2386,
+2441,
+2471,
+2471,
+2471,
+2471,
2478,
-2501,
-2520,
-2538,
-2565,
-2584,
-2591,
-2610,
-2610,
-2651,
-2651,
-2667,
-2667,
-2695,
-2704,
-2716,
-2716,
-2716,
+2485,
+2529,
+2549,
+2556,
+2567,
+2567,
+2604,
+2623,
+2639,
+2649,
+2655,
+2660,
+2673,
+2673,
+2686,
+2686,
+2686,
+2701,
2723,
2723,
-2759,
-2759,
-2765,
-2771,
-2799,
-2818,
-2836,
-2836,
-2848,
-2848,
-2848,
-2859,
-2869,
-2878,
-2878,
-2902,
-2902,
-2902,
-2919,
-2954,
-2954,
-2954,
-2965,
-2980,
-2980,
-3012,
-3018,
-3025,
-3062,
-3062,
-3092,
-3104,
-3104,
+2729,
+2729,
+2750,
+2764,
+2764,
+2764,
+2764,
+2784,
+2800,
+2811,
+2837,
+2842,
+2842,
+2872,
+2887,
+2910,
+2910,
+2934,
+2934,
+2934,
+2934,
+2934,
+2952,
+2984,
+2992,
+3016,
+3026,
+3074,
+3083,
+3099,
+3116,
+3116,
3116,
-3122,
-3141,
-3165,
-3165,
-3199,
-3242,
-3273,
-3273,
-3291,
-3322,
-3336,
-3375,
-3375,
-3381,
-3412,
-3412,
-3412,
-3434,
-3448,
-3482,
-3482,
-3482,
-3488,
-3497,
-3510,
+3125,
+3143,
+3163,
+3163,
+3185,
+3191,
+3191,
+3191,
+3210,
+3223,
+3243,
+3243,
+3243,
+3243,
+3249,
+3259,
+3270,
+3289,
+3307,
+3307,
+3307,
+3341,
+3359,
+3359,
+3359,
+3359,
+3377,
+3377,
+3386,
+3402,
+3410,
+3410,
+3418,
+3446,
+3446,
+3446,
+3446,
+3457,
+3457,
+3457,
+3471,
+3514,
3521,
-3558,
-3563,
-3563,
-3581,
-3581,
-3581,
-3587,
-3587,
-3587,
-3593,
-3616,
-3616,
-3654,
-3670,
-3670,
-3676,
-3688,
-3715,
-3736,
-3763,
+3521,
+3555,
+3562,
+3590,
+3597,
+3615,
+3615,
+3642,
+3642,
+3642,
+3642,
+3646,
+3658,
+3671,
+3694,
+3703,
+3708,
+3723,
+3723,
+3739,
+3739,
+3752,
+3767,
+3793,
3799,
3806,
-3813,
-3822,
-3828,
-3871,
-3881,
-3897,
-3897,
-3897,
-3897,
-3897,
-3906,
-3906,
-3916,
-3933,
-3943,
-3943,
-3963,
-3970,
-3996,
-4010,
-4063,
-4063,
-4081,
-4081,
-4092,
-4097,
-4097,
-4097,
-4136,
-4136,
-4146,
-4175,
-4183,
-4183,
-4183,
-4183,
-4199,
-4199,
-4206,
-4206,
-4206,
-4216,
-4224,
-4231,
-4236,
-4236,
+3806,
+3841,
+3841,
+3853,
+3853,
+3879,
+3879,
+3893,
+3893,
+3893,
+3893,
+3893,
+3926,
+3926,
+3926,
+3944,
+3962,
+3962,
+3962,
+3976,
+3995,
+3995,
+3995,
+4017,
+4067,
+4067,
+4093,
+4104,
+4157,
+4171,
+4171,
+4185,
+4204,
+4226,
+4226,
+4226,
+4226,
+4226,
+4226,
4236,
-4243,
-4243,
-4256,
-4256,
-4262,
-4262,
+4253,
+4253,
+4253,
4262,
-4272,
-4294,
-4298,
-4298,
-4304,
-4314,
-4314,
-4314,
-4333,
-4357,
-4384,
-4384,
-4384,
-4389,
-4419,
-4419,
-4425,
-4425,
-4446,
-4485,
-4501,
-4535,
-4535,
-4555,
-4555,
-4555,
-4577,
-4577,
-4594,
-4594,
-4594,
-4594,
-4594,
-4594,
-4594,
-4594,
-4594,
-4594,
-4604,
-4604,
-4604,
-4604,
-4623,
-4623,
-4648,
-4658,
-4658,
-4665,
-4695,
-4719,
-4742,
-4742,
-4763,
-4763,
-4784,
-4788,
-4794,
-4794,
-4810,
-4827,
-4827,
-4839,
-4839,
-4839,
-4839,
-4875,
+4281,
+4328,
+4328,
+4341,
+4367,
+4367,
+4367,
+4377,
+4393,
+4398,
+4398,
+4404,
+4426,
+4451,
+4451,
+4451,
+4479,
+4495,
+4495,
+4511,
+4558,
+4569,
+4569,
+4578,
+4582,
+4588,
+4588,
+4595,
+4629,
+4634,
+4634,
+4634,
+4634,
+4651,
+4661,
+4661,
+4677,
+4690,
+4690,
+4709,
+4753,
+4771,
+4771,
+4771,
+4781,
+4781,
+4781,
+4781,
+4781,
+4787,
+4787,
+4787,
+4817,
+4817,
+4817,
+4829,
+4852,
+4858,
+4862,
+4872,
4884,
-4884,
-4914,
-4933,
-4948,
-4948,
-4992,
-5018,
-5043,
-5058,
-5068,
-5068,
-5090,
-5090,
-5096,
-5117,
-5117,
-5117,
-5123,
-5132,
-5150,
-5150,
-5166,
-5172,
-5172,
-5184,
-5184,
-5188,
-5209,
-5245,
-5245,
-5245,
-5261,
-5261,
-5269,
-5269,
-5319,
-5319,
-5319,
-5319,
-5319,
-5334,
-5334,
-5344,
-5381,
-5402,
-5411,
-5446,
-5482,
-5482,
-5498,
-5506,
-5513,
-5531,
-5531,
-5551,
-5555,
-5555,
-5555,
-5577,
-5581,
-5609,
-5609,
-5609,
-5627,
-5627,
-5627,
-5650,
-5667,
-5671,
-5671,
-5677,
-5698,
-5705,
-5705,
-5721,
-5738,
-5755,
-5762,
-5762,
-5762,
-5785,
-5822,
-5822,
-5860,
-5894,
-5894,
-5913,
-5913,
-5926,
-5932,
-5932,
-5932,
-5943,
-5963,
-5963,
-5963,
-5986,
-5986,
-6002,
-6012,
-6012,
-6012,
-6012,
-6019,
-6019,
-6023,
-6079,
-6079,
+4902,
+4916,
+4940,
+4989,
+4996,
+5016,
+5016,
+5026,
+5026,
+5026,
+5031,
+5031,
+5031,
+5041,
+5052,
+5083,
+5083,
+5083,
+5089,
+5089,
+5100,
+5100,
+5109,
+5118,
+5146,
+5151,
+5151,
+5185,
+5185,
+5185,
+5185,
+5185,
+5201,
+5211,
+5233,
+5281,
+5303,
+5303,
+5303,
+5335,
+5362,
+5369,
+5387,
+5406,
+5406,
+5406,
+5406,
+5428,
+5443,
+5443,
+5443,
+5443,
+5485,
+5485,
+5504,
+5520,
+5520,
+5520,
+5536,
+5554,
+5554,
+5554,
+5567,
+5567,
+5620,
+5620,
+5629,
+5714,
+5720,
+5720,
+5720,
+5759,
+5763,
+5763,
+5772,
+5782,
+5805,
+5805,
+5805,
+5815,
+5836,
+5836,
+5850,
+5868,
+5882,
+5895,
+5912,
+5929,
+5937,
+5937,
+5937,
+5947,
+5947,
+5947,
+5947,
+5965,
+5965,
+5971,
+5982,
+6046,
+6046,
+6056,
+6056,
+6075,
+6083,
+6083,
6083,
-6094,
-6094,
-6111,
-6117,
-6117,
-6117,
-6124,
-6134,
-6147,
-6147,
-6147,
-6153,
-6157,
-6157,
-6157,
-6173,
-6185,
-6205,
-6216,
-6216,
+6101,
+6101,
+6101,
+6119,
+6146,
+6193,
+6193,
+6221,
6248,
-6259,
-6269,
-6269,
-6297,
-6320,
-6336,
-6336,
-6356,
-6362,
-6396,
-6396,
-6413,
-6420,
-6444,
-6444,
-6444,
-6500,
-6512,
-6512,
-6512,
-6512,
-6518,
-6526,
-6526,
-6539,
-6539,
-6557,
-6557,
-6557,
-6571,
-6583,
-6628,
-6628,
-6628,
-6640,
-6640,
-6640,
-6662,
-6674,
+6285,
+6285,
+6285,
+6315,
+6328,
+6328,
+6328,
+6375,
+6400,
+6409,
+6409,
+6440,
+6440,
+6440,
+6440,
+6440,
+6440,
+6450,
+6450,
+6450,
+6460,
+6460,
+6472,
+6484,
+6510,
+6521,
+6541,
+6541,
+6541,
+6548,
+6554,
+6594,
+6605,
+6605,
+6605,
+6609,
+6631,
+6631,
+6641,
+6679,
6693,
6693,
6693,
-6693,
-6718,
-6729,
-6751,
-6751,
-6751,
-6801,
-6811,
-6831,
-6831,
-6831,
-6831,
-6850,
-6869,
-6869,
-6911,
-6922,
-6922,
-6951,
-6951,
-6978,
-7027,
-7027,
-7027,
-7033,
-7033,
-7033,
-7033,
-7057,
-7063,
-7063,
-7081,
-7098,
-7098,
-7098,
-7108,
-7108,
-7108,
-7145,
-7145,
-7145,
-7162,
-7162,
-7162,
-7162,
-7162,
-7162,
-7220,
-7232,
-7239,
-7264,
-7264,
-7268,
-7268,
-7299,
-7299,
-7299,
-7327,
-7346,
-7346,
-7363,
-7377,
-7377,
-7377,
-7392,
-7419,
-7419,
-7419,
-7428,
-7455,
-7455,
-7476,
-7476,
-7501,
-7501,
-7501,
-7501,
-7501,
-7552,
-7574,
-7585,
-7595,
-7595,
-7630,
-7659,
-7659,
-7659,
-7663,
-7663,
-7683,
-7683,
-7711,
-7748,
-7748,
-7772,
-7772,
-7782,
-7794,
-7819,
+6703,
+6710,
+6710,
+6726,
+6762,
+6762,
+6769,
+6789,
+6807,
+6807,
+6807,
+6807,
+6824,
+6847,
+6847,
+6851,
+6878,
+6923,
+6923,
+6958,
+6962,
+6962,
+6966,
+6998,
+7032,
+7043,
+7053,
+7060,
+7060,
+7067,
+7067,
+7067,
+7119,
+7126,
+7126,
+7126,
+7126,
+7135,
+7135,
+7135,
+7170,
+7198,
+7198,
+7198,
+7281,
+7281,
+7281,
+7291,
+7348,
+7348,
+7358,
+7380,
+7380,
+7396,
+7396,
+7415,
+7436,
+7436,
+7443,
+7443,
+7460,
+7460,
+7460,
+7490,
+7505,
+7505,
+7512,
+7526,
+7586,
+7604,
+7610,
+7616,
+7634,
+7634,
+7634,
+7634,
+7634,
+7660,
+7660,
+7689,
+7713,
+7733,
+7733,
+7733,
+7733,
+7733,
+7733,
+7765,
+7811,
+7823,
+7823,
+7833,
7833,
-7840,
-7861,
-7879,
-7910,
-7943,
-7965,
-7979,
-7989,
-7989,
-7989,
-8012,
-8038,
-8058,
-8081,
-8081,
-8085,
-8107,
-8143,
-8143,
-8151,
-8151,
-8151,
-8193,
-8193,
-8193,
-8193,
-8203,
-8221,
-8221,
-8221,
-8221,
-8251,
-8251,
-8256,
-8286,
-8286,
-8351,
-8351,
-8367,
-8367,
-8367,
-8392,
-8392,
-8392,
-8392,
-8398,
-8398,
-8398,
-8437,
-8467,
-8472,
+7857,
+7857,
+7857,
+7867,
+7867,
+7867,
+7867,
+7894,
+7907,
+7907,
+7907,
+7907,
+7914,
+7914,
+7955,
+7992,
+7992,
+7992,
+7992,
+8013,
+8022,
+8022,
+8022,
+8022,
+8044,
+8044,
+8044,
+8050,
+8062,
+8062,
+8062,
+8090,
+8090,
+8106,
+8115,
+8159,
+8169,
+8177,
+8192,
+8192,
+8206,
+8206,
+8206,
+8212,
+8238,
+8238,
+8238,
+8252,
+8252,
+8268,
+8284,
+8284,
+8314,
+8314,
+8338,
+8429,
+8471,
+8471,
+8471,
+8477,
+8477,
+8477,
+8477,
8495,
-8510,
8517,
8517,
-8539,
-8570,
-8570,
-8594,
-8594,
-8594,
-8594,
-8594,
-8604,
-8604,
-8638,
-8670,
-8720,
-8720,
-8749,
-8749,
-8765,
-8765,
-8765,
-8776,
+8517,
+8552,
+8558,
+8568,
+8568,
+8628,
+8654,
+8664,
+8683,
+8683,
+8683,
+8683,
+8693,
+8711,
+8726,
+8726,
+8726,
+8726,
+8735,
+8747,
+8759,
+8771,
+8782,
8786,
-8795,
-8795,
-8795,
-8795,
-8795,
-8812,
-8827,
-8841,
-8841,
-8848,
-8848,
-8848,
-8855,
-8867,
-8867,
-8867,
-8867,
-8867,
-8867,
-8900,
-8900,
-8900,
-8915,
-8953,
-8987,
+8800,
+8838,
+8853,
+8853,
+8866,
+8877,
+8877,
+8884,
+8897,
+8986,
+8986,
+8986,
+8992,
9011,
-9032,
-9043,
-9043,
-9043,
-9043,
-9043,
-9043,
-9043,
-9043,
-9043,
-9053,
-9053,
-9068,
-9079,
-9089,
-9094,
-9099,
-9099,
-9126,
-9126,
-9150,
-9150,
-9150,
-9150,
-9171,
-9171,
-9171,
-9196,
-9196,
-9233,
-9233,
-9261,
-9261,
-9261,
-9261,
-9280,
-9294,
-9307,
-9307,
-9342,
-9342,
-9373,
-9384,
-9384,
-9384,
-9384,
-9384,
-9394,
-9394,
-9410,
-9410,
-9410,
-9425,
-9442,
-9442,
-9442,
-9442,
-9471,
+9017,
+9017,
+9017,
+9029,
+9040,
+9047,
+9074,
+9074,
+9074,
+9074,
+9105,
+9155,
+9165,
+9165,
+9165,
+9192,
+9206,
+9216,
+9216,
+9250,
+9274,
+9274,
+9274,
+9281,
+9281,
+9281,
+9293,
+9318,
+9324,
+9331,
+9339,
+9351,
+9357,
+9357,
+9363,
+9430,
+9430,
+9430,
+9446,
+9457,
+9464,
9471,
-9471,
-9500,
-9500,
-9510,
-9531,
-9531,
-9561,
-9577,
-9612,
-9642,
-9657,
-9657,
-9657,
-9692,
-9692,
-9692,
-9696,
-9696,
-9714,
-9714,
-9714,
-9730,
-9739,
-9739,
-9739,
-9749,
-9749,
-9770,
-9770,
-9770,
-9775,
-9789,
-9818,
+9484,
+9497,
+9509,
+9509,
+9509,
+9535,
+9571,
+9571,
+9571,
+9601,
+9608,
+9654,
+9667,
+9667,
+9691,
+9698,
+9704,
+9737,
+9751,
+9758,
+9774,
+9811,
9818,
-9818,
-9834,
-9834,
-9834,
-9841,
-9868,
-9868,
-9868,
-9875,
-9893,
-9905,
-9905,
-9909,
-9921,
-9938,
-9958,
-9983,
-9983,
-10000,
-10016,
-10016,
-10030,
-10030,
-10030,
-10030,
-10046,
-10066,
-10094,
-10104,
-10118,
-10137,
-10154,
-10177,
-10225,
-10246,
-10264,
-10272,
-10280,
-10299,
-10299,
-10299,
-10304,
-10304,
-10325,
+9839,
+9853,
+9929,
+9948,
+9955,
+9974,
+9981,
+9981,
+9989,
+9996,
+10064,
+10088,
+10095,
+10095,
+10099,
+10099,
+10106,
+10117,
+10140,
+10140,
+10140,
+10140,
+10167,
+10174,
+10181,
+10200,
+10222,
+10229,
+10239,
+10253,
+10284,
+10331,
+10331,
+10344,
+10344,
10344,
-10372,
-10406,
-10424,
-10424,
-10429,
-10429,
+10344,
+10351,
+10351,
+10377,
+10388,
+10421,
+10421,
+10421,
+10428,
+10428,
+10428,
+10434,
10444,
-10487,
-10500,
-10525,
-10525,
-10525,
+10450,
+10481,
+10501,
+10501,
+10508,
10540,
-10545,
-10554,
-10554,
-10554,
-10554,
10564,
-10596,
-10617,
-10623,
-10629,
-10643,
-10651,
-10684,
-10684,
-10704,
-10726,
-10746,
-10758,
-10762,
-10791,
-10806,
-10823,
-10870,
-10877,
-10900,
-10900,
-10922,
-10928,
-10928,
-10949,
-11008,
-11008,
-11048,
-11066,
-11103,
-11103,
-11103,
-11103,
-11103,
-11103,
-11103,
-11103,
-11120,
-11120,
-11120,
-11120,
-11120,
-11120,
-11135,
-11135,
-11135,
-11135,
-11135,
-11155,
-11155,
-11167,
-11167,
-11176,
-11176,
-11187,
-11217,
-11217,
-11225,
-11235,
-11243,
+10564,
+10590,
+10590,
+10590,
+10597,
+10626,
+10626,
+10637,
+10637,
+10646,
+10646,
+10668,
+10668,
+10668,
+10673,
+10680,
+10680,
+10696,
+10721,
+10728,
+10728,
+10736,
+10743,
+10765,
+10772,
+10793,
+10800,
+10800,
+10807,
+10827,
+10834,
+10875,
+10875,
+10875,
+10875,
+10882,
+10882,
+10889,
+10924,
+10924,
+10931,
+10931,
+10950,
+10960,
+10960,
+10976,
+11004,
+11018,
+11025,
+11025,
+11062,
+11062,
+11062,
+11062,
+11069,
+11091,
+11098,
+11098,
+11119,
+11126,
+11133,
+11183,
+11183,
+11194,
+11204,
+11204,
+11204,
+11216,
+11216,
+11216,
+11244,
+11244,
+11244,
11262,
-11267,
-11294,
-11307,
-11324,
-11333,
-11343,
-11357,
-11357,
-11357,
-11373,
-11391,
-11408,
-11461,
-11481,
-11500,
-11500,
-11507,
-11511,
-11523,
-11530,
-11571,
-11588,
-11617,
-11639,
-11639,
-11639,
-11664,
-11671,
-11676,
-11708,
-11708,
-11708,
-11708,
-11724,
-11724,
-11731,
-11731,
-11731,
-11731,
-11769,
-11769,
-11769,
-11779,
-11779,
-11791,
-11807,
-11813,
-11813,
-11820,
-11835,
-11847,
-11877,
-11912,
-11917,
-11924,
-11941,
-11953,
-11973,
-11973,
-11983,
-12001,
-12028,
-12042,
-12042,
-12095,
-12095,
-12095,
-12095,
-12095,
-12095,
-12102,
-12112,
-12126,
-12126,
-12145,
-12152,
-12189,
-12205,
-12214,
-12214,
-12231,
-12247,
-12247,
-12293,
+11296,
+11296,
+11296,
+11306,
+11358,
+11358,
+11358,
+11375,
+11393,
+11450,
+11458,
+11464,
+11464,
+11487,
+11503,
+11503,
+11548,
+11570,
+11577,
+11610,
+11626,
+11644,
+11644,
+11669,
+11694,
+11716,
+11751,
+11758,
+11789,
+11789,
+11789,
+11799,
+11799,
+11832,
+11850,
+11879,
+11901,
+11916,
+11923,
+11930,
+11950,
+11993,
+11993,
+12037,
+12044,
+12093,
+12110,
+12117,
+12134,
+12161,
+12161,
+12178,
+12201,
+12208,
+12215,
+12256,
+12322,
12348,
-12361,
-12389,
-12389,
-12423,
-12423,
-12423,
-12439,
-12439,
-12439,
-12439,
-12439,
-12439,
-12447,
-12447,
-12507,
-12512,
-12512,
-12512,
-12528,
-12528,
-12528,
-12528,
-12528,
+12355,
+12355,
+12355,
+12383,
+12394,
+12421,
+12421,
+12435,
+12455,
+12475,
+12475,
+12488,
+12488,
+12488,
+12504,
12559,
12566,
-12592,
-12592,
-12597,
-12603,
-12603,
-12603,
-12620,
-12644,
-12644,
-12644,
-12644,
-12666,
-12714,
-12731,
-12731,
-12745,
-12782,
-12791,
-12791,
-12816,
-12832,
-12854,
-12892,
-12892,
-12892,
-12907,
-12928,
-12939,
-12977,
-12996,
-12996,
-13022,
-13027,
-13039,
-13039,
-13039,
-13039,
-13039,
-13049,
-13088,
-13116,
-13116,
-13156,
-13156,
-13156,
-13156,
-13164,
-13174,
-13174,
-13184,
-13229,
-13229,
-13267,
-13267,
-13267,
-13272,
-13299,
-13299,
-13316,
-13338,
-13338,
-13338,
-13370,
-13370,
-13370,
-13374,
-13394,
-13410,
-13416,
-13459,
-13459,
-13468,
-13468,
-13472,
-13477,
-13488,
-13488,
-13516,
-13528,
+12580,
+12631,
+12647,
+12654,
+12654,
+12665,
+12672,
+12672,
+12682,
+12704,
+12711,
+12718,
+12729,
+12742,
+12742,
+12742,
+12760,
+12804,
+12810,
+12824,
+12844,
+12844,
+12878,
+12891,
+12898,
+12912,
+12918,
+12929,
+12945,
+13008,
+13015,
+13021,
+13050,
+13056,
+13056,
+13056,
+13060,
+13067,
+13073,
+13073,
+13077,
+13077,
+13087,
+13093,
+13102,
+13107,
+13132,
+13142,
+13142,
+13146,
+13161,
+13161,
+13180,
+13213,
+13256,
+13263,
+13277,
+13310,
+13330,
+13330,
+13344,
+13351,
+13364,
+13380,
+13406,
+13458,
+13483,
+13490,
+13497,
+13497,
+13522,
13528,
13568,
-13579,
-13583,
-13583,
-13608,
-13608,
-13618,
+13590,
+13607,
+13614,
+13632,
+13632,
+13649,
+13663,
13676,
-13681,
-13690,
-13690,
-13707,
-13707,
-13707,
-13707,
-13726,
-13726,
-13764,
-13775,
-13775,
-13775,
-13811,
-13842,
-13858,
-13873,
-13885,
-13924,
-13924,
-13924,
-13924,
-13969,
-13984,
-13991,
-13991,
-13991,
-13991,
-13991,
-13991,
-14000,
+13694,
+13713,
+13720,
+13769,
+13802,
+13869,
+13876,
+13876,
+13904,
+13915,
+13915,
+13957,
14000,
14000,
-14038,
-14057,
-14057,
-14057,
-14057,
-14057,
-14087,
-14095,
-14106,
-14116,
+14007,
+14026,
+14056,
+14073,
+14073,
+14089,
+14122,
+14137,
+14152,
14159,
-14167,
-14199,
-14199,
-14199,
-14211,
-14211,
-14217,
-14230,
-14251,
-14251,
-14261,
-14286,
-14290,
-14300,
-14300,
-14300,
-14327,
-14342,
-14356,
-14381,
-14381,
-14381,
-14381,
-14381,
-14402,
-14409,
-14409,
-14419,
-14419,
-14440,
-14444,
-14444,
+14184,
+14191,
+14191,
+14191,
+14220,
+14241,
+14259,
+14270,
+14276,
+14276,
+14283,
+14295,
+14333,
+14352,
+14352,
+14352,
+14358,
+14365,
+14365,
+14365,
+14387,
+14387,
+14387,
+14401,
+14405,
+14405,
+14415,
+14415,
+14461,
14467,
14467,
-14477,
-14493,
-14511,
-14519,
-14519,
-14576,
-14605,
-14620,
-14647,
-14688,
-14688,
-14719,
-14728,
-14728,
-14732,
-14741,
-14741,
-14741,
-14741,
-14805,
-14805,
-14805,
-14810,
-14810,
-14891,
-14915,
-14942,
-14954,
-14954,
-14964,
-15008,
-15008,
-15018,
-15050,
-15063,
-15081,
-15098,
-15098,
-15098,
-15110,
-15110,
-15110,
-15119,
-15119,
-15126,
-15133,
-15133,
-15133,
-15133,
-15166,
-15166,
-15166,
-15166,
-15166,
-15166,
-15166,
-15166,
-15166,
-15173,
-15173,
-15215,
-15215,
-15215,
-15215,
-15215,
-15234,
-15243,
-15264,
-15264,
-15264,
-15264,
-15284,
-15284,
-15284,
-15284,
-15308,
-15308,
-15326,
-15346,
-15346,
-15346,
-15377,
-15377,
-15389,
-15389,
-15429,
-15429,
-15448,
-15448,
-15457,
-15457,
-15457,
-15483,
-15501,
-15501,
-15511,
-15531,
-15545,
-15595,
+14490,
+14490,
+14490,
+14490,
+14490,
+14512,
+14526,
+14526,
+14537,
+14596,
+14613,
+14626,
+14626,
+14645,
+14645,
+14650,
+14650,
+14669,
+14695,
+14706,
+14706,
+14706,
+14718,
+14724,
+14734,
+14746,
+14765,
+14774,
+14788,
+14866,
+14888,
+14888,
+14888,
+14895,
+14895,
+14895,
+14895,
+14924,
+14924,
+14924,
+14939,
+14952,
+14970,
+14970,
+14970,
+14980,
+14980,
+14997,
+15002,
+15002,
+15016,
+15016,
+15028,
+15049,
+15049,
+15062,
+15076,
+15076,
+15093,
+15093,
+15116,
+15199,
+15219,
+15219,
+15219,
+15219,
+15219,
+15219,
+15240,
+15281,
+15325,
+15325,
+15331,
+15351,
+15357,
+15357,
+15375,
+15391,
+15410,
+15419,
+15419,
+15419,
+15434,
+15434,
+15485,
+15553,
+15573,
+15573,
+15604,
+15618,
+15624,
15629,
-15629,
-15646,
-15654,
-15654,
-15668,
-15668,
-15668,
-15697,
-15709,
-15709,
-15709,
-15724,
-15742,
-15742,
-15761,
-15774,
-15811,
-15838,
-15838,
-15838,
-15855,
-15855,
-15865,
-15865,
-15865,
-15865,
-15865,
-15865,
-15872,
-15872,
-15872,
-15896,
-15921,
-15921,
-15921,
-15947,
-15947,
-15947,
-15947,
-15947,
-15978,
-15978,
-15978,
-16009,
-16025,
-16042,
-16042,
-16042,
-16052,
-16052,
-16078,
-16078,
-16082,
-16092,
-16102,
-16102,
-16102,
-16102,
-16102,
-16102,
-16116,
-16126,
-16138,
-16144,
-16144,
-16164,
-16164,
-16174,
-16196,
-16203,
-16214,
-16234,
-16234,
-16261,
-16297,
-16297,
-16319,
-16347,
-16347,
-16347,
-16380,
-16380,
-16380,
-16380,
-16396,
-16396,
-16396,
-16396,
-16415,
-16423,
+15635,
+15675,
+15727,
+15733,
+15738,
+15781,
+15801,
+15816,
+15842,
+15892,
+15907,
+15907,
+15933,
+15969,
+15969,
+15969,
+15988,
+16016,
+16016,
+16022,
+16035,
+16051,
+16057,
+16057,
+16067,
+16098,
+16098,
+16104,
+16104,
+16168,
+16190,
+16190,
+16210,
+16227,
+16241,
+16241,
+16241,
+16269,
+16269,
+16275,
+16275,
+16282,
+16293,
+16293,
+16293,
+16293,
+16312,
+16322,
+16342,
+16358,
+16367,
+16367,
+16377,
+16377,
+16377,
+16384,
+16384,
+16401,
+16417,
+16417,
+16432,
+16432,
+16432,
+16432,
+16444,
+16457,
+16463,
16467,
-16514,
-16514,
-16518,
-16568,
-16578,
-16617,
-16637,
-16637,
-16637,
-16657,
-16683,
-16683,
-16704,
-16704,
-16732,
-16737,
-16758,
-16758,
-16797,
-16836,
-16836,
-16883,
-16883,
-16890,
-16890,
-16890,
-16905,
-16905,
-16905,
-16905,
-16905,
-16905,
-16905,
-16929,
-16950,
-16961,
-16961,
+16479,
+16494,
+16503,
+16510,
+16530,
+16530,
+16541,
+16541,
+16589,
+16589,
+16596,
+16596,
+16608,
+16608,
+16618,
+16618,
+16618,
+16623,
+16639,
+16639,
+16639,
+16639,
+16678,
+16686,
+16686,
+16696,
+16709,
+16709,
+16716,
+16764,
+16801,
+16813,
+16825,
+16839,
+16859,
+16859,
+16868,
+16889,
+16913,
+16913,
+16913,
+16919,
+16926,
+16926,
+16932,
+16947,
+16947,
+16953,
+16978,
+16990,
+17004,
+17004,
+17004,
+17012,
+17023,
17030,
-17050,
-17062,
-17080,
-17093,
-17093,
+17043,
+17059,
+17082,
+17082,
+17082,
+17089,
+17095,
+17101,
17110,
-17138,
-17138,
-17148,
-17148,
-17216,
-17228,
-17239,
-17239,
-17269,
-17298,
-17298,
-17312,
-17312,
-17312,
-17312,
-17312,
-17312,
-17312,
-17345,
-17360,
-17360,
-17369,
-17369,
-17389,
-17408,
+17166,
+17166,
+17166,
+17166,
+17166,
+17172,
+17180,
+17180,
+17241,
+17263,
+17263,
+17263,
+17263,
+17275,
+17275,
+17287,
+17327,
+17359,
+17359,
+17359,
+17359,
+17359,
+17359,
+17359,
+17380,
+17380,
+17380,
+17391,
+17391,
+17391,
+17391,
17408,
-17416,
-17416,
-17416,
-17440,
-17458,
-17458,
-17458,
-17458,
-17458,
-17458,
-17458,
-17474,
-17499,
-17499,
-17499,
-17499,
-17506,
-17506,
-17512,
-17512,
-17512,
-17512,
-17532,
-17546,
-17569,
-17569,
-17579,
-17583,
-17583,
-17583,
-17591,
-17604,
-17604,
-17604,
-17604,
-17628,
-17685,
-17693,
-17707,
-17707,
-17734,
-17753,
-17753,
-17770,
-17770,
-17780,
-17798,
-17814,
-17814,
-17820,
-17855,
-17855,
-17855,
-17855,
-17894,
-17921,
+17426,
+17433,
+17433,
+17433,
+17444,
+17503,
+17503,
+17520,
+17520,
+17535,
+17535,
+17535,
+17535,
+17535,
+17535,
+17535,
+17535,
+17535,
+17562,
+17574,
+17612,
+17618,
+17618,
+17625,
+17650,
+17655,
+17655,
+17663,
+17695,
+17695,
+17705,
+17712,
+17712,
+17733,
+17733,
+17733,
+17733,
+17751,
+17751,
+17757,
+17757,
+17757,
+17757,
+17763,
+17819,
+17819,
+17819,
+17826,
+17845,
+17852,
+17860,
+17886,
+17886,
+17886,
+17896,
+17896,
+17902,
+17914,
+17924,
+17924,
17942,
-17950,
-17969,
-17986,
-17986,
-17999,
-18031,
-18040,
-18053,
-18077,
-18086,
-18129,
-18159,
-18159,
-18159,
-18169,
-18169,
-18169,
-18169,
-18211,
-18234,
-18234,
-18242,
-18242,
-18259,
+17953,
+17961,
+17974,
+18001,
+18022,
+18029,
+18050,
+18068,
+18083,
+18083,
+18106,
+18131,
+18131,
+18131,
+18139,
+18146,
+18146,
+18146,
+18161,
+18182,
+18186,
+18186,
+18215,
+18237,
+18252,
+18252,
18262,
-18292,
-18304,
-18307,
-18317,
-18317,
-18320,
-18320,
-18342,
-18380,
-18403,
-18432,
-18435,
-18455,
-18461,
-18467,
-18480,
-18483,
-18529,
-18532,
-18555,
-18561,
-18592,
-18598,
-18598,
-18598,
-18601,
-18604,
-18607,
-18607,
-18616,
-18619,
-18643,
-18649,
-18649,
-18655,
-18674,
-18677,
-18693,
-18729,
-18729,
-18752,
-18775,
-18802,
-18805,
-18805,
-18805,
+18262,
+18287,
+18287,
+18287,
+18287,
+18287,
+18287,
+18287,
+18305,
+18327,
+18327,
+18337,
+18368,
+18374,
+18374,
+18374,
+18416,
+18460,
+18460,
+18473,
+18502,
+18514,
+18523,
+18523,
+18559,
+18559,
+18564,
+18564,
+18595,
+18609,
+18609,
+18648,
+18654,
+18654,
+18654,
+18665,
+18685,
+18748,
+18748,
+18748,
+18784,
+18804,
18816,
-18829,
-18838,
-18872,
-18893,
-18921,
-18941,
-18950,
-18967,
-18970,
-18991,
+18828,
+18873,
+18889,
+18895,
+18895,
+18901,
+18916,
+18916,
+18916,
+18957,
+18957,
+18957,
+18978,
+18978,
+18978,
+18992,
19004,
-19030,
-19051,
-19051,
-19083,
-19090,
-19093,
-19105,
-19132,
-19147,
-19150,
-19207,
-19227,
-19230,
-19230,
-19262,
-19271,
-19280,
-19291,
-19299,
-19299,
-19317,
-19327,
-19330,
-19333,
-19353,
-19377,
-19389,
-19408,
-19418,
-19418,
+19048,
+19086,
+19098,
+19116,
+19130,
+19130,
+19130,
+19130,
+19157,
+19175,
+19175,
+19175,
+19209,
+19241,
+19241,
+19263,
+19263,
+19269,
+19269,
+19269,
+19269,
+19295,
+19295,
+19309,
+19340,
+19360,
+19366,
+19366,
+19381,
+19381,
+19381,
19418,
-19427,
-19427,
-19430,
-19436,
-19445,
-19451,
-19468,
-19471,
-19504,
-19507,
-19532,
-19535,
+19459,
+19472,
+19483,
+19490,
+19551,
19557,
-19569,
-19588,
-19591,
-19614,
-19617,
-19617,
+19557,
+19577,
+19580,
+19583,
+19599,
+19602,
+19613,
+19616,
+19620,
19627,
-19630,
-19633,
-19655,
-19658,
-19661,
-19685,
-19703,
-19703,
-19706,
-19714,
-19727,
-19727,
-19737,
-19786,
-19795,
-19810,
-19827,
-19830,
-19845,
-19858,
-19864,
-19864,
-19872,
-19889,
-19915,
-19951,
-19951,
-19965,
-19974,
-19994,
-20021,
-20021,
-20036,
+19647,
+19659,
+19679,
+19705,
+19705,
+19711,
+19732,
+19744,
+19763,
+19769,
+19772,
+19790,
+19807,
+19817,
+19823,
+19831,
+19908,
+19911,
+19914,
+19917,
+19942,
+19945,
+19948,
+19958,
+19984,
+19984,
+19990,
+20006,
+20009,
20039,
20042,
-20052,
-20055,
-20055,
-20055,
-20077,
+20042,
20091,
-20119,
-20130,
-20160,
-20160,
-20160,
-20163,
-20166,
-20183,
-20217,
-20228,
-20242,
-20245,
-20245,
-20248,
-20267,
-20270,
-20270,
-20306,
-20327,
-20362,
-20365,
-20365,
-20368,
-20406,
-20412,
-20435,
-20441,
-20441,
-20464,
-20496,
-20515,
-20527,
-20564,
+20111,
+20129,
+20132,
+20143,
+20149,
+20152,
+20161,
+20186,
+20192,
+20195,
+20198,
+20213,
+20216,
+20222,
+20225,
+20236,
+20253,
+20253,
+20266,
+20282,
+20282,
+20282,
+20313,
+20358,
+20382,
+20382,
+20395,
+20426,
+20443,
+20446,
+20481,
+20498,
+20512,
+20512,
+20522,
+20528,
+20534,
+20534,
+20537,
20567,
-20567,
-20575,
-20605,
-20605,
-20605,
-20608,
-20611,
-20634,
-20640,
-20677,
-20680,
+20578,
+20578,
+20578,
+20614,
+20643,
+20646,
+20655,
+20655,
+20668,
+20668,
+20692,
20717,
-20729,
-20754,
-20754,
-20770,
-20773,
-20773,
-20776,
-20779,
-20782,
-20817,
-20820,
-20872,
-20887,
-20904,
-20910,
+20720,
+20745,
+20751,
+20763,
+20780,
+20783,
+20806,
+20828,
+20848,
+20854,
+20873,
+20876,
+20879,
+20882,
+20905,
20923,
-20946,
-20952,
-20988,
-20988,
-20991,
-21016,
-21032,
-21035,
-21035,
-21035,
-21038,
-21038,
-21053,
-21056,
-21056,
-21056,
-21067,
-21077,
-21080,
-21080,
-21106,
-21129,
-21129,
-21129,
-21144,
-21147,
-21158,
-21158,
-21158,
-21177,
-21198,
-21238,
-21302,
-21302,
-21339,
-21371,
-21374,
-21394,
-21407,
-21407,
-21417,
-21420,
-21437,
-21451,
-21454,
-21454,
-21496,
-21514,
-21514,
-21517,
-21517,
-21535,
-21535,
-21535,
-21554,
-21580,
-21580,
-21602,
-21609,
-21623,
-21623,
-21626,
-21636,
-21662,
-21677,
-21686,
-21686,
-21691,
-21697,
-21713,
-21727,
-21751,
-21776,
-21786,
-21812,
-21829,
-21882,
-21895,
-21902,
-21926,
-21951,
+20942,
+20945,
+20971,
+20974,
+20977,
+20977,
+20980,
+20980,
+20997,
+21004,
+21013,
+21101,
+21104,
+21107,
+21123,
+21160,
+21160,
+21163,
+21163,
+21176,
+21204,
+21204,
+21243,
+21243,
+21250,
+21250,
+21266,
+21269,
+21278,
+21291,
+21314,
+21314,
+21317,
+21320,
+21323,
+21326,
+21350,
+21350,
+21358,
+21378,
+21404,
+21435,
+21435,
+21442,
+21452,
+21452,
+21474,
+21477,
+21497,
+21497,
+21507,
+21543,
+21546,
+21546,
+21556,
+21562,
+21579,
+21579,
+21579,
+21616,
+21619,
+21622,
+21635,
+21638,
+21641,
+21647,
+21668,
+21699,
+21699,
+21699,
+21715,
+21740,
+21746,
+21756,
+21759,
+21779,
+21817,
+21825,
+21847,
+21864,
+21894,
+21897,
+21928,
+21950,
+21956,
+21959,
21970,
-21980,
-21990,
-22002,
-22011,
-22021,
-22031,
-22052,
-22062,
-22065,
-22071,
-22082,
-22114,
-22127,
-22135,
-22141,
+21989,
+21992,
+21992,
+22001,
+22026,
+22026,
+22029,
+22057,
+22084,
+22096,
+22107,
+22123,
22144,
-22157,
-22180,
-22183,
-22209,
-22255,
+22150,
+22156,
+22162,
+22165,
+22171,
+22174,
+22174,
+22204,
+22210,
+22210,
+22221,
+22270,
22289,
-22325,
-22363,
+22292,
+22311,
+22333,
+22336,
+22336,
+22344,
22374,
+22382,
+22385,
+22393,
22413,
-22431,
-22431,
-22434,
-22445,
-22465,
-22472,
-22475,
-22491,
-22523,
-22538,
-22557,
-22581,
-22581,
-22591,
-22591,
-22604,
-22604,
-22607,
-22620,
-22623,
-22634,
-22669,
-22672,
-22672,
-22684,
-22703,
-22724,
-22738,
-22784,
-22788,
-22803,
-22803,
-22803,
-22844,
-22863,
-22898,
-22898,
-22913,
-22913,
-22913,
-22933,
-22933,
-22967,
-22977,
-23017,
-23044,
-23044,
-23047,
-23054,
+22452,
+22452,
+22470,
+22486,
+22500,
+22500,
+22515,
+22515,
+22539,
+22542,
+22552,
+22568,
+22568,
+22568,
+22593,
+22596,
+22599,
+22608,
+22608,
+22639,
+22659,
+22662,
+22665,
+22668,
+22668,
+22674,
+22677,
+22726,
+22729,
+22729,
+22770,
+22810,
+22810,
+22810,
+22810,
+22810,
+22810,
+22810,
+22810,
+22838,
+22855,
+22855,
+22860,
+22881,
+22936,
+22940,
+22940,
+23000,
+23004,
+23004,
+23007,
+23030,
+23033,
+23036,
+23052,
+23055,
23061,
-23066,
-23077,
-23084,
-23094,
-23101,
-23113,
-23120,
-23163,
-23170,
-23170,
-23189,
-23196,
-23196,
-23221,
-23221,
-23261,
-23271,
-23278,
-23278,
-23315,
-23322,
-23354,
-23365,
-23365,
-23388,
-23393,
-23419,
-23424,
-23424,
-23424,
-23449,
-23464,
-23471,
-23490,
-23509,
+23061,
+23067,
+23070,
+23145,
+23148,
+23173,
+23203,
+23206,
+23209,
+23219,
+23249,
+23299,
+23302,
+23308,
+23325,
+23370,
+23376,
+23387,
+23448,
+23451,
+23457,
+23469,
23509,
-23516,
-23540,
-23567,
-23577,
-23584,
-23613,
-23620,
-23620,
-23620,
-23620,
-23620,
-23635,
-23642,
-23645,
-23645,
-23654,
-23654,
-23668,
-23684,
-23706,
-23727,
-23745,
-23758,
-23773,
-23784,
-23791,
-23821,
-23849,
-23849,
-23862,
-23891,
-23917,
-23924,
-23933,
-23965,
-23982,
-23989,
-24001,
+23550,
+23553,
+23578,
+23599,
+23616,
+23619,
+23629,
+23632,
+23655,
+23658,
+23677,
+23685,
+23696,
+23699,
+23712,
+23752,
+23752,
+23752,
+23781,
+23785,
+23823,
+23823,
+23841,
+23841,
+23844,
+23844,
+23847,
+23847,
+23879,
+23886,
+23886,
+23913,
+23956,
+23959,
+23970,
+23970,
+23970,
+23970,
+23991,
+24005,
+24008,
+24011,
24011,
-24049,
-24057,
-24080,
-24096,
-24125,
-24159,
-24173,
-24186,
-24186,
-24200,
-24229,
-24255,
-24255,
-24262,
-24295,
-24305,
+24062,
+24079,
+24079,
+24088,
+24110,
+24110,
+24120,
+24158,
+24158,
+24158,
+24158,
+24161,
+24161,
+24194,
+24194,
+24203,
+24203,
+24228,
+24228,
+24242,
+24253,
+24272,
+24272,
+24272,
+24292,
24329,
-24336,
-24372,
-24372,
-24379,
-24413,
-24430,
-24448,
-24453,
-24471,
-24484,
-24484,
-24496,
-24496,
-24529,
-24553,
-24553,
-24560,
-24593,
-24619,
-24667,
-24674,
+24329,
+24329,
+24342,
+24361,
+24361,
+24361,
+24361,
+24423,
+24423,
+24437,
+24437,
+24437,
+24444,
+24455,
+24472,
+24478,
+24488,
+24508,
+24522,
+24536,
+24536,
+24536,
+24556,
+24556,
+24556,
+24556,
+24566,
+24575,
+24575,
+24589,
+24625,
+24625,
+24625,
+24653,
24687,
-24705,
-24705,
-24733,
-24740,
-24757,
-24757,
-24764,
-24793,
-24810,
-24810,
-24824,
-24824,
-24859,
-24859,
-24883,
-24897,
-24897,
-24913,
-24919,
-24919,
-24919,
-24926,
-24938,
-24938,
-24943,
-24954,
-24987,
-25010,
-25017,
-25041,
-25041,
-25067,
-25118,
-25122,
-25129,
-25149,
-25171,
-25185,
-25211,
+24702,
+24702,
+24725,
+24765,
+24790,
+24790,
+24790,
+24802,
+24802,
+24802,
+24811,
+24832,
+24842,
+24842,
+24866,
+24882,
+24882,
+24882,
+24892,
+24924,
+24990,
+24990,
+24990,
+24990,
+25015,
+25019,
+25019,
+25065,
+25120,
+25120,
+25120,
+25137,
+25137,
+25137,
+25146,
+25165,
+25165,
+25165,
+25189,
+25213,
+25229,
25239,
-25262,
-25262,
-25262,
-25287,
+25256,
+25268,
+25268,
+25268,
+25268,
+25293,
25293,
-25319,
-25347,
-25347,
-25347,
-25356,
-25382,
-25382,
-25397,
-25397,
-25405,
-25405,
-25405,
-25405,
-25420,
-25432,
-25432,
-25471,
+25300,
+25332,
+25361,
+25369,
+25369,
+25369,
+25369,
+25369,
+25369,
+25379,
+25392,
+25392,
+25402,
+25414,
+25462,
+25493,
+25493,
+25493,
+25493,
+25500,
25507,
-25531,
-25541,
-25563,
-25591,
-25591,
+25533,
+25548,
+25555,
+25555,
+25555,
25591,
-25605,
+25595,
+25595,
+25604,
25612,
-25626,
-25648,
-25671,
-25692,
-25726,
-25739,
-25746,
-25750,
-25774,
-25785,
-25805,
-25812,
+25656,
+25656,
+25656,
+25713,
+25717,
+25717,
+25724,
+25783,
+25802,
+25807,
+25816,
25843,
25843,
-25843,
-25843,
-25850,
-25888,
-25898,
+25847,
+25847,
25905,
-25905,
-25942,
-25949,
-25956,
-25973,
-25984,
-25991,
-26074,
-26091,
-26101,
-26108,
-26115,
-26125,
-26168,
-26185,
-26192,
-26206,
-26216,
-26223,
-26245,
-26245,
-26245,
-26257,
-26261,
-26283,
-26310,
-26328,
-26350,
-26370,
-26370,
-26383,
-26413,
-26461,
-26475,
-26506,
-26529,
-26529,
-26529,
-26529,
-26543,
-26566,
-26566,
-26579,
-26638,
-26638,
-26638,
-26660,
-26660,
-26678,
-26678,
-26725,
-26725,
+25915,
+25923,
+25952,
+25988,
+26001,
+26001,
+26001,
+26008,
+26035,
+26039,
+26059,
+26059,
+26059,
+26059,
+26079,
+26103,
+26118,
+26118,
+26127,
+26127,
+26127,
+26127,
+26127,
+26135,
+26159,
+26169,
+26169,
+26188,
+26203,
+26203,
+26210,
+26272,
+26277,
+26308,
+26308,
+26308,
+26313,
+26313,
+26313,
+26335,
+26356,
+26356,
+26356,
+26367,
+26367,
+26367,
+26411,
+26428,
+26428,
+26428,
+26438,
+26438,
+26456,
+26456,
+26472,
+26517,
+26517,
+26517,
+26540,
+26569,
+26569,
+26569,
+26578,
+26578,
+26578,
+26584,
+26584,
+26601,
+26645,
+26649,
+26649,
+26715,
+26735,
26739,
-26754,
-26754,
-26761,
-26774,
-26774,
-26774,
-26781,
-26788,
-26795,
-26811,
-26817,
-26833,
-26833,
-26833,
-26847,
-26847,
-26880,
-26886,
-26899,
-26899,
-26899,
-26906,
-26928,
-26933,
-26933,
-26964,
-26973,
-26995,
-26995,
-26995,
-27011,
-27011,
-27031,
-27048,
-27048,
-27055,
-27060,
-27074,
-27090,
-27090,
-27110,
-27137,
-27137,
-27137,
-27159,
-27175,
-27187,
-27205,
-27205,
-27225,
-27225,
-27255,
-27264,
-27264,
-27264,
-27264,
-27264,
-27264,
-27288,
-27292,
-27292,
-27326,
-27333,
-27337,
-27375,
-27387,
-27403,
-27415,
-27430,
-27446,
-27462,
-27483,
-27514,
-27540,
-27547,
-27556,
-27566,
-27573,
+26773,
+26773,
+26773,
+26773,
+26773,
+26773,
+26773,
+26773,
+26773,
+26793,
+26793,
+26793,
+26804,
+26804,
+26835,
+26845,
+26857,
+26869,
+26891,
+26891,
+26895,
+26916,
+26916,
+26916,
+26916,
+26988,
+26996,
+26996,
+26996,
+27006,
+27028,
+27028,
+27028,
+27068,
+27068,
+27068,
+27073,
+27093,
+27103,
+27109,
+27134,
+27134,
+27134,
+27134,
+27148,
+27161,
+27174,
+27174,
+27203,
+27203,
+27210,
+27210,
+27218,
+27223,
+27223,
+27229,
+27233,
+27268,
+27284,
+27284,
+27284,
+27284,
+27284,
+27284,
+27296,
+27343,
+27343,
+27343,
+27348,
+27373,
+27373,
+27373,
+27373,
+27391,
+27391,
+27391,
+27391,
+27391,
+27391,
+27391,
+27391,
+27391,
+27410,
+27410,
+27429,
+27470,
+27492,
+27492,
+27492,
+27511,
+27524,
+27524,
+27542,
+27552,
+27552,
+27559,
+27559,
+27580,
27580,
-27586,
-27586,
-27590,
-27597,
-27657,
-27679,
-27702,
-27724,
-27740,
-27740,
+27580,
+27591,
+27623,
+27623,
+27623,
+27632,
+27651,
+27651,
+27651,
+27651,
+27673,
+27694,
+27694,
+27703,
+27703,
+27739,
+27739,
+27739,
+27768,
+27768,
27768,
-27783,
-27790,
-27790,
-27809,
-27816,
-27840,
-27847,
-27847,
-27872,
-27894,
-27910,
-27937,
-27937,
-27954,
-27977,
-27977,
-27984,
+27777,
+27777,
+27777,
+27777,
+27777,
+27810,
+27825,
+27825,
+27832,
+27842,
+27859,
+27866,
+27871,
+27871,
+27881,
+27881,
+27881,
+27881,
+27899,
+27899,
+27913,
+27931,
+27936,
+27936,
+27952,
+27969,
+27988,
27998,
-28032,
-28079,
-28093,
-28100,
-28107,
-28154,
-28160,
-28166,
-28166,
-28176,
-28190,
-28217,
-28260,
-28260,
-28305,
-28305,
-28326,
-28361,
-28422,
+28003,
+28031,
+28031,
+28031,
+28041,
+28112,
+28117,
+28117,
+28123,
+28157,
+28175,
+28175,
+28175,
+28175,
+28175,
+28175,
+28207,
+28220,
+28227,
+28227,
+28237,
+28281,
+28281,
+28281,
+28289,
+28308,
+28327,
+28327,
+28327,
+28327,
+28327,
+28347,
+28365,
+28386,
+28408,
+28408,
+28423,
+28439,
+28439,
28439,
-28455,
-28465,
-28465,
28465,
-28494,
-28500,
-28516,
-28524,
-28531,
-28538,
-28552,
-28576,
-28576,
-28581,
-28581,
-28581,
-28593,
-28593,
-28593,
-28648,
-28668,
-28675,
-28675,
-28685,
+28485,
+28501,
+28522,
+28529,
+28529,
+28529,
+28529,
+28529,
+28551,
+28551,
+28557,
+28557,
+28574,
+28580,
+28580,
+28580,
+28591,
+28614,
+28625,
+28625,
+28651,
+28669,
+28669,
+28679,
+28689,
+28700,
+28700,
28700,
28700,
28700,
-28707,
-28725,
-28725,
-28732,
-28747,
-28781,
-28781,
-28800,
-28812,
-28833,
-28858,
-28865,
-28891,
-28908,
-28942,
-28959,
-28959,
-28959,
-28975,
-28982,
-28989,
-28989,
-28996,
-29017,
-29035,
-29035,
-29047,
-29063,
-29087,
-29093,
-29093,
-29114,
-29114,
-29121,
-29121,
-29138,
-29208,
-29213,
-29213,
-29213,
+28700,
+28720,
+28741,
+28748,
+28748,
+28748,
+28765,
+28806,
+28806,
+28836,
+28836,
+28856,
+28856,
+28856,
+28875,
+28875,
+28875,
+28875,
+28896,
+28896,
+28896,
+28909,
+28928,
+28935,
+28935,
+28935,
+28968,
+28981,
+28981,
+28981,
+28999,
+28999,
+29006,
+29059,
+29076,
+29076,
+29076,
+29086,
+29090,
+29090,
+29119,
+29119,
+29119,
+29119,
+29132,
+29132,
+29160,
+29166,
+29166,
+29175,
+29194,
+29194,
+29201,
+29201,
+29218,
29228,
-29238,
-29257,
-29257,
-29257,
-29257,
-29257,
+29254,
+29254,
+29254,
+29284,
+29284,
29300,
-29318,
-29337,
-29344,
-29382,
-29389,
-29407,
-29407,
-29414,
-29421,
-29457,
-29457,
-29471,
-29494,
-29510,
-29510,
-29522,
-29538,
-29544,
-29544,
-29544,
-29544,
-29558,
-29580,
-29589,
-29589,
-29589,
-29589,
-29626,
-29644,
-29671,
-29680,
-29702,
-29713,
-29713,
-29713,
-29724,
-29731,
-29731,
-29757,
-29764,
-29771,
-29800,
-29815,
-29815,
-29831,
-29870,
-29896,
-29940,
-29947,
-29954,
-29954,
-29954,
-29992,
-30006,
-30035,
-30058,
-30079,
-30086,
-30099,
-30122,
-30166,
-30221,
-30238,
-30245,
-30245,
-30259,
-30266,
-30287,
-30316,
-30323,
-30332,
-30332,
-30341,
-30348,
-30355,
-30366,
-30385,
-30419,
-30426,
-30473,
-30518,
-30551,
-30579,
-30579,
-30596,
-30615,
-30615,
-30615,
-30622,
-30626,
-30643,
-30661,
-30661,
-30661,
-30661,
+29311,
+29311,
+29349,
+29355,
+29370,
+29370,
+29370,
+29381,
+29397,
+29397,
+29397,
+29397,
+29418,
+29459,
+29459,
+29492,
+29492,
+29532,
+29550,
+29550,
+29594,
+29594,
+29594,
+29610,
+29623,
+29640,
+29650,
+29662,
+29690,
+29741,
+29741,
+29741,
+29781,
+29787,
+29787,
+29797,
+29797,
+29797,
+29797,
+29844,
+29866,
+29878,
+29878,
+29889,
+29906,
+29906,
+29906,
+29906,
+29913,
+29928,
+29944,
+29959,
+29976,
+29976,
+29976,
+29976,
+29986,
+29986,
+29986,
+29986,
+30028,
+30028,
+30028,
+30053,
+30064,
+30077,
+30077,
+30089,
+30113,
+30135,
+30135,
+30150,
+30150,
+30172,
+30172,
+30190,
+30190,
+30190,
+30190,
+30201,
+30239,
+30239,
+30249,
+30261,
+30274,
+30274,
+30274,
+30280,
+30280,
+30311,
+30311,
+30311,
+30327,
+30346,
+30346,
+30346,
+30346,
+30364,
+30364,
+30364,
+30425,
+30434,
+30434,
+30434,
+30452,
+30469,
+30469,
+30491,
+30491,
+30526,
+30526,
+30535,
+30540,
+30553,
+30564,
+30599,
+30640,
30667,
-30699,
-30699,
-30721,
-30746,
-30746,
-30758,
-30783,
-30801,
-30824,
-30824,
-30843,
-30876,
-30909,
-30929,
+30703,
+30713,
+30723,
+30762,
+30826,
+30830,
+30866,
+30866,
+30873,
+30891,
+30895,
+30905,
+30913,
+30928,
+30956,
+30967,
+30967,
30976,
-30986,
-30991,
-31005,
-31026,
-31026,
-31045,
-31113,
-31153,
-31160,
-31167,
-31183,
-31210,
-31225,
-31231,
-31247,
-31247,
-31265,
-31288,
-31359,
-31365,
-31376,
-31376,
-31391,
-31391,
-31391,
-31395,
-31395,
-31408,
-31414,
-31434,
-31448,
-31474,
-31491,
-31511,
-31520,
-31548,
-31578,
-31578,
-31578,
-31578,
-31602,
-31609,
-31645,
-31652,
-31671,
-31677,
-31712,
-31726,
-31737,
-31737,
-31737,
-31744,
-31744,
-31744,
-31751,
-31751,
-31762,
-31762,
-31769,
-31776,
-31786,
-31802,
-31802,
-31817,
-31832,
-31852,
-31852,
-31852,
-31859,
+31014,
+31041,
+31051,
+31051,
+31051,
+31062,
+31076,
+31093,
+31093,
+31093,
+31093,
+31104,
+31146,
+31146,
+31146,
+31164,
+31223,
+31244,
+31244,
+31262,
+31262,
+31262,
+31262,
+31277,
+31277,
+31277,
+31284,
+31295,
+31315,
+31338,
+31338,
+31348,
+31415,
+31432,
+31454,
+31475,
+31494,
+31494,
+31494,
+31494,
+31507,
+31524,
+31524,
+31543,
+31549,
+31568,
+31568,
+31568,
+31568,
+31608,
+31608,
+31624,
+31653,
+31703,
+31710,
+31710,
+31710,
+31738,
+31738,
+31757,
+31763,
+31778,
+31778,
+31778,
+31803,
+31803,
+31811,
+31811,
+31818,
+31818,
+31818,
+31818,
+31827,
+31827,
+31836,
+31842,
+31842,
+31855,
+31855,
31866,
-31889,
-31889,
-31896,
-31903,
-31903,
-31910,
-31920,
-31945,
-31952,
-31952,
-31969,
-31969,
-31985,
-31985,
-31985,
-31985,
-31985,
-31985,
-31985,
-32009,
-32025,
-32025,
-32058,
-32071,
-32114,
-32114,
-32128,
-32152,
-32159,
-32159,
-32159,
-32166,
-32187,
-32187,
-32200,
+31907,
+31907,
+31917,
+31924,
+31924,
+31930,
+31942,
+31957,
+31957,
+31957,
+31957,
+31963,
+31980,
+31991,
+32005,
+32023,
+32047,
+32059,
+32059,
+32059,
+32080,
+32080,
+32087,
+32087,
+32111,
+32111,
+32120,
+32131,
+32161,
+32182,
+32190,
32200,
-32226,
-32226,
-32233,
-32233,
-32233,
-32242,
-32242,
-32242,
-32282,
-32282,
-32282,
+32230,
+32251,
+32251,
+32251,
+32255,
+32255,
+32260,
+32260,
+32267,
+32267,
32282,
-32282,
-32282,
-32289,
-32305,
+32299,
32312,
-32312,
-32317,
-32357,
-32357,
-32378,
-32378,
-32393,
-32393,
-32400,
-32423,
-32423,
-32423,
-32431,
-32431,
-32431,
-32449,
-32470,
-32494,
-32494,
-32494,
-32501,
-32501,
-32543,
-32561,
+32339,
+32339,
+32370,
+32370,
+32395,
+32395,
+32436,
+32447,
+32468,
+32475,
+32493,
+32519,
+32533,
+32533,
+32545,
+32562,
32581,
32581,
-32629,
-32644,
-32662,
-32673,
-32673,
-32696,
-32705,
-32722,
-32722,
-32728,
-32763,
-32787,
-32803,
-32803,
-32818,
-32865,
-32865,
-32875,
-32882,
-32911,
-32911,
-32943,
-32973,
-33000,
-33018,
-33018,
-33024,
-33060,
-33060,
-33071,
-33071,
-33071,
-33071,
-33085,
-33110,
-33149,
-33149,
-33157,
-33157,
-33206,
-33206,
-33206,
-33206,
-33222,
-33242,
-33242,
-33252,
-33252,
-33252,
-33252,
-33271,
-33285,
-33301,
-33301,
-33301,
-33332,
-33360,
-33360,
-33360,
-33360,
-33398,
-33398,
-33398,
-33398,
-33412,
-33412,
-33412,
-33412,
-33412,
-33459,
-33482,
-33486,
-33486,
-33499,
-33514,
-33514,
-33545,
-33545,
-33545,
-33567,
-33567,
-33567,
-33584,
-33589,
-33605,
-33620,
-33635,
-33667,
-33695,
-33706,
-33722,
-33751,
-33758,
-33758,
-33764,
-33764,
-33764,
-33781,
-33793,
-33804,
-33804,
-33819,
-33826,
-33826,
-33826,
-33826,
-33826,
-33835,
-33835,
-33835,
+32593,
+32597,
+32597,
+32597,
+32597,
+32597,
+32654,
+32654,
+32693,
+32737,
+32737,
+32737,
+32764,
+32791,
+32816,
+32816,
+32816,
+32820,
+32835,
+32835,
+32835,
+32879,
+32918,
+32924,
+32944,
+32978,
+33039,
+33058,
+33058,
+33058,
+33058,
+33058,
+33065,
+33105,
+33105,
+33105,
+33105,
+33120,
+33129,
+33129,
+33129,
+33184,
+33184,
+33184,
+33184,
+33189,
+33220,
+33220,
+33220,
+33220,
+33265,
+33265,
+33278,
+33288,
+33288,
+33288,
+33294,
+33294,
+33325,
+33325,
+33347,
+33357,
+33391,
+33401,
+33417,
+33439,
+33456,
+33456,
+33476,
+33512,
+33564,
+33564,
+33564,
+33581,
+33631,
+33631,
+33640,
+33640,
+33650,
+33650,
+33657,
+33678,
+33691,
+33698,
+33698,
+33731,
+33741,
+33741,
+33741,
+33778,
+33778,
+33778,
+33778,
+33794,
+33824,
+33824,
+33848,
33848,
-33862,
-33862,
-33862,
-33866,
-33938,
-33938,
-33938,
-33938,
-33955,
-33971,
-33971,
-33971,
-33983,
-33983,
-33990,
-33990,
-34027,
-34050,
-34050,
-34054,
-34079,
-34079,
-34079,
-34109,
-34124,
-34140,
-34140,
-34140,
-34140,
-34152,
-34163,
-34163,
-34175,
-34214,
-34214,
-34221,
-34221,
-34231,
-34231,
-34231,
-34253,
-34253,
-34270,
-34270,
-34270,
-34303,
-34303,
-34319,
-34325,
-34335,
-34344,
-34357,
-34373,
-34393,
-34393,
-34431,
-34461,
-34471,
-34471,
-34471,
-34492,
-34527,
-34527,
-34535,
-34547,
-34547,
+33848,
+33848,
+33848,
+33867,
+33867,
+33867,
+33867,
+33867,
+33867,
+33867,
+33867,
+33914,
+33945,
+33945,
+33945,
+33992,
+33992,
+33992,
+33992,
+34038,
+34052,
+34052,
+34052,
+34052,
+34062,
+34062,
+34069,
+34069,
+34082,
+34094,
+34102,
+34126,
+34126,
+34126,
+34135,
+34154,
+34154,
+34154,
+34173,
+34189,
+34204,
+34209,
+34223,
+34223,
+34241,
+34241,
+34241,
+34241,
+34241,
+34241,
+34249,
+34281,
+34281,
+34281,
+34289,
+34298,
+34298,
+34298,
+34298,
+34341,
+34341,
+34341,
+34341,
+34341,
+34346,
+34346,
+34356,
+34356,
+34356,
+34370,
+34370,
+34417,
+34424,
+34424,
+34451,
+34467,
+34548,
+34548,
+34554,
34554,
-34558,
-34558,
-34558,
-34558,
-34613,
-34613,
-34613,
-34647,
-34665,
-34691,
+34619,
+34626,
+34638,
+34638,
+34657,
+34657,
+34670,
+34687,
34695,
-34713,
-34727,
-34760,
-34760,
-34760,
-34765,
-34765,
-34787,
-34787,
-34787,
-34814,
-34820,
-34834,
-34834,
-34866,
-34881,
-34881,
-34881,
-34881,
-34881,
-34881,
-34902,
-34907,
-34907,
-34917,
-34917,
-34917,
-34917,
-34928,
-34933,
-34960,
-34972,
-34972,
-34981,
-34993,
-35003,
-35003,
-35003,
-35013,
-35013,
-35054,
-35067,
-35067,
-35067,
-35074,
-35081,
-35105,
-35120,
-35120,
-35120,
-35120,
+34695,
+34708,
+34728,
+34728,
+34738,
+34748,
+34748,
+34748,
+34748,
+34748,
+34755,
+34805,
+34805,
+34805,
+34858,
+34858,
+34858,
+34858,
+34897,
+34906,
+34920,
+34920,
+34927,
+34927,
+34927,
+34927,
+34934,
+34952,
+34952,
+34984,
+35000,
+35007,
+35014,
+35029,
+35048,
+35090,
+35090,
+35090,
+35090,
+35101,
+35101,
+35101,
+35101,
+35118,
+35118,
+35128,
+35128,
+35142,
35142,
-35148,
-35148,
-35173,
-35205,
-35205,
-35214,
-35234,
-35266,
-35266,
-35266,
-35276,
-35290,
+35142,
+35160,
+35174,
+35174,
+35178,
+35178,
+35208,
+35208,
+35208,
+35253,
+35253,
+35253,
+35259,
+35277,
+35289,
+35289,
+35301,
35320,
-35344,
-35373,
-35408,
-35435,
+35341,
+35341,
+35359,
+35359,
+35416,
+35416,
+35416,
+35447,
35463,
-35500,
-35500,
-35500,
-35511,
-35516,
-35516,
-35516,
-35522,
-35522,
-35544,
-35544,
-35566,
-35566,
+35470,
+35496,
+35549,
+35549,
+35549,
+35562,
+35569,
+35569,
+35569,
+35582,
35582,
-35594,
-35594,
-35594,
-35594,
-35594,
-35636,
-35636,
-35654,
-35660,
-35680,
-35708,
-35708,
-35729,
-35729,
-35729,
-35734,
-35751,
-35751,
-35766,
-35766,
-35791,
-35791,
-35809,
-35809,
-35809,
-35825,
-35875,
-35875,
-35888,
-35927,
-35927,
-35933,
-35933,
-35942,
-35960,
-35960,
-35972,
-35991,
-35991,
-36005,
-36041,
-36041,
-36091,
-36091,
-36115,
-36136,
-36152,
-36168,
-36179,
-36209,
-36227,
-36236,
-36263,
-36263,
-36263,
-36263,
-36263,
-36281,
-36292,
-36292,
-36301,
-36301,
-36372,
-36372,
-36377,
-36401,
-36420,
-36434,
+35582,
+35582,
+35582,
+35608,
+35608,
+35615,
+35615,
+35641,
+35655,
+35655,
+35665,
+35665,
+35665,
+35675,
+35675,
+35733,
+35750,
+35750,
+35758,
+35770,
+35777,
+35777,
+35777,
+35801,
+35801,
+35801,
+35801,
+35839,
+35839,
+35839,
+35839,
+35855,
+35855,
+35862,
+35862,
+35878,
+35878,
+35878,
+35878,
+35897,
+35937,
+35937,
+35937,
+35985,
+36000,
+36000,
+36000,
+36025,
+36049,
+36060,
+36081,
+36094,
+36094,
+36094,
+36094,
+36127,
+36167,
+36167,
+36173,
+36185,
+36185,
+36185,
+36192,
+36244,
+36272,
+36279,
+36279,
+36291,
+36323,
+36323,
+36323,
+36387,
+36400,
+36400,
+36410,
+36442,
+36442,
36442,
36442,
36442,
-36476,
-36515,
-36536,
-36570,
-36570,
-36580,
-36580,
-36580,
-36580,
-36580,
-36598,
-36598,
-36598,
-36616,
-36635,
-36641,
-36641,
-36641,
-36641,
-36641,
-36641,
+36456,
+36463,
+36463,
+36508,
+36508,
+36508,
+36518,
+36554,
+36623,
+36643,
36651,
-36685,
-36685,
-36689,
-36689,
-36689,
-36689,
-36689,
-36694,
-36723,
+36672,
+36698,
+36705,
+36715,
36735,
-36757,
-36757,
-36757,
-36757,
-36757,
-36783,
-36783,
-36807,
-36835,
-36835,
-36866,
-36879,
-36885,
+36735,
+36735,
+36735,
+36768,
+36768,
+36777,
+36788,
+36788,
+36788,
+36788,
+36788,
+36805,
+36852,
+36870,
+36883,
36900,
-36919,
-36961,
-36978,
+36912,
+36912,
+36912,
+36931,
+36938,
+36938,
+36938,
+36953,
+36975,
+36975,
+36987,
+36987,
36987,
37000,
-37044,
-37076,
-37087,
-37103,
-37117,
-37117,
-37128,
-37151,
-37169,
-37196,
-37226,
-37226,
-37252,
-37252,
-37252,
-37275,
-37292,
-37292,
-37292,
-37292,
-37292,
-37292,
-37292,
-37292,
-37292,
+37014,
+37039,
+37056,
+37063,
+37080,
+37091,
+37091,
+37098,
+37107,
+37125,
+37162,
+37162,
+37162,
+37218,
+37241,
+37241,
+37261,
+37308,
+37324,
+37324,
37324,
-37335,
-37335,
37352,
-37358,
+37352,
+37352,
37377,
-37399,
-37410,
-37445,
-37445,
-37451,
-37451,
-37451,
-37462,
-37510,
-37510,
-37555,
-37555,
-37555,
-37555,
-37555,
-37569,
-37620,
-37631,
-37648,
-37656,
-37666,
-37673,
-37697,
-37697,
-37723,
-37769,
-37769,
-37769,
-37788,
-37826,
-37851,
-37851,
-37851,
-37851,
+37383,
+37383,
+37383,
+37383,
+37391,
+37427,
+37427,
+37427,
+37427,
+37427,
+37427,
+37427,
+37444,
+37476,
+37490,
+37500,
+37538,
+37538,
+37538,
+37538,
+37552,
+37591,
+37598,
+37632,
+37682,
+37682,
+37682,
+37682,
+37706,
+37726,
+37726,
+37726,
+37759,
+37759,
+37759,
+37759,
+37759,
+37773,
+37773,
+37773,
+37777,
+37792,
+37797,
+37797,
+37797,
+37797,
+37797,
+37807,
+37807,
+37841,
+37845,
+37855,
37873,
-37873,
-37873,
-37891,
-37891,
37891,
-37904,
-37909,
-37909,
-37909,
-37909,
-37916,
-37943,
-37954,
-37954,
-37964,
-37976,
-37976,
-37989,
-37989,
-38018,
-38018,
-38018,
-38018,
-38025,
-38025,
-38037,
-38074,
-38091,
-38091,
-38091,
-38104,
-38104,
-38104,
-38136,
-38136,
-38163,
-38163,
-38199,
-38218,
-38218,
-38218,
-38218,
-38258,
-38258,
-38258,
-38258,
-38287,
-38308,
+37898,
+37907,
+37907,
+37907,
+37907,
+37934,
+37956,
+37956,
+37956,
+38006,
+38030,
+38044,
+38044,
+38051,
+38099,
+38119,
+38119,
+38119,
+38119,
+38119,
+38125,
+38133,
+38203,
+38203,
+38203,
+38213,
+38249,
+38280,
+38280,
+38280,
+38290,
+38307,
+38307,
38323,
-38323,
-38323,
-38340,
-38375,
-38419,
-38419,
-38419,
-38419,
-38419,
-38419,
-38435,
-38471,
-38471,
-38504,
-38526,
-38526,
-38582,
-38589,
-38589,
-38609,
-38619,
-38633,
-38633,
-38667,
-38667,
-38667,
-38667,
-38680,
-38709,
-38709,
-38709,
-38709,
-38737,
-38737,
-38737,
-38760,
-38760,
-38760,
-38760,
-38760,
-38779,
-38833,
-38833,
-38883,
-38883,
-38883,
-38889,
-38908,
-38956,
-38967,
-38988,
-38988,
-39028,
-39047,
-39047,
-39095,
-39149,
-39158,
-39158,
-39158,
-39182,
-39233,
-39262,
-39277,
-39313,
-39313,
-39345,
-39362,
-39369,
-39369,
-39378,
-39395,
-39395,
-39429,
-39438,
-39453,
-39502,
-39502,
-39539,
-39539,
-39593,
+38329,
+38329,
+38335,
+38343,
+38368,
+38405,
+38405,
+38415,
+38450,
+38461,
+38461,
+38469,
+38548,
+38569,
+38576,
+38593,
+38635,
+38635,
+38635,
+38664,
+38686,
+38686,
+38686,
+38697,
+38731,
+38745,
+38755,
+38759,
+38763,
+38783,
+38783,
+38792,
+38817,
+38817,
+38817,
+38826,
+38847,
+38847,
+38858,
+38858,
+38880,
+38896,
+38896,
+38896,
+38914,
+38940,
+38940,
+38940,
+38978,
+38978,
+38978,
+38987,
+39012,
+39035,
+39035,
+39045,
+39045,
+39085,
+39092,
+39116,
+39128,
+39168,
+39168,
+39201,
+39209,
+39209,
+39209,
+39209,
+39273,
+39273,
+39283,
+39283,
+39326,
+39326,
+39326,
+39326,
+39341,
+39341,
+39341,
+39355,
+39382,
+39403,
+39403,
+39413,
+39435,
+39435,
+39435,
+39452,
+39475,
+39482,
+39482,
+39490,
+39524,
+39524,
+39524,
+39529,
+39587,
+39618,
39618,
-39644,
-39689,
-39712,
-39712,
-39712,
-39736,
-39736,
-39736,
-39746,
-39759,
-39777,
-39777,
-39802,
-39802,
-39812,
-39812,
+39628,
+39628,
+39628,
+39628,
+39628,
+39641,
+39656,
+39656,
+39668,
+39682,
+39687,
+39694,
+39699,
+39699,
+39704,
+39704,
+39738,
+39756,
+39756,
+39756,
+39772,
+39806,
39825,
39825,
-39832,
-39832,
-39847,
-39847,
-39872,
-39911,
-39957,
-39991,
-39991,
-40009,
-40026,
-40026,
-40035,
-40035,
-40035,
-40035,
-40039,
-40039,
-40039,
+39825,
+39834,
+39840,
+39845,
+39883,
+39883,
+39904,
+39904,
+39904,
+39922,
+39945,
+39945,
+39956,
+39976,
+39999,
+39999,
+40015,
+40051,
+40051,
+40051,
+40051,
+40051,
+40051,
+40061,
40061,
-40069,
-40086,
-40086,
-40091,
-40111,
-40150,
-40179,
-40199,
-40215,
-40215,
-40215,
-40238,
-40238,
-40238,
-40252,
-40252,
-40252,
-40259,
-40259,
-40321,
-40321,
-40328,
-40328,
-40346,
-40346,
-40369,
-40380,
-40388,
-40388,
-40388,
-40407,
-40423,
-40423,
-40423,
-40436,
-40436,
-40443,
-40449,
-40457,
-40473,
-40473,
-40496,
-40502,
-40534,
-40556,
-40574,
-40595,
-40613,
-40613,
-40630,
-40637,
-40637,
-40644,
-40650,
-40675,
-40686,
-40686,
-40686,
-40752,
+40071,
+40084,
+40084,
+40084,
+40100,
+40128,
+40135,
+40135,
+40147,
+40162,
+40162,
+40166,
+40187,
+40187,
+40187,
+40187,
+40187,
+40210,
+40210,
+40229,
+40249,
+40249,
+40249,
+40256,
+40256,
+40267,
+40271,
+40282,
+40319,
+40319,
+40319,
+40335,
+40363,
+40363,
+40363,
+40392,
+40427,
+40433,
+40445,
+40451,
+40465,
+40494,
+40494,
+40494,
+40506,
+40521,
+40527,
+40536,
+40555,
+40569,
+40569,
+40569,
+40581,
+40587,
+40587,
+40587,
+40605,
+40611,
+40611,
+40628,
+40685,
+40715,
+40715,
+40715,
+40734,
+40734,
+40734,
40781,
-40802,
-40815,
+40787,
+40817,
40821,
-40838,
-40838,
-40838,
-40855,
-40887,
-40930,
-40949,
-40965,
-40969,
-40988,
-40988,
-40988,
-40988,
-40988,
-40988,
-41020,
-41036,
-41059,
-41074,
-41074,
-41093,
-41098,
-41098,
-41104,
-41156,
+40821,
+40830,
+40871,
+40871,
+40875,
+40875,
+40886,
+40886,
+40904,
+40926,
+40932,
+40932,
+40942,
+40948,
+40948,
+40948,
+40948,
+41023,
+41054,
+41058,
+41068,
+41068,
+41072,
+41086,
+41086,
+41117,
+41123,
+41123,
+41129,
+41129,
+41154,
+41161,
+41177,
+41177,
41184,
41184,
-41200,
-41223,
-41238,
-41244,
-41244,
-41244,
-41267,
-41267,
-41267,
-41273,
-41273,
-41273,
-41297,
-41297,
-41303,
-41324,
-41335,
-41354,
-41360,
-41360,
-41360,
-41360,
-41367,
-41367,
+41198,
+41208,
+41243,
+41243,
+41243,
+41278,
+41278,
+41278,
+41278,
+41294,
+41310,
+41310,
+41337,
+41371,
41383,
-41408,
-41449,
-41486,
-41514,
-41514,
-41514,
-41514,
-41514,
-41529,
-41548,
-41548,
-41589,
-41608,
-41608,
-41628,
-41628,
-41667,
-41701,
-41701,
-41719,
-41719,
-41732,
-41754,
-41785,
-41810,
-41845,
-41860,
-41860,
-41860,
-41873,
-41890,
-41921,
-41942,
-41942,
-41952,
-41975,
-42000,
-42000,
-42000,
-42021,
-42034,
-42034,
-42034,
+41383,
+41383,
+41390,
+41444,
+41444,
+41464,
+41464,
+41483,
+41483,
+41519,
+41595,
+41625,
+41625,
+41637,
+41637,
+41668,
+41668,
+41668,
+41687,
+41715,
+41715,
+41715,
+41715,
+41715,
+41715,
+41722,
+41753,
+41775,
+41775,
+41775,
+41781,
+41796,
+41803,
+41820,
+41820,
+41820,
+41820,
+41829,
+41829,
+41839,
+41839,
+41839,
+41864,
+41864,
+41864,
+41876,
+41935,
+41957,
+41957,
+41982,
+42017,
42034,
42034,
-42049,
-42049,
-42096,
-42096,
-42096,
-42096,
-42107,
-42107,
-42122,
-42173,
-42208,
-42214,
-42231,
-42231,
-42238,
-42252,
-42252,
-42266,
-42292,
+42046,
+42062,
+42109,
+42109,
+42115,
+42136,
+42136,
+42136,
+42157,
+42196,
+42223,
+42230,
+42230,
+42247,
+42247,
+42247,
+42256,
+42269,
+42269,
+42279,
+42279,
+42316,
+42316,
+42316,
42316,
-42331,
-42331,
-42331,
-42350,
+42316,
+42330,
+42330,
+42330,
+42348,
+42348,
+42348,
+42348,
42365,
-42371,
-42378,
-42389,
-42395,
-42395,
-42435,
-42446,
-42446,
-42458,
-42458,
-42476,
-42476,
-42476,
-42486,
-42506,
-42510,
-42559,
-42565,
-42583,
-42600,
-42643,
-42650,
-42656,
-42668,
-42688,
-42698,
-42738,
-42761,
-42761,
-42800,
-42806,
-42847,
-42851,
-42877,
-42881,
-42917,
-42929,
-42945,
-42945,
-42945,
-42951,
-42951,
+42382,
+42382,
+42406,
+42406,
+42406,
+42406,
+42411,
+42431,
+42463,
+42473,
+42473,
+42490,
+42490,
+42490,
+42514,
+42514,
+42520,
+42520,
+42532,
+42538,
+42538,
+42538,
+42547,
+42608,
+42648,
+42648,
+42648,
+42684,
+42684,
+42692,
+42692,
+42710,
+42758,
+42758,
+42758,
+42771,
+42771,
+42771,
+42771,
+42826,
+42833,
+42837,
+42853,
+42890,
+42903,
+42903,
+42914,
+42948,
42967,
-43009,
-43009,
-43028,
-43040,
-43040,
-43046,
-43046,
-43072,
-43088,
-43097,
-43139,
-43146,
-43172,
-43192,
-43192,
-43192,
-43220,
-43232,
-43238,
-43238,
-43256,
-43256,
-43256,
-43277,
-43295,
-43313,
-43325,
-43325,
-43349,
-43367,
-43380,
-43387,
-43425,
-43441,
-43484,
-43484,
-43507,
-43507,
-43526,
-43537,
-43572,
-43577,
-43577,
+42982,
+43002,
+43002,
+43002,
+43002,
+43002,
+43064,
+43099,
+43099,
+43099,
+43132,
+43147,
+43147,
+43175,
+43219,
+43237,
+43237,
+43243,
+43253,
+43263,
+43263,
+43282,
+43323,
+43362,
+43362,
+43369,
+43411,
+43418,
+43418,
+43434,
+43450,
+43454,
+43454,
+43454,
+43472,
+43472,
+43472,
+43472,
+43472,
+43492,
+43502,
+43506,
+43525,
+43525,
+43525,
+43549,
43587,
-43591,
-43591,
-43619,
-43626,
-43646,
-43646,
-43674,
-43704,
-43704,
-43751,
-43781,
-43798,
-43824,
-43846,
-43846,
-43862,
-43862,
-43878,
-43878,
-43884,
-43911,
-43911,
-43911,
-43911,
-43911,
-43925,
-43933,
-43943,
-43949,
-43949,
-43976,
-43976,
-43976,
-43986,
-44000,
-44000,
-44012,
-44035,
-44053,
-44053,
-44053,
+43594,
+43594,
+43623,
+43649,
+43659,
+43672,
+43678,
+43678,
+43678,
+43678,
+43678,
+43678,
+43678,
+43678,
+43699,
+43699,
+43699,
+43699,
+43699,
+43721,
+43747,
+43747,
+43747,
+43783,
+43788,
+43788,
+43788,
+43805,
+43805,
+43833,
+43833,
+43854,
+43854,
+43854,
+43881,
+43897,
+43897,
+43897,
+43914,
+43914,
+43947,
+43974,
+43984,
+43995,
+43995,
+43995,
+43995,
+43995,
+44022,
+44022,
+44033,
+44041,
+44068,
44068,
-44090,
-44118,
-44130,
-44130,
-44130,
-44130,
-44142,
-44149,
-44155,
-44155,
-44155,
-44155,
-44174,
-44174,
-44174,
-44190,
-44190,
-44215,
-44215,
-44215,
+44097,
+44127,
+44137,
+44137,
+44137,
+44141,
+44158,
+44158,
+44178,
+44194,
+44203,
+44210,
44231,
-44263,
-44273,
-44273,
-44273,
-44273,
-44296,
-44311,
-44311,
-44311,
-44327,
-44327,
-44327,
-44345,
-44368,
-44368,
-44368,
-44368,
-44368,
-44380,
-44414,
-44414,
-44422,
-44439,
-44459,
-44459,
-44484,
-44484,
-44484,
-44503,
-44503,
-44520,
-44520,
-44520,
-44520,
-44524,
-44557,
-44557,
-44564,
-44584,
-44584,
-44606,
-44614,
-44614,
-44614,
-44614,
-44634,
-44648,
-44679,
-44685,
-44728,
-44778,
-44785,
-44792,
-44792,
-44803,
-44814,
-44829,
-44845,
-44863,
-44870,
-44895,
-44910,
-44919,
-44960,
-44960,
-44972,
-44972,
-44972,
-44972,
-44985,
-45017,
-45036,
-45062,
-45062,
-45074,
-45088,
-45105,
-45136,
-45142,
-45142,
-45174,
-45186,
-45193,
-45193,
+44261,
+44261,
+44261,
+44279,
+44279,
+44287,
+44287,
+44287,
+44307,
+44324,
+44324,
+44330,
+44340,
+44340,
+44348,
+44376,
+44390,
+44390,
+44390,
+44390,
+44390,
+44390,
+44404,
+44404,
+44449,
+44462,
+44477,
+44485,
+44540,
+44540,
+44540,
+44540,
+44574,
+44590,
+44590,
+44603,
+44642,
+44657,
+44657,
+44672,
+44672,
+44682,
+44682,
+44724,
+44766,
+44766,
+44766,
+44780,
+44798,
+44809,
+44821,
+44821,
+44821,
+44821,
+44821,
+44821,
+44838,
+44861,
+44861,
+44861,
+44871,
+44871,
+44871,
+44892,
+44941,
+44941,
+44941,
+44950,
+44950,
+44961,
+44961,
+44961,
+44977,
+45024,
+45034,
+45080,
+45094,
+45106,
+45106,
+45113,
+45130,
+45145,
+45145,
+45155,
+45175,
+45175,
+45175,
45203,
45203,
-45203,
-45213,
-45232,
-45232,
-45236,
+45209,
+45209,
+45209,
+45209,
+45209,
+45209,
+45221,
+45230,
+45230,
+45230,
+45238,
45277,
-45297,
-45297,
-45297,
-45302,
-45315,
-45315,
-45361,
-45385,
-45420,
-45455,
-45455,
-45455,
-45455,
-45464,
+45301,
+45307,
+45313,
+45313,
+45313,
+45313,
+45323,
+45389,
+45389,
+45389,
+45395,
+45434,
+45451,
+45451,
+45451,
+45469,
+45486,
45486,
-45490,
-45490,
+45508,
45508,
45524,
45524,
-45524,
-45543,
-45543,
-45543,
-45589,
-45613,
-45629,
-45641,
+45550,
+45580,
+45605,
+45605,
+45605,
+45605,
+45620,
+45632,
+45632,
+45632,
+45661,
+45661,
45669,
-45681,
-45698,
-45698,
-45698,
-45698,
-45723,
-45723,
-45723,
+45695,
+45695,
+45695,
+45695,
+45735,
45735,
-45742,
-45763,
-45787,
-45791,
-45791,
-45818,
-45831,
-45843,
-45861,
-45861,
-45877,
-45877,
-45892,
-45892,
-45901,
-45916,
-45935,
-45935,
-45935,
-45953,
-45953,
-45967,
-45967,
-45998,
-46007,
-46007,
-46011,
-46024,
-46047,
-46047,
-46047,
-46053,
-46053,
-46067,
-46078,
-46098,
-46126,
-46169,
-46194,
+45735,
+45745,
+45778,
+45829,
+45829,
+45829,
+45829,
+45829,
+45829,
+45840,
+45864,
+45864,
+45864,
+45872,
+45872,
+45872,
+45872,
+45878,
+45878,
+45886,
+45894,
+45912,
+45952,
+45952,
+45952,
+45965,
+46000,
+46000,
+46004,
+46014,
+46034,
+46034,
+46034,
+46042,
+46055,
+46055,
+46055,
+46055,
+46073,
+46073,
+46073,
+46081,
+46138,
+46148,
+46155,
+46164,
+46210,
46225,
-46240,
-46240,
-46256,
-46279,
-46279,
-46308,
-46308,
-46308,
-46330,
-46373,
-46383,
-46407,
-46407,
-46425,
-46425,
-46441,
-46476,
-46498,
-46512,
-46525,
-46525,
-46525,
-46540,
-46557,
-46574,
-46590,
-46609,
+46225,
+46225,
+46243,
+46263,
+46272,
+46272,
+46289,
+46289,
+46289,
+46289,
+46324,
+46324,
+46342,
+46372,
+46392,
+46414,
+46414,
+46414,
+46414,
+46414,
+46421,
+46436,
+46493,
+46508,
+46508,
+46520,
+46532,
+46577,
+46577,
+46577,
+46588,
+46597,
46609,
-46632,
-46632,
-46647,
-46655,
-46697,
-46742,
-46742,
-46742,
-46742,
-46742,
-46752,
+46628,
+46635,
+46635,
+46635,
+46654,
+46661,
+46661,
+46661,
+46665,
+46694,
+46738,
+46738,
+46738,
+46738,
+46738,
+46759,
+46759,
46780,
-46780,
-46807,
-46807,
-46807,
-46807,
+46801,
+46801,
+46801,
+46801,
+46810,
+46820,
46820,
-46829,
-46864,
-46864,
-46894,
-46894,
-46898,
-46938,
-46938,
-46938,
-46945,
-46945,
-46971,
-46977,
-46999,
-47012,
-47026,
-47026,
-47044,
-47059,
-47059,
-47104,
-47104,
-47104,
-47104,
-47104,
-47104,
-47104,
-47121,
-47121,
-47121,
-47131,
-47160,
-47170,
-47182,
-47182,
-47182,
-47209,
-47209,
-47280,
-47302,
-47362,
-47374,
-47389,
-47398,
-47398,
-47418,
-47425,
+46868,
+46868,
+46868,
+46878,
+46878,
+46886,
+46886,
+46886,
+46905,
+46917,
+46917,
+46929,
+46963,
+46963,
+46963,
+46987,
+47033,
+47033,
+47033,
+47040,
+47040,
+47057,
+47063,
+47082,
+47122,
+47122,
+47129,
+47144,
+47144,
+47144,
+47144,
+47144,
+47195,
+47244,
+47244,
+47261,
+47313,
+47342,
+47356,
+47373,
+47391,
47435,
-47452,
-47459,
-47459,
-47459,
-47465,
-47486,
-47486,
-47506,
-47522,
-47541,
+47435,
+47447,
+47478,
+47485,
+47492,
+47492,
+47509,
47547,
-47557,
-47603,
-47621,
-47631,
-47631,
-47662,
-47662,
-47683,
-47689,
-47706,
-47731,
-47736,
-47736,
-47736,
-47736,
-47750,
-47780,
-47780,
-47785,
-47792,
-47803,
-47810,
-47837,
-47837,
-47852,
-47852,
-47890,
-47890,
-47890,
-47902,
-47924,
-47968,
-47984,
-48002,
-48002,
-48002,
-48002,
-48002,
-48002,
+47554,
+47577,
+47585,
+47620,
+47627,
+47634,
+47670,
+47712,
+47730,
+47730,
+47770,
+47794,
+47809,
+47809,
+47809,
+47853,
+47860,
+47876,
+47876,
+47909,
+47909,
+47909,
+47914,
+47921,
+47940,
+47966,
+47971,
+47978,
+47986,
+47986,
48014,
-48020,
-48020,
-48020,
-48035,
-48045,
-48045,
-48045,
-48053,
-48053,
-48092,
-48092,
-48117,
-48117,
-48143,
-48143,
-48150,
-48160,
-48187,
-48187,
-48187,
-48203,
-48203,
-48239,
-48250,
-48250,
-48250,
-48250,
-48250,
-48269,
-48284,
-48288,
-48288,
-48288,
-48303,
-48303,
-48303,
-48303,
-48303,
-48322,
-48322,
-48322,
-48335,
-48347,
-48347,
-48347,
-48360,
-48360,
-48360,
-48360,
-48360,
-48379,
-48379,
-48392,
-48392,
-48392,
-48392,
-48409,
+48021,
+48021,
+48041,
+48081,
+48115,
+48115,
+48122,
+48138,
+48214,
+48214,
+48232,
+48270,
+48282,
+48296,
+48324,
+48352,
+48357,
+48367,
+48378,
+48395,
+48411,
48425,
-48459,
-48459,
-48466,
-48483,
-48504,
-48504,
-48536,
-48536,
-48536,
-48550,
-48564,
-48606,
-48626,
-48660,
-48677,
-48677,
-48677,
-48689,
-48689,
-48689,
-48697,
+48461,
+48486,
+48505,
+48505,
+48521,
+48566,
+48573,
+48573,
+48573,
+48585,
+48609,
+48609,
+48633,
+48667,
+48686,
48697,
-48728,
-48739,
-48757,
-48757,
-48777,
-48793,
-48793,
-48815,
-48815,
-48829,
-48852,
-48860,
-48860,
-48899,
-48899,
-48912,
-48963,
-48963,
-48992,
-48992,
-48992,
-48992,
-49006,
-49014,
-49042,
-49042,
-49055,
-49055,
-49055,
-49071,
-49077,
-49108,
-49108,
-49120,
-49120,
-49120,
-49120,
+48703,
+48749,
+48756,
+48756,
+48791,
+48811,
+48836,
+48836,
+48864,
+48889,
+48889,
+48903,
+48903,
+48937,
+48952,
+48959,
+48959,
+48966,
+48988,
+48988,
+49000,
+49000,
+49007,
+49007,
+49030,
+49030,
+49045,
+49052,
+49062,
+49062,
+49062,
+49062,
+49062,
+49088,
+49107,
+49107,
+49107,
+49107,
+49127,
49127,
49127,
-49131,
-49145,
-49162,
-49162,
-49179,
-49207,
-49207,
-49207,
-49207,
-49207,
-49207,
-49207,
-49207,
-49207,
-49218,
-49218,
-49235,
-49250,
-49260,
-49270,
-49270,
-49286,
-49295,
-49295,
-49295,
-49295,
-49337,
-49347,
-49358,
-49358,
-49390,
-49403,
-49403,
-49413,
-49423,
-49423,
-49423,
-49455,
-49471,
-49471,
-49477,
-49477,
-49477,
-49494,
-49512,
-49521,
-49521,
-49552,
-49582,
-49612,
-49641,
-49653,
-49653,
-49653,
-49675,
-49680,
+49170,
+49170,
+49183,
+49195,
+49201,
+49208,
+49208,
+49222,
+49229,
+49251,
+49251,
+49258,
+49298,
+49330,
+49330,
+49350,
+49398,
+49398,
+49405,
+49412,
+49440,
+49456,
+49456,
+49464,
+49464,
+49464,
+49464,
+49480,
+49527,
+49546,
+49546,
+49546,
+49586,
+49593,
+49607,
+49622,
+49640,
+49647,
+49654,
+49672,
+49672,
+49672,
+49672,
49690,
-49724,
-49724,
-49755,
-49773,
-49795,
-49795,
-49795,
-49795,
-49795,
-49801,
-49822,
-49822,
-49850,
-49850,
-49878,
-49897,
-49897,
-49897,
-49897,
-49897,
-49919,
-49942,
+49713,
+49743,
+49750,
+49766,
+49784,
+49798,
+49798,
+49804,
+49852,
+49869,
+49876,
+49917,
49947,
-49956,
-49956,
-49956,
-49975,
-49975,
-49990,
-50000,
-50000,
-50000,
-50008,
-50034,
-50034,
-50050,
-50050,
-50059,
-50059,
-50075,
-50075,
-50075,
-50104,
-50112,
-50112,
-50112,
-50112,
-50149,
-50158,
-50158,
-50198,
-50232,
-50248,
-50262,
-50262,
-50272,
-50272,
-50281,
-50281,
-50281,
-50288,
-50295,
-50295,
-50305,
-50320,
-50363,
-50363,
-50400,
-50410,
-50410,
-50423,
-50435,
+49954,
+49961,
+49994,
+50011,
+50042,
+50042,
+50072,
+50110,
+50110,
+50117,
+50139,
+50145,
+50145,
+50153,
+50160,
+50185,
+50185,
+50192,
+50237,
+50298,
+50326,
+50345,
+50356,
+50375,
+50375,
+50375,
+50385,
+50385,
+50385,
+50392,
+50392,
+50448,
+50448,
50448,
-50453,
-50467,
-50467,
-50467,
-50485,
-50485,
-50503,
-50513,
-50535,
-50535,
-50542,
-50583,
-50589,
-50597,
-50602,
-50627,
-50640,
-50682,
-50689,
-50708,
-50712,
-50712,
-50712,
-50728,
-50746,
-50774,
-50774,
-50790,
-50802,
-50802,
-50802,
-50834,
-50847,
-50865,
-50880,
-50880,
-50880,
-50880,
-50899,
-50908,
-50923,
-50955,
-50993,
-51005,
-51005,
-51016,
-51025,
+50462,
+50521,
+50545,
+50551,
+50560,
+50560,
+50596,
+50596,
+50618,
+50648,
+50655,
+50655,
+50662,
+50757,
+50764,
+50771,
+50771,
+50783,
+50783,
+50783,
+50800,
+50813,
+50838,
+50871,
+50895,
+50903,
+50910,
+50928,
+50944,
+50951,
+50951,
+50963,
+50963,
+50987,
+50994,
+50994,
+51001,
+51022,
+51022,
+51036,
51043,
-51064,
-51064,
-51081,
-51109,
-51126,
-51178,
-51178,
-51178,
-51187,
-51220,
-51220,
+51063,
+51094,
+51094,
+51094,
+51129,
+51136,
+51136,
+51136,
+51153,
+51153,
+51153,
+51167,
+51167,
+51179,
+51179,
+51179,
+51201,
+51218,
+51225,
51239,
-51239,
-51239,
-51258,
-51274,
-51274,
-51311,
-51311,
-51311,
-51325,
-51336,
-51336,
-51336,
-51336,
-51336,
-51336,
-51336,
-51336,
-51349,
-51349,
-51369,
-51375,
-51375,
-51375,
-51375,
-51375,
-51398,
-51417,
-51417,
-51427,
-51427,
-51440,
-51465,
-51465,
-51465,
-51465,
-51465,
-51478,
-51478,
-51485,
-51503,
-51511,
-51517,
-51528,
-51550,
-51550,
-51569,
-51569,
-51586,
-51586,
-51586,
+51292,
+51299,
+51304,
+51319,
+51319,
+51345,
+51345,
+51345,
+51404,
+51416,
+51430,
+51474,
+51491,
+51510,
+51510,
+51529,
51595,
-51601,
-51608,
-51633,
-51650,
-51650,
-51650,
-51650,
-51650,
-51650,
-51670,
-51670,
-51690,
-51714,
-51714,
-51732,
-51750,
-51750,
-51782,
-51791,
-51799,
-51799,
+51595,
+51609,
+51614,
+51635,
+51684,
+51705,
+51705,
+51721,
+51753,
+51753,
+51768,
+51781,
51805,
-51820,
-51820,
-51820,
-51852,
-51856,
-51856,
-51856,
-51856,
-51869,
-51884,
-51884,
-51925,
-51936,
-51936,
-51941,
-51954,
-51954,
-51954,
-51954,
-51976,
-51976,
-51999,
-51999,
-52008,
-52038,
-52038,
-52055,
+51812,
+51830,
+51863,
+51863,
+51863,
+51875,
+51914,
+51914,
+51914,
+51914,
+51950,
+51965,
+51965,
+51972,
+52022,
+52027,
+52027,
+52042,
52055,
-52070,
-52087,
-52094,
-52129,
-52145,
-52145,
-52158,
-52165,
-52198,
+52074,
+52081,
+52093,
+52112,
+52119,
+52119,
+52140,
+52167,
+52180,
+52187,
+52197,
+52209,
52225,
52225,
-52232,
-52245,
-52262,
-52262,
-52262,
-52269,
-52269,
-52269,
-52281,
-52281,
-52290,
-52290,
-52290,
-52290,
-52316,
-52316,
-52341,
+52231,
+52258,
+52274,
+52274,
+52285,
+52314,
+52328,
+52328,
+52328,
+52328,
+52340,
+52355,
+52372,
+52372,
+52372,
52379,
-52417,
-52417,
-52426,
-52433,
-52446,
+52386,
+52419,
+52419,
+52419,
+52419,
+52432,
52450,
-52463,
-52467,
-52467,
-52467,
-52479,
-52487,
-52502,
-52522,
-52522,
-52558,
-52574,
-52574,
-52574,
-52574,
-52612,
-52612,
-52633,
-52655,
-52714,
-52722,
-52731,
-52736,
-52765,
-52778,
-52778,
-52819,
-52874,
-52891,
-52891,
-52903,
-52903,
-52903,
-52926,
-52965,
-52982,
-53003,
-53003,
-53023,
+52450,
+52491,
+52523,
+52550,
+52556,
+52576,
+52576,
+52586,
+52586,
+52586,
+52603,
+52610,
+52610,
+52610,
+52610,
+52610,
+52610,
+52644,
+52656,
+52670,
+52687,
+52701,
+52719,
+52726,
+52732,
+52756,
+52801,
+52824,
+52842,
+52842,
+52849,
+52849,
+52855,
+52876,
+52876,
+52883,
+52883,
+52897,
+52918,
+52952,
+52966,
+52973,
+52973,
+52986,
+52986,
+53010,
+53017,
+53024,
53031,
-53048,
-53062,
-53062,
-53109,
-53115,
-53115,
-53115,
-53125,
-53125,
-53125,
-53132,
-53140,
-53156,
-53156,
-53165,
-53176,
-53183,
-53226,
-53256,
-53256,
-53275,
-53293,
-53293,
-53293,
-53293,
-53293,
-53313,
-53323,
-53323,
-53323,
-53323,
-53330,
-53355,
-53355,
-53362,
-53368,
-53374,
-53374,
-53374,
-53374,
-53374,
-53374,
-53374,
-53381,
-53381,
-53381,
-53381,
-53391,
-53400,
-53412,
-53412,
-53412,
-53440,
-53440,
-53448,
-53448,
-53466,
-53481,
-53481,
-53481,
-53481,
-53481,
-53481,
-53491,
+53042,
+53076,
+53130,
+53151,
+53161,
+53203,
+53229,
+53229,
+53236,
+53243,
+53250,
+53257,
+53280,
+53280,
+53297,
+53304,
+53327,
+53327,
+53332,
+53345,
+53366,
+53390,
+53411,
+53411,
+53419,
+53419,
+53460,
+53474,
+53474,
53505,
-53521,
-53550,
-53559,
-53559,
-53570,
-53577,
-53577,
-53628,
-53644,
-53665,
-53665,
-53665,
-53675,
-53675,
+53584,
+53591,
+53607,
+53615,
+53634,
+53634,
+53641,
53675,
-53675,
-53698,
-53698,
-53719,
-53719,
-53731,
-53753,
-53753,
-53759,
-53777,
-53793,
-53814,
-53838,
+53709,
+53716,
+53733,
+53751,
+53772,
+53772,
+53788,
+53822,
+53829,
+53829,
53849,
-53884,
-53884,
-53884,
-53899,
-53899,
-53915,
-53915,
-53925,
-53953,
-53983,
-53993,
-53993,
-54029,
-54053,
-54053,
-54063,
-54063,
-54063,
+53885,
+53885,
+53885,
+53911,
+53942,
+53949,
+53949,
+53964,
+53964,
+53971,
+53978,
+53990,
+54008,
+54023,
+54030,
+54039,
+54058,
+54058,
+54058,
54075,
-54094,
-54094,
-54094,
-54104,
-54110,
-54127,
-54127,
-54127,
-54127,
-54158,
-54158,
-54195,
-54208,
-54215,
-54232,
-54232,
-54249,
-54259,
-54278,
-54278,
-54278,
-54284,
-54284,
-54284,
-54294,
-54294,
-54294,
-54310,
-54359,
-54372,
-54372,
-54372,
-54372,
-54377,
-54383,
-54415,
-54415,
-54415,
-54426,
-54447,
-54474,
+54115,
+54124,
+54124,
+54131,
+54188,
+54188,
+54205,
+54205,
+54205,
+54227,
+54227,
+54227,
+54227,
+54269,
+54276,
+54298,
+54298,
+54319,
+54319,
+54319,
+54381,
+54388,
+54392,
+54392,
54499,
54499,
-54509,
-54514,
-54514,
-54514,
-54536,
-54547,
-54547,
-54553,
-54578,
-54590,
-54590,
-54603,
-54603,
-54603,
-54619,
-54626,
-54645,
-54645,
-54660,
-54676,
-54704,
-54704,
-54704,
-54721,
-54721,
-54721,
-54729,
-54729,
-54755,
-54755,
-54755,
-54755,
-54755,
-54755,
-54771,
-54812,
-54836,
-54836,
-54846,
-54919,
-54919,
-54937,
-54962,
-54962,
-54962,
-55003,
-55023,
-55023,
-55037,
-55037,
-55037,
-55044,
-55050,
-55050,
-55061,
-55061,
-55061,
-55061,
-55061,
-55092,
-55113,
-55130,
-55142,
-55185,
-55196,
-55196,
-55196,
-55196,
-55196,
-55202,
-55261,
-55278,
-55278,
-55298,
-55298,
-55315,
-55315,
-55354,
-55354,
-55354,
-55382,
-55389,
-55405,
-55410,
-55410,
-55416,
-55416,
-55416,
-55416,
-55416,
-55416,
-55416,
-55416,
-55422,
-55458,
-55465,
-55465,
-55479,
-55508,
-55508,
-55514,
-55521,
-55540,
+54506,
+54506,
+54513,
+54513,
+54520,
+54548,
+54638,
+54651,
+54651,
+54662,
+54682,
+54710,
+54717,
+54743,
+54804,
+54804,
+54811,
+54811,
+54823,
+54843,
+54850,
+54871,
+54878,
+54890,
+54897,
+54897,
+54917,
+54933,
+54933,
+54933,
+54933,
+54940,
+54946,
+54978,
+54978,
+54998,
+54998,
+55011,
+55011,
+55025,
+55025,
+55038,
+55071,
+55081,
+55081,
+55081,
+55103,
+55103,
+55110,
+55132,
+55163,
+55186,
+55186,
+55198,
+55198,
+55198,
+55204,
+55211,
+55211,
+55223,
+55230,
+55230,
+55309,
+55316,
+55316,
+55316,
+55343,
+55350,
+55357,
+55364,
+55406,
+55459,
+55459,
+55466,
+55497,
+55533,
55540,
-55540,
-55540,
-55553,
-55563,
-55577,
-55577,
-55595,
-55595,
-55617,
-55617,
-55617,
-55621,
-55640,
-55640,
-55640,
-55640,
-55663,
-55681,
-55681,
-55726,
-55746,
-55746,
-55762,
-55762,
-55774,
-55825,
-55838,
-55854,
-55864,
-55864,
-55864,
-55886,
-55897,
-55917,
-55917,
-55931,
-55961,
-55961,
-55961,
-55985,
-56003,
-56003,
-56003,
-56025,
-56025,
-56074,
-56074,
-56074,
-56105,
-56118,
-56141,
-56141,
-56141,
-56141,
-56141,
-56169,
-56203,
-56203,
-56203,
-56203,
-56221,
-56225,
-56258,
-56272,
-56278,
-56321,
-56321,
-56339,
-56372,
-56372,
-56397,
-56411,
-56428,
-56437,
-56437,
-56458,
-56469,
-56538,
-56544,
-56562,
-56562,
-56579,
-56579,
-56593,
-56593,
-56593,
-56613,
-56613,
-56619,
-56670,
-56676,
-56705,
-56705,
-56705,
-56723,
-56733,
-56733,
-56733,
-56733,
-56739,
-56739,
-56739,
+55559,
+55603,
+55608,
+55608,
+55614,
+55629,
+55648,
+55655,
+55680,
+55756,
+55756,
+55763,
+55770,
+55770,
+55782,
+55782,
+55789,
+55843,
+55843,
+55843,
+55862,
+55902,
+55909,
+55921,
+55932,
+55967,
+55974,
+55995,
+56019,
+56026,
+56069,
+56069,
+56092,
+56119,
+56137,
+56137,
+56137,
+56137,
+56144,
+56161,
+56206,
+56213,
+56213,
+56213,
+56228,
+56244,
+56251,
+56251,
+56291,
+56303,
+56310,
+56310,
+56320,
+56361,
+56381,
+56381,
+56381,
+56399,
+56406,
+56413,
+56413,
+56482,
+56503,
+56503,
+56517,
+56566,
+56586,
+56586,
+56586,
+56623,
+56630,
+56649,
+56683,
+56742,
56758,
56758,
-56758,
-56775,
-56785,
-56793,
-56793,
-56819,
-56837,
-56862,
-56862,
-56862,
-56868,
-56868,
-56917,
-56917,
-56942,
-56942,
-56968,
-57007,
-57007,
-57039,
-57043,
-57043,
-57043,
-57043,
-57049,
-57049,
-57075,
-57075,
-57103,
-57118,
-57143,
-57150,
-57165,
-57180,
-57180,
-57187,
-57234,
-57234,
-57252,
-57258,
-57258,
-57258,
-57271,
-57285,
-57285,
-57285,
-57294,
-57294,
-57294,
-57304,
-57321,
+56795,
+56795,
+56822,
+56822,
+56822,
+56822,
+56848,
+56855,
+56883,
+56901,
+56914,
+56918,
+56952,
+56975,
+56999,
+57011,
+57011,
+57011,
+57018,
+57018,
+57018,
+57053,
+57053,
+57053,
+57066,
+57084,
+57091,
+57098,
+57131,
+57155,
+57169,
+57169,
+57186,
+57193,
+57193,
+57207,
+57218,
+57241,
+57241,
+57255,
+57272,
+57314,
+57330,
+57330,
57343,
-57374,
-57386,
-57386,
-57428,
-57436,
-57449,
-57449,
-57455,
-57471,
-57482,
-57491,
+57378,
+57393,
+57400,
+57408,
+57441,
+57481,
+57494,
+57501,
+57507,
+57514,
+57521,
57528,
-57550,
-57560,
-57560,
-57560,
+57544,
+57551,
+57558,
57566,
-57584,
-57584,
-57611,
-57627,
-57627,
-57656,
-57656,
-57656,
-57656,
-57675,
-57692,
-57727,
-57727,
-57727,
-57727,
-57733,
-57744,
-57780,
-57790,
-57790,
-57790,
-57804,
-57810,
+57603,
+57603,
+57609,
+57631,
+57631,
+57657,
+57657,
+57657,
+57657,
+57657,
+57663,
+57672,
+57672,
+57687,
+57687,
+57702,
+57718,
+57741,
+57741,
+57772,
+57772,
+57803,
57810,
-57810,
-57831,
-57855,
-57863,
-57874,
-57887,
-57887,
-57896,
-57938,
-57938,
-57938,
-57938,
-57963,
-57963,
-57963,
-57967,
-57967,
-57990,
-57990,
-57990,
-58012,
-58023,
-58023,
-58066,
-58119,
-58119,
-58144,
-58154,
-58167,
-58189,
-58203,
-58203,
-58217,
-58217,
-58234,
-58234,
-58234,
-58246,
-58259,
-58285,
-58322,
-58322,
-58362,
-58378,
-58386,
-58393,
-58430,
-58430,
-58430,
-58430,
-58451,
-58451,
-58470,
-58479,
-58479,
-58479,
-58530,
-58544,
-58544,
-58570,
-58570,
-58570,
-58583,
-58583,
-58592,
-58592,
-58606,
-58618,
-58618,
-58628,
-58648,
-58648,
-58663,
-58686,
-58702,
-58717,
-58727,
-58734,
-58744,
-58744,
-58776,
-58776,
-58810,
-58810,
-58810,
-58821,
-58834,
-58845,
-58845,
-58857,
-58874,
-58913,
-58913,
-58913,
-58939,
-58945,
-58955,
-58968,
-58992,
-58992,
-59002,
-59002,
-59035,
-59064,
-59076,
-59120,
-59150,
-59169,
-59169,
-59176,
-59176,
-59193,
-59200,
-59232,
-59232,
-59247,
-59261,
-59284,
-59312,
-59338,
-59338,
-59345,
-59355,
-59367,
-59385,
-59392,
-59419,
-59419,
-59431,
-59438,
-59501,
-59515,
-59546,
-59566,
-59580,
-59587,
-59594,
-59619,
-59638,
-59652,
-59652,
+57827,
+57873,
+57886,
+57893,
+57893,
+57902,
+57902,
+57902,
+57912,
+57927,
+57934,
+57934,
+57940,
+57940,
+57951,
+57955,
+57973,
+58031,
+58052,
+58052,
+58052,
+58052,
+58085,
+58085,
+58118,
+58143,
+58159,
+58159,
+58159,
+58159,
+58194,
+58194,
+58194,
+58250,
+58250,
+58250,
+58250,
+58250,
+58276,
+58276,
+58289,
+58289,
+58327,
+58327,
+58350,
+58366,
+58396,
+58396,
+58396,
+58434,
+58450,
+58450,
+58467,
+58467,
+58467,
+58467,
+58467,
+58500,
+58500,
+58500,
+58509,
+58535,
+58535,
+58546,
+58554,
+58554,
+58580,
+58580,
+58580,
+58601,
+58617,
+58630,
+58645,
+58674,
+58674,
+58674,
+58674,
+58674,
+58674,
+58674,
+58690,
+58690,
+58690,
+58706,
+58714,
+58728,
+58728,
+58728,
+58728,
+58728,
+58728,
+58728,
+58735,
+58735,
+58735,
+58740,
+58740,
+58754,
+58754,
+58754,
+58754,
+58778,
+58797,
+58797,
+58797,
+58815,
+58830,
+58830,
+58830,
+58890,
+58890,
+58890,
+58897,
+58897,
+58897,
+58907,
+58935,
+58935,
+58940,
+58940,
+58950,
+59011,
+59011,
+59021,
+59080,
+59132,
+59132,
+59132,
+59132,
+59214,
+59258,
+59258,
+59277,
+59298,
+59309,
+59319,
+59341,
+59358,
+59370,
+59370,
+59377,
+59411,
+59411,
+59411,
+59421,
+59482,
+59543,
+59558,
+59558,
+59578,
+59578,
+59578,
+59578,
+59624,
+59624,
+59649,
+59666,
+59696,
+59696,
+59696,
59696,
-59709,
-59716,
-59716,
-59716,
-59723,
-59764,
-59764,
-59771,
-59822,
-59859,
-59859,
-59866,
-59891,
-59898,
-59923,
-59937,
-59949,
-59956,
-59956,
-59963,
-59985,
-59992,
-59992,
-59992,
-60017,
+59718,
+59718,
+59718,
+59728,
+59728,
+59728,
+59746,
+59766,
+59789,
+59829,
+59829,
+59829,
+59829,
+59846,
+59846,
+59867,
+59878,
+59907,
+59907,
+59907,
+59919,
+59919,
+59919,
+59934,
+59951,
+59966,
+59966,
+59966,
60041,
-60054,
-60087,
-60087,
-60094,
-60118,
-60164,
-60178,
-60178,
-60178,
-60207,
-60207,
-60216,
-60234,
-60247,
-60265,
-60272,
-60279,
-60279,
-60279,
-60313,
-60313,
-60320,
-60345,
-60374,
-60382,
-60394,
-60394,
-60394,
-60394,
-60394,
-60449,
-60449,
-60458,
-60483,
-60483,
-60496,
-60503,
-60519,
-60526,
-60540,
-60554,
-60554,
-60570,
-60578,
-60592,
-60592,
-60599,
-60607,
-60624,
-60631,
-60638,
-60638,
-60708,
-60715,
+60041,
+60052,
+60052,
+60086,
+60086,
+60086,
+60102,
+60127,
+60127,
+60132,
+60132,
+60132,
+60132,
+60139,
+60139,
+60139,
+60154,
+60154,
+60176,
+60194,
+60211,
+60221,
+60251,
+60305,
+60305,
+60305,
+60311,
+60328,
+60335,
+60335,
+60341,
+60440,
+60440,
+60440,
+60440,
+60440,
+60440,
+60440,
+60463,
+60504,
+60504,
+60504,
+60524,
+60524,
+60524,
+60524,
+60544,
+60603,
+60603,
+60603,
+60622,
+60682,
+60709,
+60709,
+60709,
60722,
-60729,
-60729,
-60729,
-60736,
-60736,
-60736,
-60747,
-60765,
-60789,
-60832,
-60839,
-60839,
-60839,
-60858,
-60858,
-60858,
-60858,
-60873,
-60880,
-60902,
-60924,
-60931,
-60938,
-60945,
-60952,
-60982,
-60989,
-61009,
-61066,
-61078,
-61078,
-61078,
-61078,
-61105,
-61105,
-61144,
-61165,
-61165,
-61165,
-61180,
-61180,
-61180,
-61224,
-61231,
-61258,
-61268,
-61275,
-61295,
-61295,
-61295,
-61302,
-61316,
-61316,
-61351,
-61369,
-61410,
-61428,
-61450,
-61450,
-61463,
+60728,
+60728,
+60751,
+60787,
+60799,
+60799,
+60799,
+60821,
+60821,
+60821,
+60821,
+60833,
+60846,
+60846,
+60851,
+60857,
+60863,
+60863,
+60891,
+60926,
+60926,
+60934,
+60944,
+60970,
+60970,
+60970,
+60970,
+61014,
+61014,
+61014,
+61014,
+61014,
+61020,
+61027,
+61027,
+61044,
+61064,
+61068,
+61096,
+61096,
+61096,
+61102,
+61124,
+61153,
+61176,
+61182,
+61211,
+61211,
+61225,
+61225,
+61232,
+61249,
+61294,
+61301,
+61308,
+61336,
+61401,
+61401,
+61401,
+61421,
+61439,
+61439,
+61439,
+61460,
+61467,
+61486,
61493,
-61511,
+61503,
+61510,
+61510,
+61510,
61552,
-61579,
+61570,
+61577,
+61590,
+61590,
61603,
+61610,
61617,
61617,
-61624,
-61624,
-61624,
-61631,
-61656,
-61682,
-61689,
-61707,
-61714,
-61721,
-61735,
-61742,
-61753,
-61760,
-61774,
-61800,
-61838,
-61850,
-61856,
-61863,
-61900,
-61917,
-61932,
-61939,
-61946,
-61960,
-61979,
-62000,
-62026,
-62033,
-62040,
-62052,
-62052,
-62061,
-62068,
-62077,
-62084,
-62096,
-62140,
-62140,
-62147,
-62153,
-62153,
-62182,
-62195,
-62195,
-62195,
-62213,
-62213,
-62239,
+61627,
+61634,
+61651,
+61658,
+61680,
+61686,
+61708,
+61740,
+61747,
+61754,
+61766,
+61780,
+61787,
+61805,
+61812,
+61812,
+61812,
+61835,
+61835,
+61904,
+61935,
+61935,
+61972,
+61991,
+61998,
+62004,
+62004,
+62004,
+62011,
+62011,
+62048,
+62055,
+62076,
+62076,
+62083,
+62116,
+62116,
+62116,
+62123,
+62160,
+62160,
+62167,
+62167,
+62185,
+62185,
+62185,
+62185,
+62252,
+62265,
62265,
62279,
-62304,
-62313,
-62320,
-62327,
-62352,
-62359,
-62366,
-62371,
-62404,
-62434,
-62477,
-62477,
-62484,
-62499,
-62515,
-62522,
-62529,
-62544,
-62565,
-62565,
-62588,
-62588,
-62593,
-62618,
-62618,
-62624,
-62624,
-62624,
-62624,
-62642,
-62660,
-62684,
-62688,
-62688,
-62702,
-62702,
-62716,
+62329,
+62342,
+62342,
+62350,
+62408,
+62455,
+62473,
+62482,
+62482,
+62489,
+62495,
+62521,
+62564,
+62564,
+62591,
+62591,
+62607,
+62620,
+62620,
+62650,
+62709,
+62709,
+62720,
62738,
-62763,
-62763,
-62782,
-62812,
-62829,
-62858,
-62858,
-62887,
-62887,
-62908,
-62915,
-62929,
-62968,
-62982,
-62982,
+62764,
+62764,
+62778,
+62778,
+62807,
+62813,
+62820,
+62832,
+62847,
+62862,
+62862,
+62862,
+62885,
+62892,
+62911,
+62918,
+62918,
+62983,
+62996,
+62996,
62996,
+62996,
+63003,
63014,
-63024,
-63054,
-63065,
-63082,
-63082,
-63107,
-63143,
-63159,
-63176,
-63176,
-63213,
-63250,
-63250,
-63291,
-63324,
+63061,
+63061,
+63061,
+63067,
+63078,
+63090,
+63090,
+63100,
+63119,
+63138,
+63151,
+63157,
+63182,
+63195,
+63202,
+63209,
+63222,
+63261,
+63273,
+63284,
+63315,
+63315,
+63315,
+63315,
63348,
-63355,
-63384,
-63384,
-63390,
-63397,
-63432,
-63439,
-63439,
-63459,
-63497,
-63497,
-63519,
-63519,
-63535,
-63549,
+63365,
+63365,
+63372,
+63382,
+63409,
+63420,
+63426,
+63463,
+63469,
+63475,
+63490,
+63525,
+63539,
+63543,
+63558,
63582,
-63601,
-63601,
-63608,
-63619,
-63655,
-63662,
-63678,
-63678,
+63599,
+63606,
+63606,
+63615,
+63622,
+63629,
+63648,
63678,
-63684,
-63718,
-63745,
-63765,
-63773,
-63779,
-63779,
-63811,
-63818,
-63859,
-63886,
-63892,
-63947,
-63947,
-63988,
-64025,
-64034,
-64058,
-64067,
-64090,
-64106,
-64106,
-64106,
-64111,
-64111,
-64129,
-64129,
-64135,
-64152,
-64189,
-64189,
-64189,
-64189,
-64196,
-64196,
-64209,
-64222,
-64222,
-64235,
-64235,
-64263,
-64270,
-64270,
-64270,
-64296,
-64314,
-64321,
-64321,
-64321,
-64321,
-64321,
-64328,
-64347,
-64359,
-64359,
+63704,
+63710,
+63717,
+63737,
+63744,
+63759,
+63772,
+63821,
+63834,
+63840,
+63849,
+63849,
+63881,
+63894,
+63901,
+63901,
+63908,
+63915,
+63930,
+63946,
+63953,
+63959,
+63985,
+63992,
+64005,
+64011,
+64018,
+64059,
+64066,
+64066,
+64089,
+64116,
+64123,
+64137,
+64151,
+64166,
+64205,
+64219,
+64219,
+64273,
+64273,
+64273,
+64294,
+64313,
+64331,
+64348,
64359,
-64359,
-64359,
-64388,
-64427,
-64434,
-64434,
-64461,
-64468,
-64499,
-64506,
-64513,
-64513,
-64513,
-64513,
-64513,
-64522,
-64522,
-64558,
-64568,
-64602,
-64615,
-64621,
-64627,
-64627,
-64627,
-64627,
-64627,
-64654,
-64654,
-64661,
-64661,
-64675,
-64675,
-64675,
-64675,
-64685,
-64685,
-64704,
-64730,
-64746,
-64761,
-64768,
-64768,
-64811,
-64811,
-64811,
-64811,
-64811,
-64832,
-64844,
-64844,
-64859,
-64878,
-64888,
-64902,
-64933,
-64933,
-64976,
-64987,
-65004,
-65004,
-65013,
-65013,
-65023,
-65023,
-65047,
-65047,
-65047,
-65047,
-65054,
-65060,
-65078,
-65104,
-65104,
-65116,
-65127,
-65127,
-65137,
-65156,
-65178,
-65178,
-65178,
-65214,
-65214,
-65214,
-65238,
-65238,
-65266,
-65266,
-65266,
-65266,
-65274,
-65294,
-65294,
-65294,
-65294,
-65306,
-65306,
-65306,
-65363,
-65363,
-65363,
-65363,
-65390,
+64385,
+64401,
+64401,
+64421,
+64479,
+64479,
+64493,
+64500,
+64519,
+64526,
+64526,
+64532,
+64560,
+64588,
+64588,
+64594,
+64645,
+64657,
+64657,
+64666,
+64682,
+64714,
+64714,
+64721,
+64767,
+64777,
+64784,
+64784,
+64795,
+64807,
+64814,
+64827,
+64865,
+64890,
+64916,
+64923,
+64977,
+65018,
+65024,
+65058,
+65075,
+65081,
+65096,
+65111,
+65157,
+65194,
+65194,
+65211,
+65243,
+65252,
+65258,
+65276,
+65307,
+65325,
+65337,
+65337,
+65360,
+65360,
+65360,
+65388,
65402,
-65408,
-65408,
-65408,
-65408,
-65408,
-65408,
-65454,
-65454,
-65454,
-65464,
-65464,
-65484,
-65491,
-65505,
-65518,
-65518,
-65518,
-65530,
-65554,
-65572,
-65592,
-65639,
-65639,
-65648,
-65655,
-65665,
-65665,
-65665,
-65699,
-65699,
-65711,
+65424,
+65431,
+65449,
+65488,
+65521,
+65521,
+65567,
+65600,
+65631,
+65637,
+65701,
65731,
65731,
65731,
-65731,
-65767,
-65787,
-65787,
-65787,
-65808,
-65828,
-65866,
-65878,
-65878,
-65889,
-65889,
-65930,
-65930,
-65930,
-65930,
-65930,
-65930,
-65930,
-65936,
-65951,
-65957,
-65957,
-65973,
-65979,
-66004,
-66004,
-66050,
-66050,
-66097,
-66113,
-66140,
-66140,
-66149,
-66175,
-66204,
-66213,
-66213,
-66229,
+65744,
+65757,
+65763,
+65763,
+65783,
+65827,
+65841,
+65841,
+65858,
+65914,
+65921,
+65928,
+65943,
+65958,
+65965,
+65998,
+66012,
+66081,
+66120,
+66127,
+66127,
+66193,
+66207,
66229,
-66263,
-66271,
-66293,
-66293,
-66320,
-66320,
-66339,
-66339,
-66339,
-66339,
-66339,
-66349,
-66355,
-66363,
-66363,
-66407,
-66407,
-66407,
-66416,
-66416,
-66425,
-66425,
-66444,
-66470,
-66470,
-66490,
-66490,
-66490,
-66506,
-66506,
-66521,
-66521,
-66557,
-66557,
-66557,
-66557,
-66557,
-66557,
-66565,
-66565,
-66565,
-66596,
-66632,
-66641,
-66641,
-66641,
-66641,
-66641,
+66259,
+66267,
+66267,
+66267,
+66289,
+66289,
+66333,
+66333,
+66333,
+66333,
+66333,
+66333,
+66366,
+66386,
+66403,
+66403,
+66414,
+66431,
+66445,
+66452,
+66452,
+66461,
+66479,
+66486,
+66495,
+66527,
+66560,
+66560,
+66590,
+66623,
+66642,
+66642,
66655,
-66655,
-66663,
-66663,
-66663,
-66674,
-66684,
-66703,
-66717,
-66734,
-66734,
-66774,
-66800,
-66836,
-66853,
-66863,
-66863,
-66924,
-66924,
-66937,
-66951,
-66970,
-66970,
-66970,
-67005,
-67005,
-67005,
-67039,
-67067,
-67067,
-67090,
-67097,
-67097,
-67113,
-67119,
-67119,
-67150,
-67170,
-67170,
-67182,
-67188,
-67253,
-67268,
-67295,
-67311,
-67311,
-67311,
-67319,
-67335,
-67340,
-67356,
-67356,
-67368,
-67368,
-67368,
-67377,
-67383,
-67383,
-67383,
-67383,
-67383,
-67396,
-67396,
-67408,
-67426,
+66669,
+66690,
+66697,
+66722,
+66722,
+66722,
+66722,
+66736,
+66736,
+66766,
+66780,
+66805,
+66814,
+66880,
+66880,
+66880,
+66906,
+66943,
+66943,
+66943,
+66956,
+66981,
+66995,
+66995,
+66995,
+67003,
+67021,
+67041,
+67089,
+67096,
+67096,
+67096,
+67096,
+67116,
+67116,
+67142,
+67160,
+67160,
+67183,
+67183,
+67195,
+67233,
+67233,
+67239,
+67277,
+67277,
+67277,
+67320,
+67365,
+67365,
+67373,
+67373,
+67393,
+67400,
+67400,
+67409,
+67421,
+67433,
+67448,
+67448,
67456,
-67470,
-67494,
-67494,
-67494,
-67494,
-67506,
-67506,
-67506,
-67506,
-67506,
-67511,
-67529,
-67529,
-67551,
-67557,
-67565,
-67581,
-67587,
-67604,
-67604,
-67611,
-67611,
-67611,
-67621,
-67621,
-67628,
-67628,
-67672,
-67693,
-67693,
-67705,
-67712,
-67724,
-67724,
-67724,
-67724,
-67740,
-67749,
-67771,
-67781,
-67781,
-67781,
-67808,
-67808,
-67808,
-67815,
-67862,
-67873,
-67873,
-67873,
-67882,
-67882,
-67888,
-67906,
-67912,
-67931,
-67931,
-67931,
-67941,
-67973,
-67973,
-68011,
-68045,
-68045,
-68062,
-68062,
-68068,
-68068,
-68080,
-68091,
-68091,
-68127,
-68151,
-68151,
-68172,
-68172,
-68172,
-68172,
-68179,
-68189,
-68204,
-68224,
-68233,
-68251,
-68251,
-68258,
-68258,
-68258,
-68270,
-68270,
-68270,
-68307,
-68307,
-68326,
-68326,
-68366,
-68366,
+67456,
+67456,
+67477,
+67493,
+67493,
+67493,
+67512,
+67518,
+67518,
+67533,
+67533,
+67553,
+67585,
+67585,
+67592,
+67592,
+67592,
+67592,
+67592,
+67592,
+67592,
+67592,
+67605,
+67656,
+67684,
+67719,
+67719,
+67743,
+67761,
+67761,
+67770,
+67813,
+67825,
+67831,
+67840,
+67860,
+67860,
+67866,
+67881,
+67927,
+67936,
+67936,
+67936,
+67951,
+67951,
+67951,
+67977,
+67977,
+67983,
+67989,
+67996,
+68015,
+68015,
+68024,
+68031,
+68031,
+68053,
+68053,
+68074,
+68110,
+68137,
+68145,
+68171,
+68191,
+68191,
+68191,
+68234,
+68252,
+68266,
+68275,
+68284,
+68296,
+68296,
+68296,
+68296,
+68311,
+68343,
+68350,
+68350,
+68350,
+68350,
+68358,
68366,
-68385,
-68385,
-68385,
-68391,
-68391,
-68391,
-68420,
-68427,
-68427,
-68427,
-68427,
-68437,
-68437,
-68437,
-68437,
-68445,
-68445,
-68462,
-68462,
-68462,
-68475,
-68475,
-68475,
-68488,
-68497,
-68504,
-68504,
-68527,
-68550,
-68563,
-68563,
-68582,
-68582,
-68582,
-68582,
-68622,
-68622,
-68651,
-68656,
-68669,
-68682,
-68682,
-68693,
-68693,
-68701,
-68701,
-68701,
-68701,
-68701,
-68701,
-68729,
-68743,
-68743,
-68757,
-68757,
-68773,
-68789,
-68801,
-68833,
-68833,
-68833,
-68833,
-68840,
-68866,
-68866,
-68866,
-68881,
-68909,
-68925,
-68946,
-68989,
-68989,
-69005,
-69015,
-69029,
-69044,
-69076,
-69076,
-69095,
-69095,
-69102,
-69125,
-69125,
-69125,
-69125,
-69139,
-69161,
-69161,
-69166,
-69172,
-69172,
-69178,
-69186,
-69215,
-69215,
-69243,
-69243,
-69243,
-69273,
-69273,
-69273,
-69273,
-69283,
-69299,
-69299,
-69299,
-69299,
-69299,
-69340,
-69381,
+68387,
+68395,
+68401,
+68438,
+68455,
+68494,
+68494,
+68510,
+68510,
+68524,
+68524,
+68536,
+68536,
+68553,
+68562,
+68572,
+68591,
+68591,
+68591,
+68601,
+68641,
+68659,
+68659,
+68659,
+68659,
+68659,
+68659,
+68659,
+68718,
+68718,
+68718,
+68738,
+68788,
+68844,
+68844,
+68850,
+68850,
+68850,
+68850,
+68862,
+68880,
+68880,
+68880,
+68890,
+68907,
+68919,
+68919,
+68929,
+68963,
+69010,
+69010,
+69018,
+69039,
+69050,
+69050,
+69068,
+69116,
+69116,
+69116,
+69116,
+69145,
+69200,
+69200,
+69233,
+69233,
+69245,
+69251,
+69257,
+69257,
+69285,
+69292,
+69300,
+69341,
+69341,
+69341,
+69341,
+69341,
+69353,
+69353,
+69363,
+69372,
+69372,
69388,
-69398,
-69398,
-69398,
-69398,
-69398,
-69438,
-69438,
-69438,
-69445,
-69445,
-69476,
-69476,
-69476,
-69481,
-69503,
-69541,
-69541,
-69541,
-69573,
-69593,
-69593,
-69593,
-69609,
-69619,
-69661,
-69661,
-69700,
-69706,
-69736,
-69736,
-69770,
-69770,
-69776,
-69799,
-69840,
-69840,
-69875,
-69894,
-69894,
-69917,
-69933,
-69949,
-69949,
-69949,
-69954,
-69965,
-69965,
-69965,
-69965,
+69388,
+69406,
+69434,
+69434,
+69434,
+69448,
+69448,
+69448,
+69471,
+69480,
+69502,
+69502,
+69502,
+69502,
+69502,
+69502,
+69502,
+69502,
+69530,
+69530,
+69537,
+69597,
+69627,
+69627,
+69627,
+69633,
+69652,
+69652,
+69652,
+69670,
+69670,
+69670,
+69682,
+69697,
+69713,
+69713,
+69749,
+69766,
+69772,
+69772,
+69789,
+69807,
+69834,
+69834,
+69843,
+69858,
+69874,
+69874,
+69880,
+69943,
+69959,
69965,
-69979,
-69986,
-70005,
-70010,
-70016,
-70035,
-70035,
-70072,
-70082,
-70119,
-70158,
-70168,
-70177,
-70202,
-70230,
-70242,
-70242,
-70275,
-70282,
-70282,
-70282,
-70296,
-70296,
-70296,
-70296,
-70296,
-70302,
-70302,
+69971,
+70027,
+70027,
+70027,
+70045,
+70065,
+70101,
+70101,
+70101,
+70101,
+70101,
+70101,
+70113,
+70149,
+70198,
+70205,
+70211,
+70224,
+70224,
+70224,
+70251,
+70270,
70302,
70302,
-70302,
-70324,
-70324,
-70341,
-70367,
-70392,
-70425,
-70467,
-70467,
-70504,
-70504,
-70522,
-70522,
-70522,
-70561,
-70561,
-70580,
-70601,
-70612,
-70612,
-70663,
-70663,
-70669,
-70669,
-70669,
-70669,
-70698,
-70698,
-70722,
-70734,
-70750,
-70756,
-70794,
-70794,
-70809,
-70819,
-70819,
-70819,
-70853,
-70870,
-70906,
-70917,
-70922,
-70935,
-70950,
-70977,
-70990,
-71014,
-71024,
-71041,
-71076,
-71076,
-71090,
-71090,
+70313,
+70320,
+70320,
+70320,
+70340,
+70391,
+70397,
+70410,
+70441,
+70464,
+70478,
+70478,
+70495,
+70495,
+70495,
+70495,
+70495,
+70549,
+70549,
+70549,
+70549,
+70569,
+70584,
+70591,
+70591,
+70591,
+70606,
+70606,
+70606,
+70623,
+70631,
+70638,
+70638,
+70682,
+70682,
+70689,
+70710,
+70721,
+70721,
+70728,
+70728,
+70752,
+70752,
+70752,
+70762,
+70762,
+70769,
+70769,
+70769,
+70796,
+70796,
+70810,
+70817,
+70855,
+70882,
+70882,
+70882,
+70888,
+70911,
+70927,
+70927,
+70943,
+70978,
+70978,
+71002,
+71021,
+71036,
+71036,
+71043,
+71057,
+71057,
+71057,
+71083,
71100,
-71125,
-71125,
-71131,
-71131,
-71137,
-71157,
+71113,
+71113,
+71129,
71169,
-71181,
-71181,
-71181,
-71193,
-71201,
-71210,
-71216,
-71243,
-71253,
-71253,
-71290,
-71306,
-71372,
-71391,
-71391,
-71405,
-71423,
-71423,
-71428,
-71428,
-71443,
-71460,
-71460,
-71460,
-71460,
-71460,
-71460,
-71460,
-71460,
-71460,
-71460,
-71511,
-71511,
+71176,
+71176,
+71184,
+71228,
+71228,
+71238,
+71238,
+71260,
+71272,
+71272,
+71272,
+71272,
+71291,
+71299,
+71299,
+71341,
+71404,
+71411,
+71419,
+71459,
+71483,
+71483,
+71508,
71521,
71535,
-71543,
-71548,
-71548,
-71553,
-71553,
-71573,
-71573,
-71596,
-71625,
-71625,
-71625,
-71639,
-71667,
-71674,
-71674,
-71698,
-71705,
-71705,
-71705,
-71725,
-71732,
-71750,
-71773,
-71773,
-71773,
-71780,
-71787,
-71805,
-71805,
-71805,
-71835,
-71869,
-71880,
-71885,
-71892,
-71914,
-71921,
-71950,
+71535,
+71535,
+71571,
+71578,
+71578,
+71587,
+71594,
+71616,
+71616,
+71627,
+71637,
+71644,
+71644,
+71644,
+71664,
+71671,
+71671,
+71671,
+71706,
+71746,
+71746,
+71786,
+71803,
+71838,
+71853,
+71862,
+71888,
+71895,
+71916,
+71916,
+71937,
+71976,
71976,
-71993,
-71993,
-72005,
-72012,
-72019,
-72026,
-72062,
-72093,
-72100,
-72125,
-72146,
-72146,
-72146,
-72195,
-72233,
-72270,
-72294,
-72307,
-72317,
-72345,
-72377,
-72384,
-72413,
+71982,
+72006,
+72021,
+72021,
+72030,
+72035,
+72035,
+72035,
+72043,
+72050,
+72085,
+72099,
+72099,
+72121,
+72134,
+72134,
+72140,
+72160,
+72160,
+72160,
+72169,
+72194,
+72208,
+72208,
+72234,
+72252,
+72259,
+72259,
+72273,
+72292,
+72343,
+72343,
+72364,
+72390,
+72390,
+72390,
+72397,
+72397,
+72397,
+72397,
+72397,
+72397,
72426,
72426,
-72449,
-72449,
-72463,
-72463,
-72479,
-72479,
-72486,
-72505,
-72511,
-72531,
-72538,
-72558,
-72565,
-72565,
-72565,
-72591,
-72598,
-72608,
+72461,
+72478,
+72490,
+72497,
+72526,
+72577,
+72577,
+72584,
+72596,
+72633,
+72633,
+72640,
+72640,
72640,
-72658,
-72686,
-72700,
-72736,
-72743,
-72743,
-72743,
-72743,
-72771,
-72803,
-72819,
-72832,
-72832,
-72857,
-72864,
-72874,
-72897,
-72910,
-72918,
-72918,
-72941,
-72964,
-72964,
-72976,
-72976,
-72990,
-73023,
-73023,
-73030,
-73038,
-73044,
-73070,
-73079,
-73079,
-73086,
-73093,
-73120,
-73139,
-73146,
-73146,
-73153,
-73164,
+72674,
+72674,
+72674,
+72674,
+72674,
+72674,
+72684,
+72716,
+72723,
+72730,
+72772,
+72772,
+72795,
+72795,
+72837,
+72914,
+72914,
+72914,
+72933,
+72965,
+72973,
+72978,
+72978,
+73009,
+73033,
+73040,
+73062,
+73062,
+73101,
+73108,
+73108,
+73115,
+73144,
+73144,
+73158,
+73201,
73213,
-73262,
-73277,
-73277,
-73292,
-73325,
-73325,
-73355,
-73361,
-73390,
-73390,
-73407,
-73414,
+73213,
+73219,
+73219,
+73219,
+73219,
+73248,
+73303,
+73303,
+73310,
+73323,
+73362,
+73389,
+73389,
73414,
-73421,
-73440,
-73479,
-73487,
-73502,
-73511,
-73527,
+73445,
+73445,
+73445,
+73456,
+73490,
+73506,
+73506,
+73526,
+73543,
+73549,
73549,
-73556,
-73576,
-73576,
-73576,
-73586,
-73595,
-73595,
-73602,
-73602,
-73621,
-73663,
-73670,
-73684,
-73691,
-73724,
-73743,
+73566,
+73573,
+73573,
+73573,
+73585,
+73597,
+73604,
+73604,
+73614,
+73639,
+73639,
+73649,
+73666,
+73666,
+73685,
+73685,
+73696,
+73735,
+73735,
73771,
-73783,
-73783,
-73783,
-73783,
-73800,
-73800,
-73805,
-73811,
-73828,
-73828,
-73833,
-73853,
-73870,
-73875,
-73875,
-73894,
-73935,
-73959,
-73979,
-74000,
-74000,
-74006,
-74013,
-74013,
-74013,
-74042,
-74055,
-74062,
-74069,
-74069,
-74069,
-74069,
-74076,
-74082,
-74107,
-74114,
-74121,
-74141,
-74146,
-74166,
-74166,
-74184,
-74205,
-74219,
-74259,
-74259,
-74259,
-74288,
-74329,
-74329,
-74336,
-74336,
-74376,
-74383,
-74383,
-74383,
-74390,
-74410,
-74417,
-74417,
-74424,
-74431,
-74453,
-74467,
-74481,
-74514,
-74537,
-74552,
-74552,
-74552,
-74561,
-74561,
-74571,
-74571,
-74571,
-74578,
-74597,
-74597,
-74621,
-74641,
-74641,
-74648,
-74685,
-74709,
-74709,
-74724,
-74758,
-74758,
-74772,
-74782,
-74805,
-74811,
-74841,
+73771,
+73802,
+73826,
+73826,
+73836,
+73873,
+73873,
+73873,
+73873,
+73884,
+73884,
+73884,
+73884,
+73884,
+73884,
+73884,
+73903,
+73903,
+73936,
+73936,
+73936,
+73955,
+74030,
+74040,
+74066,
+74086,
+74086,
+74096,
+74105,
+74105,
+74112,
+74112,
+74124,
+74149,
+74149,
+74149,
+74149,
+74156,
+74156,
+74156,
+74180,
+74180,
+74235,
+74242,
+74279,
+74279,
+74320,
+74320,
+74335,
+74350,
+74358,
+74372,
+74372,
+74380,
+74402,
+74402,
+74434,
+74470,
+74490,
+74497,
+74508,
+74533,
+74546,
+74546,
+74546,
+74546,
+74560,
+74560,
+74567,
+74607,
+74614,
+74614,
+74623,
+74659,
+74678,
+74678,
+74693,
+74731,
+74731,
+74737,
+74737,
+74753,
+74764,
+74764,
+74764,
+74810,
+74818,
+74818,
+74828,
+74844,
+74864,
+74864,
+74864,
+74864,
+74884,
+74884,
74899,
-74912,
-74925,
-74933,
-74940,
-74959,
-74975,
-74982,
-74989,
-75002,
-75036,
-75036,
-75076,
-75083,
-75119,
-75133,
-75155,
-75169,
+74927,
+74927,
+74934,
+74955,
+75022,
+75053,
+75053,
+75062,
+75062,
+75062,
+75070,
+75079,
+75123,
+75123,
+75123,
+75123,
+75123,
+75134,
+75134,
+75134,
+75134,
+75148,
+75148,
75174,
-75195,
-75195,
-75224,
-75224,
-75224,
-75239,
-75269,
-75284,
-75284,
-75312,
-75329,
-75383,
-75383,
+75196,
+75213,
+75213,
+75213,
+75264,
+75285,
+75285,
+75285,
+75313,
+75320,
+75320,
+75333,
+75350,
+75391,
+75391,
+75391,
75404,
-75451,
-75451,
-75473,
-75473,
-75482,
-75488,
-75488,
-75488,
-75517,
-75527,
-75534,
-75534,
-75558,
-75581,
-75604,
-75644,
-75666,
-75666,
-75673,
-75706,
-75706,
-75725,
-75757,
-75764,
-75764,
-75783,
-75807,
-75827,
-75866,
-75899,
-75906,
-75913,
-75913,
-75943,
-75955,
-75967,
-75995,
-76031,
-76072,
-76072,
-76079,
-76095,
-76112,
-76112,
-76119,
-76126,
-76126,
-76133,
-76144,
-76144,
-76166,
-76186,
-76186,
-76203,
+75404,
+75412,
+75412,
+75425,
+75450,
+75458,
+75458,
+75458,
+75458,
+75458,
+75458,
+75489,
+75511,
+75511,
+75535,
+75576,
+75576,
+75576,
+75586,
+75597,
+75610,
+75610,
+75634,
+75695,
+75695,
+75695,
+75708,
+75708,
+75734,
+75734,
+75734,
+75769,
+75796,
+75809,
+75845,
+75880,
+75904,
+75910,
+75937,
+75937,
+75937,
+75937,
+75937,
+75954,
+75972,
+75972,
+75972,
+75972,
+76012,
+76012,
+76022,
+76035,
+76051,
+76051,
+76067,
+76108,
+76108,
+76108,
+76108,
+76137,
+76137,
+76137,
+76137,
+76146,
+76154,
+76154,
+76154,
+76169,
+76185,
+76185,
76203,
-76234,
-76234,
-76249,
-76263,
-76305,
-76316,
-76325,
-76343,
-76361,
-76368,
-76368,
-76368,
-76434,
-76466,
-76473,
-76481,
-76481,
-76499,
-76536,
-76536,
-76536,
-76536,
-76567,
-76567,
-76567,
-76574,
-76574,
-76582,
-76582,
-76582,
-76582,
-76593,
-76608,
-76608,
-76608,
-76608,
-76615,
-76632,
-76661,
-76668,
-76694,
-76701,
-76701,
-76701,
-76718,
-76738,
-76772,
-76780,
-76780,
-76780,
-76780,
-76794,
-76808,
-76808,
-76808,
-76825,
-76841,
-76867,
-76885,
-76912,
-76912,
-76912,
-76939,
-76939,
-76957,
-76957,
-76973,
-77001,
-77015,
-77015,
-77027,
-77027,
-77060,
-77070,
-77070,
+76216,
+76216,
+76216,
+76216,
+76228,
+76228,
+76228,
+76228,
+76246,
+76251,
+76251,
+76251,
+76251,
+76268,
+76268,
+76268,
+76360,
+76360,
+76360,
+76379,
+76397,
+76412,
+76423,
+76433,
+76472,
+76472,
+76472,
+76488,
+76488,
+76509,
+76523,
+76533,
+76539,
+76610,
+76610,
+76627,
+76635,
+76641,
+76641,
+76663,
+76663,
+76686,
+76692,
+76726,
+76771,
+76771,
+76771,
+76771,
+76816,
+76851,
+76851,
+76851,
+76851,
+76857,
+76872,
+76872,
+76888,
+76907,
+76907,
+76907,
+76965,
+76981,
+76981,
+76991,
+77022,
+77049,
+77049,
+77055,
+77088,
+77088,
+77088,
77093,
-77104,
-77114,
-77129,
-77129,
-77129,
-77136,
+77120,
77136,
77136,
-77184,
-77199,
-77221,
-77229,
-77236,
-77236,
-77249,
-77276,
-77309,
-77332,
-77362,
-77362,
-77388,
-77398,
-77404,
-77404,
-77450,
-77460,
-77487,
-77487,
-77504,
-77519,
-77539,
-77549,
-77549,
-77556,
-77556,
-77572,
-77572,
-77580,
-77610,
-77631,
-77631,
-77631,
-77631,
-77650,
-77659,
-77659,
-77659,
-77670,
-77670,
-77682,
-77682,
-77682,
-77730,
-77730,
-77730,
-77738,
-77738,
-77738,
-77738,
-77738,
-77748,
-77748,
-77761,
-77789,
-77808,
-77808,
-77824,
-77824,
-77824,
-77824,
-77824,
-77824,
-77835,
-77835,
-77867,
-77895,
-77895,
-77914,
-77914,
-77933,
-77966,
-78003,
-78039,
-78057,
-78071,
-78098,
-78122,
-78122,
-78128,
-78159,
-78159,
-78169,
-78201,
-78201,
-78208,
-78226,
-78247,
-78257,
+77166,
+77175,
+77175,
+77191,
+77201,
+77242,
+77253,
+77253,
+77261,
+77261,
+77278,
+77285,
+77285,
+77285,
+77296,
+77296,
+77305,
+77324,
+77324,
+77324,
+77344,
+77344,
+77359,
+77359,
+77364,
+77372,
+77372,
+77372,
+77372,
+77456,
+77456,
+77456,
+77462,
+77482,
+77482,
+77482,
+77500,
+77526,
+77537,
+77537,
+77548,
+77592,
+77613,
+77613,
+77613,
+77613,
+77640,
+77664,
+77664,
+77704,
+77704,
+77704,
+77734,
+77741,
+77751,
+77751,
+77774,
+77792,
+77828,
+77828,
+77839,
+77854,
+77854,
+77854,
+77863,
+77905,
+77905,
+77905,
+77905,
+77944,
+77979,
+77989,
+77989,
+77989,
+77989,
+77989,
+78016,
+78030,
+78043,
+78049,
+78058,
+78080,
+78095,
+78119,
+78127,
+78137,
+78178,
+78188,
+78205,
+78205,
+78205,
+78212,
+78217,
+78243,
78268,
78268,
-78280,
-78280,
-78280,
-78280,
-78293,
-78319,
-78319,
-78342,
-78356,
-78372,
-78381,
-78381,
-78396,
-78396,
-78396,
-78396,
-78434,
-78453,
-78453,
-78459,
-78477,
-78477,
-78477,
-78477,
+78268,
+78303,
+78316,
+78316,
+78358,
+78412,
+78422,
+78422,
+78422,
+78437,
+78450,
+78450,
+78455,
+78465,
+78487,
78487,
-78492,
-78492,
-78532,
-78542,
-78570,
-78587,
-78603,
-78633,
-78644,
-78644,
-78644,
-78644,
+78487,
+78517,
+78530,
+78530,
+78558,
+78558,
+78588,
+78595,
+78595,
+78595,
+78650,
78650,
-78693,
-78693,
-78735,
-78758,
-78787,
-78824,
-78838,
-78838,
-78838,
-78838,
-78838,
-78838,
-78849,
-78869,
-78869,
-78869,
-78869,
-78891,
-78891,
-78891,
-78891,
-78898,
-78898,
-78898,
-78918,
-78944,
-78944,
-78958,
-78965,
-78965,
-78972,
-78984,
-78998,
-78998,
-78998,
-79034,
-79057,
-79064,
+78660,
+78704,
+78704,
+78710,
+78720,
+78775,
+78785,
+78785,
+78793,
+78793,
+78807,
+78807,
+78807,
+78842,
+78842,
+78842,
+78856,
+78856,
+78873,
+78873,
+78884,
+78928,
+78942,
+78954,
+78954,
+78990,
+79019,
+79030,
+79045,
+79084,
79084,
79090,
-79090,
-79090,
-79102,
-79116,
-79123,
-79132,
-79155,
-79180,
-79180,
-79194,
-79194,
-79217,
-79217,
-79217,
-79224,
-79243,
-79243,
-79243,
-79250,
-79257,
-79264,
-79301,
+79120,
+79163,
+79169,
+79169,
+79177,
+79193,
+79193,
+79203,
+79218,
+79218,
+79230,
+79230,
+79239,
+79262,
+79262,
+79262,
+79262,
+79282,
+79282,
+79289,
+79308,
+79325,
79331,
-79339,
-79339,
-79339,
-79346,
-79353,
-79361,
-79368,
-79375,
-79397,
-79404,
-79415,
-79428,
-79428,
-79436,
-79448,
-79455,
-79455,
-79487,
-79504,
-79511,
-79534,
-79548,
-79566,
-79573,
+79348,
+79402,
+79413,
+79419,
+79419,
+79430,
+79451,
+79476,
+79476,
+79483,
+79519,
+79535,
+79535,
+79555,
79583,
-79602,
-79633,
-79648,
+79590,
+79590,
+79590,
+79590,
+79590,
+79590,
+79608,
+79638,
+79638,
+79652,
+79652,
+79652,
79670,
-79677,
-79677,
-79684,
-79684,
-79706,
-79706,
-79725,
-79764,
-79764,
-79770,
-79793,
-79793,
-79809,
-79809,
-79809,
-79809,
-79830,
-79837,
-79843,
-79876,
-79899,
-79899,
-79899,
-79936,
-79942,
-79952,
-79967,
-79998,
-80047,
-80088,
-80137,
-80144,
-80164,
-80171,
-80178,
-80178,
-80178,
-80185,
-80192,
-80239,
-80247,
-80302,
-80302,
-80326,
-80350,
-80357,
-80357,
-80385,
-80396,
-80417,
-80455,
-80455,
-80455,
-80480,
-80514,
-80531,
-80543,
-80543,
-80543,
-80571,
+79693,
+79693,
+79703,
+79709,
+79709,
+79709,
+79735,
+79750,
+79760,
+79773,
+79811,
+79835,
+79835,
+79835,
+79874,
+79874,
+79874,
+79884,
+79920,
+79920,
+79925,
+79940,
+79958,
+79988,
+79988,
+79988,
+79997,
+80043,
+80043,
+80043,
+80090,
+80090,
+80097,
+80111,
+80132,
+80132,
+80132,
+80149,
+80182,
+80182,
+80182,
+80182,
+80182,
+80182,
+80182,
+80195,
+80195,
+80214,
+80214,
+80238,
+80238,
+80238,
+80238,
+80238,
+80262,
+80293,
+80293,
+80303,
+80361,
+80382,
+80382,
+80392,
+80415,
+80415,
+80415,
+80415,
+80434,
+80434,
+80434,
+80434,
+80434,
+80463,
+80463,
+80463,
+80482,
+80482,
+80482,
+80490,
+80508,
+80508,
+80508,
+80508,
+80519,
+80537,
+80537,
+80564,
80618,
80618,
-80625,
-80685,
-80690,
-80711,
-80718,
-80741,
-80755,
-80776,
-80776,
-80776,
-80776,
-80790,
-80790,
-80797,
-80815,
-80838,
-80856,
-80863,
-80870,
-80877,
-80877,
+80618,
+80634,
+80675,
+80675,
+80675,
+80675,
+80675,
+80675,
+80675,
+80675,
+80705,
+80742,
+80748,
+80748,
+80764,
+80764,
+80764,
+80775,
+80775,
+80775,
+80775,
+80784,
+80839,
+80853,
+80853,
+80862,
80877,
-80885,
-80904,
-80948,
-80965,
-80986,
-81006,
-81006,
-81027,
-81041,
-81041,
-81062,
-81062,
+80884,
+80890,
+80906,
+80930,
+80930,
+80930,
+80930,
+80963,
+80979,
+80979,
+80992,
+81019,
+81026,
+81037,
+81037,
+81071,
+81071,
+81087,
81087,
-81094,
-81094,
-81094,
+81087,
+81108,
81108,
-81117,
-81124,
-81143,
-81150,
-81173,
-81192,
-81210,
-81210,
-81227,
-81266,
-81279,
-81302,
-81302,
-81309,
-81309,
-81337,
-81348,
-81355,
-81362,
-81386,
-81411,
-81421,
-81421,
-81456,
-81480,
-81504,
-81529,
-81555,
-81590,
-81597,
-81604,
-81621,
-81621,
-81628,
-81628,
-81652,
-81680,
-81680,
+81119,
+81119,
+81134,
+81134,
+81134,
+81134,
+81146,
+81146,
+81169,
+81188,
+81236,
+81249,
+81249,
+81273,
+81346,
+81346,
+81367,
+81381,
+81413,
+81413,
+81413,
+81452,
+81457,
+81457,
+81469,
+81469,
+81481,
+81488,
+81495,
+81495,
+81511,
+81511,
+81524,
+81524,
+81524,
+81532,
+81558,
+81596,
+81632,
+81632,
+81632,
+81632,
+81645,
+81651,
+81651,
81707,
-81714,
-81738,
-81738,
-81763,
-81776,
-81801,
-81808,
-81830,
-81844,
-81865,
-81872,
-81884,
-81884,
-81896,
+81740,
+81740,
+81778,
+81821,
+81826,
+81826,
+81826,
+81851,
+81870,
+81870,
81896,
-81896,
-81903,
-81903,
-81917,
-81924,
-81939,
-81995,
-82003,
-82026,
-82056,
-82056,
-82056,
-82078,
-82078,
-82086,
-82109,
-82150,
-82165,
-82165,
-82186,
-82186,
-82186,
-82186,
-82186,
-82208,
-82208,
-82226,
+81914,
+81976,
+81976,
+81976,
+81999,
+82014,
+82014,
+82024,
+82066,
+82081,
+82081,
+82081,
+82099,
+82099,
+82107,
+82116,
+82116,
+82116,
+82116,
+82116,
+82116,
+82132,
+82132,
+82139,
+82166,
+82166,
+82166,
+82192,
+82213,
+82213,
+82213,
82226,
-82239,
-82284,
-82291,
-82301,
-82322,
-82339,
-82361,
-82368,
-82396,
-82412,
-82425,
-82425,
-82425,
-82440,
-82457,
-82489,
-82503,
-82522,
-82522,
-82541,
-82550,
-82567,
-82567,
-82576,
-82594,
-82601,
-82601,
-82616,
-82616,
-82616,
-82616,
-82634,
-82634,
-82634,
-82655,
-82662,
-82676,
-82676,
-82703,
-82737,
-82744,
-82774,
-82816,
-82839,
-82839,
-82869,
-82894,
-82913,
-82929,
+82244,
+82251,
+82263,
+82263,
+82289,
+82289,
+82289,
+82299,
+82338,
+82349,
+82349,
+82349,
+82389,
+82403,
+82403,
+82410,
+82418,
+82418,
+82418,
+82428,
+82428,
+82475,
+82482,
+82515,
+82515,
+82515,
+82515,
+82515,
+82559,
+82559,
+82559,
+82559,
+82559,
+82595,
+82595,
+82606,
+82622,
+82635,
+82643,
+82660,
+82660,
+82672,
+82672,
+82683,
+82718,
+82736,
+82736,
+82736,
+82756,
+82786,
+82786,
+82786,
+82805,
+82813,
+82826,
+82836,
+82875,
+82875,
+82875,
+82875,
+82907,
+82907,
+82907,
+82907,
+82925,
+82925,
+82925,
82941,
-82954,
-82954,
-82954,
-82978,
-82983,
-82983,
-83017,
-83024,
-83024,
-83024,
-83024,
+82985,
83024,
-83031,
-83049,
-83092,
-83111,
-83118,
-83131,
-83138,
-83162,
-83182,
-83202,
-83209,
-83209,
-83216,
-83216,
-83216,
-83251,
-83251,
-83251,
-83251,
-83258,
-83272,
-83314,
-83314,
-83314,
-83354,
-83366,
-83366,
-83397,
-83412,
-83419,
-83419,
-83434,
-83440,
-83464,
-83464,
-83497,
-83497,
-83497,
-83524,
-83542,
-83556,
-83611,
-83611,
-83611,
-83611,
-83616,
-83616,
-83667,
-83675,
-83681,
-83704,
-83730,
-83730,
-83749,
-83767,
-83784,
-83789,
-83823,
-83823,
-83858,
+83041,
+83041,
+83077,
+83086,
+83086,
+83086,
+83105,
+83117,
+83117,
+83117,
+83157,
+83157,
+83157,
+83157,
+83196,
+83211,
+83221,
+83249,
+83249,
+83249,
+83249,
+83249,
+83249,
+83265,
+83265,
+83265,
+83304,
+83394,
+83394,
+83394,
+83427,
+83427,
+83427,
+83427,
+83449,
+83449,
+83449,
+83472,
+83517,
+83537,
+83537,
+83537,
+83553,
+83575,
+83575,
+83575,
+83620,
+83647,
+83647,
+83663,
+83663,
+83673,
+83673,
+83673,
+83685,
+83700,
+83700,
+83700,
+83700,
+83705,
+83705,
+83705,
+83745,
+83745,
+83745,
+83788,
+83799,
+83799,
+83799,
+83809,
+83809,
+83817,
+83817,
+83827,
+83827,
+83827,
+83827,
+83827,
+83851,
+83865,
83872,
83872,
-83877,
-83893,
-83893,
-83912,
-83912,
-83934,
-83934,
-83941,
-83957,
-83957,
-83968,
-83984,
-83990,
-84001,
-84016,
-84023,
-84048,
+83904,
+83904,
+83904,
+83904,
+83904,
+83904,
+83904,
+83904,
+83928,
+83958,
+83958,
+83958,
+83958,
+83970,
+83970,
+84007,
+84024,
+84024,
+84032,
+84040,
+84040,
+84040,
+84040,
+84054,
84073,
-84073,
-84098,
-84140,
-84140,
-84140,
-84160,
-84203,
-84233,
+84087,
+84094,
+84094,
+84094,
+84104,
+84104,
+84125,
+84125,
+84125,
+84125,
+84138,
+84157,
+84157,
+84164,
+84181,
+84205,
84233,
-84245,
-84268,
-84304,
-84304,
-84304,
-84309,
-84315,
-84340,
-84376,
-84388,
-84437,
-84455,
-84462,
-84482,
-84502,
-84516,
-84516,
-84516,
-84532,
-84542,
-84542,
-84542,
-84588,
-84588,
-84608,
-84635,
-84635,
-84635,
-84649,
-84681,
-84698,
-84735,
-84756,
-84774,
-84774,
-84774,
-84774,
-84797,
-84797,
-84815,
-84832,
-84832,
-84832,
-84842,
-84842,
-84869,
-84869,
-84869,
-84879,
-84899,
-84906,
-84906,
-84906,
-84920,
-84925,
+84240,
+84240,
+84273,
+84273,
+84280,
+84297,
+84317,
+84317,
+84317,
+84317,
+84317,
+84317,
+84324,
+84334,
+84369,
+84400,
+84400,
+84400,
+84419,
+84419,
+84419,
+84441,
+84441,
+84480,
+84480,
+84480,
+84480,
+84480,
+84489,
+84499,
+84499,
+84499,
+84499,
+84504,
+84520,
+84527,
+84527,
+84550,
+84566,
+84610,
+84624,
+84624,
+84674,
+84674,
+84674,
+84680,
+84715,
+84715,
+84733,
+84753,
+84753,
+84777,
+84777,
+84798,
+84875,
+84891,
+84891,
+84933,
84950,
-84965,
-84982,
-84982,
-84994,
-84999,
-85011,
-85041,
-85041,
-85062,
-85062,
+84967,
+84967,
+84974,
+85048,
85062,
85062,
+85078,
+85078,
85086,
-85096,
-85096,
-85121,
-85121,
-85140,
-85140,
-85178,
-85178,
-85196,
-85215,
-85235,
-85235,
-85235,
-85257,
-85257,
-85257,
-85266,
-85279,
-85293,
-85293,
-85293,
-85299,
-85325,
-85325,
-85331,
-85358,
-85358,
-85358,
-85366,
-85379,
-85391,
-85419,
-85419,
+85093,
+85103,
+85103,
+85115,
+85115,
+85115,
+85147,
+85168,
+85190,
+85190,
+85190,
+85213,
+85213,
+85213,
+85247,
+85247,
+85247,
+85262,
+85324,
+85324,
+85324,
+85324,
+85346,
+85372,
+85372,
+85372,
+85402,
+85425,
85436,
-85442,
-85465,
-85471,
-85495,
-85495,
-85495,
+85466,
+85486,
+85486,
+85486,
+85486,
+85486,
85505,
85505,
-85517,
-85517,
-85517,
-85517,
-85561,
-85577,
-85577,
-85594,
-85599,
-85599,
-85621,
-85635,
-85651,
+85525,
+85542,
+85542,
+85542,
+85542,
+85611,
+85623,
+85623,
+85636,
+85661,
+85661,
+85661,
+85681,
+85681,
85681,
85689,
85689,
-85689,
-85689,
-85708,
-85708,
-85718,
-85718,
-85733,
-85733,
-85733,
-85754,
-85774,
-85789,
-85789,
-85811,
-85811,
-85821,
-85821,
-85821,
-85861,
-85882,
-85882,
-85920,
-85920,
-85935,
-85942,
-85962,
-85970,
+85702,
+85702,
+85702,
+85721,
+85762,
+85787,
+85787,
+85798,
+85798,
+85798,
+85798,
+85798,
+85798,
+85813,
+85813,
+85822,
+85856,
+85856,
+85856,
+85864,
+85881,
+85881,
+85881,
+85881,
+85899,
+85919,
+85926,
+85939,
+85956,
+85956,
+85956,
85970,
-85994,
-85994,
-86024,
-86035,
+85988,
+85996,
+85996,
+85996,
+86007,
+86007,
+86007,
+86007,
+86046,
+86046,
+86046,
+86053,
86070,
-86098,
-86103,
-86113,
-86134,
-86165,
-86176,
-86176,
-86176,
-86176,
-86176,
-86176,
-86176,
-86189,
-86189,
-86189,
-86189,
+86070,
+86070,
+86070,
+86070,
+86070,
+86070,
+86077,
+86095,
+86095,
+86112,
+86112,
+86112,
+86127,
+86127,
+86132,
+86132,
+86132,
+86132,
+86142,
86189,
-86207,
-86217,
-86228,
-86248,
-86265,
-86290,
-86329,
-86329,
-86329,
-86329,
-86329,
-86329,
-86346,
-86346,
-86346,
-86346,
-86375,
-86375,
-86394,
-86394,
-86394,
-86402,
-86418,
-86444,
-86455,
-86455,
-86499,
-86499,
-86518,
-86518,
-86539,
-86554,
-86554,
-86554,
-86581,
-86581,
-86581,
+86208,
+86208,
+86208,
+86224,
+86224,
+86231,
+86261,
+86282,
+86296,
+86302,
+86315,
+86353,
+86353,
+86359,
+86359,
+86359,
+86359,
+86366,
+86366,
+86366,
+86378,
+86388,
+86388,
+86388,
+86401,
+86419,
+86429,
+86440,
+86459,
+86459,
+86459,
+86474,
+86500,
+86500,
+86510,
+86584,
+86584,
86591,
-86611,
-86611,
-86650,
-86650,
-86650,
-86693,
-86693,
-86693,
-86716,
-86732,
-86752,
-86752,
-86767,
-86767,
-86767,
-86777,
-86794,
-86794,
-86803,
-86803,
-86803,
-86803,
-86822,
-86827,
-86827,
-86861,
-86880,
-86880,
-86908,
-86908,
-86908,
-86936,
-86936,
-86936,
-86936,
-86945,
-86945,
-86967,
-86990,
-87003,
-87015,
-87029,
-87061,
-87080,
-87080,
-87098,
-87129,
-87129,
-87129,
-87173,
-87184,
-87209,
-87209,
-87262,
-87279,
-87331,
-87331,
-87331,
-87362,
-87378,
-87387,
-87387,
-87398,
-87398,
-87405,
-87405,
-87425,
-87425,
-87425,
+86591,
+86610,
+86610,
+86610,
+86617,
+86652,
+86652,
+86658,
+86658,
+86669,
+86692,
+86699,
+86699,
+86734,
+86734,
+86734,
+86734,
+86734,
+86776,
+86776,
+86776,
+86776,
+86799,
+86799,
+86799,
+86831,
+86831,
+86838,
+86838,
+86848,
+86906,
+86906,
+86919,
+86957,
+86976,
+86976,
+86976,
+86976,
+86976,
+86976,
+87002,
+87010,
+87010,
+87010,
+87010,
+87010,
+87016,
+87024,
+87037,
+87060,
+87065,
+87065,
+87065,
+87085,
+87085,
+87085,
+87103,
+87103,
+87110,
+87110,
+87138,
+87138,
+87138,
+87138,
+87164,
+87189,
+87224,
+87231,
+87231,
+87254,
+87287,
+87287,
+87303,
+87303,
+87341,
+87361,
+87372,
+87395,
87425,
87425,
-87449,
-87449,
-87454,
-87516,
-87567,
-87577,
-87577,
-87577,
-87595,
-87616,
-87652,
-87657,
-87657,
-87657,
-87666,
-87676,
-87732,
-87748,
-87748,
-87772,
-87772,
-87793,
-87793,
-87793,
-87793,
-87806,
-87806,
-87812,
-87836,
-87836,
-87843,
-87843,
-87843,
-87843,
-87859,
-87859,
-87902,
-87918,
-87918,
+87440,
+87440,
+87440,
+87440,
+87450,
+87464,
+87464,
+87471,
+87471,
+87506,
+87514,
+87514,
+87528,
+87576,
+87608,
+87608,
+87608,
+87608,
+87619,
+87619,
+87631,
+87631,
+87631,
+87644,
+87644,
+87699,
+87707,
+87707,
+87707,
+87729,
+87729,
+87729,
+87729,
+87729,
+87744,
+87752,
+87762,
+87778,
+87785,
+87785,
+87791,
+87817,
+87835,
+87841,
+87851,
+87880,
+87880,
+87888,
+87888,
+87911,
+87928,
87928,
-87941,
-87975,
-87975,
-88007,
-88007,
-88050,
-88065,
-88108,
-88128,
-88141,
-88146,
-88167,
-88174,
-88181,
-88197,
-88219,
-88219,
-88244,
-88244,
-88262,
-88278,
-88278,
-88285,
-88304,
-88325,
-88325,
-88338,
-88338,
-88349,
-88365,
-88365,
-88365,
-88365,
-88371,
-88394,
-88414,
-88414,
-88414,
-88423,
-88452,
-88464,
-88485,
-88505,
-88552,
-88552,
-88552,
-88552,
-88563,
-88563,
-88578,
-88585,
-88585,
-88604,
-88629,
-88629,
-88635,
-88646,
-88676,
-88689,
-88706,
-88706,
-88706,
-88733,
-88740,
-88754,
-88774,
-88791,
-88835,
-88851,
-88851,
-88851,
-88861,
-88868,
-88893,
-88905,
-88924,
-88930,
-88930,
-88937,
-88953,
-88966,
-88987,
-89008,
-89028,
-89050,
-89069,
-89069,
-89069,
-89069,
-89096,
-89107,
-89114,
-89114,
-89114,
-89139,
-89163,
+87928,
+87945,
+87945,
+87945,
+87954,
+87972,
+87972,
+87972,
+87972,
+87978,
+87978,
+87991,
+87991,
+88026,
+88032,
+88032,
+88056,
+88087,
+88158,
+88179,
+88185,
+88185,
+88185,
+88195,
+88202,
+88217,
+88224,
+88224,
+88224,
+88224,
+88231,
+88256,
+88287,
+88331,
+88345,
+88352,
+88360,
+88422,
+88422,
+88438,
+88438,
+88458,
+88486,
+88493,
+88501,
+88542,
+88542,
+88549,
+88561,
+88602,
+88609,
+88617,
+88617,
+88647,
+88687,
+88694,
+88724,
+88750,
+88757,
+88772,
+88779,
+88824,
+88850,
+88850,
+88866,
+88896,
+88908,
+88908,
+88917,
+88942,
+88949,
+88956,
+88996,
+89018,
+89025,
+89025,
+89041,
+89041,
+89041,
+89041,
+89056,
+89056,
+89063,
+89063,
+89080,
+89085,
+89097,
+89111,
+89111,
+89153,
+89153,
+89153,
+89153,
+89153,
+89153,
+89153,
+89153,
89178,
-89191,
-89191,
-89197,
-89217,
-89217,
-89239,
-89249,
-89249,
-89302,
-89302,
-89312,
-89328,
-89328,
-89328,
-89328,
-89328,
-89328,
-89344,
-89344,
-89344,
+89178,
+89178,
+89195,
+89195,
+89195,
+89202,
+89225,
+89251,
+89265,
+89265,
+89265,
+89275,
+89323,
+89323,
+89337,
89344,
89351,
89351,
-89361,
-89377,
-89377,
-89377,
-89377,
-89384,
-89403,
-89403,
+89351,
+89369,
+89376,
+89376,
+89386,
+89402,
+89402,
89409,
-89433,
-89433,
-89440,
-89466,
-89478,
-89518,
-89565,
-89565,
-89581,
-89581,
-89593,
-89598,
-89631,
-89646,
-89646,
-89646,
-89646,
-89669,
-89669,
-89694,
-89694,
+89409,
+89418,
+89436,
+89443,
+89467,
+89474,
+89481,
+89481,
+89503,
+89503,
+89510,
+89510,
+89517,
+89534,
+89534,
+89534,
+89534,
+89552,
+89561,
+89561,
+89597,
+89609,
+89623,
+89644,
+89653,
+89672,
+89672,
+89672,
+89672,
+89679,
+89679,
+89686,
+89686,
+89705,
89718,
-89743,
-89743,
+89725,
+89737,
89774,
89774,
-89811,
+89782,
+89794,
89831,
-89855,
-89855,
-89855,
-89866,
-89879,
-89886,
-89893,
+89837,
+89837,
+89862,
+89862,
+89862,
+89862,
89893,
-89902,
-89902,
-89912,
-89928,
-89928,
-89938,
-89966,
-89966,
-89966,
-89966,
-89966,
-89988,
-90001,
-90001,
-90001,
+89905,
+89905,
+89905,
+89922,
+89945,
+89945,
+89945,
+89961,
+89969,
+89976,
+89976,
+89976,
+90012,
90019,
-90036,
-90036,
-90036,
-90067,
-90067,
-90104,
-90122,
-90136,
-90177,
-90199,
-90206,
-90206,
-90216,
-90240,
-90240,
-90271,
-90300,
-90322,
-90322,
-90346,
-90346,
-90380,
-90391,
-90403,
-90412,
-90424,
-90424,
-90424,
-90446,
-90446,
-90446,
-90458,
-90458,
-90458,
-90490,
-90490,
-90546,
-90546,
-90554,
-90564,
-90564,
-90564,
-90592,
-90592,
-90592,
-90592,
-90592,
+90026,
+90039,
+90064,
+90092,
+90099,
+90106,
+90131,
+90147,
+90166,
+90183,
+90190,
+90190,
+90197,
+90204,
+90204,
+90231,
+90231,
+90246,
+90246,
+90253,
+90260,
+90267,
+90295,
+90302,
+90309,
+90345,
+90383,
+90428,
+90428,
+90453,
+90460,
+90460,
+90467,
+90484,
+90501,
+90501,
+90515,
+90534,
+90534,
+90541,
+90555,
+90581,
+90581,
+90593,
90600,
-90616,
-90626,
-90650,
-90658,
-90668,
-90692,
-90701,
-90701,
-90701,
-90701,
-90718,
-90725,
-90725,
-90749,
-90749,
-90767,
-90779,
-90779,
-90779,
-90779,
-90797,
-90797,
-90828,
-90869,
-90880,
-90880,
-90909,
-90916,
-90916,
-90928,
-90928,
-90928,
-90928,
-90928,
-90928,
-90928,
-90928,
-90928,
-90937,
-90937,
-90937,
-90946,
-90946,
-90960,
-91009,
-91009,
-91017,
-91059,
-91078,
-91078,
-91086,
-91127,
-91145,
-91145,
-91145,
-91155,
-91168,
-91178,
-91185,
-91185,
-91205,
-91205,
-91205,
-91217,
-91225,
-91246,
-91268,
-91268,
-91281,
-91291,
-91291,
-91305,
+90600,
+90606,
+90606,
+90606,
+90606,
+90640,
+90693,
+90700,
+90711,
+90711,
+90721,
+90728,
+90734,
+90763,
+90778,
+90778,
+90778,
+90794,
+90801,
+90801,
+90809,
+90823,
+90842,
+90850,
+90864,
+90893,
+90927,
+90927,
+90950,
+90957,
+90969,
+90975,
+90982,
+91023,
+91039,
+91060,
+91060,
+91060,
+91091,
+91105,
+91112,
+91149,
+91149,
+91149,
+91149,
+91149,
+91156,
+91156,
+91156,
+91222,
+91222,
+91232,
+91245,
+91245,
+91276,
+91284,
+91284,
+91284,
+91284,
+91292,
+91292,
91320,
-91333,
-91333,
-91333,
-91345,
-91345,
-91345,
-91345,
-91379,
-91399,
-91411,
-91411,
-91442,
-91442,
-91467,
-91482,
-91501,
-91543,
-91543,
-91561,
-91573,
-91598,
-91610,
-91637,
-91680,
-91680,
-91680,
-91680,
-91711,
-91711,
-91711,
+91344,
+91344,
+91354,
+91395,
+91417,
+91425,
+91425,
+91432,
+91452,
+91459,
+91473,
+91526,
+91548,
+91548,
+91562,
+91589,
+91618,
+91630,
+91630,
+91674,
+91702,
+91714,
+91730,
91730,
-91744,
-91744,
-91762,
-91762,
-91839,
-91847,
-91847,
-91860,
-91894,
-91912,
-91928,
-91937,
-91954,
-91966,
-91978,
-91990,
-92021,
-92021,
-92021,
-92039,
+91753,
+91760,
+91775,
+91824,
+91824,
+91824,
+91830,
+91845,
+91852,
+91859,
+91859,
+91875,
+91896,
+91913,
+91920,
+91920,
+91927,
+91934,
+91934,
+91968,
+91995,
+91995,
+92009,
+92028,
+92034,
+92034,
+92041,
+92047,
92072,
-92105,
-92105,
-92105,
-92126,
-92133,
-92165,
-92202,
-92244,
-92250,
-92250,
-92261,
-92261,
-92304,
-92315,
-92315,
-92315,
-92341,
-92341,
-92357,
-92373,
-92396,
-92405,
-92405,
-92405,
-92411,
-92411,
-92430,
-92441,
-92441,
-92441,
-92451,
-92451,
-92451,
-92470,
-92497,
-92526,
-92526,
-92526,
-92526,
+92072,
+92089,
+92097,
+92121,
+92121,
+92128,
+92169,
+92187,
+92201,
+92214,
+92247,
+92247,
+92247,
+92247,
+92253,
+92271,
+92278,
+92290,
+92333,
+92368,
+92368,
+92368,
+92393,
+92423,
+92432,
+92432,
+92455,
+92463,
+92479,
+92491,
+92491,
+92505,
+92505,
+92516,
+92524,
+92524,
+92534,
+92541,
+92541,
92558,
-92576,
-92576,
-92576,
-92576,
+92572,
+92572,
92588,
-92595,
-92595,
-92622,
-92633,
-92650,
-92650,
-92662,
-92679,
-92708,
-92708,
-92716,
-92716,
-92716,
+92601,
+92607,
+92614,
+92620,
+92632,
+92632,
+92661,
+92661,
+92666,
+92673,
+92673,
+92673,
+92688,
+92688,
+92703,
+92724,
92732,
-92759,
-92771,
-92771,
-92790,
-92790,
-92837,
-92891,
-92908,
-92920,
-92920,
-92950,
-92984,
-93000,
-93000,
-93011,
-93011,
-93035,
-93047,
-93077,
-93077,
-93089,
-93089,
-93089,
-93101,
-93101,
-93101,
-93114,
-93148,
-93148,
-93169,
-93187,
-93207,
-93219,
-93233,
-93233,
-93240,
-93249,
-93249,
-93274,
-93296,
-93333,
-93356,
-93356,
-93356,
-93368,
-93437,
-93465,
-93491,
-93501,
-93519,
-93560,
-93560,
-93560,
-93574,
-93587,
-93619,
-93648,
-93688,
-93700,
-93712,
-93739,
+92732,
+92732,
+92768,
+92784,
+92793,
+92793,
+92793,
+92805,
+92805,
+92805,
+92841,
+92857,
+92866,
+92897,
+92919,
+92931,
+92931,
+92951,
+92951,
+92997,
+93010,
+93010,
+93010,
+93033,
+93033,
+93033,
+93043,
+93078,
+93078,
+93116,
+93144,
+93149,
+93156,
+93174,
+93199,
+93241,
+93241,
+93241,
+93281,
+93302,
+93302,
+93302,
+93322,
+93339,
+93339,
+93373,
+93406,
+93414,
+93414,
+93441,
+93441,
+93467,
+93467,
+93480,
+93500,
+93535,
+93541,
+93547,
+93576,
+93576,
+93586,
+93595,
+93604,
+93617,
+93617,
+93623,
+93676,
+93676,
+93676,
+93682,
+93682,
+93689,
+93689,
+93713,
+93730,
+93730,
+93730,
93739,
-93779,
-93779,
-93797,
-93826,
-93856,
-93895,
-93911,
-93911,
-93943,
-93943,
-93968,
-93968,
-93968,
-93968,
-93968,
-93977,
-93977,
-93977,
-93986,
-93997,
-94008,
-94008,
-94031,
-94049,
-94064,
-94064,
-94074,
-94082,
-94099,
-94099,
-94109,
-94128,
-94145,
-94163,
-94169,
-94169,
-94181,
-94181,
-94181,
-94181,
-94181,
-94181,
-94181,
-94203,
+93782,
+93782,
+93792,
+93798,
+93817,
+93844,
+93844,
+93844,
+93891,
+93917,
+93917,
+93937,
+93937,
+93937,
+93937,
+93937,
+93937,
+93944,
+93944,
+93944,
+93964,
+93978,
+93978,
+93978,
+93996,
+94004,
+94011,
+94011,
+94011,
+94027,
+94039,
+94039,
+94055,
+94075,
+94075,
+94108,
+94171,
+94171,
+94171,
94203,
-94203,
-94203,
-94221,
-94221,
-94221,
-94221,
-94221,
-94241,
-94241,
-94241,
-94241,
-94241,
-94257,
-94270,
-94270,
-94289,
-94289,
-94311,
-94311,
-94311,
-94338,
-94352,
-94352,
-94352,
-94366,
-94366,
-94388,
-94388,
+94282,
+94282,
+94282,
+94294,
+94312,
+94343,
+94353,
+94369,
94388,
-94398,
-94398,
-94398,
-94410,
-94410,
-94436,
-94436,
-94452,
-94483,
-94489,
-94501,
-94528,
-94548,
-94571,
-94571,
-94584,
-94604,
-94604,
-94604,
-94604,
-94614,
-94614,
-94614,
-94626,
-94655,
-94670,
-94691,
-94697,
-94712,
-94712,
-94736,
-94743,
-94767,
-94803,
-94862,
-94907,
-94907,
-94907,
+94416,
+94416,
+94422,
+94443,
+94458,
+94458,
+94476,
+94476,
+94476,
+94494,
+94504,
+94525,
+94525,
+94525,
+94525,
+94525,
+94538,
+94538,
+94544,
+94554,
+94580,
+94594,
+94615,
+94650,
+94687,
+94687,
+94687,
+94687,
+94687,
+94687,
+94698,
+94698,
+94710,
+94720,
+94738,
+94755,
+94769,
+94769,
+94806,
+94842,
+94842,
+94842,
+94854,
+94892,
+94892,
+94892,
94907,
94907,
94914,
-94924,
-94951,
-94951,
-94951,
-94951,
-94962,
-94962,
-94969,
-94969,
-94988,
-94988,
-94988,
-95002,
-95021,
-95021,
-95058,
-95058,
-95058,
+94922,
+94938,
+94938,
+94953,
+94953,
+94953,
+94953,
+94953,
+94953,
+94953,
+94989,
+94989,
+94989,
+95007,
+95007,
+95027,
+95027,
+95050,
+95050,
+95077,
95085,
-95085,
-95096,
-95112,
-95112,
-95112,
-95125,
-95125,
-95152,
-95152,
-95183,
-95183,
-95208,
-95213,
-95213,
-95253,
-95271,
-95291,
-95332,
-95332,
-95332,
-95332,
-95357,
+95092,
+95132,
+95146,
+95146,
+95146,
+95160,
+95160,
+95160,
+95160,
+95180,
+95220,
+95220,
+95234,
+95266,
+95281,
+95281,
+95281,
+95316,
+95352,
+95362,
95373,
-95383,
-95383,
-95397,
-95407,
-95407,
-95407,
-95407,
-95407,
-95428,
-95435,
-95435,
-95442,
-95442,
-95450,
-95478,
-95492,
-95492,
-95492,
-95492,
-95492,
-95492,
-95521,
-95521,
-95521,
-95589,
-95589,
-95599,
-95623,
-95623,
-95637,
-95651,
-95662,
-95702,
-95702,
-95702,
-95711,
-95718,
-95718,
-95734,
-95741,
-95751,
-95751,
-95764,
-95771,
-95771,
-95788,
-95800,
+95404,
+95404,
+95419,
+95419,
+95439,
+95467,
+95467,
+95467,
+95467,
+95541,
+95541,
+95563,
+95572,
+95598,
+95607,
+95616,
+95669,
+95703,
+95703,
+95728,
+95804,
95804,
95804,
-95809,
-95826,
-95826,
-95859,
-95859,
-95859,
-95875,
-95875,
-95919,
-95919,
-95919,
-95929,
-95929,
-95956,
-95964,
-95978,
-95992,
-96019,
-96019,
-96019,
-96056,
-96056,
-96056,
-96056,
-96075,
-96075,
-96100,
-96100,
-96158,
+95813,
+95828,
+95848,
+95848,
+95848,
+95922,
+95922,
+95932,
+95932,
+95949,
+96005,
+96012,
+96020,
+96049,
+96049,
+96049,
+96068,
+96102,
+96102,
+96102,
+96112,
+96112,
+96112,
+96125,
+96150,
+96150,
+96165,
96176,
-96247,
-96247,
-96275,
-96317,
-96317,
-96317,
-96337,
-96337,
-96337,
-96348,
-96348,
-96348,
-96383,
-96383,
-96403,
-96449,
-96449,
-96458,
-96470,
-96481,
-96481,
-96525,
-96536,
-96543,
-96543,
-96564,
-96564,
-96572,
-96605,
+96176,
+96215,
+96233,
+96233,
+96233,
+96294,
+96307,
+96307,
+96307,
+96307,
+96357,
+96357,
+96379,
+96397,
+96397,
+96397,
+96417,
+96441,
+96471,
+96471,
+96471,
+96471,
+96475,
+96475,
+96475,
+96532,
+96553,
+96560,
+96569,
+96597,
+96597,
+96597,
+96597,
+96614,
+96614,
+96614,
+96633,
96643,
96643,
-96653,
-96659,
-96673,
-96677,
-96685,
-96685,
-96697,
-96706,
-96706,
-96706,
-96740,
-96756,
-96766,
-96782,
-96782,
-96792,
-96839,
-96849,
-96866,
-96866,
-96902,
-96945,
-96945,
-96953,
-96953,
-97000,
-97015,
-97034,
-97038,
-97046,
+96660,
+96664,
+96691,
+96708,
+96731,
+96754,
+96785,
+96807,
+96807,
+96820,
+96820,
+96872,
+96872,
+96883,
+96917,
+96947,
+96959,
+96982,
+97001,
+97001,
+97001,
+97009,
+97009,
+97024,
+97024,
+97024,
+97024,
+97042,
+97042,
+97056,
97056,
-97104,
-97117,
-97155,
-97155,
-97155,
-97178,
-97199,
-97199,
-97217,
-97247,
-97262,
-97269,
-97269,
-97269,
-97269,
-97277,
-97289,
-97322,
-97339,
-97389,
-97409,
-97409,
-97409,
-97432,
-97448,
-97448,
-97448,
-97448,
-97456,
-97510,
+97075,
+97075,
+97075,
+97090,
+97090,
+97090,
+97090,
+97119,
+97119,
+97126,
+97141,
+97141,
+97157,
+97173,
+97190,
+97206,
+97206,
+97216,
+97239,
+97307,
+97307,
+97307,
+97311,
+97330,
+97330,
+97330,
+97330,
+97359,
+97359,
+97359,
+97366,
+97387,
+97387,
+97387,
+97398,
+97455,
+97491,
+97491,
+97497,
+97497,
+97520,
+97520,
+97520,
+97524,
+97524,
+97524,
+97530,
+97530,
97530,
97530,
-97544,
-97561,
-97581,
-97581,
-97616,
-97616,
+97545,
+97574,
+97574,
+97574,
+97574,
+97589,
+97610,
+97610,
+97610,
+97629,
97647,
-97656,
-97660,
-97660,
-97660,
-97683,
-97706,
-97754,
-97775,
-97780,
-97787,
-97787,
-97799,
-97813,
-97813,
-97855,
-97855,
-97855,
-97855,
-97879,
-97919,
-97919,
-97934,
-97945,
-97971,
-97999,
-98016,
-98016,
-98024,
-98024,
-98046,
-98046,
-98053,
-98060,
-98060,
-98060,
-98079,
-98079,
-98089,
-98112,
+97647,
+97687,
+97696,
+97713,
+97713,
+97713,
+97724,
+97734,
+97734,
+97734,
+97734,
+97753,
+97766,
+97777,
+97777,
+97777,
+97777,
+97777,
+97812,
+97841,
+97841,
+97841,
+97861,
+97861,
+97861,
+97883,
+97899,
+97993,
+97993,
+97993,
+98001,
+98001,
+98001,
+98020,
+98073,
+98087,
+98087,
+98097,
98122,
-98151,
-98151,
-98165,
-98172,
-98172,
-98182,
-98211,
-98226,
+98130,
+98130,
+98146,
+98146,
+98162,
+98162,
+98162,
+98208,
+98229,
+98229,
+98229,
+98246,
+98246,
+98246,
+98257,
+98257,
98257,
-98275,
-98310,
-98328,
-98343,
-98343,
-98360,
-98360,
-98388,
-98409,
-98418,
-98423,
-98423,
-98444,
-98444,
-98469,
-98469,
-98505,
-98515,
-98515,
-98536,
-98536,
-98536,
-98546,
-98552,
-98552,
-98559,
-98559,
-98576,
-98594,
-98607,
-98607,
-98632,
-98632,
-98663,
-98663,
-98676,
-98692,
-98692,
-98692,
-98707,
-98727,
-98744,
-98744,
-98775,
-98775,
-98811,
-98833,
-98853,
-98877,
-98928,
-98928,
-98932,
-98962,
-98984,
-98996,
-98996,
-99017,
-99017,
-99017,
-99030,
-99030,
-99030,
-99051,
-99100,
-99120,
-99120,
-99125,
-99149,
-99149,
-99149,
-99158,
-99158,
-99170,
-99179,
+98257,
+98265,
+98314,
+98314,
+98314,
+98314,
+98330,
+98342,
+98342,
+98376,
+98376,
+98376,
+98376,
+98387,
+98457,
+98457,
+98467,
+98467,
+98467,
+98467,
+98477,
+98477,
+98504,
+98504,
+98511,
+98511,
+98511,
+98540,
+98540,
+98550,
+98568,
+98605,
+98605,
+98605,
+98605,
+98620,
+98627,
+98637,
+98667,
+98667,
+98667,
+98667,
+98684,
+98693,
+98693,
+98693,
+98693,
+98693,
+98693,
+98693,
+98702,
+98732,
+98732,
+98732,
+98732,
+98732,
+98732,
+98732,
+98756,
+98756,
+98756,
+98756,
+98773,
+98783,
+98793,
+98802,
+98802,
+98836,
+98849,
+98872,
+98893,
+98918,
+98923,
+98933,
+98944,
+98944,
+98944,
+98944,
+98955,
+98977,
+98977,
+98985,
+98985,
+98985,
+98985,
+98990,
+99004,
+99004,
+99004,
+99012,
+99029,
+99091,
+99099,
+99099,
+99136,
+99141,
+99160,
+99172,
+99172,
+99172,
+99172,
+99198,
99215,
-99246,
-99287,
-99305,
-99316,
-99316,
-99333,
+99239,
+99239,
+99273,
+99273,
+99288,
+99308,
+99323,
99342,
-99367,
-99367,
-99376,
-99376,
-99376,
-99412,
-99412,
-99429,
-99429,
-99469,
-99473,
-99483,
-99506,
+99355,
+99355,
+99363,
+99386,
+99414,
+99414,
+99430,
+99463,
+99475,
+99499,
99506,
-99506,
-99506,
-99535,
-99541,
-99541,
-99554,
-99567,
-99567,
-99579,
-99579,
-99579,
-99594,
-99617,
-99657,
-99657,
-99657,
-99668,
-99668,
-99668,
-99673,
-99679,
-99679,
-99679,
-99700,
-99759,
-99772,
-99780,
-99780,
-99780,
-99786,
-99803,
-99803,
-99809,
-99820,
-99839,
-99847,
-99859,
-99859,
-99859,
-99881,
-99881,
-99903,
-99903,
-99903,
-99903,
-99903,
-99909,
-99909,
-99909,
-99929,
-99954,
-99964,
-99964,
-99964,
-99980,
-99980,
-99980,
-100021,
-100029,
-100035,
-100041,
-100045,
-100063,
-100104,
-100136,
-100136,
-100136,
-100144,
-100180,
-100186,
+99589,
+99589,
+99589,
+99589,
+99625,
+99643,
+99643,
+99655,
+99674,
+99674,
+99681,
+99691,
+99716,
+99727,
+99731,
+99731,
+99750,
+99750,
+99750,
+99750,
+99750,
+99750,
+99775,
+99775,
+99793,
+99793,
+99793,
+99799,
+99828,
+99842,
+99842,
+99842,
+99842,
+99856,
+99863,
+99902,
+99976,
+99976,
+99976,
+99984,
+100032,
+100032,
+100032,
+100049,
+100070,
+100087,
+100087,
+100094,
+100094,
+100112,
+100130,
+100139,
+100173,
100196,
-100238,
-100254,
-100272,
-100296,
-100309,
-100341,
-100341,
-100393,
-100425,
-100425,
-100425,
-100449,
-100449,
-100449,
-100482,
-100482,
-100482,
-100501,
-100535,
-100556,
-100556,
-100573,
-100588,
-100618,
-100618,
-100635,
-100653,
-100653,
-100653,
-100695,
-100695,
-100695,
-100742,
-100742,
-100781,
-100816,
-100816,
-100816,
-100874,
-100874,
-100915,
-100915,
-100923,
-100923,
-100948,
-100948,
-100962,
-100962,
-100962,
-100966,
-100971,
-100979,
-100979,
-100979,
-100979,
-100993,
-101014,
-101029,
-101047,
-101054,
-101086,
-101086,
+100196,
+100211,
+100220,
+100220,
+100220,
+100230,
+100264,
+100264,
+100264,
+100264,
+100324,
+100324,
+100336,
+100336,
+100348,
+100348,
+100359,
+100368,
+100368,
+100380,
+100380,
+100396,
+100401,
+100436,
+100436,
+100443,
+100443,
+100447,
+100447,
+100488,
+100514,
+100514,
+100527,
+100527,
+100549,
+100592,
+100592,
+100619,
+100619,
+100619,
+100619,
+100619,
+100624,
+100649,
+100649,
+100701,
+100753,
+100762,
+100773,
+100801,
+100813,
+100813,
+100813,
+100835,
+100896,
+100921,
+100921,
+100934,
+101004,
+101012,
+101012,
+101012,
101086,
-101094,
-101115,
-101121,
-101140,
-101150,
-101180,
-101180,
-101180,
-101201,
-101201,
-101213,
-101218,
-101226,
-101234,
-101253,
-101260,
-101275,
-101284,
-101284,
-101300,
-101320,
-101364,
+101099,
+101106,
+101106,
+101173,
+101193,
+101197,
+101197,
+101248,
+101267,
+101267,
+101272,
+101288,
+101288,
+101288,
+101305,
+101312,
+101312,
+101312,
+101324,
+101334,
101372,
101372,
-101380,
-101380,
-101392,
-101392,
-101392,
-101399,
-101415,
-101415,
-101433,
-101441,
-101451,
-101458,
-101458,
-101466,
-101498,
-101518,
-101553,
-101553,
-101589,
-101615,
-101629,
-101629,
-101629,
-101645,
-101680,
-101680,
-101680,
-101698,
-101719,
-101727,
-101756,
-101767,
-101772,
-101789,
-101805,
-101805,
-101816,
-101816,
-101816,
-101816,
-101816,
-101840,
-101848,
-101868,
-101868,
-101868,
-101884,
-101903,
-101903,
-101903,
-101909,
-101909,
-101926,
-101932,
-101959,
-101959,
-101977,
-101984,
-101988,
-101988,
-101988,
-102001,
-102007,
-102011,
-102011,
-102011,
-102022,
-102044,
-102054,
-102054,
-102061,
-102061,
-102061,
-102061,
-102061,
-102093,
-102113,
-102129,
-102147,
-102147,
-102155,
-102174,
-102217,
-102237,
-102259,
-102272,
-102279,
-102297,
-102320,
-102351,
-102351,
-102351,
-102365,
-102369,
-102394,
-102420,
-102420,
-102465,
-102492,
-102492,
-102492,
-102492,
-102492,
-102512,
-102512,
-102516,
-102534,
-102534,
-102534,
-102534,
-102576,
-102597,
+101400,
+101400,
+101438,
+101462,
+101474,
+101474,
+101487,
+101499,
+101499,
+101536,
+101580,
+101614,
+101614,
+101657,
+101657,
+101657,
+101662,
+101662,
+101699,
+101699,
+101711,
+101740,
+101740,
+101740,
+101755,
+101782,
+101787,
+101793,
+101814,
+101830,
+101862,
+101862,
+101896,
+101902,
+101902,
+101902,
+101902,
+101902,
+101916,
+101923,
+101946,
+101965,
+101997,
+102019,
+102023,
+102069,
+102089,
+102096,
+102096,
+102140,
+102152,
+102152,
+102166,
+102193,
+102209,
+102216,
+102242,
+102242,
+102274,
+102285,
+102309,
+102352,
+102352,
+102358,
+102358,
+102388,
+102392,
+102392,
+102407,
+102407,
+102416,
+102416,
+102416,
+102437,
+102477,
+102477,
+102484,
+102505,
+102517,
+102517,
+102523,
+102550,
+102550,
+102550,
+102550,
+102550,
+102550,
+102554,
+102573,
+102578,
+102615,
102615,
102615,
-102632,
-102661,
-102674,
-102700,
-102700,
-102727,
-102753,
-102760,
-102782,
-102802,
-102802,
-102832,
-102857,
-102868,
-102868,
-102868,
-102868,
-102882,
-102905,
-102956,
-102986,
-102986,
-102986,
-102986,
-102986,
-102997,
-102997,
-102997,
+102634,
+102665,
+102665,
+102665,
+102678,
+102729,
+102729,
+102729,
+102765,
+102769,
+102780,
+102799,
+102836,
+102836,
+102836,
+102863,
+102901,
+102901,
+102901,
+102912,
+102938,
+102938,
+102948,
+102960,
103003,
-103013,
-103013,
-103013,
-103013,
103025,
-103043,
+103025,
+103038,
103059,
-103097,
-103097,
-103104,
-103122,
-103126,
-103137,
-103141,
-103141,
-103165,
-103198,
-103204,
-103227,
-103250,
-103263,
-103267,
-103267,
-103275,
+103087,
+103087,
+103087,
+103128,
+103128,
+103128,
+103169,
+103190,
+103210,
+103236,
+103236,
+103287,
+103287,
+103287,
+103297,
+103297,
103308,
-103327,
-103344,
-103344,
-103344,
-103350,
-103350,
-103350,
-103379,
-103406,
-103406,
+103320,
+103325,
+103334,
+103341,
+103349,
+103356,
+103384,
+103396,
+103396,
+103396,
+103396,
+103396,
+103396,
103406,
-103424,
-103439,
-103484,
-103490,
-103506,
-103533,
-103533,
-103550,
-103581,
-103601,
-103601,
-103601,
-103613,
-103666,
-103666,
-103666,
-103681,
-103681,
-103702,
-103702,
-103702,
-103733,
-103749,
-103786,
-103786,
-103798,
-103807,
-103820,
-103820,
-103838,
-103838,
-103861,
-103872,
-103880,
-103880,
-103887,
-103894,
-103894,
-103902,
-103922,
-103941,
-103949,
-103949,
-103970,
-103970,
-103976,
-103976,
-103992,
-104021,
-104041,
-104068,
-104073,
-104073,
-104073,
-104083,
-104083,
-104083,
-104093,
-104103,
-104121,
-104121,
-104121,
-104121,
-104121,
-104148,
-104154,
-104166,
-104166,
-104166,
-104189,
-104189,
-104189,
-104189,
-104201,
-104201,
-104201,
-104241,
+103446,
+103460,
+103460,
+103491,
+103520,
+103532,
+103532,
+103532,
+103532,
+103532,
+103539,
+103555,
+103592,
+103638,
+103638,
+103638,
+103642,
+103678,
+103678,
+103687,
+103694,
+103698,
+103698,
+103724,
+103784,
+103796,
+103818,
+103833,
+103844,
+103844,
+103844,
+103886,
+103928,
+103964,
+103997,
+104018,
+104045,
+104045,
+104045,
+104045,
+104045,
+104057,
+104057,
+104069,
+104105,
+104114,
+104114,
+104134,
+104151,
+104151,
+104163,
+104163,
+104182,
+104203,
+104203,
+104214,
+104246,
104269,
-104281,
-104281,
-104301,
-104331,
-104331,
-104331,
-104348,
-104348,
-104365,
-104393,
-104415,
-104429,
-104436,
-104442,
-104442,
-104448,
-104466,
-104474,
-104474,
-104474,
-104490,
-104490,
-104508,
-104524,
-104536,
-104536,
-104544,
-104576,
-104576,
-104596,
-104622,
-104622,
-104639,
-104648,
-104665,
-104665,
-104665,
-104672,
-104672,
-104687,
-104703,
-104719,
-104727,
-104751,
-104751,
-104777,
-104815,
-104893,
-104912,
-104912,
-104939,
-104951,
-104951,
-104951,
+104269,
+104292,
+104310,
+104328,
+104335,
+104355,
+104423,
+104445,
+104457,
+104457,
+104487,
+104511,
+104511,
+104525,
+104539,
+104545,
+104565,
+104565,
+104621,
+104635,
+104647,
+104647,
+104730,
+104742,
+104752,
+104752,
+104763,
+104808,
+104814,
+104835,
+104855,
+104855,
+104867,
+104867,
+104905,
+104905,
+104905,
+104932,
+104932,
+104963,
104963,
-104967,
-104967,
-104999,
-105032,
+104963,
+104997,
+105014,
105036,
-105050,
-105050,
-105050,
-105066,
-105066,
-105087,
-105087,
-105117,
-105117,
-105117,
-105165,
-105200,
-105228,
-105234,
-105253,
-105253,
-105253,
-105287,
-105310,
+105042,
+105070,
+105070,
+105081,
+105081,
+105093,
+105093,
+105093,
+105093,
+105093,
+105107,
+105107,
+105119,
+105137,
+105149,
+105161,
+105161,
+105174,
+105174,
+105186,
+105198,
+105214,
+105214,
+105214,
+105235,
+105235,
+105269,
+105285,
+105285,
+105285,
+105322,
+105333,
105333,
-105348,
-105348,
-105364,
-105364,
-105371,
-105381,
-105391,
-105406,
-105406,
-105415,
-105422,
-105448,
-105448,
-105455,
-105455,
-105466,
-105490,
-105504,
-105504,
-105543,
-105551,
-105551,
-105558,
-105565,
-105575,
-105575,
-105575,
-105575,
-105581,
-105643,
-105643,
-105653,
-105653,
-105664,
-105664,
-105680,
-105680,
-105680,
-105701,
-105718,
-105726,
-105726,
+105339,
+105339,
+105339,
+105352,
+105418,
+105446,
+105446,
+105446,
+105446,
+105471,
+105471,
+105484,
+105484,
+105529,
+105529,
+105547,
+105571,
+105589,
+105608,
+105608,
+105691,
+105696,
+105696,
+105696,
+105696,
+105696,
+105696,
+105696,
+105696,
+105696,
+105696,
+105696,
+105706,
+105729,
+105729,
+105743,
105751,
-105760,
-105803,
-105803,
-105803,
-105803,
-105803,
-105803,
-105803,
-105809,
-105842,
-105842,
-105848,
-105848,
-105866,
-105873,
-105873,
-105882,
-105882,
-105886,
-105886,
-105886,
-105912,
-105919,
-105940,
-105947,
-105956,
-105963,
-105963,
-105963,
-105963,
-105963,
-105963,
-105970,
-105996,
-105996,
-105996,
-105996,
-106035,
-106035,
-106035,
-106050,
-106071,
-106082,
-106123,
-106146,
-106167,
-106167,
-106187,
-106197,
-106197,
-106197,
-106197,
-106226,
-106250,
-106250,
-106269,
-106275,
-106281,
-106281,
-106281,
-106304,
-106304,
-106304,
-106333,
+105755,
+105755,
+105755,
+105783,
+105783,
+105783,
+105799,
+105812,
+105812,
+105812,
+105818,
+105824,
+105844,
+105844,
+105844,
+105844,
+105861,
+105861,
+105861,
+105913,
+105926,
+105926,
+105961,
+105977,
+106014,
+106021,
+106027,
+106047,
+106072,
+106072,
+106086,
+106110,
+106122,
+106133,
+106133,
+106150,
+106162,
+106169,
+106201,
+106220,
+106233,
+106233,
+106241,
+106247,
+106247,
+106247,
+106264,
+106264,
+106264,
+106264,
+106268,
+106278,
+106306,
+106306,
+106306,
106355,
+106366,
106373,
-106382,
-106382,
-106382,
-106412,
-106419,
-106464,
-106464,
-106464,
-106464,
-106468,
-106489,
-106489,
-106496,
-106528,
-106528,
-106549,
-106549,
-106576,
+106373,
+106373,
+106373,
+106381,
+106399,
+106481,
+106481,
+106487,
+106507,
+106529,
+106529,
+106529,
+106529,
+106546,
+106554,
+106554,
+106560,
+106560,
+106560,
+106560,
106582,
-106591,
-106591,
-106597,
-106597,
-106597,
-106615,
-106651,
-106726,
-106726,
-106736,
-106779,
-106793,
-106793,
-106818,
-106818,
-106818,
-106824,
-106853,
-106868,
-106872,
-106872,
-106872,
-106879,
-106879,
-106897,
-106913,
-106930,
-106940,
-106940,
-106952,
-106980,
-106993,
-107006,
-107006,
-107047,
-107087,
-107087,
-107094,
-107113,
-107139,
-107139,
-107139,
-107139,
-107192,
-107229,
-107237,
-107237,
-107237,
-107263,
+106608,
+106608,
+106608,
+106612,
+106612,
+106612,
+106612,
+106612,
+106612,
+106623,
+106623,
+106644,
+106644,
+106644,
+106644,
+106644,
+106653,
+106653,
+106653,
+106653,
+106683,
+106683,
+106704,
+106710,
+106728,
+106743,
+106743,
+106757,
+106773,
+106773,
+106773,
+106773,
+106773,
+106773,
+106773,
+106795,
+106847,
+106847,
+106847,
+106863,
+106887,
+106902,
+106902,
+106902,
+106902,
+106902,
+106902,
+106924,
+106938,
+106970,
+106970,
+106983,
+107016,
+107044,
+107044,
+107058,
+107058,
+107058,
+107066,
+107066,
+107091,
+107101,
+107101,
+107125,
+107143,
+107143,
+107143,
+107169,
+107186,
+107203,
+107203,
+107203,
+107235,
+107235,
+107235,
+107241,
+107252,
+107268,
+107268,
+107281,
+107281,
107295,
-107312,
-107337,
-107344,
-107351,
+107295,
+107302,
+107302,
+107302,
+107302,
+107332,
+107345,
+107371,
+107371,
+107371,
+107371,
+107371,
107371,
107371,
-107387,
-107429,
-107436,
-107450,
-107471,
-107514,
-107514,
-107553,
-107560,
-107573,
-107573,
-107647,
-107666,
-107671,
-107671,
-107678,
-107678,
-107704,
-107711,
-107711,
-107746,
-107746,
-107776,
-107776,
-107781,
-107827,
-107859,
-107879,
-107879,
-107879,
-107879,
+107371,
+107381,
+107381,
+107381,
+107428,
+107428,
+107428,
+107439,
+107500,
+107507,
+107507,
+107518,
+107518,
+107518,
+107527,
+107527,
+107581,
+107594,
+107594,
+107594,
+107614,
+107614,
+107614,
+107622,
+107639,
+107650,
+107659,
+107659,
+107698,
+107713,
+107713,
+107713,
+107713,
+107720,
+107720,
+107734,
+107734,
+107734,
+107734,
+107734,
+107751,
+107765,
+107765,
+107771,
+107809,
+107809,
+107809,
+107847,
+107847,
+107847,
+107847,
+107847,
+107847,
+107862,
+107862,
+107862,
+107862,
+107869,
+107869,
+107876,
+107891,
+107910,
+107910,
107925,
-107948,
-107955,
-107959,
-108004,
-108014,
-108038,
-108045,
-108045,
-108079,
-108103,
-108110,
-108139,
-108154,
-108173,
-108188,
-108208,
-108221,
-108231,
-108231,
-108231,
-108239,
-108275,
+107941,
+107946,
+107946,
+107946,
+107963,
+108005,
+108005,
+108037,
+108037,
+108077,
+108077,
+108077,
+108107,
+108124,
+108124,
+108162,
+108162,
+108162,
+108162,
+108189,
+108193,
+108193,
+108203,
+108246,
+108246,
+108268,
+108268,
+108289,
+108289,
+108289,
+108289,
+108289,
+108289,
+108306,
108315,
-108329,
-108346,
-108346,
-108375,
-108375,
-108409,
-108409,
+108340,
+108368,
+108368,
+108368,
+108389,
+108389,
+108389,
+108389,
+108399,
+108419,
+108419,
+108419,
+108441,
+108457,
108457,
-108468,
-108468,
-108468,
-108468,
-108468,
-108484,
-108492,
-108492,
-108492,
-108518,
-108535,
-108535,
-108547,
-108594,
-108594,
-108600,
-108600,
-108619,
-108639,
-108655,
-108663,
-108686,
-108686,
-108706,
-108744,
-108794,
-108824,
-108824,
-108830,
-108837
+108457,
+108480,
+108519,
+108553,
+108563,
+108563,
+108605,
+108617,
+108624,
+108640,
+108640,
+108640,
+108640,
+108656,
+108705,
+108750,
+108750,
+108772,
+108831,
+108858,
+108858,
+108877,
+108899,
+108899,
+108904,
+108914,
+108947,
+108990,
+108990,
+108994,
+108994,
+108994,
+108994,
+108994,
+109004,
+109004,
+109004,
+109018,
+109046,
+109066,
+109066,
+109066,
+109066,
+109074,
+109083,
+109097,
+109119,
+109144,
+109144,
+109163,
+109181,
+109185,
+109189,
+109196,
+109196,
+109196,
+109221,
+109233,
+109276,
+109276,
+109276,
+109286,
+109286,
+109302,
+109302,
+109302,
+109322,
+109336,
+109358,
+109358,
+109391,
+109391,
+109391,
+109412,
+109422,
+109436,
+109436,
+109436,
+109436,
+109436,
+109453,
+109479,
+109496,
+109496,
+109505,
+109526,
+109569,
+109569,
+109578,
+109578,
+109612,
+109619,
+109619,
+109644,
+109659,
+109675,
+109675,
+109690,
+109752,
+109787,
+109787,
+109799,
+109837,
+109854,
+109854,
+109854,
+109854,
+109883,
+109883,
+109899,
+109928,
+109928,
+109928,
+109928
};
static const char *tldData[] = {
-"frankfurt.museum\0"
+"nanae.hokkaido.jp\0"
+"pgfog.com\0"
+"tel.tr\0"
+"k12.fl.us\0"
+"eastafrica.museum\0tec.ve\0alpha.bounty-full.com\0"
+"blogspot.com.ar\0"
+"asker.no\0tjeldsund.no\0"
+"trentin-suedtirol.it\0karpacz.pl\0usercontent.jp\0"
+"edeka\0blogspot.com.au\0"
+"*.magentosite.cloud\0"
+"ghost.io\0"
+"m\xc3\xa5lselv.no\0"
+"pomorze.pl\0"
+"tas.gov.au\0zt.ua\0s3-website.ap-northeast-2.amazonaws.com\0"
+"blogspot.com.br\0"
+"\xe4\xb8\xaa\xe4\xba\xba.hk\0bo.telemark.no\0sund.no\0*.moonscale.io\0"
+"freeboxos.com\0"
+"blogspot.com.by\0"
+"am.br\0"
+"web.bo\0blogspot.com.co\0"
+"missoula.museum\0"
+"benevento.it\0"
+"judaica.museum\0\xd0\xb0\xd0\xba.\xd1\x81\xd1\x80\xd0\xb1\0store\0xnbay.com\0"
+"govt.nz\0"
+"lib.pr.us\0"
+"val-daosta.it\0"
+"online.museum\0"
+"that.win\0"
+"leasing.aero\0tysvar.no\0cc.fl.us\0"
+"sasebo.nagasaki.jp\0"
+"australia.museum\0alibaba\0institute\0"
+"web.co\0"
+"trani-barletta-andria.it\0fukuroi.shizuoka.jp\0kurobe.toyama.jp\0total\0"
+"ringsaker.no\0"
+"nirasaki.yamanashi.jp\0cat.ax\0"
+"marugame.kagawa.jp\0"
+"rockart.museum\0"
+"api.gov.uk\0"
+"kinko.kagoshima.jp\0"
+"web.do\0"
+"uy.com\0"
+"blogspot.com.es\0"
+"yamada.iwate.jp\0ueda.nagano.jp\0"
+"myshopify.com\0"
+"donna.no\0"
+"\xd1\x80\xd1\x84\0gmbh\0"
+"station.museum\0"
+"cloudns.club\0"
+"mozilla-iot.org\0"
+"is-very-sweet.org\0"
+"fl\xc3\xa5.no\0beats\0"
+"friuliv-giulia.it\0minowa.nagano.jp\0"
+"insure\0"
+"br\xc3\xb8nn\xc3\xb8ysund.no\0"
+"tottori.tottori.jp\0"
+"osoyro.no\0"
+"yaese.okinawa.jp\0uk.oxa.cloud\0"
+"uri.arpa\0tube\0"
+"jeonbuk.kr\0"
+"yamato.kanagawa.jp\0"
+"bytom.pl\0"
+"parliament.nz\0samsclub\0"
+"engineer.aero\0hoyanger.no\0sandoy.no\0"
+"yanagawa.fukuoka.jp\0\xe3\x82\xb3\xe3\x83\xa0\0"
+"ca-central-1.elasticbeanstalk.com\0mediatech.by\0"
+"cq.cn\0"
+"nico\0"
+"k12.ia.us\0sekd1.beebyteapp.io\0"
+"*.sapporo.jp\0aki.kochi.jp\0mimata.miyazaki.jp\0"
+"kitchen\0"
+"novara.it\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa4\0"
+"web.gu\0"
+"artdeco.museum\0"
+"crotone.it\0rikubetsu.hokkaido.jp\0hirado.nagasaki.jp\0upow.gov.pl\0"
+"muenster.museum\0"
+"saltdal.no\0"
+"tsukigata.hokkaido.jp\0kazimierz-dolny.pl\0"
+"web.id\0"
+"fan\0"
+"trana.no\0"
+"*.beget.app\0loginline.app\0"
+"francaise.museum\0is-into-games.com\0"
+"ad.jp\0susaki.kochi.jp\0kimino.wakayama.jp\0kinghost.net\0"
+"googleapis.com\0"
+"web.in\0"
+"ogano.saitama.jp\0"
+"plus\0"
+"toyohashi.aichi.jp\0kurotaki.nara.jp\0nakamichi.yamanashi.jp\0eu.ax\0"
+"taipei\0"
+"r\xc3\xb8st.no\0"
+"safe\0"
+"wien\0"
+"rj.gov.br\0\xd8\xa7\xd8\xaa\xd8\xb5\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\0"
+"av.it\0"
+"omaha.museum\0"
+"tokke.no\0tec.mi.us\0"
+"avocat.pro\0juegos\0lego\0with.marketing\0"
+"esq\0playstation-cloud.com\0"
+"biei.hokkaido.jp\0"
+"vipsinaapp.com\0"
+"scientist.aero\0vestvagoy.no\0"
+"bo.it\0buyshouses.net\0"
+"pythonanywhere.com\0"
+"barueri.br\0"
+"services.aero\0"
+"\xe5\xb3\xb6\xe6\xa0\xb9.jp\0iitate.fukushima.jp\0gg.ax\0"
+"hoteles\0is-a-soxfan.org\0"
+"shimoji.okinawa.jp\0"
+"richardli\0"
+"web.lk\0nexus\0"
+"kwp.gov.pl\0wuoz.gov.pl\0"
+"giessen.museum\0outsystemscloud.com\0"
+"ch.it\0chikuma.nagano.jp\0iki.nagasaki.jp\0"
+"likescandy.com\0"
+"walbrzych.pl\0blogspot.com.mt\0"
+"blogspot.com.ng\0"
+"eus\0"
+"nuoro.it\0hirakata.osaka.jp\0"
+"alessandria.it\0miyoshi.hiroshima.jp\0kishiwada.osaka.jp\0"
+"s3-ca-central-1.amazonaws.com\0"
+"\xe7\xbd\x91\xe7\xab\x99\0"
+"web.nf\0"
+"gs.ol.no\0bremanger.no\0nordkapp.no\0lib.wa.us\0"
+"fujieda.shizuoka.jp\0"
+"web.ni\0"
+"medecin.fr\0"
+"campidano-medio.it\0hikawa.shimane.jp\0"
"writesthisblog.com\0"
-"mil.gh\0leadpages.co\0"
+"taxi.br\0theater\0"
+"k12.nj.us\0"
+"cz.it\0"
+"nike\0"
+"freeboxos.fr\0"
+"ino.kochi.jp\0"
+"5.bg\0no.eu.org\0"
+"matsubushi.saitama.jp\0"
+"hi.cn\0"
+"uchinada.ishikawa.jp\0"
+"taifun-dns.de\0"
+"j.scaleforce.com.cy\0"
+"blogspot.com.tr\0"
+"barsy.info\0"
+"yamaguchi.jp\0zgorzelec.pl\0"
+"wiki\0"
+"maintenance.aero\0vegarshei.no\0"
+"minoh.osaka.jp\0"
+"koebenhavn.museum\0sale\0"
+"it.ao\0web.pk\0mlbfan.org\0"
+"yahiko.niigata.jp\0"
+"indianmarket.museum\0from-nm.com\0"
+"auction\0"
+"badaddja.no\0tonsberg.no\0"
+"veneto.it\0"
+"baseball.museum\0ap-south-1.elasticbeanstalk.com\0"
+"*.nom.br\0"
+"vestre-toten.no\0"
+"zama.kanagawa.jp\0"
+"cc.nj.us\0"
+"komono.mie.jp\0fit\0"
+"ski.museum\0barsy.me\0"
+"cloud-fr1.unispace.io\0"
+"fe.it\0"
+"moareke.no\0vaga.no\0"
+"yamanashi.jp\0"
+"is-with-theband.com\0"
+"miami\0"
+"df.gov.br\0"
+"fuoisku.no\0"
+"doshi.yamanashi.jp\0"
+"automotive.museum\0"
+"nogata.fukuoka.jp\0mail.pl\0schmidt\0"
+"state.museum\0wine\0"
+"juedisches.museum\0"
+"hitra.no\0"
+"nishio.aichi.jp\0"
+"hitachi\0"
+"med.pro\0"
+"daisen.akita.jp\0barclaycard\0"
+"vercel.app\0"
+"mock.pstmn.io\0"
+"sanda.hyogo.jp\0higashimatsushima.miyagi.jp\0"
+"family\0"
+"b.bg\0ullensaker.no\0tele.amune.org\0"
+"\xe7\xbd\x91\xe5\x9d\x80\0"
+"flanders.museum\0from-sc.com\0"
+"web.tj\0"
+"\xc3\xb8ystre-slidre.no\0"
+"celtic.museum\0pubol.museum\0"
+"fly\0"
+"b.br\0web.tr\0"
+"kv\xc3\xa6""fjord.no\0"
+"tamamura.gunma.jp\0aarp\0"
+"mortgage\0"
+"cern\0"
+"k.bg\0nz.eu.org\0"
+"blogspot.com.uy\0"
+"shiftedit.io\0"
+"linkyard.cloud\0"
+"caracal.mythic-beasts.com\0"
+"av.tr\0"
+"tattoo\0"
+"s3-website.us-east-2.amazonaws.com\0"
+"jessheim.no\0"
+"schoenbrunn.museum\0web.ve\0"
+"t.bg\0gs.st.no\0"
+"hida.gifu.jp\0kuokgroup\0bloger.id\0"
+"notteroy.no\0ch.tc\0"
+"polkowice.pl\0sarl\0"
+"namdalseid.no\0"
+"saikai.nagasaki.jp\0"
+"gs.tm.no\0foo\0barsy.ro\0"
+"hiratsuka.kanagawa.jp\0lowicz.pl\0*.in.futurecms.at\0"
+"ac.leg.br\0instantcloud.cn\0"
+"m\xc3\xa5s\xc3\xb8y.no\0"
+"kyowa.akita.jp\0fujioka.gunma.jp\0nakayama.yamagata.jp\0"
+"moscow.museum\0"
+"ullensvang.no\0"
+"ina.ibaraki.jp\0fox\0"
+"sa.gov.au\0from-wa.com\0"
+"\xe7\xbd\x91\xe7\xb5\xa1.hk\0"
+"isesaki.gunma.jp\0"
+"cc.ri.us\0"
+"tsuyama.okayama.jp\0"
+"mitsubishi\0ddnsfree.com\0yali.mythic-beasts.com\0"
+"gliding.aero\0"
+"\xe6\x9d\xb1\xe4\xba\xac.jp\0ashiya.hyogo.jp\0"
+"al.eu.org\0"
+"gal\0edgeapp.net\0"
+"java\0"
+"yahoo\0"
+"tatsuno.nagano.jp\0gap\0"
+"chintai\0postman-echo.com\0"
+"okinawa.jp\0a.ssl.fastly.net\0"
+"nl.ca\0srht.site\0"
+"groks-this.info\0"
+"matsumoto.kagoshima.jp\0kawakami.nara.jp\0yandex\0"
+"web.za\0gay\0"
+"barsy.uk\0"
+"frl\0"
+"nl.ci\0"
+"emb.kw\0"
+"mantova.it\0kitahata.saga.jp\0earth\0"
+"save\0"
+"nu.ca\0nrw.museum\0"
+"rr.gov.br\0"
+"mihama.chiba.jp\0"
+"stadt.museum\0"
+"j.layershift.co.uk\0"
+"marumori.miyagi.jp\0ostroleka.pl\0lubartow.pl\0"
+"saintlouis.museum\0"
+"elblag.pl\0"
+"on.ca\0"
+"iyo.ehime.jp\0bungoono.oita.jp\0"
+"barsy.co.uk\0"
+"oamishirasato.chiba.jp\0"
+"money\0"
+"gdn\0"
+"\xc3\xb8rsta.no\0"
+"casacam.net\0"
+"gea\0jdevcloud.com\0"
+"ftr\0jcloud.kz\0"
+"sogne.no\0shopping\0volvo\0"
+"laspezia.it\0akabira.hokkaido.jp\0goto.nagasaki.jp\0"
+"stream\0"
+"rs.gov.br\0sc.gov.br\0"
+"\xe5\xb1\xb1\xe5\x8f\xa3.jp\0"
+"saxo\0"
+"pp.az\0fun\0"
+"kragero.no\0"
+"cosenza.it\0hokuryu.hokkaido.jp\0"
+"globo\0"
+"karelia.su\0"
+"radoy.no\0"
+"zarow.pl\0"
+"naturalhistorymuseum.museum\0"
+"buzz\0"
+"kani.gifu.jp\0nishiizu.shizuoka.jp\0"
+"war.museum\0able\0"
+"mincom.tn\0"
+"\xc3\xa5mot.no\0kongsberg.no\0"
+"trentinsud-tirol.it\0ukiha.fukuoka.jp\0dnsking.ch\0"
+"githubusercontent.com\0"
+"shimabara.nagasaki.jp\0goldpoint\0"
+"jamison.museum\0from-de.com\0"
+"odo.br\0"
+"opencraft.hosting\0"
+"naoshima.kagawa.jp\0"
+"imari.saga.jp\0de.cool\0"
+"society.museum\0"
+"embroidery.museum\0*.dev.adobeaemcloud.com\0"
+"salud.bo\0k12.wi.us\0"
+"ms.it\0wnext.app\0"
+"nesoddtangen.no\0"
+"shirakawa.gifu.jp\0"
+"holt\xc3\xa5len.no\0"
+"konyvelo.hu\0oregontrail.museum\0kharkiv.ua\0adygeya.su\0"
+"cc.wa.us\0"
+"valle-daosta.it\0hachirogata.akita.jp\0tomisato.chiba.jp\0rifu.miyagi.jp\0schokokeks.net\0"
+"reise\0"
+"fukaya.saitama.jp\0yonezawa.yamagata.jp\0"
+"fyi\0"
+"vagan.no\0"
+"mielno.pl\0"
+"botanicalgarden.museum\0"
+"\xe5\xa4\xa7\xe9\x98\xaa.jp\0"
+"saves-the-whales.com\0"
+"mayfirst.info\0"
+"tsumagoi.gunma.jp\0"
+"mangyshlak.su\0"
+"cri.br\0ms.kr\0"
+"hi.us\0co.network\0"
+"cremona.it\0nu.it\0"
+"city.hu\0"
+"varese.it\0"
+"toride.ibaraki.jp\0"
+"sd.cn\0"
+"kommune.no\0"
+"yurihonjo.akita.jp\0mitsuke.niigata.jp\0hasuda.saitama.jp\0noho.st\0"
+"rn.gov.br\0"
+"musashino.tokyo.jp\0"
+"theatre\0"
+"notogawa.shiga.jp\0"
+"endofinternet.org\0"
+"cdn.prod.atlassian-dev.net\0"
+"ap-southeast-1.elasticbeanstalk.com\0adygeya.ru\0"
+"jan-mayen.no\0vossevangen.no\0"
+"mobara.chiba.jp\0kartuzy.pl\0"
+"cranbrook.museum\0rivne.ua\0cruise\0gle\0"
+"pg.it\0ora.gunma.jp\0grajewo.pl\0"
+"rackmaze.com\0"
+"meiwa.gunma.jp\0misaki.okayama.jp\0international\0"
+"historicalsociety.museum\0"
+"computer\0"
+"shiroi.chiba.jp\0kiso.nagano.jp\0"
+"ro.gov.br\0"
+"dynns.com\0"
+"troandin.no\0"
+"macerata.it\0"
+"qld.edu.au\0b.se\0nohost.me\0"
+"gwangju.kr\0"
+"meldal.no\0gmo\0tours\0"
+"\xe8\x81\x94\xe9\x80\x9a\0"
+"nl.no\0"
+"alto-adige.it\0trapani.it\0handa.aichi.jp\0"
+"*.awdev.ca\0"
+"gmx\0"
+"audible\0nog.community\0"
+"lib.ak.us\0"
+"ogawa.nagano.jp\0aga.niigata.jp\0madrid\0"
+"k.se\0reliance\0"
+"khplay.nl\0"
+"\xec\x82\xbc\xec\x84\xb1\0"
+"lima-city.rocks\0"
+"isshiki.aichi.jp\0expert\0lgbt\0pictet\0"
+"def.br\0"
+"sorfold.no\0barsy.bg\0"
+"u.channelsdvr.net\0"
+"yura.wakayama.jp\0"
+"t.se\0demo.jelastic.com\0"
+"goo\0"
+"gop\0sandvikcoromant\0now.sh\0"
+"firestone\0barsy.ca\0dreamhosters.com\0spdns.eu\0"
+"cloudns.pro\0boldlygoingnowhere.org\0"
+"got\0"
+"gov\0"
+"finn\xc3\xb8y.no\0spydeberg.no\0rentals\0"
+"nishigo.fukushima.jp\0\xe7\xbb\x84\xe7\xbb\x87\xe6\x9c\xba\xe6\x9e\x84\0"
+"001www.com\0"
+"iserv.dev\0"
+"col.ng\0"
+"pub.sa\0"
+"honjyo.akita.jp\0chitose.hokkaido.jp\0fuchu.toyama.jp\0"
+"ru.com\0"
+"barsy.de\0"
+"tomi.nagano.jp\0kunigami.okinawa.jp\0"
+"okinawa\0is-a-landscaper.com\0"
+"iglesias-carbonia.it\0tokyo.jp\0\xe6\x84\x9b\xe7\x9f\xa5.jp\0iwakura.aichi.jp\0komatsushima.tokushima.jp\0"
+"mt.eu.org\0"
+"andria-barletta-trani.it\0suita.osaka.jp\0nyuzen.toyama.jp\0"
+"al.leg.br\0"
+"oslo.no\0g.vbrplsbx.io\0"
+"michigan.museum\0"
+"haugesund.no\0ma.us\0"
+"otaki.chiba.jp\0to.gt\0"
+"rocher\0"
+"kashiwa.chiba.jp\0"
+"fjell.no\0giehtavuoatna.no\0hbo\0"
+"\xd0\xba\xd0\xbe\xd0\xbc\0flap.id\0"
+"srv.br\0"
+"servegame.org\0"
+"naka.hiroshima.jp\0niyodogawa.kochi.jp\0fujikawa.yamanashi.jp\0"
+"sport.hu\0barsy.eu\0"
+"nc.tr\0"
+"audio\0"
+"sv.it\0szczytno.pl\0"
+"westfalen.museum\0hlx.live\0"
+"evje-og-hornnes.no\0stokke.no\0"
+"minamioguni.kumamoto.jp\0"
+"civilisation.museum\0"
+"h\xc3\xa1pmir.no\0vadso.no\0ms.us\0nc.us\0"
+"to.it\0otama.fukushima.jp\0kamiizumi.saitama.jp\0"
+"yoga\0no.com\0"
+"lib.de.us\0"
+"synology-diskstation.de\0"
+"ragusa.it\0"
+"nakagusuku.okinawa.jp\0pohl\0"
+"togliatti.su\0"
+"vic.au\0"
+"sande.more-og-romsdal.no\0divtasvuodna.no\0"
+"haboro.hokkaido.jp\0hachioji.tokyo.jp\0"
+"kunneppu.hokkaido.jp\0"
+"spdns.de\0"
+"mytis.ru\0fastvps.site\0"
+"va.it\0"
+"pp.se\0pp.ru\0"
+"brindisi.it\0sakae.nagano.jp\0"
+"cri.nz\0barsy.in\0"
+"barsy.io\0"
+"kitashiobara.fukushima.jp\0kure.hiroshima.jp\0"
+"in-brb.de\0"
+"brother\0"
+"myfirewall.org\0"
+"panama.museum\0"
+"to.md\0"
+"chernihiv.ua\0is-slick.com\0"
+"gold\0bar2.net\0"
+"golf\0bss.design\0"
+"journalist.aero\0"
+"volkenkunde.museum\0istmein.de\0"
+"cloud.fedoraproject.org\0"
+"iwaki.fukushima.jp\0sunagawa.hokkaido.jp\0omachi.saga.jp\0shimotsuke.tochigi.jp\0wzmiuw.gov.pl\0"
+"s3-fips-us-gov-west-1.amazonaws.com\0pp.ua\0"
+"vs.it\0"
+"motobu.okinawa.jp\0"
+"christiansburg.museum\0"
+"sakura.chiba.jp\0higashi.okinawa.jp\0"
+"nokia\0"
+"*.lcl.dev\0"
+"friuliveneziagiulia.it\0trentinoa-adige.it\0*.bzz.dapps.earth\0"
+"british.museum\0nalchik.ru\0"
+"se.gov.br\0"
+"vuelos\0webhop.info\0"
+"averoy.no\0"
+"motegi.tochigi.jp\0"
+"shopware.store\0"
+"redstone\0"
+"for-the.biz\0"
+"author.aero\0"
+"now-dns.net\0"
+"nalchik.su\0"
+"hiv\0"
+"cleverapps.io\0"
+"sanuki.kagawa.jp\0kamikitayama.nara.jp\0"
+"dattolocal.com\0"
+"isa-geek.org\0"
+"sdn.gov.pl\0"
+"qsl.br\0"
+"etne.no\0goog\0"
+"\xe7\x9f\xb3\xe5\xb7\x9d.jp\0rebun.hokkaido.jp\0tamatsukuri.ibaraki.jp\0tono.iwate.jp\0yasaka.nagano.jp\0hu.net\0"
+"va.no\0"
+"shiojiri.nagano.jp\0"
+"rugby\0"
+"syncloud.it\0"
+"lelux.site\0"
+"fot.br\0"
+"hagebostad.no\0cloudns.info\0"
+"adac\0frogans\0my.eu.org\0nyan.to\0"
+"soeda.fukuoka.jp\0shintomi.miyazaki.jp\0rzgw.gov.pl\0"
+"logoip.de\0"
+"yamanashi.yamanashi.jp\0hkt\0"
+"herokussl.com\0"
+"on-web.fr\0"
+"nagi.okayama.jp\0adobeaemcloud.net\0"
+"chernivtsi.ua\0marine.ru\0"
+"gb.net\0"
+"skierv\xc3\xa1.no\0"
+"kosuge.yamanashi.jp\0scot\0"
+"pizza\0"
+"bib.br\0"
+"singles\0"
+"chat\0market\0"
+"sm.ua\0"
+"sd.us\0"
+"kusatsu.gunma.jp\0asago.hyogo.jp\0kawaguchi.saitama.jp\0dontexist.net\0"
+"org.ac\0molde.no\0"
+"prudential\0"
+"org.ae\0"
+"org.af\0"
+"org.ag\0black\0"
+"fukushima.jp\0"
+"org.ai\0itau\0"
+"org.al\0shimamoto.osaka.jp\0"
+"org.am\0amsterdam.museum\0zhitomir.ua\0"
+"ibaraki.jp\0oyamazaki.kyoto.jp\0"
+"org.ba\0"
+"org.ar\0org.bb\0users.scale.virtualcloud.com.br\0"
+"overhalla.no\0"
+"org.au\0americana.museum\0"
+"rep.br\0"
+"gallo\0"
+"org.bh\0joso.ibaraki.jp\0sa.gov.pl\0"
+"org.bi\0tienda\0"
+"org.az\0"
+"microlight.aero\0"
+"kihoku.ehime.jp\0tsubetsu.hokkaido.jp\0"
+"org.bm\0"
+"org.bn\0ericsson\0porn\0"
+"org.bo\0reg.dk\0"
+"goshiki.hyogo.jp\0tsuchiura.ibaraki.jp\0bedzin.pl\0a.prod.fastly.net\0leczna.pl\0"
+"americanart.museum\0"
+"org.br\0"
+"org.bs\0cloudns.org\0"
+"org.bt\0"
+"intl.tn\0"
+"org.bw\0"
+"hitachiota.ibaraki.jp\0hanamaki.iwate.jp\0machida.tokyo.jp\0uzs.gov.pl\0"
+"org.ci\0s3.amazonaws.com\0"
+"org.bz\0"
+"hot\0"
+"org.cn\0"
+"org.co\0how\0"
+"makinohara.shizuoka.jp\0"
+"kobayashi.miyazaki.jp\0post\0"
+"org.cu\0"
+"org.cv\0"
+"org.cw\0freeddns.us\0"
+"obu.aichi.jp\0naklo.pl\0"
+"org.cy\0"
+"ba.gov.br\0"
+"\xe5\x80\x8b\xe4\xba\xba.\xe9\xa6\x99\xe6\xb8\xaf\0"
+"uppo.gov.pl\0sanok.pl\0microsoft\0"
+"org.dm\0\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0athleta\0securitytactics.com\0"
+"org.do\0tx.us\0"
+"org.ec\0"
+"org.ee\0judygarland.museum\0"
+"vercel.dev\0"
+"org.eg\0\xc4\x8d\xc3\xa1hcesuolo.no\0nl.eu.org\0"
+"org.dz\0"
+"uz.ua\0"
+"\xe9\xa3\x9e\xe5\x88\xa9\xe6\xb5\xa6\0"
+"va.us\0"
+"idf.il\0godo.gifu.jp\0pgafan.net\0"
+"salvadordali.museum\0"
+"org.es\0"
+"org.et\0esan.hokkaido.jp\0""16-b.it\0"
+"ibm\0firewall-gateway.de\0"
+"krokstadelva.no\0\xe7\xb5\x84\xe7\xb9\x94.tw\0"
+"org.fj\0"
+"parachuting.aero\0noticias.bo\0"
+"org.fm\0ice\0"
+"hobol.no\0"
+"is-an-entertainer.com\0"
+"rsvp\0"
+"org.ge\0"
+"org.gg\0cc.ar.us\0"
+"org.gh\0kamaishi.iwate.jp\0"
+"org.gi\0"
+"qoto.io\0"
+"org.gl\0"
+"icu\0space-to-rent.com\0"
+"org.gn\0"
+"lyngen.no\0norddal.no\0"
+"org.gp\0"
+"org.gr\0"
+"bindal.no\0lib.me.us\0"
+"org.gt\0"
+"org.gu\0luxembourg.museum\0memorial.museum\0"
+"org.gy\0"
+"org.hk\0"
+"shiso.hyogo.jp\0togakushi.nagano.jp\0"
+"org.hn\0"
+"okoppe.hokkaido.jp\0"
+"cyon.site\0"
+"lib.nj.us\0sucks\0"
+"org.ht\0padua.it\0mazowsze.pl\0"
+"org.hu\0natura\0"
+"rio.br\0"
+"toyoura.hokkaido.jp\0oyama.tochigi.jp\0"
+"org.il\0"
+"org.im\0trustee.museum\0"
+"org.in\0"
+"samukawa.kanagawa.jp\0"
+"org.iq\0"
+"org.ir\0"
+"org.is\0lib.ms.us\0lib.nc.us\0cust.prod.thingdust.io\0"
+"org.je\0ifm\0"
+"in.london\0"
+"abkhazia.su\0"
+"\xe7\xa7\x8b\xe7\x94\xb0.jp\0kasama.ibaraki.jp\0"
+"org.jo\0vaksdal.no\0"
+"trentinos\xc3\xbc""dtirol.it\0sells-it.net\0"
+"lib.oh.us\0"
+"takahama.aichi.jp\0yamashina.kyoto.jp\0rep.kp\0auto.pl\0"
+"org.kg\0ng.eu.org\0"
+"tsuiki.fukuoka.jp\0"
+"org.ki\0s3.dualstack.eu-west-3.amazonaws.com\0isa-geek.com\0"
+"univ.sn\0"
+"games\0"
+"org.km\0montreal.museum\0"
+"belem.br\0org.kn\0"
+"esashi.hokkaido.jp\0org.kp\0reserve-online.net\0"
+"org.la\0filegear-de.me\0"
+"org.lb\0"
+"org.lc\0kautokeino.no\0porsangu.no\0"
+"koge.tottori.jp\0"
+"is-a-designer.com\0"
+"org.kw\0zappos\0camdvr.org\0"
+"higashiyodogawa.osaka.jp\0"
+"org.ky\0denmark.museum\0"
+"am.gov.br\0org.kz\0bel.tr\0immobilien\0"
+"org.lk\0"
+"chigasaki.kanagawa.jp\0sklep.pl\0"
+"gen.mi.us\0"
+"org.ma\0elvendrell.museum\0neko.am\0"
+"org.lr\0\xd8\xb3\xd9\x88\xd8\xaf\xd8\xa7\xd9\x86\0"
+"homebuilt.aero\0org.ls\0latino\0"
+"furudono.fukushima.jp\0"
+"org.me\0mine.nu\0"
+"org.lv\0"
+"org.mg\0"
+"sekikawa.niigata.jp\0"
+"ab.ca\0org.ly\0s3.eu-central-1.amazonaws.com\0"
+"org.mk\0rennebu.no\0trogstad.no\0\xe5\x85\xac\xe5\x8f\xb8.\xe9\xa6\x99\xe6\xb8\xaf\0"
+"org.ml\0"
+"coastaldefence.museum\0minnesota.museum\0furniture\0"
+"org.mn\0sp.leg.br\0"
+"org.mo\0"
+"takatori.nara.jp\0"
+"org.na\0wpenginepowered.com\0"
+"org.ms\0v\xc3\xa5g\xc3\xa5.no\0"
+"uto.kumamoto.jp\0org.mt\0"
+"org.mu\0"
+"org.mv\0"
+"express.aero\0org.mw\0org.ng\0balestrand.no\0"
+"tempioolbia.it\0org.mx\0in.net\0cloudfunctions.net\0*.webpaas.ovh.net\0"
+"org.my\0org.ni\0from-ca.com\0"
+"org.mz\0"
+"academy.museum\0plaza.museum\0"
+"\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0"
+"stjordalshalsen.no\0hosp.uk\0"
+"co.technology\0"
+"chambagri.fr\0org.nr\0"
+"fuel.aero\0ris\xc3\xb8r.no\0"
+"amber.museum\0"
+"valled-aosta.it\0"
+"brussel.museum\0s3-website-ap-southeast-1.amazonaws.com\0"
+"org.nz\0"
+"\xe6\x94\xbf\xe5\xba\x9c.\xe9\xa6\x99\xe6\xb8\xaf\0"
+"komagane.nagano.jp\0nagahama.shiga.jp\0barsy.support\0"
+"org.om\0parti.se\0"
+"gen.in\0"
+"podhale.pl\0"
+"org.pa\0"
+"vestby.no\0"
+"tarumizu.kagoshima.jp\0"
+"org.pe\0"
+"org.pf\0"
+"\xd9\x87\xd9\x85\xd8\xb1\xd8\xa7\xd9\x87\0"
+"org.ph\0gmail\0"
+"bajddar.no\0org.pk\0"
+"sarufutsu.hokkaido.jp\0wada.nagano.jp\0org.pl\0"
+"co.ae\0"
+"mus.br\0org.pn\0"
+"software.aero\0co.ag\0"
+"kids.museum\0village.museum\0org.qa\0"
+"org.pr\0e4.cz\0"
+"org.ps\0"
+"fvg.it\0org.pt\0"
+"co.am\0"
+"repair.men\0"
+"co.ao\0\xe7\xbb\x84\xe7\xbb\x87.hk\0"
+"kouyama.kagoshima.jp\0shima.mie.jp\0murakami.niigata.jp\0download\0"
+"org.py\0"
+"co.bb\0"
+"stor-elvdal.no\0k12.gu.us\0inc\0"
+"co.at\0"
+"ing\0"
+"\xd0\xbc\xd0\xba\xd0\xb4\0"
"co.bi\0"
-"london\0"
+"ink\0"
+"barcelona\0"
"co.bn\0"
-"jevnaker.no\0"
-"kihoku.ehime.jp\0cc.ga.us\0lib.tx.us\0fi.cloudplatform.fi\0loginto.me\0"
-"aisai.aichi.jp\0co.ca\0"
-"mil.gt\0mn.us\0bplaced.de\0"
-"co.bw\0wiw.gov.pl\0"
-"co.ci\0avocat.fr\0attorney\0"
-"eco\0goupile.fr\0"
-"anani.br\0"
-"co.cl\0sagae.yamagata.jp\0"
-"co.cm\0*.sendai.jp\0college\0"
-"mil.hn\0sec.ps\0"
-"development.run\0"
-"co.cr\0nakama.fukuoka.jp\0from-wi.com\0noticeable.news\0"
-"mil.id\0kijo.miyazaki.jp\0"
-"\xe0\xb8\xad\xe0\xb8\x87\xe0\xb8\x84\xe0\xb9\x8c\xe0\xb8\x81\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"name\0"
-"press.ma\0"
+"cc.gu.us\0"
+"seat\0"
+"co.ca\0is-a-anarchist.com\0"
+"ap.gov.br\0"
+"int\0"
+"veterinaire.km\0"
+"co.bw\0org.ro\0radio\0"
+"tomari.hokkaido.jp\0suzuka.mie.jp\0"
+"co.ci\0org.sa\0balena-devices.com\0barsy.site\0"
+"org.sb\0"
+"org.rs\0org.sc\0"
+"co.cl\0tabuse.yamaguchi.jp\0org.sd\0"
+"co.cm\0org.se\0org.ru\0"
+"org.rw\0org.sg\0"
+"org.sh\0"
+"koeln.museum\0"
+"co.cr\0\xe8\xaf\xba\xe5\x9f\xba\xe4\xba\x9a\0"
+"independent-commission.uk\0"
+"nichinan.miyazaki.jp\0koto.tokyo.jp\0olkusz.pl\0org.sl\0"
+"foundation.museum\0bib.ve\0"
+"org.sn\0"
+"org.so\0"
+"zoological.museum\0schule\0"
"co.cz\0"
-"co.dk\0"
-"uruma.okinawa.jp\0za.bz\0"
-"savannahga.museum\0"
-"mil.in\0"
-"edu\0termez.su\0vps-host.net\0"
-"mil.iq\0dtv\0"
-"s3-website.ap-south-1.amazonaws.com\0"
-"deporte.bo\0"
-"*.bzz.dapps.earth\0"
-"allfinanz\0"
-"ciencia.bo\0"
-"journalism.museum\0dnsup.net\0"
-"minamata.kumamoto.jp\0is-a-socialist.com\0"
-"mil.jo\0zapto.org\0"
-"\xe3\x82\xb0\xe3\x83\xbc\xe3\x82\xb0\xe3\x83\xab\0"
-"digital\0"
-"vestv\xc3\xa5g\xc3\xb8y.no\0"
-"association.museum\0"
-"cloudns.pro\0"
-"mil.kg\0"
-"capital\0"
-"aikawa.kanagawa.jp\0inf.ua\0"
-"cc.nj.us\0"
-"gloppen.no\0"
-"\xe5\xb2\xa1\xe5\xb1\xb1.jp\0mil.km\0dvr\0"
-"hanamigawa.chiba.jp\0from-pa.com\0"
-"student.aero\0"
-"o.bg\0mil.kr\0jeju.kr\0"
-"co.gg\0"
-"jx.cn\0\xe3\x82\xaf\xe3\x83\xa9\xe3\x82\xa6\xe3\x83\x89\0"
-"mil.kz\0"
-"humanities.museum\0"
+"show.aero\0r\xc3\xa1hkker\xc3\xa1vju.no\0org.ss\0co.dk\0"
+"ap.gov.pl\0org.st\0lidl\0"
+"lotte\0georgia.su\0"
+"org.sv\0"
+"webhop.org\0gen.ng\0"
+"org.sy\0statefarm\0"
+"org.sz\0org.tj\0"
+"skjerv\xc3\xb8y.no\0"
+"kitagawa.kochi.jp\0"
+"org.tm\0brasilia.me\0"
+"org.tn\0"
+"muosat.no\0s\xc3\xb8ndre-land.no\0org.to\0\xe0\xba\xa5\xe0\xba\xb2\xe0\xba\xa7\0lotto\0"
+"ebetsu.hokkaido.jp\0*.dapps.earth\0"
+"pilots.museum\0org.ua\0hisamitsu\0us-east-1.amazonaws.com\0siiites.com\0"
+"org.tr\0"
+"sennan.osaka.jp\0org.tt\0jeep\0"
+"square7.de\0"
+"cargo.aero\0h\xc3\xa1""bmer.no\0org.tw\0org.ug\0bingo\0"
+"uki.kumamoto.jp\0meiwa.mie.jp\0watch\0wroc.pl\0"
+"gen.nz\0"
+"levanger.no\0org.uk\0"
+"keisen.fukuoka.jp\0katowice.pl\0"
+"life\0from-wi.com\0"
+"granvin.no\0seek\0"
+"ponpes.id\0yuza.yamagata.jp\0es.ax\0"
+"ushuaia.museum\0"
+"veterinaire.fr\0"
+"org.vc\0"
+"hokkaido.jp\0soni.nara.jp\0"
+"org.ve\0"
+"chonan.chiba.jp\0rackmaze.net\0"
+"org.uy\0org.vi\0\xd0\xbc\xd0\xbe\xd0\xbd\0"
+"leg.br\0org.uz\0jcb\0"
+"aurland.no\0"
+"at.it\0"
+"org.vn\0"
+"co.gg\0video\0"
+"sakae.chiba.jp\0travel.pl\0\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0"
+"lon.wafaicloud.com\0"
"co.gl\0"
-"kusatsu.gunma.jp\0"
-"promo\0"
-"bauern.museum\0chiropractic.museum\0"
-"weibo\0is-a-caterer.com\0"
-"kamoenai.hokkaido.jp\0mil.lv\0"
-"mil.mg\0"
+"org.vu\0"
+"shimamaki.hokkaido.jp\0"
+"gangaviika.no\0"
+"ist\0"
+"avocat.fr\0"
+"ryuoh.shiga.jp\0kainan.tokushima.jp\0psp.gov.pl\0"
"co.gy\0"
-"fundacio.museum\0"
-"shibecha.hokkaido.jp\0"
-"beardu.no\0"
-"florist\0is-slick.com\0"
-"missoula.museum\0"
-"lib.nh.us\0"
-"co.id\0tgory.pl\0"
-"co.hu\0"
-"mil.mv\0"
-"uwajima.ehime.jp\0mil.ng\0narvik.no\0"
-"tkmaxx\0sells-it.net\0"
-"sa.au\0mil.my\0mil.ni\0"
-"\xe9\x95\xb7\xe9\x87\x8e.jp\0mil.mz\0"
-"co.il\0"
-"co.im\0opole.pl\0"
-"co.in\0"
-"mil.no\0"
-"of.london\0"
-"co.ir\0oyodo.nara.jp\0"
-"7.bg\0"
-"co.it\0onrender.com\0"
-"co.je\0"
-"sumy.ua\0"
-"boavista.br\0mil.nz\0"
-"sera.hiroshima.jp\0"
-"targi.pl\0download\0"
-"fujiyoshida.yamanashi.jp\0vaapste.no\0"
-"glug.org.uk\0"
-"co.jp\0football\0"
-"aju.br\0"
-"co.ke\0mil.pe\0"
-"sa.cr\0fineart.museum\0sel.no\0theworkpc.com\0"
-"ise.mie.jp\0iheya.okinawa.jp\0snoasa.no\0"
-"aomori.aomori.jp\0mil.ph\0\xd1\x80\xd1\x84\0"
-"shimogo.fukushima.jp\0"
-"shiso.hyogo.jp\0"
-"inashiki.ibaraki.jp\0"
-"baths.museum\0mil.pl\0"
-"sasaguri.fukuoka.jp\0"
-"scotland.museum\0"
-"mil.qa\0"
-"co.kr\0"
-"co.lc\0"
-"accident-investigation.aero\0nt.edu.au\0"
-"tushu\0"
-"public.museum\0mil.py\0boutir.com\0qc.com\0"
-"ca-central-1.elasticbeanstalk.com\0"
-"cechire.com\0"
-"ama.aichi.jp\0"
-"doshi.yamanashi.jp\0cipriani\0"
-"co.ma\0"
-"airbus\0mine.nu\0"
+"org.ws\0paas.beebyte.io\0"
+"trieste.it\0square7.ch\0"
+"sch.ae\0alstom\0"
+"siellak.no\0"
+"co.id\0laz.it\0chikugo.fukuoka.jp\0usui.fukuoka.jp\0wroclaw.pl\0"
+"co.hu\0obninsk.su\0"
+"daegu.kr\0itv\0"
+"yachiyo.ibaraki.jp\0"
+"hair\0"
+"co.il\0wodzislaw.pl\0"
+"co.im\0org.ye\0in-butter.de\0"
+"co.in\0ruhr\0"
+"from-ks.com\0"
+"co.ir\0"
+"\xe7\xb5\x84\xe7\xb9\x94.hk\0"
+"co.it\0at.md\0"
+"a\xc3\xa9roport.ci\0co.je\0"
+"fbxos.fr\0"
+"\xc3\xa1laheadju.no\0"
+"*.bd\0milano.it\0mashiki.kumamoto.jp\0kasaoka.okayama.jp\0nishinoshima.shimane.jp\0"
+"org.za\0idnblogger.com\0"
+"org.yt\0"
+"co.jp\0minato.osaka.jp\0\xe7\xbd\x91\xe7\xbb\x9c\0"
+"s3.teckids.org\0"
+"ouda.nara.jp\0"
+"co.ke\0org.zm\0like\0"
+"mielec.pl\0"
+"musica.ar\0gen.tr\0"
+"3.bg\0"
+"iamallama.com\0"
+"*.ck\0org.zw\0"
+"kaszuby.pl\0travel.tt\0"
+"co.kr\0nat.tn\0"
+"co.lc\0markets\0"
+"filatelia.museum\0"
+"musica.bo\0alaheadju.no\0"
+"kuroishi.aomori.jp\0taishin.fukushima.jp\0higashihiroshima.hiroshima.jp\0\xd8\xa7\xd8\xb1\xd8\xa7\xd9\x85\xd9\x83\xd9\x88\0"
+"canada.museum\0omega\0"
+"cc.mo.us\0dyndns.info\0"
+"aizubange.fukushima.jp\0community-pro.net\0"
+"co.ma\0s3.dualstack.ap-south-1.amazonaws.com\0"
"co.ls\0"
+"odawara.kanagawa.jp\0"
"co.me\0"
-"co.mg\0"
-"elverum.no\0"
-"misato.akita.jp\0otoyo.kochi.jp\0corporation.museum\0historicalsociety.museum\0"
-"emb.kw\0co.na\0s\xc3\xa1l\xc3\xa1t.no\0uk0.bigv.io\0"
-"\xc3\xb8rland.no\0"
-"f.se\0"
-"co.mu\0mil.ru\0"
-"vi.it\0co.mw\0mil.rw\0"
-"mil.sh\0"
-"co.ni\0exposed\0"
+"co.mg\0minisite.ms\0"
+"mitaka.tokyo.jp\0"
+"secure\0from-pa.com\0"
+"cnpy.gdn\0"
+"freebox-os.com\0"
+"amot.no\0hurdal.no\0cc.nh.us\0jio\0limo\0groks-the.info\0"
+"kasuya.fukuoka.jp\0shingu.hyogo.jp\0tomiya.miyagi.jp\0myspreadshop.net\0"
+"co.na\0myravendb.com\0"
+"mo-i-rana.no\0k12.ny.us\0farmers\0"
+"fc.it\0rome.it\0"
+"co.mu\0"
+"*.er\0"
+"co.mw\0"
+"yaotsu.gifu.jp\0suginami.tokyo.jp\0search\0"
+"nt.edu.au\0co.ni\0ap-northeast-1.elasticbeanstalk.com\0"
"co.mz\0"
-"her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0navy\0"
-"zj.cn\0ebino.miyazaki.jp\0co.nl\0"
-"kolobrzeg.pl\0"
-"izu.shizuoka.jp\0co.no\0"
-"apple\0"
-"kami.miyagi.jp\0"
-"ooguy.com\0"
-"mil.st\0"
-"wang\0"
-"!city.yokohama.jp\0"
-"mil.sy\0"
-"co.nz\0mil.tj\0"
-"kaho.fukuoka.jp\0co.om\0mil.tm\0lib.ri.us\0panel.gg\0"
-"mil.to\0"
-"tiffany\0"
-"sakai.osaka.jp\0"
-"chosei.chiba.jp\0mil.tr\0"
-"educational.museum\0"
-"losangeles.museum\0"
-"veg\xc3\xa5rshei.no\0h\xc3\xa4kkinen.fi\0"
-"yamamoto.miyagi.jp\0"
-"mil.tw\0"
-"stjordalshalsen.no\0"
-"iwakura.aichi.jp\0kusatsu.shiga.jp\0mil.tz\0"
-"sp.leg.br\0co.pl\0"
-"x.bg\0nyuzen.toyama.jp\0co.pn\0"
-"natal.br\0"
-"\xe6\xbe\xb3\xe9\x96\x80\0bofa\0"
-"mil.vc\0"
-"mil.ve\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa4\0dattoweb.com\0"
-"co.pw\0"
-"sa.it\0"
-"hekinan.aichi.jp\0mil.uy\0fan\0"
-"funabashi.chiba.jp\0"
-"kamijima.ehime.jp\0"
-"from-sc.com\0"
-"barsy.site\0"
-"torino.it\0"
-"tjome.no\0"
-"us-east-1.amazonaws.com\0"
-"forsand.no\0music\0"
-"taiki.hokkaido.jp\0community-pro.de\0"
-"krasnik.pl\0"
-"hobby-site.com\0"
-"egyptian.museum\0\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\0"
-"co.ro\0"
-"jus.br\0"
-"toyama.jp\0tsu.mie.jp\0shiftcrypto.dev\0"
-"ikeda.gifu.jp\0co.rs\0k12.pr.us\0"
-"myphotos.cc\0"
-"nagasaki.jp\0"
-"co.rw\0"
-"yusui.kagoshima.jp\0"
-"aparecida.br\0cupcake.is\0"
-"shingo.aomori.jp\0bergen.no\0\xe5\xbe\xae\xe5\x8d\x9a\0"
-"esq\0net.eu.org\0paas.datacenter.fi\0no-ip.ca\0"
-"toyoura.hokkaido.jp\0nhlfan.net\0"
-"uk.primetel.cloud\0"
-"us-east-1.elasticbeanstalk.com\0"
-"mock.pstmn.io\0"
-"tottori.jp\0hofu.yamaguchi.jp\0bievat.no\0"
-"co.st\0"
-"hi.cn\0warabi.saitama.jp\0mil.ye\0"
-"soja.okayama.jp\0co.th\0"
-"user.srcf.net\0"
-"presidio.museum\0co.sz\0co.tj\0smile\0"
-"co.tm\0"
-"gs.ol.no\0"
-"\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0"
-"muos\xc3\xa1t.no\0"
-"hitra.no\0mil.za\0for-better.biz\0co.ua\0"
-"ggee\0"
-"flesberg.no\0co.tt\0"
+"link\0"
+"kasumigaura.ibaraki.jp\0chanel\0church\0co.nl\0"
+"encyclopedic.museum\0"
+"*.stgstage.dev\0"
+"*.fk\0co.no\0fh-muenster.io\0"
+"\xe4\xb8\x89\xe9\x87\x8d.jp\0yakumo.hokkaido.jp\0barsy.shop\0gotdns.ch\0"
+"on-aptible.com\0"
+"seljord.no\0user.party.eus\0"
+"trentino-s-tirol.it\0utazu.kagawa.jp\0"
+"arte.bo\0sn\xc3\xa5""ase.no\0"
+"tenri.nara.jp\0gamo.shiga.jp\0"
+"co.nz\0"
+"kraanghke.no\0"
+"settsu.osaka.jp\0"
+"co.om\0"
+"mosvik.no\0"
+"lazio.it\0shirahama.wakayama.jp\0"
+"es.kr\0"
+"balsan-suedtirol.it\0ge.it\0mochizuki.nagano.jp\0toyosato.shiga.jp\0"
+"mallorca.museum\0bd.se\0"
+"is-a-celticsfan.org\0"
+"niimi.okayama.jp\0"
+"surrey.museum\0"
+"ebina.kanagawa.jp\0jll\0co.pl\0"
+"co.pn\0"
+"sch.id\0"
+"su.paba.se\0"
+"environment.museum\0"
+"\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"hjelmeland.no\0co.pw\0"
+"hashima.gifu.jp\0"
+"urn.arpa\0"
+"aero\0i.bg\0"
+"sch.ir\0"
+"asahi.mie.jp\0jmp\0"
+"histoire.museum\0"
+"selje.no\0ak.us\0"
+"now-dns.org\0"
+"isa-geek.net\0"
+"lease\0"
+"jnj\0"
+"r.bg\0sch.jo\0"
+"izumi.osaka.jp\0"
+"exchange\0"
+"agr.br\0"
+"aeroclub.aero\0co.ro\0"
+"*.jm\0study\0"
+"co.rs\0ann-arbor.mi.us\0cust.testing.thingdust.io\0"
+"agency\0"
+"co.rw\0at.vg\0"
+"citi\0zara\0"
+"*.kh\0"
+"pharmacy.museum\0"
+"\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x81\xd1\x80\xd0\xb1\0soundcast.me\0sinaapp.com\0"
+"fashion\0"
+"co.st\0jot\0"
+"l\xc3\xa4ns.museum\0"
+"sch.lk\0"
+"lucca.it\0kitakami.iwate.jp\0co.th\0cloudfront.net\0"
+"creation.museum\0city\0joy\0dray-dns.de\0"
+"co.sz\0co.tj\0"
+"enscaled.sg\0"
+"kota.aichi.jp\0"
+"sweden.museum\0co.tm\0"
+"klabu.no\0"
+"biratori.hokkaido.jp\0"
+"eero-stage.online\0co.ua\0"
+"co.tt\0"
+"sch.ly\0"
"co.ug\0"
+"ama.shimane.jp\0"
"co.tz\0"
-"andoy.no\0co.uk\0lacaixa\0"
-"iwafune.tochigi.jp\0mil.zm\0cloudns.org\0"
-"stargard.pl\0eus\0"
-"pb.ao\0"
-"mer\xc3\xa5ker.no\0"
-"greta.fr\0dyndns-office.com\0"
-"bo.nordland.no\0co.us\0"
-"forl\xc3\xac-cesena.it\0k12.nj.us\0"
-"or.at\0rendalen.no\0co.ve\0calvinklein\0"
-"social\0"
-"mil.zw\0"
-"cuneo.it\0"
+"co.uk\0haus\0dontexist.org\0"
+"oirm.gov.pl\0"
+"dnsupdater.de\0"
+"cricket\0"
+"*.mm\0cx.ua\0"
+"tsk.tr\0"
+"sch.ng\0co.us\0"
+"takino.hyogo.jp\0"
+"co.ve\0live\0from-vt.com\0"
+"emr.it\0"
"co.vi\0"
-"or.bi\0westfalen.museum\0namdalseid.no\0co.uz\0"
-"cyon.link\0"
-"dyndns-pics.com\0"
-"cc.sd.us\0"
-"jp.eu.org\0"
-"kameoka.kyoto.jp\0"
-"kozow.com\0"
-"balsan-s\xc3\xbc""dtirol.it\0"
-"\xe6\xbe\xb3\xe9\x97\xa8\0"
-"hirosaki.aomori.jp\0pub.sa\0"
-"or.ci\0fitness\0"
-"trentinoaadige.it\0matsubushi.saitama.jp\0rackmaze.com\0"
-"vic.edu.au\0udi.br\0"
-"lezajsk.pl\0"
-"o.se\0"
-"or.cr\0lom.it\0vr.it\0uchihara.ibaraki.jp\0"
-"shangrila\0"
-"luroy.no\0datsun\0ftpaccess.cc\0"
-"myds.me\0"
-"kh.ua\0analytics\0"
-"mobile\0"
-"lib.ga.us\0"
-"for.one\0"
-"casino\0"
-"bond\0"
-"now.sh\0"
-"porsgrunn.no\0"
-"globo\0"
-"dd-dns.de\0"
-"trentinos\xc3\xbc""d-tirol.it\0"
-"fit\0"
+"co.uz\0"
+"gs.vf.no\0"
+"atsugi.kanagawa.jp\0kitakata.miyazaki.jp\0sado.niigata.jp\0"
+"ns.ca\0"
+"nome.cv\0"
+"hirono.fukushima.jp\0miharu.fukushima.jp\0manno.kagawa.jp\0*.np\0"
+"casadelamoneda.museum\0"
+"farm.museum\0"
+"foodnetwork\0"
+"yamato.kumamoto.jp\0firewall-gateway.net\0"
+"firebaseapp.com\0barsyonline.com\0"
+"fuefuki.yamanashi.jp\0"
+"l\xc3\xa1hppi.no\0"
+"kopervik.no\0*.pg\0"
+"office-on-the.net\0"
+"sch.qa\0"
+"vpndns.net\0"
+"pe.ca\0railroad.museum\0s3.dualstack.sa-east-1.amazonaws.com\0"
+"gop.pk\0k12.tn.us\0"
+"railway.museum\0"
+"frontier\0usr.cloud.muni.cz\0"
+"politica.bo\0"
+"nanporo.hokkaido.jp\0takaishi.osaka.jp\0"
"co.za\0"
-"iris.arpa\0"
-"lodingen.no\0dni.us\0"
-"toyonaka.osaka.jp\0vi.us\0"
-"ina.saitama.jp\0porsangu.no\0"
-"book\0"
-"coloradoplateau.museum\0sydney\0"
-"co.zm\0"
-"nakanoto.ishikawa.jp\0"
-"fie.ee\0gs.hl.no\0is-a-cubicle-slave.com\0"
-"muenster.museum\0"
-"iamallama.com\0outsystemscloud.com\0"
-"shopping\0barsy.shop\0"
-"konsulat.gov.pl\0co.zw\0"
-"tsuruga.fukui.jp\0"
-"ddnss.org\0"
-"tsuwano.shimane.jp\0"
-"alaska.museum\0bukhara.su\0"
-"lib.nv.us\0"
-"credit\0"
-"sakai.fukui.jp\0\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0"
-"monza-brianza.it\0lom.no\0"
-"schweiz.museum\0na4u.ru\0"
-"koshigaya.saitama.jp\0"
-"rana.no\0gentapps.com\0"
-"fly\0"
-"or.id\0"
-"mitane.akita.jp\0"
-"kitagata.saga.jp\0"
-"my-vigor.de\0"
-"tc.br\0histoire.museum\0ravpage.co.il\0"
-"caa.aero\0"
-"indianmarket.museum\0pdns.page\0"
-"akune.kagoshima.jp\0"
-"tome.miyagi.jp\0"
-"or.it\0sakurai.nara.jp\0\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0"
-"b\xc3\xa1hcavuotna.no\0aejrie.no\0"
-"nsw.edu.au\0sandefjord.no\0"
-"project.museum\0"
-"tr\xc3\xa6na.no\0"
-"imb.br\0aus.basketball\0"
-"cx.ua\0"
-"etajima.hiroshima.jp\0"
-"or.jp\0"
-"mcdir.me\0"
-"sakado.saitama.jp\0"
-"asmatart.museum\0"
-"or.ke\0"
-"from-ne.com\0"
-"foo\0"
-"ishinomaki.miyagi.jp\0"
-"tachiarai.fukuoka.jp\0okawa.kochi.jp\0"
-"is-uberleet.com\0"
-"comcast\0"
-"chikujo.fukuoka.jp\0or.kr\0fox\0it1.jenv-aruba.cloud\0"
-"ny.us\0noop.app\0"
-"rj.gov.br\0"
-"bolzano-altoadige.it\0mansions.museum\0"
-"tsubetsu.hokkaido.jp\0"
-"tokyo.jp\0"
-"childrens.museum\0saltdal.no\0webcam\0"
-"ap-northeast-1.elasticbeanstalk.com\0"
-"wildlife.museum\0"
+"clinic\0"
+"lo.it\0niigata.niigata.jp\0"
+"sexy\0"
+"jur.pro\0"
+"asahi.toyama.jp\0wskr.gov.pl\0kfh\0"
+"jele.club\0"
+"sel.no\0"
+"sch.sa\0kiev.ua\0co.zm\0"
+"is-into-anime.com\0"
+"fl.us\0"
+"co.zw\0"
+"\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d.jp\0kagamiishi.fukushima.jp\0ohkura.yamagata.jp\0"
+"sch.so\0"
+"dazaifu.fukuoka.jp\0"
+"estate\0"
"orx.biz\0"
-"rnu.tn\0"
-"hakui.ishikawa.jp\0"
-"mashike.hokkaido.jp\0"
-"gal\0"
-"shimotsuke.tochigi.jp\0"
-"gap\0"
-"heritage.museum\0x.se\0bostik\0"
-"koebenhavn.museum\0"
-"or.na\0valer.hedmark.no\0"
-"\xe7\x9f\xb3\xe5\xb7\x9d.jp\0co.com\0"
-"gay\0"
-"or.mu\0"
-"frl\0official.academy\0"
-"\xc3\xa5l.no\0"
-"oshima.tokyo.jp\0"
-"tonami.toyama.jp\0"
-"is-a-liberal.com\0"
-"gallup\0"
-"stalbans.museum\0fin.ci\0"
-"iwaizumi.iwate.jp\0kainan.wakayama.jp\0"
-"witd.gov.pl\0njs.jelastic.vps-host.net\0"
-"ogose.saitama.jp\0cambridge.museum\0"
-"\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d.jp\0mc.ax\0"
-"servebbs.net\0"
-"la.us\0"
-"kherson.ua\0"
-"chijiwa.nagasaki.jp\0"
-"direct.quickconnect.to\0"
-"nagi.okayama.jp\0"
-"hadsel.no\0"
-"office\0"
-"gdn\0"
-"fin.ec\0mishima.fukushima.jp\0nesseby.no\0framercanvas.com\0"
-"gea\0"
-"ftr\0xihuan\0"
-"fujimi.nagano.jp\0"
-"ss.it\0"
-"fed.us\0"
-"in-brb.de\0"
-"ringsaker.no\0"
-"or.pw\0"
-"fun\0"
-"wallonie.museum\0"
-"edgeapp.net\0"
-"yabuki.fukushima.jp\0"
-"bajddar.no\0"
-"higashi.fukuoka.jp\0vestvagoy.no\0"
-"art.museum\0"
-"df.gov.br\0"
-"florence.it\0miasa.nagano.jp\0"
-"viking.museum\0cc.al.us\0"
-"hinode.tokyo.jp\0"
-"shikaoi.hokkaido.jp\0"
-"hi.us\0"
-"loginline.site\0serveminecraft.net\0"
-"kakuda.miyagi.jp\0"
-"quebec\0"
-"webhop.biz\0cloudapp.net\0"
-"hioki.kagoshima.jp\0is-an-engineer.com\0eu-4.evennode.com\0"
-"wpmucdn.com\0"
-"gallo\0"
-"eng.pro\0"
-"s\xc3\xb8r-fron.no\0"
-"dyndns-remote.com\0"
-"boston\0kosher\0"
-"co.business\0"
-"ina.nagano.jp\0eu-west-3.elasticbeanstalk.com\0"
-"from-az.net\0"
-"szczecin.pl\0leczna.pl\0"
-"potager.org\0"
-"ringerike.no\0or.th\0"
-"barrel-of-knowledge.info\0"
-"kaszuby.pl\0"
-"\xed\x95\x9c\xea\xb5\xad\0map.fastly.net\0"
-"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0chiyoda.gunma.jp\0misugi.mie.jp\0mcdir.ru\0"
-"k12.ca.us\0"
-"delaware.museum\0fyi\0"
-"bsb.br\0or.ug\0es.ax\0"
-"gemological.museum\0"
-"ashiya.fukuoka.jp\0notogawa.shiga.jp\0or.tz\0"
-"prudential\0"
-"usgarden.museum\0yolasite.com\0"
-"maizuru.kyoto.jp\0lib.vt.us\0"
-"leasing.aero\0ayase.kanagawa.jp\0settlement.museum\0"
-"or.us\0"
-"fuchu.tokyo.jp\0cityeats\0"
-"ar.it\0"
-"shikatsu.aichi.jp\0"
-"miyota.nagano.jp\0"
-"fauske.no\0"
-"mc.it\0alstahaug.no\0eu-3.evennode.com\0"
-"matsudo.chiba.jp\0"
-"oirase.aomori.jp\0furudono.fukushima.jp\0satosho.okayama.jp\0"
-"kanagawa.jp\0"
-"villas\0"
-"yokoshibahikari.chiba.jp\0"
-"gle\0"
-"campinagrande.br\0london.museum\0"
-"nord-aurdal.no\0vegarshei.no\0"
-"bulsan-sudtirol.it\0"
-"valle-d-aosta.it\0"
-"nz.basketball\0"
-"umaji.kochi.jp\0"
-"matsusaka.mie.jp\0\xe3\x82\xb9\xe3\x83\x88\xe3\x82\xa2\0"
-"gulen.no\0"
-"kanra.gunma.jp\0holtalen.no\0"
-"selfip.net\0is.eu.org\0"
-"naturhistorisches.museum\0"
-"inami.wakayama.jp\0kvinesdal.no\0gmo\0is-an-actor.com\0"
-"saitama.jp\0l\xc3\xa6rdal.no\0"
-"q-a.eu.org\0"
-"sa.gov.au\0"
-"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0uwu.ai\0trycloudflare.com\0"
-"m\xc3\xa5lselv.no\0wphostedmail.com\0"
-"gmx\0"
-"ashikaga.tochigi.jp\0"
-"hara.nagano.jp\0kusu.oita.jp\0"
-"kumakogen.ehime.jp\0kakogawa.hyogo.jp\0"
-"v\xc3\xa1rgg\xc3\xa1t.no\0\xd8\xb3\xd9\x88\xd8\xaf\xd8\xa7\xd9\x86\0"
+"sec.ps\0sch.ss\0*.on-k3s.io\0"
+"9guacu.br\0"
+"na.it\0"
+"mill.museum\0"
"to.leg.br\0"
-"warszawa.pl\0"
-"hatsukaichi.hiroshima.jp\0"
-"elburg.museum\0"
-"\xe6\x97\xb6\xe5\xb0\x9a\0"
-"yanaizu.fukushima.jp\0"
-"eu-2.evennode.com\0"
-"conf.au\0it.eu.org\0ddnslive.com\0"
-"inzai.chiba.jp\0shika.ishikawa.jp\0"
-"chintai\0herokussl.com\0"
-"karate.museum\0"
-"\xe8\xaf\xba\xe5\x9f\xba\xe4\xba\x9a\0"
-"it.ao\0goo\0hepforge.org\0"
-"crew.aero\0gop\0*.owo.codes\0"
-"localhost.daplie.me\0"
-"\xe7\xae\x87\xe4\xba\xba.hk\0scholarships\0"
-"got\0"
-"otoineppu.hokkaido.jp\0"
-"gov\0rauma.no\0apartments\0vladimir.su\0"
-"bokn.no\0"
-"palmas.br\0novara.it\0ghost.io\0serveftp.com\0"
-"rr.gov.br\0"
-"engine.aero\0games\0"
-"s3-ca-central-1.amazonaws.com\0"
-"duck\0"
-"trentino-stirol.it\0bryansk.su\0"
-"fc.it\0suita.osaka.jp\0arakawa.saitama.jp\0gop.pk\0cafe\0myeffect.net\0"
-"forgeblocks.com\0"
-"midtre-gauldal.no\0crd.co\0"
-"pt.it\0"
-"kumejima.okinawa.jp\0kahoku.yamagata.jp\0"
-"eastcoast.museum\0drayddns.com\0"
-"kpmg\0"
-"ind.br\0dyndns-work.com\0"
-"kawai.iwate.jp\0"
-"hzc.io\0"
-"verbania.it\0dst.mi.us\0"
-"chikuma.nagano.jp\0homelink.one\0"
-"rs.gov.br\0sc.gov.br\0hbo\0"
-"k12.ct.us\0"
-"assn.lk\0jewish.museum\0vladimir.ru\0"
-"es.kr\0netbank\0eu-1.evennode.com\0"
-"kure.hiroshima.jp\0jolster.no\0siellak.no\0in.eu.org\0"
-"tsuyama.okayama.jp\0komvux.se\0"
-"asahi.toyama.jp\0"
-"czeladz.pl\0"
-"sirdal.no\0"
-"cc.in.us\0"
-"jerusalem.museum\0"
-"diskstation.me\0"
-"za.com\0rdv.to\0"
-"fin.tn\0"
-"c66.me\0"
-"synology.me\0"
-"toyotomi.hokkaido.jp\0griw.gov.pl\0"
-"diskstation.eu\0"
-"ebetsu.hokkaido.jp\0midatlantic.museum\0"
-"saroma.hokkaido.jp\0kerrylogistics\0"
-"hoylandet.no\0ostroda.pl\0"
-"yamakita.kanagawa.jp\0"
+"choyo.kumamoto.jp\0"
+"ivanovo.su\0"
+"agakhan\0"
+"\xd9\x85\xd9\x84\xd9\x8a\xd8\xb3\xd9\x8a\xd8\xa7\0"
+"jls-sto3.elastx.net\0""2ix.at\0"
+"pvt.ge\0oxford.museum\0"
+"slz.br\0"
+"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0meraker.no\0"
+"cloudycluster.net\0"
+"erotica.hu\0kia\0"
+"productions\0lolipop.io\0"
+"shinshinotsu.hokkaido.jp\0"
+"philips\0"
+"dupont\0"
+"i.ng\0kl\xc3\xa6""bu.no\0"
+"kiyokawa.kanagawa.jp\0"
+"kim\0"
+"app.os.stg.fedoraproject.org\0"
+"taito.tokyo.jp\0""2ix.ch\0"
+"whaling.museum\0"
+"k12.wy.us\0"
+"bus.museum\0design.museum\0"
+"sakado.saitama.jp\0"
+"api.stdlib.com\0""2ix.de\0"
+"lpages.co\0"
+"puglia.it\0jp.net\0bitbridge.net\0"
+"sk.ca\0"
+"osakikamijima.hiroshima.jp\0uozu.toyama.jp\0"
+"nagoya\0from-ms.com\0from-nc.com\0applinzi.com\0"
+"berlev\xc3\xa5g.no\0"
+"tanabe.kyoto.jp\0dlugoleka.pl\0"
+"blogdns.com\0"
+"deno.dev\0"
+"takasago.hyogo.jp\0i.ph\0prod\0run.app\0"
+"prof\0"
+"cagliari.it\0sumoto.kumamoto.jp\0"
+"dallas.museum\0"
+"algard.no\0f\xc3\xb8rde.no\0m\xc3\xa1tta-v\xc3\xa1rjjat.no\0"
+"pe.it\0"
"group.aero\0"
-"k12.al.us\0"
-"is-a-llama.com\0"
-"beskidy.pl\0"
-"lib.id.us\0"
-"town\0"
-"imdb\0"
-"ar.us\0paas.massivegrid.com\0"
-"otsuki.kochi.jp\0oyer.no\0"
-"hakodate.hokkaido.jp\0"
-"sobetsu.hokkaido.jp\0gift\0"
-"trentinos-tirol.it\0saka.hiroshima.jp\0"
-"*.nom.br\0ind.gt\0ishikawa.jp\0"
-"mihama.wakayama.jp\0"
-"museet.museum\0"
-"call\0corsica\0"
-"tananger.no\0stord.no\0parliament.nz\0"
-"ascoli-piceno.it\0bitbridge.net\0"
-"nflfan.org\0"
-"afjord.no\0"
-"masaki.ehime.jp\0"
-"rn.gov.br\0toys\0"
-"nagawa.nagano.jp\0"
-"ind.in\0akagi.shimane.jp\0camp\0"
-"fukudomi.saga.jp\0skierv\xc3\xa1.no\0"
-"kl\xc3\xa6""bu.no\0"
-"vinnica.ua\0lib.fl.us\0"
-"minamiaiki.nagano.jp\0lubin.pl\0"
-"nes.akershus.no\0"
-"lazio.it\0shinjo.okayama.jp\0aaa.pro\0"
-"vallee-aoste.it\0gangaviika.no\0"
-"amusement.aero\0"
-"s3-website-eu-west-1.amazonaws.com\0"
-"hiv\0"
-"cartoonart.museum\0"
-"otaki.nagano.jp\0"
-"cc.mo.us\0"
-"ro.gov.br\0"
-"kudoyama.wakayama.jp\0"
-"d.bg\0"
-"dnsupdater.de\0"
-"r\xc3\xa1isa.no\0appspacehosted.com\0"
-"koga.ibaraki.jp\0"
-"\xe3\x82\xb3\xe3\x83\xa0\0"
-"varese.it\0ind.kw\0bamble.no\0"
-"uwu.nu\0"
-"\xe5\x85\xb5\xe5\xba\xab.jp\0samsung\0"
-"poivron.org\0"
-"hkt\0"
-"ena.gifu.jp\0"
-"morioka.iwate.jp\0"
-"friuli-ve-giulia.it\0"
-"esp.br\0yonago.tottori.jp\0"
-"sakaki.nagano.jp\0"
-"kristiansund.no\0"
-"vantaa.museum\0"
-"\xc3\xa1k\xc5\x8boluokta.no\0"
-"kagamino.okayama.jp\0"
-"nanao.ishikawa.jp\0frosta.no\0"
-"lib.me.us\0"
-"omasvuotna.no\0"
-"hasami.nagasaki.jp\0"
-"ogimi.okinawa.jp\0"
-"kongsvinger.no\0careers\0"
-"care\0george\0s3-fips-us-gov-west-1.amazonaws.com\0"
-"sciencecenter.museum\0"
-"static-access.net\0"
-"qa2.com\0"
-"gallery\0"
-"gokase.miyazaki.jp\0"
-"pics\0"
-"mysecuritycamera.com\0"
-"shimamoto.osaka.jp\0"
-"bananarepublic\0casa\0jele.io\0"
-"bt.it\0cc.tx.us\0customer.enonic.io\0"
-"cars\0rackmaze.net\0"
-"case\0"
-"bahcavuotna.no\0"
-"cymru.museum\0cash\0filegear-au.me\0github.io\0"
-"holt\xc3\xa5len.no\0"
-"yamada.toyama.jp\0lviv.ua\0"
-"primetel.cloud\0"
-"dvag\0"
-"services\0"
-"luster.no\0"
-"valleaosta.it\0naturbruksgymn.se\0"
-"trentin-s\xc3\xbc""dtirol.it\0"
-"tatar\0"
-"ne.jp\0"
-"kuwana.mie.jp\0"
-"hoteles\0"
-"varggat.no\0alpha-myqnapcloud.com\0"
-"ne.ke\0valley.museum\0"
-"air-surveillance.aero\0"
-"higashiura.aichi.jp\0"
-"bjark\xc3\xb8y.no\0"
-"hot\0"
-"trafficplex.cloud\0draydns.de\0"
-"oharu.aichi.jp\0"
-"how\0mytuleap.com\0"
-"oceanographic.museum\0kmpsp.gov.pl\0immo\0conf.se\0"
-"coupon\0"
-"clinton.museum\0cruises\0"
-"american.museum\0gmail\0"
-"ne.kr\0"
-"asakawa.fukushima.jp\0"
-"harima.hyogo.jp\0artanddesign.museum\0kvafjord.no\0sand\xc3\xb8y.no\0"
-"balsan-suedtirol.it\0philadelphia.museum\0"
-"toyokawa.aichi.jp\0"
-"osakasayama.osaka.jp\0my-firewall.org\0"
-"sanjo.niigata.jp\0"
-"forlicesena.it\0"
-"naganohara.gunma.jp\0"
-"rzgw.gov.pl\0"
-"volda.no\0"
-"hiphop\0ibm\0"
-"\xe6\xbb\x8b\xe8\xb3\x80.jp\0gs.va.no\0volkswagen\0"
-"realtor\0"
-"ruovat.no\0"
-"de.cool\0"
-"iwaki.fukushima.jp\0"
-"land\0"
-"nishiaizu.fukushima.jp\0ice\0"
-"yao.osaka.jp\0"
-"bmd.br\0meland.no\0"
-"perso.ht\0"
-"lebork.pl\0"
-"se.net\0ru.net\0"
-"nesoddtangen.no\0"
-"matsue.shimane.jp\0"
-"lib.pr.us\0viajes\0"
-"shiojiri.nagano.jp\0suwa.nagano.jp\0hapmir.no\0wlocl.pl\0"
-"kutchan.hokkaido.jp\0"
-"shibata.niigata.jp\0"
-"ind.tn\0"
-"icu\0"
-"now-dns.top\0"
-"spb.ru\0"
-"niigata.jp\0yamagata.yamagata.jp\0cc.nh.us\0"
-"arakawa.tokyo.jp\0"
-"hachioji.tokyo.jp\0vpndns.net\0"
-"nishihara.kumamoto.jp\0"
-"lahppi.no\0filegear-ie.me\0"
-"coffee\0"
-"m.bg\0"
-"ge.it\0*.nodebalancer.linode.com\0"
-"monzabrianza.it\0"
-"spb.su\0"
-"inami.toyama.jp\0shirahama.wakayama.jp\0"
-"fresenius\0"
-"c.cdn77.org\0"
-"donostia.museum\0"
-"ne.pw\0"
-"eti.br\0"
-"*.stgstage.dev\0"
-"from-in.com\0"
-"oshino.yamanashi.jp\0fitjar.no\0"
-"genting\0s3-eu-west-1.amazonaws.com\0"
-"rmit\0"
-"chanel\0"
-"hanggliding.aero\0"
-"badaddja.no\0"
-"ozu.kumamoto.jp\0ifm\0"
-"se.gov.br\0"
-"desa.id\0lib.nj.us\0"
-"ambulance.aero\0ogi.saga.jp\0"
-"botany.museum\0"
-"ulm.museum\0fl.us\0deals\0olayan\0onza.mythic-beasts.com\0"
-"sar.it\0"
-"fnwk.site\0"
-"servegame.com\0"
-"aosta.it\0f\xc3\xb8rde.no\0"
-"\xe4\xb8\xad\xe4\xbf\xa1\0"
-"kwp.gov.pl\0servebbs.org\0blogsite.xyz\0"
-"5.bg\0dvrdns.org\0"
-"cc.va.us\0"
-"komoro.nagano.jp\0"
-"biev\xc3\xa1t.no\0ping\0"
-"noticias.bo\0wada.nagano.jp\0j.layershift.co.uk\0"
-"isehara.kanagawa.jp\0assassination.museum\0assisi.museum\0"
-"publ.pt\0pink\0"
-"cesena-forl\xc3\xac.it\0mantova.it\0"
-"togakushi.nagano.jp\0family.museum\0"
-"kadoma.osaka.jp\0"
-"krym.ua\0"
-"yawatahama.ehime.jp\0gyokuto.kumamoto.jp\0*.azurecontainer.io\0"
-"info\0"
-"uki.kumamoto.jp\0"
-"bas.it\0minamisanriku.miyagi.jp\0"
-"\xe4\xb8\x96\xe7\x95\x8c\0"
-"og.ao\0brumunddal.no\0ne.ug\0"
-"kred\0"
-"ne.tz\0"
-"nakagyo.kyoto.jp\0"
-"toho.fukuoka.jp\0conf.lv\0"
-"obanazawa.yamagata.jp\0"
-"kamikoani.akita.jp\0plaza.museum\0lowicz.pl\0ne.us\0"
-"baltimore.museum\0"
-"servepics.com\0"
-"shichinohe.aomori.jp\0dyndns-blog.com\0"
-"cc.ri.us\0"
-"amakusa.kumamoto.jp\0weir\0"
-"national.museum\0"
-"takanezawa.tochigi.jp\0"
-"hino.tottori.jp\0cherkasy.ua\0wnext.app\0"
-"chita.aichi.jp\0"
-"minamimaki.nagano.jp\0"
-"gjesdal.no\0"
-"nagasaki.nagasaki.jp\0ibara.okayama.jp\0"
-"saikai.nagasaki.jp\0"
-"khmelnitskiy.ua\0firestone\0"
-"d.se\0"
-"platterp.us\0"
-"ba.gov.br\0"
-"hikone.shiga.jp\0sa.gov.pl\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0"
-"tas.gov.au\0nagiso.nagano.jp\0"
-"fujisawa.kanagawa.jp\0reserve-online.com\0"
-"flowers\0"
-"ask\xc3\xb8y.no\0"
-"napoli.it\0"
-"yoshimi.saitama.jp\0broadcast.museum\0feedback\0"
-"yamagata.nagano.jp\0cloudsite.builders\0"
-"cbre\0"
-"s3-us-east-2.amazonaws.com\0"
-"tomioka.gunma.jp\0"
-"sciencehistory.museum\0"
-"mihara.hiroshima.jp\0is-leet.com\0"
-"inc\0"
-"wajiki.tokushima.jp\0"
-"dev.static.land\0"
-"space\0"
-"niteroi.br\0setouchi.okayama.jp\0cooking\0ing\0"
-"ngrok.io\0"
-"ink\0"
-"v.bg\0"
-"arendal.no\0"
-"ro.im\0mein-iserv.de\0tcp4.me\0"
-"nissedal.no\0"
-"nogata.fukuoka.jp\0takehara.hiroshima.jp\0"
-"kafjord.no\0"
-"int\0"
-"ro.it\0e12.ve\0from-wa.com\0"
-"pt.eu.org\0"
-"control.aero\0discovery.museum\0ssl.origin.cdn77-secure.org\0"
-"news\0"
-"klepp.no\0"
-"gosen.niigata.jp\0"
-"freetls.fastly.net\0"
-"m\xc3\xa1tta-v\xc3\xa1rjjat.no\0\xe3\x83\x95\xe3\x82\xa1\xe3\x83\x83\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0"
-"ybo.review\0"
-"ap-southeast-2.elasticbeanstalk.com\0"
-"it1.eur.aruba.jenv-aruba.cloud\0"
-"\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0"
-"kiryu.gunma.jp\0"
-"next\0hk.org\0"
-"ohkura.yamagata.jp\0lib.ms.us\0lib.nc.us\0"
-"nirasaki.yamanashi.jp\0hareid.no\0l-o-g-i-n.de\0"
-"eu.platform.sh\0"
-"vision\0"
-"frana.no\0"
-"daito.osaka.jp\0selfip.org\0forumz.info\0"
-"ryokami.saitama.jp\0"
-"gildeskal.no\0paroch.k12.ma.us\0"
-"schwarz\0"
-"dscloud.me\0"
-"myftp.biz\0"
-"toda.saitama.jp\0ichiba.tokushima.jp\0pfizer\0"
-"drud.io\0"
-"modena.it\0og.it\0aogaki.hyogo.jp\0"
-"chungbuk.kr\0"
-"sh.cn\0"
-"charter.aero\0"
-"fastly-terrarium.com\0"
-"\xe6\xa0\x83\xe6\x9c\xa8.jp\0"
-"higashimurayama.tokyo.jp\0"
-"jcb\0"
-"sigdal.no\0"
-"r\xc3\xa6lingen.no\0localzone.xyz\0"
-"emergency.aero\0"
-"krodsherad.no\0"
-"sondre-land.no\0wegrow.pl\0"
-"nakayama.yamagata.jp\0"
-"sanofi\0"
-"dynns.com\0"
-"uchinada.ishikawa.jp\0"
-"ist\0"
-"tamatsukuri.ibaraki.jp\0"
-"am.gov.br\0"
-"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0"
-"scrapper-site.net\0"
-"time.no\0"
-"fuchu.hiroshima.jp\0\xc3\xa5lg\xc3\xa5rd.no\0family\0here-for-more.info\0"
-"kouzushima.tokyo.jp\0\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0"
-"aerodrome.aero\0"
-"higashichichibu.saitama.jp\0"
-"parliament.cy\0zama.kanagawa.jp\0rj.leg.br\0"
-"saijo.ehime.jp\0lcube-server.de\0"
-"gs.aa.no\0"
-"itv\0"
-"\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\0"
-"yoshikawa.saitama.jp\0natuurwetenschappen.museum\0nebraska.museum\0"
-"m.se\0"
-"aeroport.fr\0iijima.nagano.jp\0jcloud-ver-jpc.ik-server.com\0*.cloud.metacentrum.cz\0"
-"incheon.kr\0tokyo\0\xe5\xae\xb6\xe9\x9b\xbb\0"
-"marylhurst.museum\0perso.sn\0"
-"katowice.pl\0"
-"\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\0"
-"higashikagawa.kagawa.jp\0is-a-bookkeeper.com\0"
-"nohost.me\0"
-"hatogaya.saitama.jp\0linz.museum\0"
-"jan-mayen.no\0"
-"tsugaru.aomori.jp\0"
-"vall\xc3\xa9""e-aoste.it\0"
-"from-tx.com\0"
-"perso.tn\0"
-"fst.br\0"
-"odo.br\0"
-"sicilia.it\0ariake.saga.jp\0\xe8\x87\xba\xe7\x81\xa3\0"
-"csx.cc\0"
-"fujioka.gunma.jp\0telekommunikation.museum\0"
-"grandrapids.museum\0"
-"konin.pl\0"
-"kamikitayama.nara.jp\0"
-"taketomi.okinawa.jp\0"
-"shichikashuku.miyagi.jp\0"
-"capebreton.museum\0"
-"securitytactics.com\0"
-"satte.saitama.jp\0jdevcloud.com\0"
-"dscloud.biz\0"
-"cranbrook.museum\0balestrand.no\0snasa.no\0"
-"omachi.saga.jp\0jio\0"
-"tbits.me\0"
-"loten.no\0fedorapeople.org\0"
-"tran\xc3\xb8y.no\0church\0"
-"aquila.it\0"
-"ap.gov.br\0lib.oh.us\0"
-"plants.museum\0"
-"showa.fukushima.jp\0shintomi.miyazaki.jp\0df.leg.br\0"
-"wiki.bo\0arts.co\0wakasa.tottori.jp\0"
-"ookuwa.nagano.jp\0"
-"wiki.br\0"
-"leitungsen.de\0"
-"azumino.nagano.jp\0suwalki.pl\0"
-"curitiba.br\0"
-"georgia.museum\0"
-"zoological.museum\0"
-"cieszyn.pl\0mycd.eu\0"
-"hita.oita.jp\0"
-"fujishiro.ibaraki.jp\0minami.kyoto.jp\0"
-"medizinhistorisches.museum\0"
-"iiyama.nagano.jp\0"
-"ap.gov.pl\0"
-"lab.ms\0"
-"ikeda.hokkaido.jp\0cv.ua\0"
-"matsuura.nagasaki.jp\0jll\0"
-"aostavalley.it\0norddal.no\0"
-"emr.it\0nationalheritage.museum\0"
-"kita.osaka.jp\0*.cns.joyent.com\0"
-"m\xc3\xa1latvuopmi.no\0"
-"omiya.saitama.jp\0"
-"oksnes.no\0"
-"nishikatsura.yamanashi.jp\0"
-"jmp\0"
-"fuel.aero\0"
-"lib.va.us\0"
-"xen.prgmr.com\0"
-"community\0"
-"jnj\0drud.us\0"
-"ag.it\0"
-"yokaichiba.chiba.jp\0"
-"genova.it\0"
-"katano.osaka.jp\0drive\0"
-"rns.tn\0"
-"jc.neen.it\0"
-"localhistory.museum\0"
-"asn.au\0hisayama.fukuoka.jp\0"
-"internet-dns.de\0north-kazakhstan.su\0"
-"shirataka.yamagata.jp\0"
-"\xe5\xb3\xb6\xe6\xa0\xb9.jp\0yuzawa.niigata.jp\0"
-"toba.mie.jp\0hirogawa.wakayama.jp\0"
-"dinosaur.museum\0"
-"british.museum\0jot\0"
-"neko.am\0"
-"s3.eu-central-1.amazonaws.com\0*.dapps.earth\0"
-"otsuki.yamanashi.jp\0berlin.museum\0pomorskie.pl\0"
-"joy\0"
-"miyako.fukuoka.jp\0ninomiya.kanagawa.jp\0lebesby.no\0"
-"dyr\xc3\xb8y.no\0"
-"sakae.nagano.jp\0touch.museum\0lublin.pl\0"
-"nagato.yamaguchi.jp\0"
-"firewall-gateway.de\0"
-"tonosho.kagawa.jp\0grue.no\0"
-"firewall-gateway.com\0"
-"nanbu.yamanashi.jp\0hdfcbank\0"
-"v.ua\0"
-"kiyosato.hokkaido.jp\0"
-"tuscany.it\0mugi.tokushima.jp\0tromsa.no\0"
-"nanporo.hokkaido.jp\0showa.yamanashi.jp\0"
-"shimoichi.nara.jp\0okinawa.okinawa.jp\0school.na\0"
-"lel.br\0"
-"linkyard.cloud\0"
-"imabari.ehime.jp\0fhs.no\0"
-"minamiawaji.hyogo.jp\0"
-"commune.am\0"
-"hashima.gifu.jp\0toyako.hokkaido.jp\0uscountryestate.museum\0tourism.tn\0"
-"mochizuki.nagano.jp\0"
-"ta.it\0trade\0"
-"sugito.saitama.jp\0"
-"stadt.museum\0"
-"iwama.ibaraki.jp\0"
-"gs.st.no\0is-a-anarchist.com\0"
-"school.nz\0"
-"nordre-land.no\0\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0appspaceusercontent.com\0a.ssl.fastly.net\0"
-"chungnam.kr\0"
-"aremark.no\0"
-"takarazuka.hyogo.jp\0gdynia.pl\0"
-"takahata.yamagata.jp\0voss.no\0"
-"mo-siemens.io\0"
-"kamisu.ibaraki.jp\0theater.museum\0"
-"dyn.cosidns.de\0"
-"sopot.pl\0"
-"xfinity\0from-pr.com\0"
-"trentino-aadige.it\0"
-"sula.no\0"
-"nextdirect\0cloud66.zone\0"
-"arts.ve\0rr.leg.br\0"
-"trana.no\0uy.com\0"
-"tmp.br\0hakata.fukuoka.jp\0"
-"psc.br\0"
-"pi.it\0"
-"matsuda.kanagawa.jp\0"
-"tj.cn\0oslo.no\0"
-"fra1-de.cloudjiffy.net\0"
-"venice.it\0"
-"kfh\0"
-"latrobe\0"
-"lima-city.de\0"
-"sorocaba.br\0balashov.su\0"
-"anthropology.museum\0impertrixcdn.com\0rs.leg.br\0sc.leg.br\0"
-"windows\0"
-"aprendemas.cl\0"
-"lib.ky.us\0is-into-cars.com\0"
-"vestby.no\0pymnt.uk\0"
-"fuji.shizuoka.jp\0"
-"naples.it\0"
-"kamikawa.hyogo.jp\0"
-"vibovalentia.it\0"
-"oy.lc\0"
-"kagami.kochi.jp\0kuroiso.tochigi.jp\0"
-"rankoshi.hokkaido.jp\0yuasa.wakayama.jp\0"
-"algard.no\0dielddanuorri.no\0"
-"communication.museum\0"
-"oldnavy\0"
-"ap.it\0*.sapporo.jp\0"
-"podhale.pl\0miami\0"
-"otago.museum\0"
-"kaita.hiroshima.jp\0lima-city.at\0"
-"bradesco\0"
-"gifu.gifu.jp\0"
-"toscana.it\0omaha.museum\0"
-"vikna.no\0"
-"garden.museum\0geelvinck.museum\0nittedal.no\0"
-"kitanakagusuku.okinawa.jp\0kia\0"
-"evenes.no\0"
-"s3.dualstack.ap-northeast-2.amazonaws.com\0"
-"oceanographique.museum\0"
-"arts.ro\0"
-"randaberg.no\0kim\0"
-"ac\0"
-"ad\0tenri.nara.jp\0lima-city.ch\0"
-"ae\0bryne.no\0"
-"af\0"
-"ag\0\xc3\xa5s.no\0"
+"kitaura.miyazaki.jp\0"
+"bruxelles.museum\0posts-and-telecommunications.museum\0fldrv.com\0"
+"trentino-s\xc3\xbc""dtirol.it\0tamaki.mie.jp\0"
+"\xd1\x81\xd0\xb0\xd0\xbc\xd0\xb0\xd1\x80\xd0\xb0.\xd1\x80\xd1\x83\xd1\x81\0"
+"workers.dev\0"
+"eaton.mi.us\0"
+"minami.fukuoka.jp\0kita.kyoto.jp\0soc.srcf.net\0"
+"antiques.museum\0"
+"tv.bb\0"
+"pn.it\0"
+"western.museum\0"
+"mizumaki.fukuoka.jp\0wakkanai.hokkaido.jp\0"
+"r\xc3\xb8yrvik.no\0clothing\0"
+"mediatech.dev\0"
+"tv.bo\0swiss\0"
+"*.nagoya.jp\0mishima.fukushima.jp\0cieszyn.pl\0"
+"topology.museum\0rag-cloud.hosteur.com\0"
+"tv.br\0pe.kr\0"
+"workinggroup.aero\0"
+"mircloud.host\0"
+"yotsukaido.chiba.jp\0aid.pl\0"
+"tm.cy\0i.se\0sch.zm\0"
+"yoro.gifu.jp\0honbetsu.hokkaido.jp\0"
+"aquarelle\0is-a-photographer.com\0"
+"lesja.no\0webthings.io\0"
+"km.ua\0"
+"lanbib.se\0\xe4\xb8\xad\xe5\x9b\xbd\0deloitte\0"
+"go.dyndns.org\0"
+"pistoia.it\0hirata.fukushima.jp\0"
+"mansion.museum\0r.se\0"
+"tm.dz\0"
+"alwaysdata.net\0"
+"ol.no\0tysnes.no\0solutions\0utwente.io\0"
+"*.kobe.jp\0sue.fukuoka.jp\0moka.tochigi.jp\0"
+"kv.ua\0realty\0"
+"en-root.fr\0"
+"\xe4\xb8\xad\xe5\x9c\x8b\0"
+"ri.it\0aichi.jp\0\xe6\x84\x9b\xe5\xaa\x9b.jp\0fuji.shizuoka.jp\0mikawa.yamagata.jp\0"
+"wa.au\0"
+"ac\0belau.pw\0reviews\0"
+"ad\0"
+"ae\0"
+"af\0co.education\0"
+"ag\0"
+"saotome.st\0"
"ai\0"
-"asn.lv\0americanfamily\0"
-"al\0akkeshi.hokkaido.jp\0konan.shiga.jp\0"
-"am\0hotel.tz\0mmafan.biz\0"
-"\xe7\xa6\x8f\xe5\xb3\xb6.jp\0ashoro.hokkaido.jp\0"
-"ao\0"
-"katsushika.tokyo.jp\0"
+"kpn\0"
+"h\xc3\xa5.no\0"
+"al\0tokai.ibaraki.jp\0"
+"am\0software\0"
+"dev.br\0vet.br\0tm.fr\0"
+"ao\0bjark\xc3\xb8y.no\0osteroy.no\0"
"aq\0ba\0"
-"ar\0bb\0"
-"as\0fbx-os.fr\0"
-"at\0"
-"au\0be\0date.fukushima.jp\0is-a-conservative.com\0"
+"ar\0bb\0\xd8\xa7\xd9\x84\xd8\xa8\xd8\xad\xd8\xb1\xd9\x8a\xd9\x86\0"
+"as\0giske.no\0"
+"at\0sumoto.hyogo.jp\0"
+"au\0be\0"
"bf\0"
-"aw\0bg\0eisenbahn.museum\0"
-"ax\0bh\0"
-"bi\0artgallery.museum\0k12.vi.us\0"
+"aw\0bg\0birkenes.no\0"
+"ax\0bh\0twmail.net\0"
+"bi\0suzuki\0"
"az\0bj\0"
+"organic\0"
+"cesenaforli.it\0seto.aichi.jp\0numata.hokkaido.jp\0gobo.wakayama.jp\0umig.gov.pl\0"
"bm\0"
"bn\0"
"bo\0"
-"ca\0wi.us\0"
+"yoita.niigata.jp\0krd\0lat\0"
+"ca\0"
"br\0"
-"bs\0cc\0eniwa.hokkaido.jp\0"
-"bt\0cd\0"
+"bs\0cc\0law\0"
+"bt\0cd\0kumano.hiroshima.jp\0"
"bv\0cf\0"
-"bw\0cg\0netflix\0room\0"
+"bw\0cg\0b\xc3\xa6rum.no\0"
"ch\0"
-"by\0ci\0\xc3\xb8rsta.no\0"
-"bz\0kira.aichi.jp\0aurskog-h\xc3\xb8land.no\0"
-"cl\0play\0read-books.org\0"
-"cm\0state.museum\0monash\0"
-"cn\0gleeze.com\0fastvps.site\0"
+"by\0ci\0nationalfirearms.museum\0"
+"bz\0"
+"cl\0\xe5\xbe\xb3\xe5\xb3\xb6.jp\0tochigi.tochigi.jp\0service.gov.scot\0"
+"cm\0publishproxy.com\0"
+"saobernardo.br\0cn\0"
"co\0"
-"cr\0bari.it\0"
-"clock.museum\0"
-"gs.tm.no\0"
-"cu\0de\0nesodden.no\0\xe0\xb4\xad\xe0\xb4\xbe\xe0\xb4\xb0\xe0\xb4\xa4\xe0\xb4\x82\0"
-"cv\0geek.nz\0rn.leg.br\0"
-"cw\0arts.nf\0flynnhosting.net\0"
-"cx\0towada.aomori.jp\0"
-"cy\0ubank\0"
-"cz\0dj\0leirvik.no\0"
+"hra.health\0"
+"tm.hu\0"
+"cr\0"
+"bomlo.no\0"
+"nishi.fukuoka.jp\0clubmed\0"
+"cu\0de\0"
+"cv\0"
+"cw\0"
+"cx\0vapor.cloud\0"
+"cy\0"
+"cz\0dj\0"
"dk\0"
-"higashiyama.kyoto.jp\0"
-"dm\0baidar.no\0"
-"copenhagen.museum\0hosp.uk\0"
-"do\0hikimi.shimane.jp\0"
-"onjuku.chiba.jp\0chino.nagano.jp\0"
-"cbg.ru\0"
-"ec\0"
-"skanland.no\0"
-"ee\0cc.as.us\0*.moonscale.io\0"
-"zoology.museum\0"
-"eg\0"
-"kawanabe.kagoshima.jp\0computerhistory.museum\0nfshost.com\0"
-"chitose.hokkaido.jp\0"
+"ferrara.it\0"
+"dm\0\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x80\xd1\x83\xd1\x81\0"
+"do\0lierne.no\0"
+"aosta-valley.it\0"
+"ec\0budejju.no\0passagens\0\xd0\xbe\xd1\x80\xd0\xb3\0"
+"\xe5\xb1\xb1\xe6\xa2\xa8.jp\0miyama.fukuoka.jp\0sakuho.nagano.jp\0"
+"ee\0qc.com\0kilatiron.com\0"
+"eg\0malvik.no\0"
+"namegawa.saitama.jp\0webhop.net\0"
+"tv.im\0bukhara.su\0"
"dz\0"
-"ouda.nara.jp\0schokoladen.museum\0"
-"\xd9\x85\xd9\x88\xd9\x82\xd8\xb9\0"
-"cc.md.us\0"
-"tourism.pl\0"
-"auto.pl\0"
-"ozora.hokkaido.jp\0"
-"es\0otsuka\0"
-"et\0"
-"eu\0"
-"r\xc3\xb8ros.no\0ro.leg.br\0"
-"inuyama.aichi.jp\0gon.pk\0"
-"mydatto.com\0"
-"fi\0komaki.aichi.jp\0"
-"fj\0fet.no\0"
-"fm\0crown\0"
-"fo\0"
-"pr.it\0"
-"ga\0nexus\0"
-"fr\0gb\0"
-"semboku.akita.jp\0"
-"gd\0"
-"ge\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0members.linode.com\0"
+"tananger.no\0bygland.no\0sortland.no\0"
+"\xe5\xb9\xbf\xe4\xb8\x9c\0jele.host\0"
+"suisse.museum\0"
+"nj.us\0lds\0"
+"tv.it\0"
+"apple\0"
+"es\0"
+"et\0mito.ibaraki.jp\0swidnik.pl\0"
+"eu\0finance\0"
+"katagami.akita.jp\0yakumo.shimane.jp\0"
+"fi\0tm.km\0*.devcdnaccesso.com\0"
+"fj\0"
+"sauda.no\0"
+"fm\0utazas.hu\0"
+"fo\0mer\xc3\xa5ker.no\0smola.no\0"
+"hirara.okinawa.jp\0ath.cx\0"
+"ga\0"
+"fr\0geometre-expert.fr\0gb\0"
+"tv.kg\0"
+"gd\0adult.ht\0"
+"ge\0pyatigorsk.ru\0"
"gf\0"
-"gg\0vaksdal.no\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0"
-"gh\0"
-"gi\0narashino.chiba.jp\0"
-"silk.museum\0"
-"hadano.kanagawa.jp\0"
+"groundhandling.aero\0gg\0"
+"gh\0friuli-v-giulia.it\0"
+"gi\0*.cns.joyent.com\0"
+"yn.cn\0"
+"\xd9\x85\xd9\x88\xd8\xb1\xd9\x8a\xd8\xaa\xd8\xa7\xd9\x86\xd9\x8a\xd8\xa7\0"
"gl\0"
-"gm\0tsurugi.ishikawa.jp\0"
+"gm\0"
"gn\0"
-"pvt.ge\0gp\0"
-"gq\0"
+"tm.mc\0fantasyleague.cc\0"
+"gp\0kuleuven.cloud\0"
+"gq\0is-uberleet.com\0"
"gr\0"
-"gs\0pharmaciens.km\0kpn\0"
+"gs\0tm.mg\0vestre-slidre.no\0"
"gt\0"
"gu\0"
-"nationalfirearms.museum\0"
-"gw\0dattorelay.com\0"
-"gy\0"
-"kitchen\0"
-"hk\0k12.ny.us\0"
-"hm\0red.sv\0"
-"hn\0!city.sendai.jp\0shikokuchuo.ehime.jp\0hotel.lk\0"
-"cc.il.us\0"
-"filegear-sg.me\0"
-"recht.pro\0uk.com\0"
+"gw\0"
+"gy\0health.museum\0"
+"locker\0"
+"hk\0st.no\0"
+"carbonia-iglesias.it\0yanaizu.fukushima.jp\0kushimoto.wakayama.jp\0nome.pt\0voorloper.cloud\0"
+"hm\0"
+"hn\0"
+"ballooning.aero\0"
+"kikonai.hokkaido.jp\0wakuya.miyagi.jp\0"
"hr\0"
-"amscompute.com\0"
-"tur.ar\0ht\0id\0"
-"hu\0ie\0"
-"juniper\0"
-"bi.it\0nyc.museum\0"
-"krd\0lat\0git-pages.rit.edu\0"
-"ap-northeast-3.elasticbeanstalk.com\0"
-"il\0law\0\xd0\xba\xd0\xbe\xd0\xbc\0"
-"fj.cn\0im\0"
-"in\0edogawa.tokyo.jp\0"
-"io\0gmbh\0pythonanywhere.com\0"
-"iq\0\xc3\xa5lesund.no\0"
+"ht\0id\0\xd8\xb9\xd8\xb1\xd8\xa8\0"
+"hu\0ie\0ismaili\0azerbaijan.su\0"
+"tysv\xc3\xa6r.no\0vikna.no\0cloudsite.builders\0"
+"beauty\0"
+"tm.no\0skodje.no\0"
+"il\0"
+"im\0tv.na\0"
+"ce.gov.br\0in\0"
+"io\0oppdal.no\0dst.mi.us\0"
+"iq\0"
"ir\0"
"is\0"
-"tur.br\0it\0"
-"je\0"
-"nativeamerican.museum\0"
-"yasu.shiga.jp\0"
-"potenza.it\0ono.fukushima.jp\0"
-"gotdns.org\0"
-"jeonnam.kr\0oregontrail.museum\0"
-"jo\0"
+"it\0"
+"je\0sciencecenter.museum\0"
+"cpa.pro\0"
+"ohtawara.tochigi.jp\0"
+"usantiques.museum\0avianca\0"
+"campinagrande.br\0*.telebit.xyz\0"
+"dunlop\0"
+"kozow.com\0"
+"jo\0bmoattachments.org\0"
"jp\0"
-"\xe6\x84\x9b\xe5\xaa\x9b.jp\0travel\0"
-"fukuyama.hiroshima.jp\0sdscloud.pl\0"
-"olsztyn.pl\0"
-"umb.it\0taipei\0"
+"demo.datadetect.com\0"
+"lib.ga.us\0"
+"nantan.kyoto.jp\0turek.pl\0buyshop.jp\0"
"ke\0"
-"kg\0"
-"barsy.club\0""32-b.it\0"
-"ki\0"
-"noboribetsu.hokkaido.jp\0syncloud.it\0"
-"trentins\xc3\xbc""d-tirol.it\0"
-"geo.br\0minamifurano.hokkaido.jp\0km\0"
+"kg\0\xe4\xbf\xa1\xe6\x81\xaf\0"
+"tm.pl\0"
+"ki\0theworkpc.com\0"
+"yoshino.nara.jp\0murayama.yamagata.jp\0"
+"km\0"
"kn\0"
+"nord-fron.no\0"
"kp\0"
-"\xe7\xbe\xa4\xe9\xa6\xac.jp\0la\0madrid\0staging.onred.one\0"
+"la\0"
"kr\0lb\0"
-"kunigami.okinawa.jp\0lc\0"
-"ma.us\0"
-"tromso.no\0mydobiss.com\0"
-"cci.fr\0tra.kp\0kw\0textile.museum\0"
-"kiso.nagano.jp\0lds\0"
-"ky\0li\0build\0"
-"des.br\0kz\0gaivuotna.no\0novecore.site\0"
+"lc\0vm.bytemark.co.uk\0"
+"firm.ht\0desa.id\0mitsue.nara.jp\0"
+"kw\0sarpsborg.no\0"
+"higashimurayama.tokyo.jp\0"
+"ky\0li\0"
+"the.br\0kz\0"
"lk\0"
-"temasek\0"
-"\xe9\x9d\x99\xe5\xb2\xa1.jp\0preservation.museum\0"
-"ma\0"
+"inashiki.ibaraki.jp\0"
+"sb.ua\0dyndns-home.com\0forgot.her.name\0"
+"firm.in\0"
+"ri.us\0llc\0uk0.bigv.io\0"
+"urbino-pesaro.it\0"
+"ma\0s3-eu-west-1.amazonaws.com\0"
"lr\0"
-"ls\0mc\0r\xc3\xa1hkker\xc3\xa1vju.no\0"
-"lt\0md\0"
-"lu\0me\0podlasie.pl\0homesecuritypc.com\0"
+"ls\0mc\0heroy.nordland.no\0events\0"
+"lt\0md\0alp1.ae.flow.ch\0"
+"lu\0me\0"
"lv\0"
-"kawajima.saitama.jp\0mg\0dallas.museum\0"
-"hotel.hu\0mh\0"
-"ly\0naturalhistory.museum\0"
-"ts.it\0plc.ly\0mk\0"
-"ml\0"
+"mg\0bauhaus\0"
+"mibu.tochigi.jp\0mh\0"
+"ly\0"
+"mk\0tm.ro\0"
+"kamogawa.chiba.jp\0ml\0llp\0"
"mn\0"
-"mo\0"
-"mp\0"
-"gliding.aero\0taishi.hyogo.jp\0mq\0na\0"
-"mr\0"
-"minobu.yamanashi.jp\0ms\0anthro.museum\0nc\0augustow.pl\0"
-"mt\0hashbang.sh\0"
-"mu\0ne\0gs.oslo.no\0"
+"mo\0aejrie.no\0service.gov.uk\0"
+"matsushige.tokushima.jp\0mp\0"
+"mq\0na\0tm.se\0"
+"mr\0monster\0"
+"ms\0nc\0lib.id.us\0"
+"kosai.shizuoka.jp\0mt\0"
+"mu\0ne\0"
"mv\0nf\0"
-"mw\0ng\0\xe8\xb4\xad\xe7\x89\xa9\0"
-"barreau.bj\0mx\0sklep.pl\0"
+"mw\0ng\0"
+"mx\0"
"my\0ni\0"
-"kiyokawa.kanagawa.jp\0mz\0b\xc3\xa1jddar.no\0"
-"nl\0"
-"mibu.tochigi.jp\0partners\0"
-"opensocial.site\0"
-"no\0"
+"mz\0"
+"chikuzen.fukuoka.jp\0nl\0co.krd\0"
+"ws.na\0"
+"firm.co\0no\0"
+"higashiyoshino.nara.jp\0itoigawa.niigata.jp\0tv.sd\0"
+"dyndns-at-home.com\0"
"nr\0"
-"ami.ibaraki.jp\0"
+"raffleentry.org.uk\0"
+"tanagura.fukushima.jp\0"
"nu\0"
-"\xc3\xb8rskog.no\0"
-"travel.pl\0"
+"wedding\0"
+"kita.tokyo.jp\0fashionstore.jp\0"
+"priv.hu\0"
"nz\0"
-"scienceandindustry.museum\0"
-"hachinohe.aomori.jp\0om\0"
-"western.museum\0"
-"pa\0"
-"b.bg\0money\0"
-"pe\0*.vps.myjino.ru\0"
-"kurogi.fukuoka.jp\0pf\0"
-"s3-website-ap-southeast-2.amazonaws.com\0"
-"vgs.no\0gs.fm.no\0ph\0redumbrella\0static.observableusercontent.com\0"
-"shimoda.shizuoka.jp\0uzs.gov.pl\0vodka\0"
-"cheltenham.museum\0pk\0foundation\0"
+"firm.dk\0"
+"setouchi.okayama.jp\0"
+"historichouses.museum\0om\0jelastic.team\0"
+"shaw\0is-found.org\0"
+"izu.shizuoka.jp\0"
+"pa\0bryansk.su\0"
+"hol.no\0base.ec\0"
+"pe\0fhv.se\0servepics.com\0"
+"pf\0"
+"d\xc3\xb8nna.no\0"
+"rieti.it\0ph\0lol\0"
+"skedsmokorset.no\0pk\0work\0"
"pl\0"
-"b.br\0taki.mie.jp\0pm\0"
-"\xe9\xab\x98\xe7\x9f\xa5.jp\0pn\0"
-"rybnik.pl\0"
-"qa\0"
-"pr\0kilatiron.com\0"
-"ps\0selfip.biz\0"
+"pm\0"
+"pn\0tv.tr\0"
+"forl\xc3\xac""cesena.it\0senseering.net\0"
+"qa\0teaches-yoga.com\0"
+"pr\0"
+"ps\0"
"pt\0"
-"vercelli.it\0sue.fukuoka.jp\0ikeda.osaka.jp\0"
-"kin.okinawa.jp\0pw\0"
+"tv.tz\0"
+"pw\0"
+"nakanoto.ishikawa.jp\0nishiawakura.okayama.jp\0lpl\0"
"py\0"
-"kawanishi.nara.jp\0"
-"sodegaura.chiba.jp\0"
-"edu.ac\0sdn.gov.pl\0android\0"
-"agro.bo\0surrey.museum\0"
-"edu.af\0"
-"noda.chiba.jp\0"
-"re\0"
-"se.leg.br\0"
-"yachiyo.ibaraki.jp\0hu.com\0"
-"edu.al\0pioneer\0"
-"genoa.it\0"
-"nico\0"
-"gc.ca\0"
-"edu.ba\0agrar.hu\0"
-"edu.ar\0edu.bb\0"
-"sologne.museum\0ro\0pr.us\0"
-"*.bd\0nagatoro.saitama.jp\0"
-"edu.au\0sa\0"
-"yashio.saitama.jp\0sb\0aarp\0"
-"rs\0sc\0golffan.us\0"
-"edu.bh\0br.it\0cb.it\0mutsuzawa.chiba.jp\0sd\0\xd0\xbe\xd0\xb4.\xd1\x81\xd1\x80\xd0\xb1\0"
-"edu.bi\0ru\0se\0"
-"edu.az\0"
-"rw\0sg\0cloudapps.digital\0"
-"katsuura.chiba.jp\0sh\0llc\0"
-"edu.bm\0gs.bu.no\0si\0"
-"edu.bn\0sj\0"
-"edu.bo\0sk\0"
-"sl\0barefoot\0"
-"ms.it\0sm\0"
-"edu.br\0sn\0"
-"edu.bs\0so\0"
-"edu.bt\0j\xc3\xb8rpeland.no\0"
-"travel.tt\0"
+"certification.aero\0davvesiida.no\0watches\0"
+"yawatahama.ehime.jp\0fukumitsu.toyama.jp\0"
+"monzaebrianza.it\0treviso.it\0"
+"mining.museum\0re\0"
+"hdfc\0"
+"shijonawate.osaka.jp\0"
+"kunstunddesign.museum\0uslivinghistory.museum\0dnsfor.me\0"
+"man\0"
+"venezia.it\0ishikawa.jp\0yokosuka.kanagawa.jp\0nowaruda.pl\0map\0"
+"mba\0"
+"ro\0"
+"fukushima.fukushima.jp\0"
+"sa\0"
+"sb\0"
+"rs\0sc\0lib.ky.us\0"
+"sd\0"
+"ru\0se\0"
+"rw\0sg\0"
+"sh\0"
+"larsson.museum\0town.museum\0si\0forgot.his.name\0sells-for-less.com\0ybo.trade\0"
+"sj\0"
+"sk\0k12.ar.us\0motorcycles\0"
+"minokamo.gifu.jp\0uw.gov.pl\0sl\0"
+"sm\0"
+"sn\0"
+"idv.hk\0so\0"
+"tamba.hyogo.jp\0iida.nagano.jp\0"
+"s3-website.eu-west-3.amazonaws.com\0filegear-gb.me\0"
"sr\0"
"ss\0tc\0"
-"st\0td\0lego\0"
-"edu.ci\0su\0llp\0adobeaemcloud.com\0"
-"edu.bz\0sv\0tf\0"
-"*.ck\0tg\0"
-"sx\0th\0"
+"niigata.jp\0st\0td\0"
+"uscountryestate.museum\0su\0orange\0dagestan.ru\0"
+"sv\0tf\0"
+"tg\0to.work\0"
+"anamizu.ishikawa.jp\0satsumasendai.kagoshima.jp\0sx\0th\0priv.at\0"
"sy\0"
-"edu.cn\0sz\0tj\0"
-"edu.co\0tk\0servebbs.com\0"
-"tl\0"
-"malatvuopmi.no\0tm\0weather\0"
-"ichikawamisato.yamanashi.jp\0tvedestrand.no\0tn\0"
-"to\0s3-us-gov-west-1.amazonaws.com\0"
-"trentin-suedtirol.it\0ina.ibaraki.jp\0"
-"edu.cu\0iyo.ehime.jp\0ua\0blogspot.co.at\0"
-"tr\0wanggou\0"
-"edu.cw\0onojo.fukuoka.jp\0simple-url.com\0"
-"sakae.chiba.jp\0tt\0"
+"sz\0tj\0"
+"rauma.no\0tk\0"
+"toyotomi.hokkaido.jp\0sayama.osaka.jp\0tl\0"
+"brandywinevalley.museum\0tm\0tm.za\0na4u.ru\0"
+"tn\0"
+"bahccavuotna.no\0to\0wa.us\0"
+"kodaira.tokyo.jp\0ltd\0"
+"palace.museum\0ua\0"
+"tr\0"
+"rindal.no\0"
+"tt\0"
+"ddr.museum\0dagestan.su\0"
"tv\0"
-"tw\0ug\0cern\0"
-"inatsuki.fukuoka.jp\0"
-"edu.dm\0"
+"tr\xc3\xb8gstad.no\0tw\0ug\0"
+"jobs.tt\0"
+"extraspace\0"
"tz\0"
-"edu.do\0ms.kr\0uk\0"
-"yachiyo.chiba.jp\0iida.nagano.jp\0"
-"plc.uk\0farmers\0"
-"ibaraki.ibaraki.jp\0"
-"edu.ec\0honjo.saitama.jp\0"
-"edu.ee\0va\0"
-"edu.eg\0us\0vc\0"
+"trysil.no\0uk\0"
+"nakamura.kochi.jp\0hayakawa.yamanashi.jp\0"
+"reservd.testing.thingdust.io\0"
+"med\0"
+"sumy.ua\0va\0*.elb.amazonaws.com\0dev.vu\0"
+"us\0vc\0bluebite.io\0"
"ve\0"
-"nl.ca\0edu.dz\0"
"vg\0"
-"dnsking.ch\0"
-"urn.arpa\0namegawa.saitama.jp\0uy\0vi\0"
-"uz\0"
-"gjerstad.no\0"
-"pl.eu.org\0navoi.su\0"
-"*.er\0vn\0intuit\0nl.ci\0"
-"edu.es\0google\0"
-"edu.et\0fermo.it\0bato.tochigi.jp\0game-host.org\0"
-"lol\0"
-"govt.nz\0br.com\0"
-"vu\0s3.dualstack.ap-south-1.amazonaws.com\0"
-"daejeon.kr\0wf\0plus\0"
-"*.fk\0anan.tokushima.jp\0investments\0"
-"edu.fm\0systems\0"
-"nagareyama.chiba.jp\0"
-"shiiba.miyazaki.jp\0afamilycompany\0"
-"ba.leg.br\0"
-"edu.gd\0samegawa.fukushima.jp\0psp.gov.pl\0"
-"edu.ge\0salzburg.museum\0lpl\0"
+"uy\0vi\0shia\0jpn.com\0dynalias.com\0"
+"uz\0men\0"
+"lon-2.paas.massivegrid.net\0"
+"dyndns-web.com\0vologda.su\0framercanvas.com\0"
+"vn\0"
+"jolster.no\0"
+"stavern.no\0lib.ne.us\0"
+"konskowola.pl\0"
+"vu\0"
+"wf\0"
+"kudoyama.wakayama.jp\0tozawa.yamagata.jp\0management\0"
+"myhome-server.de\0"
+"grong.no\0"
+"tokuyama.yamaguchi.jp\0"
+"*.stg.dev\0"
+"endoftheinternet.org\0stage.nodeart.io\0"
"ws\0"
-"edu.gh\0"
-"edu.gi\0"
-"tube\0"
-"royrvik.no\0"
-"edu.gl\0"
-"k12.il.us\0"
-"edu.gn\0"
-"tank.museum\0"
-"edu.gp\0"
-"airtraffic.aero\0s3.us-east-2.amazonaws.com\0"
-"edu.gr\0"
-"edu.gt\0zhytomyr.ua\0"
-"edu.gu\0"
-"man\0mel.cloudlets.com.au\0"
-"edu.gy\0gateway.museum\0ye\0map\0vlaanderen\0"
-"mba\0quest\0"
-"edu.hk\0"
-"nozawaonsen.nagano.jp\0miyake.nara.jp\0"
-"edu.hn\0"
-"kiho.mie.jp\0architecture.museum\0"
-"donetsk.ua\0"
-"int.ar\0k.bg\0granvin.no\0"
-"safe\0"
-"edu.ht\0dyndns-at-work.com\0"
-"nike\0"
-"comunica\xc3\xa7\xc3\xb5""es.museum\0yt\0"
-"tselinograd.su\0"
-"int.az\0"
-"kasaoka.okayama.jp\0"
-"saitama.saitama.jp\0"
-"edu.in\0"
-"int.bo\0bizen.okayama.jp\0"
-"s3-sa-east-1.amazonaws.com\0"
-"edu.iq\0zm\0"
-"hockey\0"
-"edu.is\0from-fl.com\0hopto.org\0"
-"edu.it\0"
-"int.ci\0surgery\0"
-"bhz.br\0"
-"zw\0"
-"*.jm\0ltd\0"
-"int.co\0edu.jo\0"
-"chiryu.aichi.jp\0"
-"ce.gov.br\0konyvelo.hu\0"
-"chesapeakebay.museum\0"
-"tochio.niigata.jp\0"
-"dnsalias.net\0"
-"blogspot.co.id\0"
-"modalen.no\0"
-"edu.kg\0"
-"*.kh\0meraker.no\0aetna\0yamaxun\0"
-"edu.ki\0fedorainfracloud.org\0"
-"able\0flights\0"
-"virtueeldomein.nl\0hra.health\0"
-"edu.km\0med\0blogspot.co.il\0"
-"edu.kn\0"
-"nuoro.it\0"
-"isernia.it\0edu.kp\0masfjorden.no\0"
-"edu.la\0mosvik.no\0"
-"edu.lb\0"
-"3.bg\0edu.lc\0"
-"\xe3\x82\xbb\xe3\x83\xbc\xe3\x83\xab\0"
-"\xe7\xa6\x8f\xe4\xba\x95.jp\0cdn-edges.net\0servehttp.com\0"
-"bugatti\0"
-"edu.kw\0men\0gets-it.net\0"
-"bounty-full.com\0"
-"edu.ky\0cust.dev.thingdust.io\0"
-"edu.kz\0s3-us-west-2.amazonaws.com\0"
-"edu.lk\0abo.pa\0"
-"poniatowa.pl\0"
-"design.museum\0"
-"indianapolis.museum\0asker.no\0"
-"seika.kyoto.jp\0and.museum\0"
-"edu.lr\0"
-"edu.ls\0\xe0\xb8\xa8\xe0\xb8\xb6\xe0\xb8\x81\xe0\xb8\xa9\xe0\xb8\xb2.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"sa.edu.au\0"
-"niiza.saitama.jp\0edu.me\0"
-"edu.lv\0"
-"nishiawakura.okayama.jp\0edu.mg\0buzz\0"
-"edu.ly\0"
-"kashihara.nara.jp\0wien\0selfip.com\0"
-"edu.mk\0nesset.no\0"
-"edu.ml\0co.network\0"
-"*.mm\0"
-"edu.mn\0tatamotors\0"
-"edu.mo\0nc.tr\0"
-"tree.museum\0"
-"edu.ms\0is-a-financialadvisor.com\0"
-"edu.mt\0oystre-slidre.no\0"
-"edu.mv\0"
-"numata.hokkaido.jp\0edu.mw\0edu.ng\0"
-"hakone.kanagawa.jp\0edu.mx\0"
-"shoo.okayama.jp\0suginami.tokyo.jp\0edu.my\0edu.ni\0"
-"edu.mz\0"
-"trainer.aero\0"
-"is-into-games.com\0"
-"catania.it\0arboretum.museum\0"
-"slz.br\0"
-"*.np\0ms.us\0nc.us\0"
-"edu.nr\0"
-"java\0sale\0am.leg.br\0iobb.net\0"
-"uk.reclaim.cloud\0"
-"nu.ca\0mypi.co\0"
-"s3-eu-west-3.amazonaws.com\0ddns.me\0"
-"yamanakako.yamanashi.jp\0"
-"engineer.aero\0"
-"video.hu\0edu.om\0"
-"tools\0"
-"edu.pa\0"
-"gyeonggi.kr\0"
-"b.se\0"
-"mil\0edu.pe\0"
-"kitahiroshima.hokkaido.jp\0edu.pf\0"
-"piemonte.it\0ve.it\0*.pg\0"
-"edu.ph\0"
-"salud.bo\0\xd9\x83\xd8\xa7\xd8\xab\xd9\x88\xd9\x84\xd9\x8a\xd9\x83\0"
-"namie.fukushima.jp\0edu.pk\0"
-"ip6.arpa\0\xe7\xb6\xb2\xe7\xbb\x9c.hk\0edu.pl\0jpn.com\0workisboring.com\0"
-"mit\0"
-"edu.pn\0"
-"iwatsuki.saitama.jp\0"
-"historichouses.museum\0"
-"edu.qa\0tattoo\0"
-"edu.pr\0pages.wiardweb.com\0"
-"int.is\0tono.iwate.jp\0edu.ps\0"
-"mizuho.tokyo.jp\0edu.pt\0"
-"kuzumaki.iwate.jp\0mutual\0"
-"nl.no\0"
-"takashima.shiga.jp\0edu.py\0"
-"shizuoka.shizuoka.jp\0agency\0"
-"yokohama\0"
-"support\0lpusercontent.com\0"
-"sabae.fukui.jp\0"
-"komatsu\0"
-"kuleuven.cloud\0"
-"aarborte.no\0"
-"tec.br\0setagaya.tokyo.jp\0celtic.museum\0"
-"trentinosudtirol.it\0bellevue.museum\0"
-"trentino-a-adige.it\0mlb\0"
-"pueblo.bo\0"
-"aridagawa.wakayama.jp\0"
-"t.bg\0shirakawa.fukushima.jp\0"
-"int.la\0edu.sa\0"
-"edu.sb\0"
-"edu.rs\0edu.sc\0"
-"edu.sd\0arkhangelsk.su\0"
-"wiki\0edu.ru\0cistron.nl\0"
-"cnpy.gdn\0for-the.biz\0"
-"toyama.toyama.jp\0stange.no\0edu.sg\0"
-"rm.it\0emerck\0"
-"\xe9\x80\x9a\xe8\xb2\xa9\0"
-"mma\0"
-"iizuna.nagano.jp\0int.lk\0"
-"edu.sl\0mls\0"
-"azurestaticapps.net\0"
-"edu.sn\0"
-"edu.so\0*.dev.adobeaemcloud.com\0"
-"edu.ss\0"
-"sannohe.aomori.jp\0edu.st\0t3l3p0rt.net\0"
-"school.za\0"
-"edu.sv\0"
-"\xe7\xa6\x8f\xe5\xb2\xa1.jp\0!city.kitakyushu.jp\0\xd0\xbc\xd0\xba\xd0\xb4\0"
-"edu.sy\0"
-"edu.tj\0"
-"nieruchomosci.pl\0"
-"moareke.no\0"
-"edu.tm\0"
-"nomi.ishikawa.jp\0nagaokakyo.kyoto.jp\0nishihara.okinawa.jp\0lib.ne.us\0\xd0\xba\xd0\xb0\xd1\x82\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xba\0"
-"edu.to\0hisamitsu\0"
-"hurdal.no\0"
-"edu.ua\0"
-"edu.tr\0"
-"ap.leg.br\0"
-"posts-and-telecommunications.museum\0edu.tt\0"
-"iruma.saitama.jp\0"
-"int.mv\0"
-"int.mw\0edu.tw\0"
-"fr\xc3\xb8ya.no\0"
-"int.ni\0"
-"oumu.hokkaido.jp\0sarl\0"
-"urown.cloud\0"
+"birdart.museum\0staging.onred.one\0"
+"cc.ct.us\0"
+"is-a-llama.com\0kurgan.su\0"
+"rsc.cdn77.org\0"
+"opoczno.pl\0"
+"demo.datacenter.fi\0"
+"okuizumo.shimane.jp\0"
+"s3.dualstack.eu-west-1.amazonaws.com\0"
+"krellian.net\0"
+"firm.ve\0ye\0country\0"
+"usa.museum\0s3-website-us-west-1.amazonaws.com\0dyndns-blog.com\0"
+"veg\xc3\xa5rshei.no\0"
+"ecn.br\0"
+"deporte.bo\0"
+"miyoshi.aichi.jp\0"
+"lilly\0"
+"maceio.br\0"
+"lillesand.no\0casino\0"
+"legnica.pl\0yt\0"
+"kirovograd.ua\0"
+"kaho.fukuoka.jp\0mil\0"
+"biella.it\0"
+"zp.ua\0zm\0"
+"deals\0lanxess\0"
+"minamata.kumamoto.jp\0basketball\0mit\0"
+"gs.hl.no\0vefsn.no\0lib.pa.us\0"
+"gonohe.aomori.jp\0kaizuka.osaka.jp\0"
+"point2this.com\0"
+"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0zw\0tunk.org\0"
+"fujimino.saitama.jp\0ichiba.tokushima.jp\0"
+"meeres.museum\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0"
+"shizuoka.jp\0"
+"dedyn.io\0"
+"kitadaito.okinawa.jp\0"
+"ooguy.com\0"
+"tecnologia.bo\0verran.no\0"
+"aso.kumamoto.jp\0"
+"fr\xc3\xa6na.no\0"
+"vallee-aoste.it\0naka.ibaraki.jp\0"
+"delmenhorst.museum\0\xd5\xb0\xd5\xa1\xd5\xb5\0east-kazakhstan.su\0glitch.me\0hidora.com\0"
+"toshiba\0iki.fi\0iopsys.se\0"
+"mlb\0"
+"shimokitayama.nara.jp\0zamami.okinawa.jp\0sport\0"
+"archaeological.museum\0planetarium.museum\0\xd0\xbe\xd0\xb1\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0"
+"at-band-camp.net\0"
+"cc.ga.us\0"
+"ueno.gunma.jp\0shop\0"
+"nedre-eiker.no\0catering\0"
+"myoko.niigata.jp\0mattel\0"
+"mma\0from-nh.com\0"
+"go.gov.br\0"
+"firm.ro\0mls\0show\0"
+"fireweb.app\0"
+"\xe9\xa6\x99\xe5\xb7\x9d.jp\0tokai.aichi.jp\0"
+"inf.br\0"
+"\xc3\xb8ksnes.no\0tr.eu.org\0pointto.us\0"
+"honai.ehime.jp\0ravpage.co.il\0"
+"politie\0"
+"snaase.no\0"
+"vps-host.net\0"
+"rj.leg.br\0"
+"karasjok.no\0"
+"kanoya.kagoshima.jp\0miyake.nara.jp\0kppsp.gov.pl\0"
+"us-east-2.elasticbeanstalk.com\0"
+"inf.cu\0"
+"bsb.br\0"
+"b\xc3\xa1jddar.no\0karasjohka.no\0"
+"kochi.kochi.jp\0"
+"bir.ru\0"
+"minakami.gunma.jp\0sayama.saitama.jp\0"
"moe\0"
-"fashion\0loginline.dev\0"
-"ct.it\0saga.jp\0my-router.de\0"
-"wine\0for-our.info\0"
-"ranzan.saitama.jp\0moi\0"
-"edu.vc\0crafting.xyz\0"
-"he.cn\0edu.ve\0"
-"kirkenes.no\0mom\0lebtimnetz.de\0"
-"industries\0s3.dualstack.us-east-1.amazonaws.com\0"
-"servegame.org\0"
-"nu.it\0elvendrell.museum\0edu.uy\0"
-"sakaiminato.tottori.jp\0"
-"pmn.it\0edu.vn\0"
-"market\0mov\0williamhill\0"
-"ck.ua\0col.ng\0"
-"kunneppu.hokkaido.jp\0okuizumo.shimane.jp\0agro.pl\0uw.gov.pl\0"
-"ama.shimane.jp\0edu.vu\0"
-"iwanuma.miyagi.jp\0"
-"skydiving.aero\0karatsu.saga.jp\0blogspot.com.cy\0"
-"k12.as.us\0nab\0"
-"blogspot.co.uk\0"
-"nic.in\0"
-"yufu.oita.jp\0"
-"abbott\0"
-"edu.ws\0"
-"int.pt\0"
-"blogspot.com.ee\0"
-"cisco\0"
-"blogspot.com.eg\0"
-"nba\0lima.zone\0"
-"seranishi.hiroshima.jp\0institute\0"
-"cymru\0"
-"taiki.mie.jp\0"
-"\xd0\xbc\xd0\xbe\xd0\xbd\0"
-"on.ca\0blogspot.com.ar\0"
-"save\0"
-"edu.ye\0blogspot.com.au\0repl.co\0"
-"etisalat\0"
-"enebakk.no\0bss.design\0"
-"storebase.store\0"
-"isahaya.nagasaki.jp\0"
-"skjerv\xc3\xb8y.no\0msd\0"
-"agr.br\0"
-"k.se\0"
-"edu.za\0\xe7\xbd\x91\xe7\xab\x99\0"
-"blogspot.com.br\0"
-"emp.br\0soundcast.me\0"
-"illustration.museum\0int.ru\0"
-"pug.it\0umi.fukuoka.jp\0"
-"blogspot.com.by\0"
-"lavangen.no\0"
-"kumiyama.kyoto.jp\0"
-"edu.zm\0lplfinancial\0"
-"landes.museum\0blogspot.com.co\0"
-"roros.no\0"
-"uozu.toyama.jp\0maserati\0"
+"somna.no\0"
+"florist\0"
+"moi\0s3.dualstack.eu-central-1.amazonaws.com\0"
+"yachimata.chiba.jp\0minami-alps.yamanashi.jp\0shoparena.pl\0"
+"mom\0"
+"idv.tw\0"
+"emilia-romagna.it\0valleaosta.it\0hakusan.ishikawa.jp\0gda.pl\0"
+"midatlantic.museum\0"
+"club\0"
+"askim.no\0"
+"konan.aichi.jp\0sdscloud.pl\0"
+"mov\0"
+"joyo.kyoto.jp\0elementor.cloud\0eastus2.azurestaticapps.net\0"
+"school.na\0"
+"firm.nf\0"
+"bievat.no\0consulting\0firm.ng\0"
+"tsushima.aichi.jp\0kasuga.fukuoka.jp\0"
+"neat-url.com\0"
+"tos.it\0"
+"fentiger.mythic-beasts.com\0"
+"nab\0"
+"*.azurecontainer.io\0"
+"drammen.no\0hdfcbank\0"
+"tsurugashima.saitama.jp\0"
+"seaport.museum\0"
+"cc.in.us\0"
+"auspost\0"
+"nba\0localhost.daplie.me\0"
+"school.nz\0"
+"kaita.hiroshima.jp\0"
+"\xe6\x9b\xb8\xe7\xb1\x8d\0tcp4.me\0"
+"\xe7\xbd\x91\xe5\xba\x97\0"
+"shichikashuku.miyagi.jp\0nakijin.okinawa.jp\0saitama.saitama.jp\0"
+"fage\0"
+"s3.cn-north-1.amazonaws.com.cn\0"
+"guge\0"
+"ar.it\0hikone.shiga.jp\0"
+"stjohn.museum\0sakura\0"
+"futbol\0msd\0"
+"ivgu.no\0vestnes.no\0lib.tn.us\0altervista.org\0"
+"komoro.nagano.jp\0"
+"lur\xc3\xb8y.no\0"
+"journalism.museum\0"
+"b\xc3\xb8.nordland.no\0"
+"barletta-trani-andria.it\0shimizu.hokkaido.jp\0"
+"aarborte.no\0dvrdns.org\0"
+"kainan.wakayama.jp\0dnsup.net\0"
+"bargains\0"
+"fj.cn\0"
+"niiza.saitama.jp\0"
+"gc.ca\0drive\0is-a-republican.com\0appspot.com\0"
"mtn\0"
-"kawaguchi.saitama.jp\0oppeg\xc3\xa5rd.no\0"
-"int.tj\0"
+"bt.it\0shiga.jp\0ikeda.gifu.jp\0wake.okayama.jp\0hino.tottori.jp\0fail\0"
+"cloudcontrolapp.com\0"
"mtr\0"
-"nec\0weatherchannel\0sells-for-less.com\0"
-"camera\0saxo\0"
-"olbia-tempio.it\0"
-"salangen.no\0"
-"net.ac\0bentley\0"
-"lotte\0no.eu.org\0"
-"net.ae\0cc.oh.us\0"
-"educator.aero\0net.af\0"
-"net.ag\0australia.museum\0int.tt\0"
-"force.museum\0thruhere.net\0"
-"net.ai\0"
-"slask.pl\0"
-"v\xc3\xa5g\xc3\xa5.no\0"
-"net.al\0"
-"net.am\0"
-"lotto\0"
-"net\0"
-"net.ba\0"
-"net.ar\0net.bb\0kuju.oita.jp\0karaganda.su\0\xd1\x81\xd0\xb0\xd0\xbc\xd0\xb0\xd1\x80\xd0\xb0.\xd1\x80\xd1\x83\xd1\x81\0"
-"tomobe.ibaraki.jp\0new\0"
-"fuchu.toyama.jp\0sa.com\0"
-"net.au\0cloudjiffy.net\0"
-"blogspot.com.es\0"
-"net.bh\0int.ve\0nfl\0\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xae\0"
-"blogspot.co.ke\0"
-"net.az\0"
-"turin.it\0halden.no\0"
-"net.bm\0"
-"net.bn\0farmstead.museum\0"
-"net.bo\0"
-"trentinostirol.it\0int.vn\0"
-"net.br\0damnserver.com\0"
-"net.bs\0\xd8\xa8\xd9\x8a\xd8\xaa\xd9\x83\0"
-"net.bt\0tr\xc3\xb8gstad.no\0\xe7\xbd\x91\xe5\x9d\x80\0"
-"isa.kagoshima.jp\0"
-"\xe7\xbb\x84\xe7\xb9\x94.hk\0kppsp.gov.pl\0"
-"net.ci\0"
-"foz.br\0net.bz\0"
-"higashihiroshima.hiroshima.jp\0ngo\0"
-"sayama.saitama.jp\0hagebostad.no\0vipsinaapp.com\0"
-"net.cm\0clinic\0"
-"net.cn\0"
-"net.co\0"
-"\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0clubmed\0lgbt\0"
-"lease\0"
-"baidu\0"
-"go.gov.br\0"
-"net.cu\0cal.it\0"
-"stockholm.museum\0in-dsl.de\0"
-"net.cw\0heimatunduhren.museum\0nhk\0\xe4\xba\x9a\xe9\xa9\xac\xe9\x80\x8a\0"
-"net.cy\0joyo.kyoto.jp\0higashiizumo.shimane.jp\0"
-"nishiizu.shizuoka.jp\0"
-"kitami.hokkaido.jp\0onna.okinawa.jp\0"
-"net.dm\0s3-website.us-east-2.amazonaws.com\0es-1.axarnet.cloud\0"
-"monzaebrianza.it\0"
-"net.do\0cc.wa.us\0"
-"hob\xc3\xb8l.no\0"
-"net.ec\0culturalcenter.museum\0"
-"hn.cn\0"
-"toyone.aichi.jp\0"
-"64-b.it\0"
-"net.eg\0"
-"gb.com\0"
-"myshopify.com\0"
-"net.dz\0massa-carrara.it\0"
-"adac\0"
-"stjordal.no\0"
-"shingu.fukuoka.jp\0kushiro.hokkaido.jp\0santacruz.museum\0"
-"shimizu.shizuoka.jp\0"
-"net.et\0"
-"show.aero\0"
-"net-freaks.com\0"
-"net.fj\0"
-"naka.hiroshima.jp\0"
-"net.fm\0"
-"blogspot.co.nz\0"
-"sanuki.kagawa.jp\0asaka.saitama.jp\0"
-"shimoji.okinawa.jp\0"
-"sf.no\0ct.us\0"
-"spy.museum\0k12.nm.us\0"
-"saku.nagano.jp\0nz.eu.org\0"
-"net.ge\0"
-"reggiocalabria.it\0watches\0"
-"net.gg\0aseral.no\0"
-"kobayashi.miyazaki.jp\0iraq.museum\0"
-"is-a-student.com\0"
-"net.gl\0seoul.kr\0"
-"nic.tj\0"
-"net.gn\0"
-"net.gp\0"
-"nakadomari.aomori.jp\0"
-"net.gr\0gold\0nokia\0"
-"net.gt\0golf\0"
-"net.gu\0gs.ah.no\0"
-"webhop.org\0tn.oxa.cloud\0"
-"dubai\0"
-"net.gy\0mayfirst.info\0"
-"net.hk\0"
-"locker\0al.eu.org\0"
-"net.hn\0erotica.hu\0horokanai.hokkaido.jp\0mj\xc3\xb8ndalen.no\0nhs.uk\0ipiranga\0"
-"t.se\0"
-"costume.museum\0"
-"orland.no\0"
-"net.ht\0net.id\0chat\0"
-"yamaga.kumamoto.jp\0walbrzych.pl\0memset.net\0"
-"km.ua\0blogdns.com\0"
-"yamato.kumamoto.jp\0"
-"net.il\0"
-"net.im\0tokushima.jp\0misaki.okayama.jp\0"
-"net.in\0"
-"appengine.flow.ch\0"
-"net.iq\0"
-"net.ir\0"
-"net.is\0money.museum\0vn.ua\0zapto.xyz\0"
-"lib.ee\0net.je\0"
-"ingatlan.hu\0bolzano.it\0"
-"blogspot.com.mt\0"
-"politica.bo\0"
-"blogspot.com.ng\0"
-"rehab\0"
-"net.jo\0tec.ve\0"
-"ishikawa.fukushima.jp\0"
-"cc.pa.us\0"
-"miyazu.kyoto.jp\0goog\0id.forgerock.io\0"
-"oketo.hokkaido.jp\0"
-"kamisato.saitama.jp\0net.kg\0"
-"rodoy.no\0"
-"valledaosta.it\0net.ki\0"
-"cloud66.ws\0"
-"gwangju.kr\0"
-"net.kn\0"
-"chuo.tokyo.jp\0roma.museum\0"
-"net.la\0"
-"net.lb\0"
-"so.it\0net.lc\0now\0from-vt.com\0"
-"\xc3\xb8vre-eiker.no\0"
-"bahccavuotna.no\0"
-"net.kw\0bmoattachments.org\0fastblog.net\0"
-"trondheim.no\0definima.net\0"
-"daisen.akita.jp\0net.ky\0flora.no\0krager\xc3\xb8.no\0"
-"net.kz\0"
-"net.lk\0"
-"shimofusa.chiba.jp\0shibukawa.gunma.jp\0"
-"konskowola.pl\0"
-"matta-varjjat.no\0wuoz.gov.pl\0"
-"ballooning.aero\0net.ma\0"
-"net.lr\0myravendb.com\0"
-"net.ls\0"
-"rv.ua\0nic.za\0"
-"net.me\0blogspot.com.tr\0"
-"midori.gunma.jp\0net.lv\0upaas.kazteleport.kz\0"
-"esan.hokkaido.jp\0cust.prod.thingdust.io\0dnsupdate.info\0"
-"miyoshi.aichi.jp\0"
-"net.ly\0"
-"mod.gi\0net.mk\0"
-"net.ml\0"
-"crotone.it\0gu.us\0nra\0"
-"\xe6\x95\x8e\xe8\x82\xb2.hk\0yachimata.chiba.jp\0"
-"net.mo\0"
-"repl.run\0"
-"cc.ky.us\0"
-"net.ms\0"
-"net.mt\0"
-"net.mu\0obi\0"
-"net.mv\0net.nf\0pohl\0"
-"yoshinogari.saga.jp\0net.mw\0net.ng\0"
-"net.mx\0"
-"campidanomedio.it\0net.my\0net.ni\0faststacks.net\0"
-"veterinaire.km\0net.mz\0radom.pl\0barsy.support\0"
-"taiwa.miyagi.jp\0fantasyleague.cc\0"
-"mitaka.tokyo.jp\0magnet.page\0"
-"semine.miyagi.jp\0"
-"itano.tokushima.jp\0"
-"net.nr\0"
-"nrw\0"
-"pg.it\0stranda.no\0"
-"tonaki.okinawa.jp\0"
-"sx.cn\0"
-"\xe5\x85\xac\xe5\x8f\xb8.cn\0gallery.museum\0net.nz\0"
-"higashitsuno.kochi.jp\0"
-"tsuno.miyazaki.jp\0net.om\0"
-"iron.museum\0"
-"cust.disrec.thingdust.io\0"
-"net.pa\0mlbfan.org\0"
-"hembygdsforbund.museum\0"
-"hokuto.hokkaido.jp\0"
-"iki.nagasaki.jp\0net.pe\0um.gov.pl\0"
-"moseushi.hokkaido.jp\0hjartdal.no\0"
-"\xe5\x85\xac\xe5\x8f\xb8.hk\0rollag.no\0"
-"net.ph\0s3.dualstack.ca-central-1.amazonaws.com\0"
-"olecko.pl\0"
-"itau\0"
-"net.pk\0co.krd\0"
-"net.pl\0\xe6\x95\x99\xe8\x82\xb2.\xe9\xa6\x99\xe6\xb8\xaf\0"
-"net.pn\0from-ak.com\0"
-"bando.ibaraki.jp\0cultural.museum\0s3-website-us-east-1.amazonaws.com\0"
-"fukushima.jp\0vevelstad.no\0homesense\0ntt\0"
-"net.qa\0"
-"net.pr\0"
-"net.ps\0cc.ia.us\0"
-"shimizu.hokkaido.jp\0net.pt\0"
-"blogspot.co.za\0"
-"pp.az\0"
-"discourse.group\0"
-"sn\xc3\xa5""ase.no\0net.py\0"
-"andriabarlettatrani.it\0"
-"groundhandling.aero\0bbs.tr\0lon-2.paas.massivegrid.net\0wellbeingzone.eu\0"
-"an.it\0"
-"avocat.pro\0"
-"veterinaire.fr\0"
-"off\0"
-"obu.aichi.jp\0"
-"lo.it\0"
-"nakatsugawa.gifu.jp\0"
-"luzern.museum\0"
-"misasa.tottori.jp\0amli.no\0"
-"ojiya.niigata.jp\0"
-"iitate.fukushima.jp\0"
-"vardo.no\0"
-"flight.aero\0blogspot.com.uy\0"
-"citic\0square7.net\0dvrcam.info\0"
-"furniture.museum\0net.sa\0"
-"net.sb\0"
-"tomika.gifu.jp\0net.sc\0kicks-ass.net\0"
-"net.sd\0"
-"egersund.no\0net.ru\0"
-"kv.ua\0"
-"h\xc3\xa1""bmer.no\0net.rw\0net.sg\0aquarelle\0"
-"net.sh\0tel.tr\0"
-"gliwice.pl\0"
-"net.sl\0"
-"net.so\0"
-"bjarkoy.no\0"
-"net.ss\0"
-"net.st\0"
-"us.gov.pl\0"
-"instantcloud.cn\0"
-"hole.no\0net.th\0"
-"net.sy\0edu.krd\0"
-"net.tj\0dnsalias.org\0"
-"net.tm\0"
-"net.tn\0"
-"tonsberg.no\0net.to\0nyc\0"
-"net.ua\0"
-"net.tr\0"
-"net.tt\0"
-"*.lcl.dev\0"
-"froland.no\0sor-aurdal.no\0"
-"net.tw\0"
-"yura.wakayama.jp\0"
-"net.uk\0baseball\0"
-"bo.telemark.no\0cleaning\0"
-"net.vc\0\xd8\xa8\xd8\xa7\xd8\xb1\xd8\xaa\0"
-"lea\xc5\x8bgaviika.no\0net.ve\0*.stg.dev\0"
-"consulado.st\0"
-"hidaka.hokkaido.jp\0nayoro.hokkaido.jp\0yoga\0"
-"net.uy\0net.vi\0"
-"!city.sapporo.jp\0net.uz\0"
-"gol.no\0"
-"net.vn\0"
-"nishinomiya.hyogo.jp\0"
-"pixolino.com\0"
-"dynalias.com\0for-some.biz\0"
-"net.vu\0"
-"tydal.no\0"
-"is-a-chef.org\0ric.jelastic.vps-host.net\0"
-"srv.br\0"
-"yatomi.aichi.jp\0"
-"net.ws\0"
-"scot\0"
-"university.museum\0ebiz.tw\0cdn77-ssl.net\0"
-"minato.osaka.jp\0porn\0"
-"akita.akita.jp\0"
-"\xe8\x81\x94\xe9\x80\x9a\0"
-"marche.it\0rakkestad.no\0"
-"nysa.pl\0"
-"ravendb.community\0"
-"namerikawa.toyama.jp\0"
-"transport.museum\0net.ye\0"
-"mormon\0"
-"aizubange.fukushima.jp\0nishitosa.kochi.jp\0"
-"!city.kawasaki.jp\0"
-"moskenes.no\0auspost\0"
-"wa.gov.au\0larsson.museum\0aurskog-holand.no\0post\0"
-"service.gov.uk\0"
-"naamesjevuemie.no\0"
-"net.za\0one\0"
-"fnd.br\0shizuoka.jp\0ong\0"
-"catholic\0"
-"cloudaccess.host\0"
-"toray\0"
-"kitamoto.saitama.jp\0onl\0homeip.net\0"
-"west1-us.cloudjiffy.net\0"
-"myqnapcloud.com\0"
-"kr\xc3\xb8""dsherad.no\0"
-"chuo.chiba.jp\0net.zm\0ny-1.paas.massivegrid.net\0"
-"lib.wa.us\0"
-"nissan\0"
-"columbus.museum\0is-saved.org\0"
-"s3-ap-northeast-1.amazonaws.com\0"
-"tinn.no\0pinb.gov.pl\0mt.eu.org\0"
-"tksat.bo\0kariwa.niigata.jp\0"
-"ichinohe.iwate.jp\0"
-"bg.it\0"
-"friuliveneziagiulia.it\0blogsite.org\0"
-"nissay\0ooo\0"
-"alto-adige.it\0"
-"kamisunagawa.hokkaido.jp\0"
-"ichikawa.chiba.jp\0kamikawa.hokkaido.jp\0"
-"storage\0"
-"morotsuka.miyazaki.jp\0wake.okayama.jp\0karelia.su\0"
-"is-a-knight.org\0"
-"takamatsu.kagawa.jp\0"
-"oxa.cloud\0"
-"\xe9\xb3\xa5\xe5\x8f\x96.jp\0varoy.no\0"
-"is-a-chef.com\0"
-"arna.no\0law.pro\0"
-"kawaue.gifu.jp\0naha.okinawa.jp\0"
-"h\xc3\xa1mm\xc3\xa1rfeasta.no\0wielun.pl\0"
-"unzen.nagasaki.jp\0itoigawa.niigata.jp\0"
-"research.aero\0"
-"andria-trani-barletta.it\0akaiwa.okayama.jp\0org\0"
-"\xe0\xb8\x97\xe0\xb8\xab\xe0\xb8\xb2\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"pay\0"
-"construction\0"
-"culture.museum\0"
-"koori.fukushima.jp\0kiwa.mie.jp\0"
-"iwamizawa.hokkaido.jp\0"
-"kaga.ishikawa.jp\0"
-"rsvp\0"
-"horology.museum\0"
-"gsm.pl\0neustar\0"
-"chtr.k12.ma.us\0"
-"cesenaforl\xc3\xac.it\0indowapblog.com\0"
-"ureshino.mie.jp\0manx.museum\0"
-"consulting\0"
-"muroto.kochi.jp\0"
-"tsuruoka.yamagata.jp\0reviews\0"
-"\xd0\xbe\xd1\x80\xd0\xb3\0"
-"click\0"
-"*.northflank.app\0"
-"from-ri.com\0"
-"budejju.no\0"
-"otaki.chiba.jp\0"
-"aid.pl\0"
-"odesa.ua\0"
-"sarpsborg.no\0"
-"kasserver.com\0"
-"ott\0"
-"kashima.ibaraki.jp\0kosuge.yamanashi.jp\0russia.museum\0cc.az.us\0lib.pa.us\0"
-"toya.hokkaido.jp\0"
-"akashi.hyogo.jp\0"
-"academia.bo\0"
-"cri.br\0"
-"friuli-vgiulia.it\0\xe5\xb1\xb1\xe5\xbd\xa2.jp\0lukow.pl\0"
-"leirfjord.no\0my-wan.de\0"
-"pet\0"
-"ora.gunma.jp\0pp.se\0pp.ru\0"
-"kumamoto.jp\0kvinnherad.no\0ovh\0"
-"better-than.tv\0"
-"cable-modem.org\0"
-"boats\0wales\0"
-"salerno.it\0"
-"sauherad.no\0"
-"trani-barletta-andria.it\0county.museum\0"
-"toyota\0"
-"cuiaba.br\0"
-"\xc3\xa5mot.no\0kongsberg.no\0"
-"starostwo.gov.pl\0"
-"yamato.fukushima.jp\0hornindal.no\0"
-"gmina.pl\0jp.net\0"
-"pp.ua\0"
-"k12.co.us\0"
-"\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb8\0"
-"prato.it\0phd\0"
-"osaki.miyagi.jp\0"
-"\xe7\xb5\x84\xe7\xbb\x87.hk\0lib.mi.us\0"
-"kuriyama.hokkaido.jp\0is-very-evil.org\0"
-"mihara.kochi.jp\0jeep\0marriott\0"
-"ce.leg.br\0"
-"askvoll.no\0mincom.tn\0"
-"financial\0casacam.net\0smushcdn.com\0"
-"mex.com\0"
-"mordovia.su\0"
-"safety\0"
-"pid\0"
-"civilisation.museum\0my.eu.org\0app.os.fedoraproject.org\0"
-"recife.br\0gotsu.shimane.jp\0\xe4\xb8\xad\xe5\x9b\xbd\0"
-"lidl\0hostedpi.com\0"
-"cooperativa.bo\0sunndal.no\0"
-"pin\0"
-"ryukyu\0twmail.net\0"
-"loginline.app\0"
-"na.it\0karlsoy.no\0daemon.panel.gg\0"
-"hair\0"
-"from-sd.com\0in.london\0"
-"hatoyama.saitama.jp\0\xe4\xb8\xad\xe5\x9c\x8b\0"
-"pizza\0"
-"ueno.gunma.jp\0"
-"friuli-venezia-giulia.it\0ras.ru\0"
-"loseyourip.com\0"
-"higashi.fukushima.jp\0"
-"life\0"
-"lib.ia.us\0"
-"dyndns1.de\0"
-"aero\0"
-"busan.kr\0*.hosting.ovh.net\0"
-"troandin.no\0"
-"grainger\0"
-"mordovia.ru\0"
-"gitlab.io\0"
-"k12.wi.us\0"
-"balsfjord.no\0is-a-geek.com\0*.transurl.be\0"
-"mayfirst.org\0"
-"us.com\0"
-"reisen\0"
-"wy.us\0sellsyourhome.org\0"
-"diamonds\0ua.rs\0"
-"showa.gunma.jp\0stream\0"
-"yk.ca\0"
-"sande.more-og-romsdal.no\0"
-"tosa.kochi.jp\0resistance.museum\0"
-"carrd.co\0"
-"kakinoki.shimane.jp\0"
-"vic.au\0dr\xc3\xb8""bak.no\0swiebodzin.pl\0"
-"gen.mi.us\0"
-"aeroclub.aero\0"
-"\xe8\x8c\xa8\xe5\x9f\x8e.jp\0est-a-la-masion.com\0"
-"labor.museum\0eurodir.ru\0"
-"ohda.shimane.jp\0edgestack.me\0"
-"wakasa.fukui.jp\0vip.jelastic.cloud\0"
-"taira.toyama.jp\0ngo.lk\0pnc\0"
-"indigena.bo\0uto.kumamoto.jp\0"
-"okegawa.saitama.jp\0lancashire.museum\0"
-"sorfold.no\0"
-"seat\0"
-"chase\0"
-"forex\0phx.enscaled.us\0"
-"trentinosued-tirol.it\0"
-"kazo.saitama.jp\0"
-"notaires.km\0"
-"yoka.hyogo.jp\0fh.se\0kerryhotels\0nl.eu.org\0"
-"cc.mt.us\0cc.nd.us\0"
-"us.ax\0"
-"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0copro.uk\0"
-"stryn.no\0citi\0""1337.pictures\0"
-"\xd0\xbe\xd0\xb1\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0ngo.ng\0"
-"i.bg\0"
-"hamatama.saga.jp\0"
-"mazury.pl\0like\0"
-"webhop.net\0*.transurl.eu\0"
-"championship.aero\0"
-"dyndns-wiki.com\0"
-"kommune.no\0city\0eu-central-1.elasticbeanstalk.com\0"
-"kviteseid.no\0"
-"berg.no\0jcloud.ik-server.com\0""1kapp.com\0"
-"reise\0"
-"naroy.no\0"
-"monticello.museum\0"
-"v-info.info\0"
-"interactive.museum\0"
-"azerbaijan.su\0"
-"sande.m\xc3\xb8re-og-romsdal.no\0sytes.net\0"
-"fishing\0s3.dualstack.ap-southeast-2.amazonaws.com\0"
-"from-ms.com\0from-nc.com\0"
-"ngo.ph\0seek\0fbxos.fr\0"
-"federation.aero\0"
-"figueres.museum\0"
-"eidskog.no\0"
-"graz.museum\0store\0enscaled.sg\0"
-"obama.nagasaki.jp\0"
-"kyoto.jp\0"
-"cri.nz\0abogado\0asso.eu.org\0"
-"jgora.pl\0dyn53.io\0"
-"defense.tn\0"
-"pro\0limo\0"
-"salvador.br\0minamioguni.kumamoto.jp\0minano.saitama.jp\0lifestyle\0n4t.co\0"
+"\xe7\xb5\x84\xe7\xb9\x94.\xe9\xa6\x99\xe6\xb8\xaf\0nec\0mymailer.com.tw\0"
+"itayanagi.aomori.jp\0"
+"twmail.org\0"
+"eu-west-1.elasticbeanstalk.com\0"
+"df.leg.br\0"
+"skjervoy.no\0"
+"net\0priv.pl\0"
+"cuisinella\0*.tst.site\0"
+"new\0"
+"shirosato.ibaraki.jp\0"
+"trentinoalto-adige.it\0yashiro.hyogo.jp\0nfl\0eastasia.azurestaticapps.net\0"
+"news.hu\0"
+"um.gov.pl\0"
+"gallery\0dontexist.com\0"
+"brescia.it\0moriyama.shiga.jp\0klodzko.pl\0"
"1.bg\0"
-"ci.it\0kamigori.hyogo.jp\0"
-"pru\0discourse.team\0"
-"\xd0\xbc\xd1\x81\xd0\xba.\xd1\x80\xd1\x83\xd1\x81\0"
-"etne.no\0"
-"parma.it\0sk\xc3\xa1nit.no\0kicks-ass.org\0"
-"itayanagi.aomori.jp\0kobierzyce.pl\0link\0"
-"nakagawa.hokkaido.jp\0"
-"ichinomiya.aichi.jp\0portal.museum\0"
-"police.uk\0"
-"zamami.okinawa.jp\0"
-"motoyama.kochi.jp\0"
-"okagaki.fukuoka.jp\0"
-"actor\0"
-"k12.az.us\0"
-"ogano.saitama.jp\0estate\0statefarm\0"
-"pub\0"
-"ruhr\0"
-"feira.br\0k12.la.us\0ng.eu.org\0"
-"progressive\0"
-"trentino-altoadige.it\0"
-"gamagori.aichi.jp\0tula.su\0"
-"ukiha.fukuoka.jp\0shw.io\0"
-"saintlouis.museum\0ic.gov.pl\0"
-"ullensaker.no\0stuff-4-sale.org\0"
-"courses\0haus\0"
-"ns.ca\0"
-"\xd9\xbe\xd8\xa7\xd9\x83\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0"
-"agematsu.nagano.jp\0"
-"workshop.museum\0mail.pl\0est-le-patron.com\0"
-"tsuga.tochigi.jp\0"
-"engineer\0"
-"servemp3.com\0"
-"dell-ogliastra.it\0higashikagura.hokkaido.jp\0"
-"trentino-sued-tirol.it\0klabu.no\0"
-"gniezno.pl\0"
-"lima-city.rocks\0"
-"is-a-geek.org\0"
-"cruise\0pwc\0"
-"wazuka.kyoto.jp\0\xe4\xbf\xa1\xe6\x81\xaf\0"
-"portlligat.museum\0"
-"palermo.it\0bearalv\xc3\xa1hki.no\0"
-"vc.it\0oguni.kumamoto.jp\0lilly\0"
-"saobernardo.br\0barsy.menu\0"
-"gs.vf.no\0is-a-chef.net\0"
-"isleofman.museum\0"
-"childrensgarden.museum\0turek.pl\0"
-"vercel.app\0"
-"ushistory.museum\0"
-"us.kg\0"
-"nishiazai.shiga.jp\0"
-"trentin-s\xc3\xbc""d-tirol.it\0"
-"inderoy.no\0"
-"honbetsu.hokkaido.jp\0*.transurl.nl\0"
-"omega\0"
-"university\0"
-"tsubame.niigata.jp\0ris\xc3\xb8r.no\0couk.me\0pgafan.net\0"
-"matsuzaki.shizuoka.jp\0vindafjord.no\0cc.nm.us\0"
-"mein-vigor.de\0"
-"hidaka.saitama.jp\0hikawa.shimane.jp\0myfirewall.org\0"
-"goiania.br\0"
-"r.bg\0from-de.com\0"
-"port.fr\0"
-"savona.it\0"
-"log.br\0"
-"americanantiques.museum\0"
-"wolomin.pl\0game-server.cc\0"
-"midori.chiba.jp\0suzaka.nagano.jp\0mintere.site\0"
-"trentinoa-adige.it\0"
-"shinagawa.tokyo.jp\0s\xc3\xb8rum.no\0ulvik.no\0"
-"\xc3\xa5seral.no\0os.hedmark.no\0"
-"katsuragi.wakayama.jp\0"
-"nakai.kanagawa.jp\0"
-"vet.br\0us.na\0"
-"live\0"
-"ngo.za\0"
-"kofu.yamanashi.jp\0froya.no\0"
-"swidnik.pl\0"
-"veneto.it\0"
-"lamborghini\0"
-"bashkiria.ru\0"
-"yoshioka.gunma.jp\0i.ng\0ga.us\0"
-"bayern\0"
-"*.dweb.link\0"
-"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0"
-"eid.no\0go.leg.br\0"
-"industria.bo\0"
-"cr.it\0bashkiria.su\0remotewd.com\0"
-"reggioemilia.it\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0"
-"kozaki.chiba.jp\0sekikawa.niigata.jp\0"
-"gs.cn\0clic2000.net\0"
-"eu-west-2.elasticbeanstalk.com\0radio.am\0"
-"musashino.tokyo.jp\0byen.site\0"
-"sd.cn\0gs.of.no\0total\0"
-"scientist.aero\0"
-"itakura.gunma.jp\0"
-"rome.it\0i.ph\0forum\0yandexcloud.net\0"
-"kasumigaura.ibaraki.jp\0gran.no\0\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0"
-"misaki.osaka.jp\0"
-"nishimera.miyazaki.jp\0\xe5\xb9\xbf\xe4\xb8\x9c\0caa.li\0"
-"bungotakada.oita.jp\0myfast.space\0"
-"radio.br\0benevento.it\0"
-"kadogawa.miyazaki.jp\0oishida.yamagata.jp\0cancerresearch\0"
-"hs.run\0"
-"rishiri.hokkaido.jp\0"
-"k12.md.us\0"
-"arita.saga.jp\0"
-"nanmoku.gunma.jp\0ogawa.ibaraki.jp\0"
-"homeunix.net\0"
-"toki.gifu.jp\0nj.us\0\xe3\x81\xbf\xe3\x82\x93\xe3\x81\xaa\0"
-"taxi.br\0dev-myqnapcloud.com\0"
-"lynx.mythic-beasts.com\0"
-"es.gov.br\0shiga.jp\0"
-"bible.museum\0naumburg.museum\0imamat\0verm\xc3\xb6gensberater\0"
-"tingvoll.no\0s3-website.ca-central-1.amazonaws.com\0"
-"ac.ae\0"
-"fuettertdasnetz.de\0"
-"kitakata.miyazaki.jp\0nakagawa.tokushima.jp\0i.se\0"
-"leksvik.no\0"
-"philips\0krellian.net\0"
-"hachirogata.akita.jp\0otake.hiroshima.jp\0"
-"shimane.shimane.jp\0"
-"trentinsud-tirol.it\0horonobe.hokkaido.jp\0report\0"
-"arq.br\0s3-website-sa-east-1.amazonaws.com\0r.cdn77.net\0"
-"allstate\0"
-"mill.museum\0upow.gov.pl\0"
-"ac.at\0ashiya.hyogo.jp\0loyalist.museum\0vinnytsia.ua\0"
-"ac.be\0yamatokoriyama.nara.jp\0"
-"redirectme.net\0"
-"miyoshi.tokushima.jp\0vossevangen.no\0"
-"council.aero\0kawasaki.miyagi.jp\0"
-"karikatur.museum\0"
-"sex.hu\0"
-"delivery\0"
-"nanjo.okinawa.jp\0"
-"sakura.chiba.jp\0cc.de.us\0radio.fm\0"
-"fjell.no\0"
-"fudai.iwate.jp\0"
-"mishima.shizuoka.jp\0privatizehealthinsurance.net\0"
-"fylkesbibl.no\0\xe0\xb2\xad\xe0\xb2\xbe\xe0\xb2\xb0\xe0\xb2\xa4\0cyon.site\0"
-"tokai.ibaraki.jp\0kanuma.tochigi.jp\0dyndns.dappnode.io\0"
-"chikuho.fukuoka.jp\0""0e.vc\0"
-"ac.ci\0alesund.no\0cc.nv.us\0"
-"tahara.aichi.jp\0karumai.iwate.jp\0mydatto.net\0"
-"guitars\0hobby-site.org\0"
-"ac.cn\0kurate.fukuoka.jp\0"
-"skanit.no\0"
-"ac.cr\0\xe7\xbd\x91\xe7\xbb\x9c\0"
-"sakura.tochigi.jp\0"
-"assabu.hokkaido.jp\0we.bs\0"
-"reklam.hu\0"
-"biz.bb\0ac.cy\0"
-"biz.at\0"
-"jamison.museum\0"
-"gangwon.kr\0onavstack.net\0"
-"daiwa.hiroshima.jp\0*.magentosite.cloud\0"
-"biz.az\0baseball.museum\0\xe5\x95\x86\xe6\xa5\xad.tw\0freeboxos.fr\0"
-"serveexchange.com\0gotpantheon.com\0"
-"sherbrooke.museum\0"
-"arai.shizuoka.jp\0"
-"lundbeck\0"
-"red\0"
-"teshikaga.hokkaido.jp\0"
-"lier.no\0"
-"cs.keliweb.cloud\0"
-"zara\0"
-"hokuto.yamanashi.jp\0"
-"medecin.km\0santafe.museum\0spydeberg.no\0"
-"fukumitsu.toyama.jp\0ren\0sexy\0"
-"odawara.kanagawa.jp\0"
-"servehumour.com\0"
-"ac.fj\0kraanghke.no\0qvc\0"
-"\xe7\xb5\x84\xe7\xb9\x94.\xe9\xa6\x99\xe6\xb8\xaf\0"
-"biz.cy\0"
-"kitashiobara.fukushima.jp\0minato.tokyo.jp\0youth.museum\0biz.dk\0"
-"expert\0"
-"exhibition.museum\0"
-"hl.cn\0americana.museum\0"
-"graphox.us\0"
-"noho.st\0"
-"photography.museum\0"
-"ac.gn\0jogasz.hu\0"
-"basel.museum\0"
+"trentino-a-adige.it\0"
+"jele.site\0"
+"he.cn\0"
+"bearalv\xc3\xa1hki.no\0cc.md.us\0"
+"k12.nm.us\0ngo\0"
+"mino.gifu.jp\0"
+"dyn.ddnss.de\0"
+"inf.mk\0aseral.no\0s\xc3\xb8rfold.no\0"
"\xd1\x80\xd1\x83\xd1\x81\0"
-"cr.ua\0"
-"winners\0"
-"pesarourbino.it\0"
-"sennan.osaka.jp\0oracle\0"
-"autos\0"
-"ed.ao\0abeno.osaka.jp\0immobilien\0"
-"biz.et\0omi.niigata.jp\0"
-"plantation.museum\0"
-"shobara.hiroshima.jp\0"
-"kujukuri.chiba.jp\0"
-"nishi.fukuoka.jp\0"
-"biz.fj\0"
-"\xd8\xb9\xd8\xb1\xd8\xa8\0"
-"ac.id\0"
-"boehringer\0meinforum.net\0"
-"cosenza.it\0"
-"tsukumi.oita.jp\0nachikatsuura.wakayama.jp\0prod\0poznan.pl\0gov.scot\0"
-"ascolipiceno.it\0familyds.com\0"
-"topology.museum\0prof\0"
-"ac.il\0physio\0"
-"ac.im\0"
-"ac.in\0romskog.no\0"
-"newjersey.museum\0"
-"ac.ir\0delmenhorst.museum\0sex.pl\0"
-"\xc4\x8d\xc3\xa1hcesuolo.no\0ril\0biz.gl\0ditchyourip.com\0"
-"ed.ci\0chambagri.fr\0"
-"pe.ca\0karmoy.no\0"
-"rio\0"
-"rip\0torproject.net\0"
-"ed.cr\0tama.tokyo.jp\0mosj\xc3\xb8""en.no\0"
-"zaporizhzhia.ua\0"
-"notaires.fr\0lavagis.no\0"
-"ac.jp\0rovno.ua\0"
-"natural.bo\0hotmail\0"
-"r.se\0"
-"ac.ke\0"
-"cloud.fedoraproject.org\0vs.mythic-beasts.com\0za.net\0"
-"eng.br\0shijonawate.osaka.jp\0"
-"yasuda.kochi.jp\0"
-"sci.eg\0nogi.tochigi.jp\0"
-"biz.id\0cpa.pro\0"
-"dabur\0"
-"frog.museum\0grajewo.pl\0"
-"ac.kr\0"
-"safety.aero\0cloudns.biz\0"
-"ol.no\0"
-"endoftheinternet.org\0"
-"tochigi.jp\0"
-"nango.fukushima.jp\0"
-"ac.lk\0"
-"museum\0"
-"ac.ma\0k12.tn.us\0"
-"matera.it\0alstom\0ferrari\0"
-"ono.fukui.jp\0shimokitayama.nara.jp\0ac.ls\0"
-"kitagawa.kochi.jp\0tachikawa.tokyo.jp\0"
-"ac.me\0hawaii.museum\0coupons\0"
-"phoenix.museum\0"
-"fastvps-server.com\0"
-"tozawa.yamagata.jp\0uenohara.yamanashi.jp\0"
-"kamiichi.toyama.jp\0"
-"biz.ki\0loginline.io\0"
-"furubira.hokkaido.jp\0servehalflife.com\0"
-"nagai.yamagata.jp\0washtenaw.mi.us\0"
-"ac.mu\0bale.museum\0"
-"ac.mw\0lefrak\0"
-"eu.pythonanywhere.com\0"
-"suzuka.mie.jp\0ac.ni\0twmail.org\0"
-"ac.mz\0linde\0togliatti.su\0"
-"friuli-veneziagiulia.it\0square7.de\0"
-"ikata.ehime.jp\0"
-"lindesnes.no\0"
+"priv.no\0"
+"help\0"
+"hn.cn\0"
+"nhk\0"
+"sera.hiroshima.jp\0miyada.nagano.jp\0"
+"opensocial.site\0"
+"contractors\0"
+"shimofusa.chiba.jp\0\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0bookonline.app\0"
+"silk\0"
+"belluno.it\0noda.iwate.jp\0"
+"shiroishi.saga.jp\0"
+"*.vultrobjects.com\0"
+"kv\xc3\xa6nangen.no\0fans\0"
+"fujisato.akita.jp\0swatch\0edgecompute.app\0"
+"naturalhistory.museum\0"
+"moriguchi.osaka.jp\0"
+"priv.me\0sina\0"
+"iveland.no\0emerck\0"
+"us.gov.pl\0"
+"emp.br\0"
+"yukuhashi.fukuoka.jp\0"
+"ciencia.bo\0"
+"yahaba.iwate.jp\0taiwa.miyagi.jp\0"
+"cc.oh.us\0"
+"tsubame.niigata.jp\0"
+"kawanishi.yamagata.jp\0"
+"beeldengeluid.museum\0"
+"askoy.no\0"
+"ap-northeast-3.elasticbeanstalk.com\0"
+"asaka.saitama.jp\0from-ny.net\0"
+"cc.pa.us\0"
+"reggioemilia.it\0hakuba.nagano.jp\0"
+"history.museum\0"
+"oya.to\0"
+"\xe7\x86\x8a\xe6\x9c\xac.jp\0"
+"paderborn.museum\0"
+"psc.br\0"
+"g.bg\0"
+"gitapp.si\0"
+"neues.museum\0here\0"
+"pvt.k12.ma.us\0"
+"bibai.hokkaido.jp\0"
+"farm\0"
+"\xc3\xa1k\xc5\x8boluokta.no\0"
+"massa-carrara.it\0"
+"jelastic.dogado.eu\0"
+"rr.leg.br\0"
+"p.bg\0"
+"toyama.jp\0tendo.yamagata.jp\0"
+"crew.aero\0"
+"takahama.fukui.jp\0mihama.mie.jp\0koto.shiga.jp\0shimonoseki.yamaguchi.jp\0"
+"guru\0"
+"ar.us\0"
+"kui.hiroshima.jp\0nakano.nagano.jp\0"
+"university.museum\0"
+"y.bg\0n\xc3\xb8tter\xc3\xb8y.no\0loginline.io\0"
+"fast\0""32-b.it\0"
+"inf.ua\0"
+"uk.eu.org\0"
+"kasuga.hyogo.jp\0jgora.pl\0user.aseinet.ne.jp\0"
+"agro.bo\0"
+"toyako.hokkaido.jp\0"
+"basel.museum\0linde\0"
+"rs.leg.br\0sc.leg.br\0"
+"gs.tr.no\0now\0zero\0"
+"yoshikawa.saitama.jp\0"
+"wa.gov.au\0from-ri.com\0"
+"readmyblog.org\0"
+"imizu.toyama.jp\0"
+"medicina.bo\0ovre-eiker.no\0"
+"kibichuo.okayama.jp\0"
+"site\0\xd8\xa8\xd8\xa7\xd8\xb2\xd8\xa7\xd8\xb1\0"
+"londrina.br\0\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\0"
+"hughes\0"
+"horokanai.hokkaido.jp\0"
+"mo.cn\0"
"b.ssl.fastly.net\0"
-"hikari.yamaguchi.jp\0opoczno.pl\0"
-"shirosato.ibaraki.jp\0"
-"lib.ct.us\0"
-"fujinomiya.shizuoka.jp\0"
-"itoman.okinawa.jp\0\xd5\xb0\xd5\xa1\xd5\xb5\0"
-"fujikawa.shizuoka.jp\0"
-"biz.ls\0ac.nz\0"
-"filegear-jp.me\0"
-"consultant.aero\0ferrara.it\0ac.pa\0serveblog.net\0"
-"africa.com\0"
-"valle.no\0amfam\0"
-"watchandclock.museum\0is-a-nurse.com\0miniserver.com\0"
-"hamamatsu.shizuoka.jp\0drangedal.no\0"
-"sd.us\0"
-"ham-radio-op.net\0"
-"biz.mv\0"
-"pro.az\0biz.mw\0"
-"biz.my\0biz.ni\0"
-"shinonsen.hyogo.jp\0url.tw\0"
-"tsumagoi.gunma.jp\0ac.pr\0"
-"giessen.museum\0"
-"pro.br\0ravendb.run\0"
-"ritto.shiga.jp\0"
-"pe.it\0"
-"biz.nr\0"
-"camdvr.org\0"
-"ed.jp\0"
-"s3-website.ap-northeast-2.amazonaws.com\0"
-"square7.ch\0"
-"sinaapp.com\0"
-"tohnosho.chiba.jp\0"
-"lib.al.us\0"
-"wpenginepowered.com\0"
-"sap\0"
-"ravenna.it\0marugame.kagawa.jp\0atsugi.kanagawa.jp\0"
-"hl.no\0"
-"software.aero\0sas\0"
-"unnan.shimane.jp\0"
-"miyama.fukuoka.jp\0toride.ibaraki.jp\0mattel\0"
-"pro.cy\0"
-"rugby\0"
-"doomdns.com\0"
-"aso.kumamoto.jp\0sbi\0"
-"xnbay.com\0"
-"navigation.aero\0divttasvuotna.no\0biz.pk\0"
-"biz.pl\0ac.rs\0k12.mn.us\0"
-"ac.se\0energy\0radio\0ac.ru\0is-a-geek.net\0"
-"pe.kr\0"
-"pro.ec\0kisarazu.chiba.jp\0drobak.no\0ac.rw\0"
-"sca\0"
-"heguri.nara.jp\0biz.pr\0scb\0"
-"sbs\0"
-"homebuilt.aero\0miyoshi.hiroshima.jp\0"
-"karasjok.no\0"
-"soka.saitama.jp\0"
-"al.it\0"
-"sumoto.hyogo.jp\0"
-"friulivenezia-giulia.it\0\xd1\x81\xd1\x80\xd0\xb1\0*.0emm.com\0"
-"amagasaki.hyogo.jp\0"
-"rhcloud.com\0"
-"ac.th\0"
-"eco.br\0ac.sz\0ac.tj\0juegos\0"
-"windmill.museum\0"
-"forum.hu\0"
-"tarama.okinawa.jp\0artdeco.museum\0ilawa.pl\0"
-"pro.fj\0"
-"oncilla.mythic-beasts.com\0"
-"accountants\0avianca\0"
-"ikusaka.nagano.jp\0b\xc3\xb8mlo.no\0"
-"author.aero\0"
-"we.tc\0"
-"fyresdal.no\0ac.ug\0"
-"lincoln.museum\0ac.tz\0"
-"ac.uk\0from-va.com\0"
-"kawara.fukuoka.jp\0"
-"webhop.info\0"
-"kr\xc3\xa5""anghke.no\0lib.gu.us\0"
-"utah.museum\0be.ax\0"
-"kvanangen.no\0"
-"soc.dz\0"
-"h\xc3\xa5.no\0s3.cn-north-1.amazonaws.com.cn\0"
-"sciences.museum\0"
-"takazaki.miyazaki.jp\0and\xc3\xb8y.no\0limited\0run\0"
-"mycloud.by\0bloxcms.com\0"
-"misato.wakayama.jp\0"
-"biz.ss\0ses\0"
-"watch-and-clock.museum\0akrehamn.no\0"
-"hdfc\0"
-"ac.vn\0sew\0"
-"sex\0"
-"takamori.kumamoto.jp\0biz.tj\0"
-"def.br\0"
-"legal\0platform0.app\0"
-"itabashi.tokyo.jp\0\xe9\xa3\x9e\xe5\x88\xa9\xe6\xb5\xa6\0"
-"takahagi.ibaraki.jp\0yodobashi\0"
-"pro.ht\0kyotanabe.kyoto.jp\0kautokeino.no\0biz.ua\0"
-"kuroishi.aomori.jp\0biz.tr\0sfr\0"
-"niimi.okayama.jp\0"
-"agriculture.museum\0biz.tt\0"
-"versailles.museum\0rwe\0"
-"!city.nagoya.jp\0"
-"platter-app.dev\0"
-"ed.pw\0"
-"sv.it\0biratori.hokkaido.jp\0"
-"nose.osaka.jp\0"
-"lasalle\0"
-"krakow.pl\0"
-"al.no\0"
-"olawa.pl\0wien.funkfeuer.at\0"
-"lur\xc3\xb8y.no\0"
-"chernovtsy.ua\0"
-"\xd0\xb0\xd0\xba.\xd1\x81\xd1\x80\xd0\xb1\0"
-"bruxelles.museum\0sm.ua\0"
-"biz.vn\0\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0"
-"operaunite.com\0"
-"medecin.fr\0mywire.org\0"
-"nakano.tokyo.jp\0skiptvet.no\0"
-"netlify.app\0"
-"limanowa.pl\0"
-"yandex\0"
-"ac.za\0"
-"her\xc3\xb8y.nordland.no\0"
-"in-the-band.net\0"
-"kyowa.hokkaido.jp\0""611.to\0"
-"ac.zm\0travelers\0"
-"funahashi.toyama.jp\0tysfjord.no\0"
-"oppdal.no\0"
-"minamiminowa.nagano.jp\0"
-"pn.it\0pictures\0"
-"ac.zw\0gitapp.si\0"
-"miura.kanagawa.jp\0"
-"uslivinghistory.museum\0"
-"ski\0""12hp.de\0"
-"zachpomor.pl\0is-a-green.com\0be.gy\0"
-"hamburg\0"
-"blackbaudcdn.net\0"
-"pro.na\0homeunix.org\0"
-"aisho.shiga.jp\0verdal.no\0"
-"pro.mv\0foodnetwork\0"
-"servesarcasm.com\0"
-"sky\0"
-"miharu.fukushima.jp\0\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0\0"
-"soc.lk\0"
-"depot.museum\0biz.zm\0"
-"insurance.aero\0waw.pl\0"
-"tana.no\0"
-"okinawa.jp\0forde.no\0"
-"ginan.gifu.jp\0"
-"tokigawa.saitama.jp\0gitpage.si\0"
-"cheap\0"
-"takinoue.hokkaido.jp\0sydney.museum\0""12hp.at\0"
-"otobe.hokkaido.jp\0kaisei.kanagawa.jp\0versicherung\0"
-"pro.om\0"
-"ass.km\0"
-"vercel.dev\0"
-"georgia.su\0"
-"shopitsite.com\0"
-"sukumo.kochi.jp\0"
-"agdenes.no\0own.pm\0"
-"off.ai\0"
-"london.cloudapps.digital\0"
-"cloudfront.net\0"
-"training\0"
-"wakuya.miyagi.jp\0brandywinevalley.museum\0"
-"orsites.com\0"
-"shaw\0""12hp.ch\0"
-"monzaedellabrianza.it\0melhus.no\0"
-"matsubara.osaka.jp\0"
-"ma.gov.br\0dovre.no\0pro.pr\0"
-"oygarden.no\0"
-"\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x81\xd1\x80\xd0\xb1\0"
-"misawa.aomori.jp\0"
-"maibara.shiga.jp\0health.museum\0"
-"tours\0"
-"s3-ap-northeast-2.amazonaws.com\0"
-"al.us\0to.gt\0"
-"\xec\x82\xbc\xec\x84\xb1\0"
-"\xe5\x80\x8b\xe4\xba\xba.hk\0"
-"pulawy.pl\0"
-"sorum.no\0no-ip.org\0"
-"spa\0"
-"okoppe.hokkaido.jp\0sosnowiec.pl\0holdings\0"
-"higashiomi.shiga.jp\0"
-"club\0"
-"wloclawek.pl\0"
-"kosai.shizuoka.jp\0nasushiobara.tochigi.jp\0soy\0"
-"aland.fi\0altervista.org\0"
-"sor-odal.no\0global.prod.fastly.net\0"
-"s3-website-us-west-2.amazonaws.com\0"
-"clinique\0"
-"udine.it\0turystyka.pl\0"
-"tab\0"
-"mo.cn\0dnsdojo.com\0"
-"*.developer.app\0"
-"to.it\0bydgoszcz.pl\0"
-"aioi.hyogo.jp\0tsunan.niigata.jp\0nsupdate.info\0"
-"tsurugashima.saitama.jp\0"
-"sld.do\0gs.tr.no\0"
-"workers.dev\0"
-"philately.museum\0pomorze.pl\0"
-"brindisi.it\0"
-"natori.miyagi.jp\0"
-"naustdal.no\0fastlylb.net\0"
-"athleta\0tax\0"
-"nis.za\0"
-"miyashiro.saitama.jp\0"
-"kisofukushima.nagano.jp\0"
-"srl\0"
-"kawanishi.hyogo.jp\0rade.no\0"
-"appchizi.com\0"
-"spacekit.io\0"
-"torsken.no\0pro.tt\0"
-"kashima.saga.jp\0"
-"tsuno.kochi.jp\0"
-"cc.mi.us\0"
-"society.museum\0"
-"ogata.akita.jp\0tci\0"
-"royken.no\0academy\0"
-"jampa.br\0work\0"
-"film.museum\0gos.pk\0definima.io\0"
-"milan.it\0"
-"stc\0"
-"xs4all.space\0"
-"spjelkavik.no\0stcgroup\0"
-"to.md\0"
-"mining.museum\0"
-"pro.vn\0tdk\0"
-"nature.museum\0in.na\0"
-"friulivegiulia.it\0miyagi.jp\0"
-"kamioka.akita.jp\0harstad.no\0jotelulu.cloud\0"
-"engineering\0\xe9\x9b\xbb\xe8\xa8\x8a\xe7\x9b\x88\xe7\xa7\x91\0"
-"nantan.kyoto.jp\0bindal.no\0fage\0"
-"*.uberspace.de\0"
-"kristiansand.no\0"
-"okawa.fukuoka.jp\0in.ni\0"
-"transporte.bo\0lib.az.us\0shia\0"
-"sciencecenters.museum\0"
-"kasamatsu.gifu.jp\0abbvie\0wroc.pl\0srht.site\0"
-"k12.de.us\0"
-"tel\0cloudcontrolapp.com\0"
-"*.ex.futurecms.at\0"
-"cloudaccess.net\0"
-"ohi.fukui.jp\0cloud-fr1.unispace.io\0"
-"rag-cloud.hosteur.com\0"
-"!city.kobe.jp\0"
-"coach\0voyage\0"
-"likescandy.com\0"
-"jewishart.museum\0"
-"yashiro.hyogo.jp\0"
-"kerryproperties\0"
-"kahoku.ishikawa.jp\0"
-"\xe0\xb9\x80\xe0\xb8\x99\xe0\xb9\x87\xe0\xb8\x95.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"jewelry\0\xe6\x9b\xb8\xe7\xb1\x8d\0"
-"flog.br\0"
-"conference.aero\0bn.it\0ostroleka.pl\0eu.com\0"
-"stpetersburg.museum\0xerox\0omniwe.site\0za.org\0"
-"fail\0guge\0"
-"co.technology\0tuxfamily.org\0"
-"mo.it\0firewall-gateway.net\0"
-"nord-odal.no\0"
-"gs.mr.no\0"
-"hokuryu.hokkaido.jp\0itami.hyogo.jp\0"
-"minami.fukuoka.jp\0sor-fron.no\0"
-"thd\0"
-"koshimizu.hokkaido.jp\0arida.wakayama.jp\0"
-"voting\0"
-"la-spezia.it\0pordenone.it\0"
-"lv.ua\0"
-"kitakata.fukushima.jp\0"
-"servep2p.com\0"
-"mihama.mie.jp\0"
-"vlog.br\0directory\0"
-"taito.tokyo.jp\0"
-"vibo-valentia.it\0mito.ibaraki.jp\0ashgabad.su\0"
-"education.museum\0"
-"lancaster\0"
-"barlettatraniandria.it\0in.rs\0"
-"musica.ar\0"
-"r\xc3\xb8mskog.no\0"
-"yonezawa.yamagata.jp\0xy.ax\0"
-"yokosuka.kanagawa.jp\0sumida.tokyo.jp\0h\xc3\xb8ylandet.no\0jls-sto2.elastx.net\0"
-"shimabara.nagasaki.jp\0"
-"trentino-alto-adige.it\0tenei.fukushima.jp\0events\0lolipop.io\0"
-"from-or.com\0"
-"hamburg.museum\0"
-"frontier\0"
-"musica.bo\0casino.hu\0"
-"mat.br\0"
-"\xe4\xb8\xaa\xe4\xba\xba.hk\0"
-"yuza.yamagata.jp\0"
-"walter\0"
-"in.th\0"
-"carbonia-iglesias.it\0"
-"trentino-s-tirol.it\0"
-"svizzera.museum\0"
-"birdart.museum\0tjx\0"
-"movie\0"
-"vard\xc3\xb8.no\0"
-"takasago.hyogo.jp\0tatsuno.hyogo.jp\0gorlice.pl\0"
-"in.ua\0myfast.host\0"
-"raholt.no\0"
-"haboro.hokkaido.jp\0from-mn.com\0"
-"botanicgarden.museum\0"
-"sucks\0"
-"shirako.chiba.jp\0"
-"shinshinotsu.hokkaido.jp\0"
-"shop\0"
-"ogaki.gifu.jp\0"
-"takanabe.miyazaki.jp\0cc.ca.us\0"
-"show\0"
-"broker\0"
-"in.us\0fans\0"
-"sld.pa\0"
-"iglesiascarbonia.it\0\xe5\x9c\xa8\xe7\xba\xbf\0"
-"help\0scjohnson\0"
-"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0paris.museum\0barsy.mobi\0"
-"wskr.gov.pl\0"
-"chikushino.fukuoka.jp\0"
-"tosashimizu.kochi.jp\0jewelry.museum\0cologne\0"
-"creation.museum\0"
-"g.bg\0myiphost.com\0"
-"trader.aero\0"
-"delta\0"
-"watarai.mie.jp\0"
-"sm\xc3\xb8la.no\0"
-"aure.no\0"
-"yame.fukuoka.jp\0otari.nagano.jp\0\xd1\x83\xd0\xba\xd1\x80\0"
-"tsukiyono.gunma.jp\0kyoto\0"
-"etc.br\0saigawa.fukuoka.jp\0"
+"cv.ua\0"
+"wolomin.pl\0"
+"nra\0reserve-online.com\0"
+"barsy.club\0"
+"hino.tokyo.jp\0square7.net\0"
+"vlaanderen.museum\0"
+"s\xc3\xa1lat.no\0"
+"latina.it\0"
+"abo.pa\0obi\0"
+"\xe7\xb5\x84\xe7\xbb\x87.hk\0marker.no\0"
+"\xe5\xb2\xa9\xe6\x89\x8b.jp\0ostroda.pl\0"
+"lancia\0"
+"matsusaka.mie.jp\0"
+"agrar.hu\0dnsiskinky.com\0myshopblocks.com\0"
+"sokndal.no\0nrw\0from.marketing\0"
+"myspreadshop.com.au\0"
+"arakawa.saitama.jp\0"
+"nishikata.tochigi.jp\0"
+"s\xc3\xb8rreisa.no\0"
+"zentsuji.kagawa.jp\0"
+"\xd1\x81\xd1\x80\xd0\xb1\0"
+"vall\xc3\xa9""edaoste.it\0yuki.ibaraki.jp\0"
+"essex.museum\0"
+"hikimi.shimane.jp\0"
+"log.br\0"
+"gon.pk\0fedorainfracloud.org\0app.os.fedoraproject.org\0"
+"fujimi.nagano.jp\0"
+"utsira.no\0"
+"ntt\0"
+"\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0author\0"
+"blogsite.xyz\0"
+"\xe4\xba\xac\xe9\x83\xbd.jp\0oketo.hokkaido.jp\0"
+"style\0"
+"tksat.bo\0"
+"kashima.ibaraki.jp\0"
+"etc.br\0"
+"omuta.fukuoka.jp\0"
+"plc.co.im\0"
+"rn.leg.br\0shiftcrypto.dev\0"
+"homesecuritymac.com\0dd-dns.de\0"
+"g\xc3\xa1\xc5\x8bgaviika.no\0"
+"sicilia.it\0"
+"coz.br\0cn-north-1.eb.amazonaws.com.cn\0"
+"sling\0"
+"kawagoe.mie.jp\0"
+"golffan.us\0"
+"osaki.miyagi.jp\0"
+"omihachiman.shiga.jp\0"
+"movie\0xfinity\0s3.us-east-2.amazonaws.com\0"
+"nore-og-uvdal.no\0cc.ut.us\0\xe5\x9c\xa8\xe7\xba\xbf\0"
+"localhistory.museum\0newhampshire.museum\0"
+"grainger\0verisign\0"
+"umb.it\0mo.it\0owani.aomori.jp\0cookingchannel\0"
+"cable-modem.org\0"
+"serveftp.net\0"
+"transport.museum\0"
+"ro.leg.br\0"
+"evenassi.no\0"
+"pug.it\0takamori.kumamoto.jp\0"
+"off.ai\0appspaceusercontent.com\0tuleap-partners.com\0"
+"arakawa.tokyo.jp\0kudamatsu.yamaguchi.jp\0"
+"skype\0"
+"mel\xc3\xb8y.no\0"
+"jorpeland.no\0bamble.no\0r\xc3\xa1isa.no\0nyc\0travelers\0"
+"arita.saga.jp\0hotmail\0"
+"from-al.com\0"
+"tickets.io\0"
+"hanyu.saitama.jp\0"
"\xe5\xa8\xb1\xe4\xb9\x90\0"
-"lib.as.us\0"
-"ozu.ehime.jp\0\xd0\xb1\xd0\xb8\xd0\xb7.\xd1\x80\xd1\x83\xd1\x81\0"
-"nago.okinawa.jp\0"
-"*.sch.uk\0walmart\0\xe4\xbc\x81\xe4\xb8\x9a\0adimo.co.uk\0"
-"works.aero\0"
-"iwanai.hokkaido.jp\0"
-"orangecloud.tn\0"
-"top\0"
-"farmers.museum\0"
-"farm\0international\0"
-"skole.museum\0"
-"filegear.me\0"
-"eigersund.no\0"
-"matsuyama.ehime.jp\0"
-"\xe9\xb9\xbf\xe5\x85\x90\xe5\xb3\xb6.jp\0"
-"kitagata.gifu.jp\0"
-"joso.ibaraki.jp\0"
-"yokawa.hyogo.jp\0uppo.gov.pl\0green\0"
-"ing.pa\0"
-"grimstad.no\0fast\0"
-"beeldengeluid.museum\0"
-"ishigaki.okinawa.jp\0mykolaiv.ua\0"
-"travelchannel\0"
-"\xd1\x81\xd0\xbf\xd0\xb1.\xd1\x80\xd1\x83\xd1\x81\0"
-"shingu.hyogo.jp\0air.museum\0here\0ybo.faith\0"
-"santabarbara.museum\0"
-"fujimi.saitama.jp\0hammarfeasta.no\0"
-"okazaki.aichi.jp\0"
-"inder\xc3\xb8y.no\0"
-"d.gv.vc\0"
-"brussels\0charity\0\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x80\xd1\x83\xd1\x81\0"
-"doctor\0ubs\0"
-"masuda.shimane.jp\0"
-"trv\0\xe5\x98\x89\xe9\x87\x8c\xe5\xa4\xa7\xe9\x85\x92\xe5\xba\x97\0"
-"sondrio.it\0guru\0"
-"mo.us\0doesntexist.com\0"
-"mydissent.net\0"
-"naturalsciences.museum\0"
-"vang.no\0"
-"kosaka.akita.jp\0stateofdelaware.museum\0"
-"bjerkreim.no\0"
-"utazu.kagawa.jp\0paderborn.museum\0ilovecollege.info\0"
-"journalist.aero\0tlon.network\0"
-"ikoma.nara.jp\0"
-"oita.jp\0"
-"es.leg.br\0myforum.community\0"
-"polkowice.pl\0"
-"pasadena.museum\0"
-"va.it\0"
-"us-west-1.elasticbeanstalk.com\0"
-"mx.na\0volvo\0"
-"qsl.br\0"
-"tui\0"
-"frogans\0jp.kg\0"
-"izumo.shimane.jp\0"
-"itako.ibaraki.jp\0"
-"sampa.br\0miyoshi.saitama.jp\0"
-"h\xc3\xa1pmir.no\0"
-"*.svc.firenet.ch\0"
-"freebox-os.com\0"
-"wa.edu.au\0"
-"edunet.tn\0"
-"is-a-lawyer.com\0"
-"budapest\0"
-"*.yokohama.jp\0tanohata.iwate.jp\0tx.us\0tvs\0"
-"\xe6\x94\xbf\xe5\xba\x9c.hk\0"
-"perugia.it\0"
-"p.bg\0murayama.yamagata.jp\0jp.md\0"
-"*.advisor.ws\0"
-"dynv6.net\0"
-"verran.no\0"
-"yokote.akita.jp\0freiburg.museum\0"
-"kyonan.chiba.jp\0"
-"ri.it\0"
-"yorii.saitama.jp\0"
-"vallee-d-aoste.it\0"
-"gs.rl.no\0"
-"balat.no\0prochowice.pl\0forsale\0"
-"\xe7\xb6\xb2\xe7\xb5\xa1.\xe9\xa6\x99\xe6\xb8\xaf\0diskstation.org\0"
-"\xe5\xbe\xb3\xe5\xb3\xb6.jp\0*.landing.myjino.ru\0"
-"seiyo.ehime.jp\0austin.museum\0"
-"oristano.it\0"
-"bio.br\0leangaviika.no\0"
-"silk\0"
-"tr.eu.org\0"
-"ebina.kanagawa.jp\0obuse.nagano.jp\0"
-"sa-east-1.elasticbeanstalk.com\0"
-"television.museum\0"
-"karasuyama.tochigi.jp\0"
-"va.no\0"
-"fukagawa.hokkaido.jp\0"
-"shakotan.hokkaido.jp\0ae.org\0"
-"baghdad.museum\0*.sys.qcx.io\0"
-"bozen-s\xc3\xbc""dtirol.it\0"
-"mitoyo.kagawa.jp\0sina\0"
-"asnes.no\0homelinux.com\0"
-"8.bg\0"
-"cc.ut.us\0"
+"erni\0hlx3.page\0"
+"mat.br\0curv.dev\0"
+"gu.us\0bradesco\0"
+"iijima.nagano.jp\0"
+"\xe8\x8c\xa8\xe5\x9f\x8e.jp\0"
+"kasahara.gifu.jp\0kanzaki.saga.jp\0sopot.pl\0"
+"omasvuotna.no\0associates\0"
+"bergamo.it\0"
+"vps.mcdir.ru\0"
+"rennesoy.no\0"
+"shonai.fukuoka.jp\0sharp\0"
+"from-dc.com\0grozny.su\0"
+"chtr.k12.ma.us\0"
+"cologne\0dyn-berlin.de\0"
+"eun.eg\0mosjoen.no\0"
+"edu.eu.org\0"
+"minamiechizen.fukui.jp\0kanna.gunma.jp\0"
+"pages.dev\0"
+"tingvoll.no\0"
+"pc.it\0gsm.pl\0"
+"paris\0"
+"egyptian.museum\0shopitsite.com\0"
+"ohira.miyagi.jp\0"
+"schokoladen.museum\0"
+"mx.na\0from-ar.com\0"
+"shiraoi.hokkaido.jp\0kyotango.kyoto.jp\0urawa.saitama.jp\0legal\0"
+"\xd9\x85\xd9\x88\xd9\x82\xd8\xb9\0"
+"maniwa.okayama.jp\0"
+"eastcoast.museum\0"
+"brumunddal.no\0repl.co\0"
+"archaeology.museum\0ownprovider.com\0"
+"\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0"
+"xbox\0"
+"depot.museum\0"
+"loan\0sener\0"
+"matta-varjjat.no\0ilovecollege.info\0"
+"pu.it\0ogata.akita.jp\0hanamigawa.chiba.jp\0"
+"discovery.museum\0grozny.ru\0"
+"soc.dz\0\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x90\xe0\xb8\x9a\xe0\xb8\xb2\xe0\xb8\xa5.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"loabat.no\0"
+"\xe5\xb2\xa1\xe5\xb1\xb1.jp\0"
+"television.museum\0g.se\0one\0dnsdojo.com\0"
+"\xe0\xb8\xad\xe0\xb8\x87\xe0\xb8\x84\xe0\xb9\x8c\xe0\xb8\x81\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0chirurgiens-dentistes-en-france.fr\0"
+"ong\0"
+"higashikurume.tokyo.jp\0kwpsp.gov.pl\0"
+"app.br\0"
+"naamesjevuemie.no\0"
+"onl\0"
+"in-vpn.de\0"
+"schwarz\0"
+"hotels\0upli.io\0"
+"ikeda.osaka.jp\0bydgoszcz.pl\0"
+"storj.farm\0"
+"volda.no\0"
+"nagano.nagano.jp\0yamatotakada.nara.jp\0"
+"p.se\0lebtimnetz.de\0nyaa.am\0"
+"mutual.ar\0"
+"ekloges.cy\0"
+"akdn\0jpmorgan\0"
+"tr\xc3\xa6na.no\0taobao\0"
+"ooo\0yachts\0"
+"rg.it\0yoichi.hokkaido.jp\0iiyama.nagano.jp\0"
+"tires\0definima.io\0"
+"tokoname.aichi.jp\0higashitsuno.kochi.jp\0shinjo.yamagata.jp\0"
+"research.museum\0y.se\0"
+"andoy.no\0pymnt.uk\0"
+"bostik\0recipes\0"
+"det.br\0"
+"lavagis.no\0"
+"matsuda.kanagawa.jp\0"
+"catholic.edu.au\0google\0"
+"lib.ar.us\0"
+"trentin-sued-tirol.it\0vall\xc3\xa9""e-d-aoste.it\0ny-1.paas.massivegrid.net\0"
+"baltimore.museum\0"
+"custom.metacentrum.cz\0"
+"bolivia.bo\0co.events\0"
+"tachikawa.tokyo.jp\0"
+"kagoshima.jp\0"
+"lv.ua\0realestate\0"
"civilaviation.aero\0"
-"ha.cn\0hurum.no\0"
-"mg.gov.br\0"
-"flap.id\0"
-"*.compute-1.amazonaws.com\0"
-"guernsey.museum\0"
-"gs.nt.no\0"
-"is-a-player.com\0"
-"yamashina.kyoto.jp\0no-ip.net\0"
-"jur.pro\0"
-"asahikawa.hokkaido.jp\0bristol.museum\0"
-"ericsson\0"
-"erni\0is-a-bruinsfan.org\0barsyonline.com\0"
-"campobasso.it\0museumcenter.museum\0"
-"grong.no\0durban\0"
-"likes-pie.com\0"
-"myjino.ru\0"
-"nesna.no\0"
-"ggf.br\0"
-"\xe7\xbd\x91\xe5\xba\x97\0"
-"lib.tn.us\0"
-"station.museum\0"
-"minamiyamashiro.kyoto.jp\0*.platformsh.site\0"
-"kumamoto.kumamoto.jp\0orkdal.no\0nh.us\0"
-"k12.wy.us\0"
-"batsfjord.no\0"
-"pleskns.com\0"
-"gorge.museum\0"
-"akdn\0"
-"wolterskluwer\0"
-"torahime.shiga.jp\0"
-"fukusaki.hyogo.jp\0"
-"\xe5\xa4\xa9\xe4\xb8\xbb\xe6\x95\x99\0"
-"kanna.gunma.jp\0career\0"
-"moscow\0"
-"shimotsuma.ibaraki.jp\0is-a-candidate.org\0"
-"lipsy\0"
-"youtube\0"
-"g.se\0"
-"sphinx.mythic-beasts.com\0"
-"neues.museum\0"
-"chizu.tottori.jp\0jelastic.regruhosting.ru\0"
-"\xe5\x98\x89\xe9\x87\x8c\0"
-"kawazu.shizuoka.jp\0"
-"uno\0"
-"chieti.it\0media\0"
-"katsuragi.nara.jp\0"
-"*.kobe.jp\0tsuruta.aomori.jp\0"
-"meguro.tokyo.jp\0"
-"calabria.it\0"
-"minnesota.museum\0googleapis.com\0"
-"hiroshima.jp\0"
-"tarnobrzeg.pl\0uol\0"
-"honjo.akita.jp\0"
-"shinjo.yamagata.jp\0"
-"cc.dc.us\0"
-"alabama.museum\0"
-"maison\0jelastic.saveincloud.net\0"
-"takayama.gifu.jp\0brand.se\0productions\0"
-"oji.nara.jp\0"
-"abruzzo.it\0"
-"meloy.no\0"
-"site\0\xe9\xa6\x99\xe6\xa0\xbc\xe9\x87\x8c\xe6\x8b\x89\0"
-"homes\0dnsiskinky.com\0"
-"ambulance.museum\0"
-"konan.aichi.jp\0tara.saga.jp\0"
-"ibaraki.jp\0va.us\0"
-"annaka.gunma.jp\0misato.miyagi.jp\0kommunalforbund.se\0"
-"y.bg\0ups\0"
-"sandiego.museum\0amica\0extraspace\0"
-"toyohashi.aichi.jp\0"
-"americanart.museum\0"
-"barsycenter.com\0"
-"republican\0fr-1.paas.massivegrid.net\0"
-"\xd0\xba\xd0\xbe\xd0\xbc.\xd1\x80\xd1\x83\xd1\x81\0"
-"dyndns.biz\0"
-"gratangen.no\0"
-"kalisz.pl\0lib.ca.us\0"
-"fedex\0"
-"higashiyoshino.nara.jp\0"
-"archaeology.museum\0"
-"lib.mn.us\0"
-"ino.kochi.jp\0"
-"meiwa.mie.jp\0from-ia.com\0"
-"marnardal.no\0"
-"coz.br\0"
-"foundation.museum\0"
-"kids.us\0"
-"ri.us\0"
-"plesk.page\0"
-"kimobetsu.hokkaido.jp\0"
-"zentsuji.kagawa.jp\0"
-"sk.ca\0klodzko.pl\0"
-"catering\0"
-"gz.cn\0"
-"rogers\0"
-"higashishirakawa.gifu.jp\0"
-"ogawa.saitama.jp\0"
-"in-addr.arpa\0taobao\0"
-"levanger.no\0rnrt.tn\0"
-"tamba.hyogo.jp\0romsa.no\0"
-"lombardy.it\0study\0"
-"kadena.okinawa.jp\0"
-"kasahara.gifu.jp\0*.lclstage.dev\0"
-"sveio.no\0"
+"si.it\0"
+"u2-local.xnbay.com\0"
+"artanddesign.museum\0forsale\0vladimir.su\0"
+"indigena.bo\0org\0"
+"higashinaruse.akita.jp\0pc.pl\0"
+"mesaverde.museum\0newspaper.museum\0pay\0mydatto.com\0"
+"art.br\0"
+"khmelnytskyi.ua\0scrysec.com\0"
+"vennesla.no\0viking\0"
+"sr.it\0"
+"atlanta.museum\0"
+"hashikami.aomori.jp\0loft\0"
"asso.fr\0"
-"ha.no\0"
-"oe.yamagata.jp\0"
-"tochigi.tochigi.jp\0freemyip.com\0"
-"vet\0"
-"stavanger.no\0"
-"k12.ma.us\0zero\0"
-"asso.gp\0honjyo.akita.jp\0oiso.kanagawa.jp\0"
-"mitsubishi\0"
-"loan\0"
-"kani.gifu.jp\0"
-"dyn.home-webserver.de\0"
-"gifts\0us.reclaim.cloud\0"
-"siena.it\0"
-"abudhabi\0cust.retrosnub.co.uk\0"
-"kasugai.aichi.jp\0"
-"val-d-aosta.it\0"
-"kaizuka.osaka.jp\0"
-"garden\0"
-"asso.ht\0kr.it\0omaezaki.shizuoka.jp\0"
-"kariya.aichi.jp\0"
-"a\xc3\xa9roport.ci\0"
-"uk.net\0"
-"modelling.aero\0hyuga.miyazaki.jp\0"
-"fukushima.hokkaido.jp\0p.se\0"
-"isa.us\0"
-"vs.it\0tienda\0"
-"teaches-yoga.com\0"
-"prd.fr\0"
-"kalmykia.su\0"
-"lomza.pl\0"
-"asso.bj\0dnipropetrovsk.ua\0"
-"tokamachi.niigata.jp\0vig\0"
-"sosa.chiba.jp\0from-il.com\0static.land\0"
-"tagawa.fukuoka.jp\0uz.ua\0dyn-berlin.de\0"
-"hyogo.jp\0"
-"ntr.br\0"
-"s\xc3\xbc""dtirol.it\0"
-"vin\0"
-"shell.museum\0"
-"vip\0"
-"engerdal.no\0"
-"asso.ci\0"
-"quicksytes.com\0"
-"ichinoseki.iwate.jp\0"
-"pisa.it\0oki.fukuoka.jp\0jorpeland.no\0"
-"vall\xc3\xa9""eaoste.it\0"
-"sg-1.paas.massivegrid.net\0wixsite.com\0"
-"design.aero\0discover\0"
-"hakuba.nagano.jp\0cool\0"
-"shikama.miyagi.jp\0meldal.no\0sko.gov.pl\0uk.eu.org\0grozny.su\0"
-"pila.pl\0"
-"commbank\0"
+"app.gp\0"
+"tychy.pl\0"
+"store.nf\0"
+"mo.us\0"
+"mydobiss.com\0"
+"natural.bo\0"
+"asso.gp\0kumakogen.ehime.jp\0koryo.nara.jp\0"
+"se.leg.br\0"
+"art.do\0"
+"tt.im\0"
+"xj.cn\0crown\0"
+"translate.goog\0"
+"nh.us\0"
+"ud.it\0memset.net\0"
+"syno-ds.de\0"
+"art.dz\0\xe4\xbc\x81\xe4\xb8\x9a\0"
+"soc.lk\0agdenes.no\0"
+"yonaguni.okinawa.jp\0ott\0"
+"vladimir.ru\0"
+"asso.ht\0uji.kyoto.jp\0"
+"ato.br\0"
+"himeji.hyogo.jp\0agro.pl\0"
+"discover\0"
+"no-ip.info\0"
+"mashike.hokkaido.jp\0wielun.pl\0"
+"community\0bplaced.de\0"
+"from.hr\0"
+"twmail.cc\0"
+"watari.miyagi.jp\0konin.pl\0pet\0"
+"is-a-libertarian.com\0"
+"ovh\0"
+"skin\0"
+"abbott\0"
+"asso.bj\0boston\0"
+"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0"
+"suedtirol.it\0"
+"badajoz.museum\0glas.museum\0"
+"profesional.bo\0lib.fl.us\0parts\0"
+"wallonie.museum\0property\0"
+"media.aero\0production.aero\0vindafjord.no\0"
+"laquila.it\0"
+"\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0party\0"
+"teo.br\0"
+"homeoffice.gov.uk\0"
+"yamagata.jp\0tako.chiba.jp\0"
+"asso.ci\0pl.ua\0"
+"salangen.no\0"
+"kamitsue.oita.jp\0"
+"timekeeping.museum\0"
+"engine.aero\0"
+"phd\0"
+"philadelphia.museum\0s3.dualstack.us-east-1.amazonaws.com\0"
+"championship.aero\0cahcesuolo.no\0photos\0"
+"art.ht\0minamiuonuma.niigata.jp\0gehirn.ne.jp\0"
+"kristiansund.no\0gotdns.org\0"
+"anan.tokushima.jp\0democrat\0"
+"pages.it.hs-heilbronn.de\0"
+"pid\0"
+"marburg.museum\0"
+"inazawa.aichi.jp\0oshino.yamanashi.jp\0\xe5\x98\x89\xe9\x87\x8c\0"
+"schools.nsw.edu.au\0cloudcontrolled.com\0"
+"poker\0"
+"afjord.no\0verdal.no\0"
+"fukui.jp\0okuma.fukushima.jp\0tirol\0"
+"s3-us-west-1.amazonaws.com\0murmansk.su\0stackhero-network.com\0"
+"asso.dz\0pin\0nyc.mn\0"
+"cya.gg\0"
+"mediocampidano.it\0fukuyama.hiroshima.jp\0"
+"elementor.cool\0"
+"brand.se\0"
+"koori.fukushima.jp\0ninomiya.kanagawa.jp\0ic.gov.pl\0cool\0"
"coop\0"
-"encyclopedic.museum\0gs.hm.no\0"
+"newmexico.museum\0meteorapp.com\0"
+"miniserver.com\0bounty-full.com\0novecore.site\0"
+"ringerike.no\0"
+"\xe9\x9d\x92\xe6\xa3\xae.jp\0"
+"vf.no\0"
+"comunica\xc3\xa7\xc3\xb5""es.museum\0store.ve\0"
+"gamvik.no\0kvafjord.no\0"
+"savona.it\0"
+"scotland.museum\0est-le-patron.com\0"
+"ba.leg.br\0"
+"sigdal.no\0works\0"
+"misaki.osaka.jp\0world\0"
+"newjersey.museum\0"
+"voagat.no\0panasonic\0"
+"tohnosho.chiba.jp\0saito.miyazaki.jp\0"
+"school.za\0s3-eu-west-3.amazonaws.com\0betainabox.com\0"
+"shirako.chiba.jp\0"
+"wanggou\0s3.dualstack.ap-southeast-1.amazonaws.com\0"
+"supplies\0"
+"crimea.ua\0"
+"url.tw\0"
+"matsumae.hokkaido.jp\0"
"app.lmpm.com\0"
-"nakamura.kochi.jp\0ostrowiec.pl\0ownip.net\0"
-"osakikamijima.hiroshima.jp\0samnanger.no\0tele.amune.org\0"
-"iide.yamagata.jp\0"
-"barclaycard\0"
-"vestnes.no\0kalmykia.ru\0"
-"trani-andria-barletta.it\0muko.kyoto.jp\0"
-"cargo.aero\0aa.no\0"
-"nichinan.miyazaki.jp\0"
-"loft\0*.paywhirl.com\0"
-"asso.dz\0"
-"stage.nodeart.io\0"
-"stjohn.museum\0"
-"southcarolina.museum\0komforb.se\0dyndns-web.com\0"
-"sb.ua\0"
-"\xe5\xba\x83\xe5\xb3\xb6.jp\0"
+"rec.br\0"
+"trentino-sud-tirol.it\0pescara.it\0"
+"ltd.co.im\0"
+"onojo.fukuoka.jp\0futaba.fukushima.jp\0"
+"onga.fukuoka.jp\0"
+"contemporaryart.museum\0\xe6\x94\xbf\xe5\x8a\xa1\0"
+"rec.co\0pnc\0is-saved.org\0"
+"wajima.ishikawa.jp\0"
+"otsuki.kochi.jp\0nakaniikawa.toyama.jp\0uni5.net\0"
+"cadaques.museum\0surgery\0eu.com\0"
+"samegawa.fukushima.jp\0tochio.niigata.jp\0\xd1\x83\xd0\xba\xd1\x80\0"
+"higashikawa.hokkaido.jp\0nozawaonsen.nagano.jp\0"
+"onfabrica.com\0"
+"iris.arpa\0"
+"fla.no\0"
+"glass.museum\0"
+"ravendb.run\0"
+"aaa.pro\0"
+"chiyoda.tokyo.jp\0art.pl\0"
+"store.ro\0"
+"misato.wakayama.jp\0"
+"\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0kyoto\0"
+"tempio-olbia.it\0"
+"clinton.museum\0"
+"hgtv\0"
+"exchange.aero\0"
+"phone\0merseine.nu\0"
+"berg.no\0"
+"balsan-sudtirol.it\0\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0"
+"mypi.co\0"
+"store.st\0"
+"gunma.jp\0toho.fukuoka.jp\0yuzawa.niigata.jp\0"
+"love\0"
+"\xc3\xa1lt\xc3\xa1.no\0"
+"*.webhare.dev\0"
+"seranishi.hiroshima.jp\0koka.shiga.jp\0lublin.pl\0"
+"us.com\0"
+"torsken.no\0pro\0selfip.info\0"
+"taira.toyama.jp\0"
+"s3.eu-west-2.amazonaws.com\0s3-website.eu-central-1.amazonaws.com\0\xd1\x81\xd0\xbe\xd1\x87\xd0\xb8.\xd1\x80\xd1\x83\xd1\x81\0"
+"rocks\0"
+"jogasz.hu\0usgarden.museum\0pru\0s3-website.eu-west-2.amazonaws.com\0"
+"art.sn\0"
+"kirkenes.no\0"
+"komvux.se\0infiniti\0"
+"s\xc3\xb8r-odal.no\0"
+"gosen.niigata.jp\0"
+"bentley\0"
+"kvanangen.no\0"
+"kumejima.okinawa.jp\0"
+"am.leg.br\0"
+"lib.mi.us\0"
+"rel.ht\0"
+"interactive.museum\0home-webserver.de\0temp-dns.com\0"
+"avellino.it\0shakotan.hokkaido.jp\0\xeb\x8b\xb7\xec\xbb\xb4\0*.firenet.ch\0"
+"kamiamakusa.kumamoto.jp\0konan.shiga.jp\0"
+"hlx.page\0"
+"es.gov.br\0pub\0"
+"\xe8\xb0\xb7\xe6\xad\x8c\0"
"airtel\0"
-"ferrero\0"
-"backplaneapp.io\0"
-"for.sale\0"
-"pescara.it\0"
-"vxl.sh\0"
-"iizuka.fukuoka.jp\0kamaishi.iwate.jp\0prd.km\0"
-"balsan.it\0fujieda.shizuoka.jp\0"
-"yurihonjo.akita.jp\0"
-"keisen.fukuoka.jp\0"
-"hashikami.aomori.jp\0"
-"grozny.ru\0"
-"\xe6\x94\xbf\xe5\x8a\xa1\0"
-"accident-prevention.aero\0"
-"eun.eg\0"
-"honda\0"
-"pc.it\0"
-"prd.mg\0"
-"half.host\0"
-"pharmacy\0"
-"wmflabs.org\0"
-"takko.aomori.jp\0zhitomir.ua\0"
-"prof.pr\0"
-"maniwa.okayama.jp\0"
-"geology.museum\0"
-"k12.mt.us\0"
-"omi.nagano.jp\0"
-"forli-cesena.it\0"
-"friuli-v-giulia.it\0a.run.app\0"
-"lecce.it\0"
-"appudo.net\0"
-"grp.lk\0"
-"ohtawara.tochigi.jp\0ethnology.museum\0homelinux.net\0"
-"ikeda.nagano.jp\0"
-"rahkkeravju.no\0paris\0"
-"vagsoy.no\0"
-"\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0for-more.biz\0"
-"hu.net\0onfabrica.com\0"
-"suzuki\0xbox\0"
-"tondabayashi.osaka.jp\0"
-"dr.na\0"
-"kasuya.fukuoka.jp\0"
-"qualifioapp.com\0"
-"finearts.museum\0y.se\0"
-"broker.aero\0bern.museum\0"
-"media.aero\0"
-"mino.gifu.jp\0is-an-entertainer.com\0"
-"fh-muenster.io\0"
-"b\xc3\xb8.nordland.no\0"
-"olkusz.pl\0"
-"hattfjelldal.no\0kr.ua\0yahoo\0"
-"s3-eu-central-1.amazonaws.com\0"
-"solutions\0"
-"takaishi.osaka.jp\0space-to-rent.com\0"
-"sandnessj\xc3\xb8""en.no\0fam.pk\0"
-"finnoy.no\0"
-"svalbard.no\0"
-"ichikai.tochigi.jp\0"
+"oldnavy\0giize.com\0"
+"fauske.no\0k12.ca.us\0lugs.org.uk\0"
+"mitane.akita.jp\0"
+"\xe9\xa3\x9f\xe5\x93\x81\0"
+"maison\0"
+"skydiving.aero\0"
+"iwafune.tochigi.jp\0"
+"fineart.museum\0media\0est-mon-blogueur.com\0"
+"nsw.edu.au\0"
+"asso.re\0tbits.me\0"
+"k12.ct.us\0"
+"berlin.museum\0"
+"katsuragi.nara.jp\0"
+"exeter.museum\0"
+"pwc\0"
+"botany.museum\0is-a-doctor.com\0"
+"higashi.fukushima.jp\0setagaya.tokyo.jp\0build\0"
+"photo\0"
+"tanohata.iwate.jp\0"
+"from-mo.com\0"
+"notodden.no\0"
+"kashiwara.osaka.jp\0"
+"is-an-accountant.com\0"
+"barsyonline.co.uk\0"
+"ally\0s3.dualstack.eu-west-2.amazonaws.com\0synology-ds.de\0"
+"forli-cesena.it\0map.fastly.net\0"
+"building.museum\0"
+"rec.nf\0"
+"even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0harstad.no\0"
+"milan.it\0saga.jp\0kawai.nara.jp\0de.trendhosting.cloud\0"
+"charter.aero\0"
+"mol.it\0"
+"steinkjer.no\0"
+"atl.jelastic.vps-host.net\0"
+"kep.tr\0"
+"kitanakagusuku.okinawa.jp\0"
+"square.museum\0"
+"deatnu.no\0"
+"ap.leg.br\0"
+"tomakomai.hokkaido.jp\0kizu.kyoto.jp\0hamamatsu.shizuoka.jp\0"
+"usculture.museum\0"
+"asso.nc\0"
+"from-co.net\0"
+"ryukyu\0"
+"modena.it\0ikoma.nara.jp\0"
+"funabashi.chiba.jp\0nishiarita.saga.jp\0"
+"yamazoe.nara.jp\0"
+"imb.br\0"
+"yokawa.hyogo.jp\0"
+"mihama.wakayama.jp\0"
+"s3-website-ap-southeast-2.amazonaws.com\0"
+"higashichichibu.saitama.jp\0rel.pl\0babia-gora.pl\0"
+"filegear-au.me\0"
+"naples.it\0asahi.chiba.jp\0"
+"guernsey.museum\0and.mom\0"
+"schaeffler\0"
+"vega.no\0serveftp.org\0"
+"catanzaro.it\0"
+"vercelli.it\0kamikawa.hokkaido.jp\0"
+"vic.edu.au\0drayddns.com\0gotpantheon.com\0"
+"rodeo\0"
+"tado.mie.jp\0"
+"rec.ro\0"
+"vibovalentia.it\0sodegaura.chiba.jp\0itakura.gunma.jp\0"
+"exhibition.museum\0shangrila\0"
+"ind.br\0"
+"stargard.pl\0"
+"clock.museum\0ryd.wafaicloud.com\0"
+"terni.it\0kiryu.gunma.jp\0inami.toyama.jp\0website.yandexcloud.net\0"
+"cymru.museum\0"
+"gaular.no\0"
+"noda.chiba.jp\0ikusaka.nagano.jp\0"
+"\xd0\xbc\xd1\x81\xd0\xba.\xd1\x80\xd1\x83\xd1\x81\0"
+"flickr\0"
+"kaisei.kanagawa.jp\0ric.jelastic.vps-host.net\0"
+"k12.il.us\0"
+"koshimizu.hokkaido.jp\0mydissent.net\0"
+"eu-central-1.elasticbeanstalk.com\0dyndns-at-work.com\0ditchyourip.com\0"
+"huissier-justice.fr\0"
+"flowers\0"
+"miyama.mie.jp\0bip.sh\0"
+"per.la\0is-a-bulls-fan.com\0"
+"virgin\0"
"lib.sd.us\0"
-"bc.ca\0"
-"futurehosting.at\0"
-"abashiri.hokkaido.jp\0lardal.no\0"
-"erimo.hokkaido.jp\0nishiwaki.hyogo.jp\0"
-"uji.kyoto.jp\0"
-"reg.dk\0"
-"kai.yamanashi.jp\0"
-"bungoono.oita.jp\0"
-"enonic.io\0"
-"\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0"
-"md.ci\0"
-"giize.com\0"
-"pc.pl\0\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\0"
-"higashiizu.shizuoka.jp\0hitachi\0*.in.futurecms.at\0"
-"s\xc3\xb8r-odal.no\0"
-"hgtv\0"
-"cloud\0"
-"pippu.hokkaido.jp\0ikano\0toshiba\0"
-"gjemnes.no\0"
-"frei.no\0*.firenet.ch\0"
-"cinema.museum\0is-a-cpa.com\0"
-"act.edu.au\0tobe.ehime.jp\0"
-"lib.co.us\0"
-"skin\0"
-"starnberg.museum\0ally\0"
-"obninsk.su\0"
-"swiss\0"
-"friuli-vegiulia.it\0hs.kr\0"
-"flakstad.no\0"
-"nara.nara.jp\0"
-"mihama.fukui.jp\0"
-"\xe5\x95\x86\xe5\x9f\x8e\0"
-"fukuchi.fukuoka.jp\0"
-"virtualuser.de\0"
-"krokstadelva.no\0"
-"westus2.azurestaticapps.net\0"
-"gonohe.aomori.jp\0"
-"cricket\0"
-"cloudns.club\0temp-dns.com\0"
-"*.statics.cloud\0"
-"hitachiota.ibaraki.jp\0kinko.kagoshima.jp\0"
-"lig.it\0amsterdam.museum\0"
-"from.work\0"
-"koriyama.fukushima.jp\0kawachinagano.osaka.jp\0hasuda.saitama.jp\0is.gov.pl\0"
-"embroidery.museum\0"
-"andria-barletta-trani.it\0"
-"bill.museum\0guovdageaidnu.no\0dr.tr\0codes\0"
-"hokksund.no\0asso.re\0"
-"koka.shiga.jp\0"
-"fhv.se\0"
-"tm.cy\0"
-"tas.edu.au\0"
-"portland.museum\0point2this.com\0"
-"tolga.no\0win\0beep.pl\0"
+"hirokawa.fukuoka.jp\0"
+"traniandriabarletta.it\0\xe5\xae\xae\xe5\xb4\x8e.jp\0"
+"store.bb\0"
+"union.aero\0"
+"kijo.miyazaki.jp\0"
+"riik.ee\0asso.km\0us-west-2.elasticbeanstalk.com\0"
+"verm\xc3\xb6gensberater\0"
+"tlon.network\0"
"ohira.tochigi.jp\0"
-"st.no\0zt.ua\0"
-"antiques.museum\0k12.ok.us\0myshopblocks.com\0"
-"hamaroy.no\0"
-"tm.dz\0"
-"pesaro-urbino.it\0gushikami.okinawa.jp\0salat.no\0creditunion\0"
-"s3.amazonaws.com\0"
-"minamiboso.chiba.jp\0"
-"isshiki.aichi.jp\0"
-"kakamigahara.gifu.jp\0birthplace.museum\0"
-"avellino.it\0virginia.museum\0"
-"nyc.mn\0"
-"stufftoread.com\0"
-"love\0"
-"lt.it\0"
-"tm.fr\0"
-"lerdal.no\0parts\0*.elb.amazonaws.com\0"
-"bnr.la\0"
-"dynathome.net\0"
-"bergamo.it\0tomisato.chiba.jp\0"
-"party\0"
-"rep.br\0"
-"shimonita.gunma.jp\0"
-"saga.saga.jp\0"
-"lib.il.us\0"
-"asso.nc\0video\0"
-"is-an-actress.com\0"
-"narusawa.yamanashi.jp\0"
-"wme\0"
-"moriyoshi.akita.jp\0"
-"kaminoyama.yamagata.jp\0"
-"oseto.nagasaki.jp\0"
-"belluno.it\0kurotaki.nara.jp\0averoy.no\0www.ro\0"
-"franziskaner.museum\0"
-"kanmaki.nara.jp\0"
-"tm.hu\0jetzt\0"
-"shiwa.iwate.jp\0motobu.okinawa.jp\0atami.shizuoka.jp\0"
-"tosu.saga.jp\0"
-"katori.chiba.jp\0"
-"fortal.br\0"
-"shimokawa.hokkaido.jp\0"
-"lyngdal.no\0"
-"trd.br\0flatanger.no\0"
-"miyama.mie.jp\0"
-"ryugasaki.ibaraki.jp\0skien.no\0"
-"numata.gunma.jp\0amsw.nl\0"
-"zushi.kanagawa.jp\0"
-"friulivgiulia.it\0amex\0"
-"taishi.osaka.jp\0floro.no\0\xc3\xa1laheadju.no\0onred.one\0"
-"kitahata.saga.jp\0ski.no\0gr.com\0"
-"ddnsgeek.com\0"
-"settlers.museum\0\xe5\x81\xa5\xe5\xba\xb7\0"
-"s3.ap-south-1.amazonaws.com\0"
-"entertainment.aero\0handson.museum\0"
-"hiroo.hokkaido.jp\0"
-"wow\0"
-"stj\xc3\xb8rdalshalsen.no\0ddnsking.com\0"
-"ostrowwlkp.pl\0"
-"tm.km\0"
-"tv.bb\0atsuma.hokkaido.jp\0lund.no\0under.one\0"
-"kurume.fukuoka.jp\0"
-"bilbao.museum\0balena-devices.com\0"
-"halsa.no\0platter-app.com\0"
-"democracia.bo\0"
-"isesaki.gunma.jp\0"
-"res.aero\0"
-"omihachiman.shiga.jp\0"
-"troms\xc3\xb8.no\0"
-"mamurogawa.yamagata.jp\0north.museum\0salvadordali.museum\0alaheadju.no\0"
-"tv.bo\0"
-"moriya.ibaraki.jp\0"
-"tv.br\0saotome.st\0"
+"dubai\0lipsy\0"
+"narashino.chiba.jp\0"
+"rec.ve\0"
+"heguri.nara.jp\0"
+"salzburg.museum\0cymru\0"
+"*.stolos.io\0"
+"\xd8\xa7\xd8\xa8\xd9\x88\xd8\xb8\xd8\xa8\xd9\x8a\0"
+"h\xc3\xb8ylandet.no\0"
+"bandai.fukushima.jp\0amex\0"
+"furniture.museum\0"
+"per.nf\0"
+"asso.mc\0cc.il.us\0"
+"perugia.it\0"
+"udi.br\0"
+"selbu.no\0"
+"ag.it\0*.sendai.jp\0"
+"county.museum\0dyn-ip24.de\0pagexl.com\0"
+"torino.it\0tamano.okayama.jp\0przeworsk.pl\0weatherchannel\0"
+"children.museum\0wbq.me\0"
+"skierva.no\0store.dk\0"
+"kamakura.kanagawa.jp\0kiyama.saga.jp\0gliwice.pl\0"
+"figueres.museum\0"
+"ind.gt\0higashiyama.kyoto.jp\0"
+"stavanger.no\0official.ec\0"
+"ap.it\0"
+"enna.it\0"
+"s3-website.ap-south-1.amazonaws.com\0"
+"valle-d-aosta.it\0"
+"phoenix.museum\0gentlentapis.com\0"
+"lel.br\0cci.fr\0"
+"fosnes.no\0"
+"bi.it\0oumu.hokkaido.jp\0boleslawiec.pl\0"
+"*.yokohama.jp\0"
+"illustration.museum\0*.customer-oci.com\0"
+"ind.in\0"
+"educator.aero\0lib.vi.us\0bloomberg\0"
+"kozaki.chiba.jp\0nahari.kochi.jp\0ranzan.saitama.jp\0"
+"minamitane.kagoshima.jp\0"
+"sa.edu.au\0myjino.ru\0"
+"br.it\0cb.it\0shizukuishi.iwate.jp\0"
+"circus.museum\0"
+"red\0"
+"ciscofreak.com\0"
+"maif\0"
+"k12.la.us\0"
+"naumburg.museum\0adobeaemcloud.com\0"
+"ren\0"
+"dyr\xc3\xb8y.no\0"
+"kawara.fukuoka.jp\0"
+"thingdustdata.com\0"
+"\xe5\x95\x86\xe5\x9f\x8e\0"
+"gs.of.no\0"
+"\xc3\xa5seral.no\0per.sg\0cc.ky.us\0"
+"shiranuka.hokkaido.jp\0"
+"ind.kw\0nannestad.no\0k12.md.us\0knightpoint.systems\0"
+"ct.it\0saka.hiroshima.jp\0"
"miners.museum\0"
-"tm.mc\0estate.museum\0"
-"pu.it\0"
-"sumoto.kumamoto.jp\0coastaldefence.museum\0trysil.no\0"
-"tm.mg\0"
-"\xe0\xb8\x98\xe0\xb8\xb8\xe0\xb8\xa3\xe0\xb8\x81\xe0\xb8\xb4\xe0\xb8\x88.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"e164.arpa\0asso.km\0"
-"rindal.no\0"
-"final\0"
-"mukawa.hokkaido.jp\0"
-"venezia.it\0pl.ua\0"
-"k12.dc.us\0"
-"sandvik\0"
-"evje-og-hornnes.no\0select\0"
-"toyosato.shiga.jp\0"
-"vestre-slidre.no\0club.tw\0"
-"tm.no\0"
-"ine.kyoto.jp\0higashimatsushima.miyagi.jp\0asso.mc\0"
-"england.museum\0gotdns.ch\0"
-"pharmacien.fr\0dsmynas.org\0"
-"fm.br\0paleo.museum\0slupsk.pl\0watch\0wtc\0"
-"divtasvuodna.no\0groks-this.info\0"
-"wtf\0"
-"bl.it\0"
-"sanda.hyogo.jp\0uber.space\0"
-"pubol.museum\0b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0"
-"ryuoh.shiga.jp\0"
-"express.aero\0pcloud.host\0"
-"ppg.br\0"
-"dattolocal.net\0"
-"handa.aichi.jp\0"
-"rep.kp\0"
-"paragliding.aero\0burghof.museum\0sibenik.museum\0"
-"steiermark.museum\0"
-"tm.pl\0"
-"chernihiv.ua\0"
-"gamo.shiga.jp\0"
-"uni5.net\0"
-"skj\xc3\xa5k.no\0"
-"kartuzy.pl\0lt.ua\0"
-"k12.ak.us\0from-ut.com\0"
-"chiyoda.tokyo.jp\0panama.museum\0"
-"time.museum\0"
-"aerobatic.aero\0*.compute.amazonaws.com.cn\0"
-"bodo.no\0"
-"soc.srcf.net\0"
-"as.us\0"
-"oyabe.toyama.jp\0"
-"trapani.it\0"
-"galsa.no\0"
-"kawagoe.saitama.jp\0is-very-sweet.org\0"
+"\xe9\xa6\x99\xe6\xb8\xaf\0"
+"hachinohe.aomori.jp\0anan.nagano.jp\0diadem.cloud\0"
+"fortmissoula.museum\0"
+"gs.cn\0"
+"lund.no\0"
+"tatebayashi.gunma.jp\0hita.oita.jp\0kaminokawa.tochigi.jp\0se.net\0ru.net\0"
+"ro.eu.org\0"
+"valleeaoste.it\0tokashiki.okinawa.jp\0"
+"eu-west-3.elasticbeanstalk.com\0"
+"kalisz.pl\0"
+"stockholm.museum\0"
+"8.bg\0ufcfan.org\0"
+"forex\0"
+"hl.cn\0"
+"tana.no\0"
+"kitagata.gifu.jp\0omg.lol\0"
+"historyofscience.museum\0naval.museum\0"
+"k12.mn.us\0"
+"katashina.gunma.jp\0ohda.shimane.jp\0"
+"*.0emm.com\0"
+"2038.io\0"
+"kiyosu.aichi.jp\0noboribetsu.hokkaido.jp\0ichikawamisato.yamanashi.jp\0sko.gov.pl\0"
+"landes.museum\0msk.ru\0"
+"ynh.fr\0"
+"is-very-nice.org\0"
+"gifu.gifu.jp\0geisei.kochi.jp\0\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa7\xb0\xe0\xa6\xa4\0"
+"cc.mt.us\0cc.nd.us\0boxfuse.io\0"
"nishikawa.yamagata.jp\0"
-"hvaler.no\0"
-"md.us\0"
-"maebashi.gunma.jp\0"
-"katagami.akita.jp\0store.nf\0"
-"dyndns-free.com\0"
-"dev.br\0nf.ca\0tm.ro\0marshalls\0"
-"politie\0lelux.site\0"
-"buzen.fukuoka.jp\0"
-"val-daosta.it\0badajoz.museum\0tm.se\0"
-"tv.im\0"
-"ibestad.no\0"
-"onga.fukuoka.jp\0kumagaya.saitama.jp\0"
-"kuokgroup\0"
-"sevastopol.ua\0"
-"tv.it\0"
-"kurashiki.okayama.jp\0"
-"umig.gov.pl\0chimkent.su\0"
-"moss.no\0"
-"mypep.link\0"
-"homeunix.com\0"
-"vagan.no\0"
-"trentino-s\xc3\xbc""d-tirol.it\0travelersinsurance\0"
-"nakatombetsu.hokkaido.jp\0"
-"xin\0"
-"inagawa.hyogo.jp\0tv.kg\0"
-"trentino-sud-tirol.it\0"
-"gj\xc3\xb8vik.no\0"
-"yotsukaido.chiba.jp\0shishikui.tokushima.jp\0"
-"wassamu.hokkaido.jp\0il.us\0*.compute.estate\0dnsfor.me\0"
-"kuromatsunai.hokkaido.jp\0"
-"\xc3\xa5rdal.no\0"
-"agrigento.it\0"
-"ipifony.net\0hicam.net\0"
-"bushey.museum\0"
-"toei.aichi.jp\0"
-"mesaverde.museum\0"
-"nom.ad\0e.bg\0"
-"fm.it\0nom.ae\0"
-"haebaru.okinawa.jp\0nom.af\0"
-"nom.ag\0mymailer.com.tw\0pyatigorsk.ru\0"
-"wanouchi.gifu.jp\0poker\0ntdll.top\0nom.ai\0"
-"archi\0homedepot\0"
-"holiday\0"
-"nom.al\0"
-"ooshika.nagano.jp\0mashiko.tochigi.jp\0"
-"\xe5\x8f\xb0\xe6\xb9\xbe\0jelastic.team\0"
-"shinshiro.aichi.jp\0"
-"democrat\0"
-"norfolk.museum\0phone\0office-on-the.net\0shacknet.nu\0"
-"pilots.museum\0"
-"tv.na\0knightpoint.systems\0"
+"folldal.no\0"
+"roma.it\0asahikawa.hokkaido.jp\0ril\0"
+"sydney.museum\0"
+"manaus.br\0"
+"rio\0"
+"rip\0"
+"edgestack.me\0msk.su\0"
+"training\0"
+"miyazaki.jp\0nara.nara.jp\0"
+"cc.nm.us\0"
+"miyazaki.miyazaki.jp\0"
+"incheon.kr\0"
+"trentino-suedtirol.it\0"
+"*.cloudera.site\0"
+"kumiyama.kyoto.jp\0"
+"vana\0townnews-staging.com\0"
+"trentinosudtirol.it\0bozen-sudtirol.it\0"
+"cc.nv.us\0"
+"sar.it\0kurume.fukuoka.jp\0"
+"onza.mythic-beasts.com\0"
+"si.eu.org\0"
+"lib.ee\0imageandsound.museum\0zhytomyr.ua\0"
+"eng.br\0"
+"orskog.no\0koobin.events\0"
+"does-it.net\0"
+"collection.museum\0myactivedirectory.com\0"
+"equipment.aero\0gs.rl.no\0copro.uk\0"
+"support\0"
+"shinyoshitomi.fukuoka.jp\0shimizu.shizuoka.jp\0*.on-rancher.cloud\0"
+"education\0"
+"\xe9\x95\xb7\xe5\xb4\x8e.jp\0ainan.ehime.jp\0chuo.yamanashi.jp\0"
+"oharu.aichi.jp\0"
+"e.bg\0rissa.no\0"
+"gojome.akita.jp\0gniezno.pl\0"
+"ip6.arpa\0nfshost.com\0"
+"hareid.no\0"
+"hashimoto.wakayama.jp\0"
+"studio\0mypets.ws\0"
+"nishiaizu.fukushima.jp\0"
+"cbg.ru\0"
+"arts.co\0"
+"honjo.saitama.jp\0shibuya.tokyo.jp\0"
+"n.bg\0"
+"kuromatsunai.hokkaido.jp\0kiyose.tokyo.jp\0nysa.pl\0\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb8\0"
+"kharkov.ua\0est-a-la-maison.com\0"
+"rollag.no\0"
"\xe0\xac\xad\xe0\xac\xbe\xe0\xac\xb0\xe0\xac\xa4\0"
-"vefsn.no\0"
-"homelinux.org\0"
-"fireweb.app\0"
-"beiarn.no\0"
-"shikabe.hokkaido.jp\0"
-"shiftcrypto.io\0"
-"yatsushiro.kumamoto.jp\0"
-"virtual-user.de\0"
-"nom.bz\0nyan.to\0"
-"\xe0\xba\xa5\xe0\xba\xb2\xe0\xba\xa7\0"
-"nom.cl\0"
-"sicily.it\0"
-"nom.co\0sayama.osaka.jp\0verisign\0"
-"yakumo.hokkaido.jp\0withgoogle.com\0"
-"realestate\0"
-"law.za\0sport\0"
-"ce.it\0maif\0"
-"telebit.app\0"
-"miyada.nagano.jp\0"
-"\xd9\x85\xd9\x84\xd9\x8a\xd8\xb3\xd9\x8a\xd8\xa7\0awsmppl.com\0nh-serv.co.uk\0"
-"toyono.osaka.jp\0pony.club\0"
-"tm.za\0"
-"museum.tt\0"
-"sk\xc3\xa5nland.no\0"
-"website.yandexcloud.net\0"
-"health.nz\0"
-"yamanouchi.nagano.jp\0circle\0data\0"
-"org.ac\0trentino-suedtirol.it\0"
-"contractors\0"
-"org.ae\0mar.it\0wakkanai.hokkaido.jp\0store.ve\0"
-"org.af\0date\0is-a-designer.com\0"
-"org.ag\0is-lost.org\0"
-"org.ai\0"
-"otaki.saitama.jp\0"
-"org.al\0"
-"org.am\0fm.no\0\xe5\xa4\xa7\xe6\x8b\xbf\0freeddns.us\0"
-"stor-elvdal.no\0"
-"nom.es\0gb.net\0"
-"org.ba\0giving\0istanbul\0"
-"org.ar\0org.bb\0mymediapc.net\0"
-"caracal.mythic-beasts.com\0"
-"org.au\0"
-"alfaromeo\0"
-"ugim.gov.pl\0"
-"org.bh\0pup.gov.pl\0"
-"org.bi\0"
-"org.az\0ide.kyoto.jp\0hol.no\0"
-"uvic.museum\0"
-"org.bm\0"
-"org.bn\0rebun.hokkaido.jp\0choyo.kumamoto.jp\0kasukabe.saitama.jp\0"
-"org.bo\0nom.fr\0"
-"taranto.it\0washingtondc.museum\0"
-"airport.aero\0nom.gd\0"
-"org.br\0nom.ge\0"
-"org.bs\0"
-"org.bt\0"
-"sic.it\0builtwithdark.com\0"
-"izumisano.osaka.jp\0"
-"the.br\0org.bw\0"
-"org.ci\0kuji.iwate.jp\0yahaba.iwate.jp\0nom.gl\0"
-"org.bz\0tv.sd\0"
-"sos.pl\0"
-"org.cn\0"
-"org.co\0sport.hu\0monza-e-della-brianza.it\0"
-"nom.gt\0"
-"gyeongbuk.kr\0planetarium.museum\0equipment\0redstone\0"
-"naie.hokkaido.jp\0obihiro.hokkaido.jp\0"
-"org.cu\0"
-"azurewebsites.net\0qcx.io\0"
-"org.cw\0"
-"minami-alps.yamanashi.jp\0"
-"org.cy\0abr.it\0"
-"nerdpol.ovh\0"
-"nom.hn\0"
-"org.dm\0"
-"bu.no\0\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0photo\0"
-"org.do\0"
-"ushiku.ibaraki.jp\0claims\0"
-"org.ec\0br\xc3\xb8nn\xc3\xb8ysund.no\0"
-"chernigov.ua\0"
-"org.ee\0kamo.niigata.jp\0marker.no\0"
-"org.eg\0"
-"iwade.wakayama.jp\0tv.tr\0"
-"tanabe.wakayama.jp\0nordreisa.no\0webhosting.be\0"
-"org.dz\0nom.im\0"
-"bolivia.bo\0canon\0from-tn.com\0"
-"store.ro\0"
-"principe.st\0tv.tz\0"
-"codespot.com\0"
-"demo.jelastic.com\0"
-"org.es\0"
-"org.et\0"
-"tako.chiba.jp\0kanegasaki.iwate.jp\0"
-"hermes\0"
-"org.fj\0shari.hokkaido.jp\0"
-"l\xc3\xa1hppi.no\0sande.vestfold.no\0"
-"goip.de\0"
-"n.bg\0org.fm\0"
-"cloud.interhostsolutions.be\0nom.ke\0*.s5y.io\0editorx.io\0"
-"store.st\0"
-"org.ge\0bulsan.it\0intl.tn\0"
-"org.gg\0rg.it\0"
-"org.gh\0"
-"org.gi\0askim.no\0"
-"nom.km\0"
-"sayo.hyogo.jp\0"
-"org.gl\0viking\0"
-"org.gn\0giske.no\0"
-"origins\0"
-"org.gp\0plo.ps\0"
-"org.gr\0"
-"bauhaus\0"
-"org.gt\0health.vn\0"
-"org.gu\0"
-"nom.li\0"
-"miyawaka.fukuoka.jp\0oshu.iwate.jp\0ap-southeast-1.elasticbeanstalk.com\0"
-"org.gy\0"
-"vao.it\0"
-"org.hk\0"
-"org.hn\0"
-"\xc3\xa5""fjord.no\0"
-"emilia-romagna.it\0"
-"is-certified.com\0nom.lv\0"
-"org.ht\0nom.mg\0axis.museum\0bci.dnstrace.pro\0"
-"org.hu\0"
-"from-la.net\0nom.mk\0"
-"org.il\0wedding\0"
-"org.im\0"
-"6.bg\0org.in\0museum.mv\0"
-"go.ci\0cn.it\0museum.mw\0"
-"nom.nc\0"
-"org.iq\0"
-"org.ir\0"
-"org.is\0"
-"frosinone.it\0stuttgart.museum\0"
-"org.je\0"
-"godo.gifu.jp\0nom.ni\0"
-"seihi.nagasaki.jp\0museum.no\0domains\0*.kunden.ortsinfo.at\0"
-"go.cr\0no.it\0"
-"s3-eu-west-2.amazonaws.com\0"
-"naturalhistorymuseum.museum\0ufcfan.org\0"
-"org.jo\0meeres.museum\0"
-"roma.it\0nom.nu\0"
-"kanazawa.ishikawa.jp\0museum.om\0\xda\x80\xd8\xa7\xd8\xb1\xd8\xaa\0xxx\0"
-"kr.com\0"
-"matsumoto.nagano.jp\0org.kg\0"
-"lierne.no\0"
-"org.ki\0"
-"oga.akita.jp\0\xe6\x96\xb0\xe9\x97\xbb\0"
-"org.km\0"
-"org.kn\0nom.pa\0"
-"org.kp\0nrw.museum\0clicketcloud.com\0"
-"org.la\0r\xc3\xb8""d\xc3\xb8y.no\0"
-"org.lb\0n\xc3\xa6r\xc3\xb8y.no\0nom.pe\0home.dyndns.org\0"
-"org.lc\0lind\xc3\xa5s.no\0"
-"kushimoto.wakayama.jp\0"
-"\xc3\xb8ygarden.no\0"
-"imperia.it\0org.kw\0dentist\0xyz\0"
-"homeoffice.gov.uk\0"
-"fussa.tokyo.jp\0org.ky\0nom.pl\0*.on-rio.io\0"
-"anamizu.ishikawa.jp\0org.kz\0"
-"noto.ishikawa.jp\0org.lk\0"
-"is-a-guru.com\0"
-"nom.qa\0"
-"org.ma\0"
-"yahiko.niigata.jp\0org.lr\0"
-"bihoro.hokkaido.jp\0org.ls\0"
-"nom.pw\0"
-"org.me\0skedsmo.no\0"
-"org.lv\0"
-"org.mg\0"
-"kota.aichi.jp\0"
-"org.ly\0"
-"gausdal.no\0"
-"org.mk\0"
-"org.ml\0dev.vu\0"
-"club.aero\0nasu.tochigi.jp\0"
-"nx.cn\0idf.il\0takahama.aichi.jp\0org.mn\0"
-"org.mo\0e.se\0"
-"gripe\0"
-"org.na\0"
-"nom.re\0centralus.azurestaticapps.net\0"
-"org.ms\0mypets.ws\0"
-"org.mt\0""2038.io\0"
-"org.mu\0"
-"org.mv\0"
-"org.mw\0org.ng\0"
-"org.mx\0unj\xc3\xa1rga.no\0"
-"nsw.au\0org.my\0org.ni\0"
-"org.mz\0vana\0g.vbrplsbx.io\0"
-"\xe8\xb0\xb7\xe6\xad\x8c\0"
-"nom.ro\0"
-"psse.gov.pl\0"
-"masoy.no\0"
-"nom.rs\0"
-"vanguard\0"
-"org.nr\0"
-"from-al.com\0"
-"web.bo\0kouhoku.saga.jp\0farmequipment.museum\0"
-"nom.si\0"
-"kg.kr\0"
-"\xe5\x9f\xbc\xe7\x8e\x89.jp\0mosjoen.no\0qoto.io\0"
-"go.id\0org.nz\0"
-"drammen.no\0org.om\0"
-"wa.au\0owariasahi.aichi.jp\0"
-"oregon.museum\0from-co.net\0"
-"org.pa\0nom.st\0"
-"act.au\0shirakawa.gifu.jp\0"
-"samsclub\0"
-"web.co\0"
-"org.pe\0"
-"org.pf\0opencraft.hosting\0"
-"nom.tj\0"
-"org.ph\0"
+"pacific.museum\0"
+"certmgr.org\0"
+"meinforum.net\0"
+"data\0"
+"ind.tn\0"
"w.bg\0"
-"go.it\0murakami.niigata.jp\0nom.tm\0"
-"2000.hu\0ueda.nagano.jp\0org.pk\0"
-"pa.gov.br\0harvestcelebration.museum\0org.pl\0"
-"org.pn\0"
-"flekkefjord.no\0"
-"ninohe.iwate.jp\0"
-"org.qa\0"
-"org.pr\0"
-"org.ps\0science\0"
-"web.do\0org.pt\0nom.ug\0"
-"go.jp\0muika.niigata.jp\0"
+"date\0"
+"flight.aero\0fr\xc3\xb8ya.no\0glug.org.uk\0"
+"nagai.yamagata.jp\0"
+"cisco\0sk.eu.org\0"
+"kisosaki.mie.jp\0kadena.okinawa.jp\0"
+"agriculture.museum\0"
+"lecco.it\0"
+"md.ci\0"
"sncf\0"
-"org.py\0community-pro.net\0"
-"go.ke\0"
-"yamada.fukuoka.jp\0"
-"r\xc3\xb8yken.no\0nom.vc\0"
-"ketrzyn.pl\0u2.xnbay.com\0"
-"you\0"
-"zlg.br\0nom.vg\0"
-"fot.br\0nom.uy\0"
-"higashiosaka.osaka.jp\0"
-"go.kr\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\xe0\xa4\xae\xe0\xa5\x8d\0"
-"jelastic.dogado.eu\0"
-"tamakawa.fukushima.jp\0leka.no\0"
-"pb.gov.br\0swatch\0"
-"genkai.saga.jp\0cloudera.site\0"
-"tokuyama.yamaguchi.jp\0org.ro\0"
-"noda.iwate.jp\0org.sa\0"
-"org.sb\0"
-"org.rs\0org.sc\0"
-"org.sd\0s3.ap-northeast-2.amazonaws.com\0"
-"org.se\0org.ru\0"
-"org.rw\0org.sg\0"
-"viterbo.it\0org.sh\0"
-"\xe5\x8d\x83\xe8\x91\x89.jp\0"
-"izumizaki.fukushima.jp\0bel.tr\0"
-"eurovision\0"
-"org.sl\0twmail.cc\0"
-"alta.no\0zp.gov.pl\0org.sn\0"
-"shinto.gunma.jp\0ando.nara.jp\0org.so\0"
-"gx.cn\0ybo.trade\0"
-"yoita.niigata.jp\0"
-"ogliastra.it\0kui.hiroshima.jp\0org.ss\0"
-"kawakami.nagano.jp\0org.st\0dnshome.de\0"
-"shonai.fukuoka.jp\0maritimo.museum\0org.sv\0"
-"saogonca.br\0basketball\0apigee.io\0"
-"omachi.nagano.jp\0realty\0"
-"org.sy\0"
-"web.gu\0org.sz\0org.tj\0jobs.tt\0"
-"cn.ua\0"
-"org.tm\0"
-"tohma.hokkaido.jp\0org.tn\0ro.eu.org\0"
-"org.to\0"
-"org.ua\0cloudns.info\0"
-"store.bb\0sarufutsu.hokkaido.jp\0org.tr\0"
-"yaotsu.gifu.jp\0org.tt\0"
-"ibigawa.gifu.jp\0"
-"org.tw\0org.ug\0"
-"muncie.museum\0schoenbrunn.museum\0"
-"web.id\0macerata.it\0"
-"org.uk\0"
-"ivanovo.su\0"
-"\xe7\xbb\x84\xe7\xbb\x87.hk\0porsanger.no\0in-butter.de\0"
-"nom.za\0"
-"sweetpepper.org\0"
-"sharp\0"
-"snaase.no\0lib.vi.us\0org.vc\0web.in\0"
-"miyako.iwate.jp\0farsund.no\0"
-"org.ve\0in-berlin.de\0"
-"game.tw\0"
-"sling\0"
-"org.uy\0org.vi\0usr.cloud.muni.cz\0"
-"org.uz\0"
-"\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0iserv.dev\0shopware.store\0"
-"motorcycle.museum\0cc.sc.us\0"
-"sener\0"
-"org.vn\0khakassia.su\0chirurgiens-dentistes-en-france.fr\0"
-"kyotamba.kyoto.jp\0annefrank.museum\0cn.vu\0"
-"jambyl.su\0customer.mythic-beasts.com\0"
-"ventures\0"
-"nishiokoppe.hokkaido.jp\0"
-"hemne.no\0"
-"nerima.tokyo.jp\0org.vu\0"
-"catholic.edu.au\0"
-"jobs\0"
-"n.se\0yun\0store.dk\0"
-"go.pw\0"
-"niki.hokkaido.jp\0"
-"tsubata.ishikawa.jp\0oyama.tochigi.jp\0"
-"org.ws\0"
-"eu.int\0skype\0"
-"ballangen.no\0"
-"joinville.br\0"
-"cody.museum\0maryland.museum\0"
-"nsn.us\0"
-"softbank\0si.eu.org\0nov.ru\0"
-"nagahama.shiga.jp\0"
-"web.lk\0"
-"org.ye\0"
-"yoichi.hokkaido.jp\0"
+"bananarepublic\0independent-inquiry.uk\0"
+"video.hu\0from-hi.com\0"
+"omura.nagasaki.jp\0"
+"ethnology.museum\0ck.ua\0"
+"press.aero\0"
+"muroran.hokkaido.jp\0"
+"science-fiction.museum\0"
+"my-firewall.org\0"
+"komaki.aichi.jp\0kumagaya.saitama.jp\0"
+"ma.gov.br\0"
+"clerk.app\0"
+"nf.ca\0energy\0"
+"annaka.gunma.jp\0"
+"bale.museum\0servehumour.com\0"
+"kinder\0"
+"lapy.pl\0sap\0"
+"wafflecell.com\0"
+"sas\0"
+"ishikari.hokkaido.jp\0"
+"chattanooga.museum\0sbi\0"
+"trainer.aero\0ct.us\0"
+"iglesiascarbonia.it\0"
+"gol.no\0"
+"sca\0\xe9\xa4\x90\xe5\x8e\x85\0"
+"scb\0"
+"sbs\0\xe5\x81\xa5\xe5\xba\xb7\0"
+"hanno.saitama.jp\0haibara.shizuoka.jp\0"
+"hl.no\0ee.eu.org\0"
+"kumatori.osaka.jp\0warmia.pl\0"
+"hemne.no\0ru.eu.org\0se.eu.org\0"
+"urayasu.chiba.jp\0takata.fukuoka.jp\0"
+"fh.se\0"
+"supabase.in\0"
+"jp.kg\0"
+"tama.tokyo.jp\0"
+"roma.museum\0traeumtgerade.de\0"
+"uda.nara.jp\0"
+"diskstation.me\0"
+"nx.cn\0"
+"tjome.no\0"
+"shibukawa.gunma.jp\0"
+"in.na\0mcpe.me\0"
+"kr.it\0shell\0"
+"oz.au\0"
+"ebino.miyazaki.jp\0"
+"in.ni\0"
+"b\xc3\xb8mlo.no\0\xe6\x96\xb0\xe9\x97\xbb\0"
+"yatomi.aichi.jp\0nishihara.kumamoto.jp\0izumisano.osaka.jp\0"
+"alabama.museum\0diskstation.eu\0"
+"yoshimi.saitama.jp\0"
+"flekkefjord.no\0c.cdn77.org\0wellbeingzone.co.uk\0"
+"jp.md\0"
+"cambridge.museum\0gorge.museum\0"
+"run\0"
+"kepno.pl\0"
+"natuurwetenschappen.museum\0sevastopol.ua\0"
+"ses\0"
+"boutir.com\0"
+"namsskogan.no\0sew\0"
+"oguni.kumamoto.jp\0sex\0"
+"qc.ca\0"
+"k12.ut.us\0"
+"lt.it\0"
+"asaminami.hiroshima.jp\0kamikawa.hyogo.jp\0misato.miyagi.jp\0toyama.toyama.jp\0"
+"technology.museum\0dnsalias.com\0"
+"sfr\0"
+"\xc3\xa5snes.no\0"
+"rwe\0"
+"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0"
+"yame.fukuoka.jp\0cloudjiffy.net\0"
+"forum\0"
+"ga.us\0"
+"losangeles.museum\0sanofi\0"
+"ntr.br\0"
+"nes.akershus.no\0"
+"kindle\0"
+"sld.do\0shw.io\0"
+"\xe6\xbb\x8b\xe8\xb3\x80.jp\0"
+"arts.ve\0customer.mythic-beasts.com\0"
+"nonoichi.ishikawa.jp\0keliweb.cloud\0"
+"kawaba.gunma.jp\0"
+"freiburg.museum\0"
+"*.backyards.banzaicloud.io\0"
+"wakasa.fukui.jp\0date.fukushima.jp\0"
+"doomdns.com\0"
+"direct\0"
+"odesa.ua\0sa-east-1.elasticbeanstalk.com\0*.triton.zone\0"
+"cc.vt.us\0apartments\0"
+"jed.wafaicloud.com\0"
+"os.hedmark.no\0in.rs\0noticeable.news\0"
+"no.it\0\xe5\x92\x8c\xe6\xad\x8c\xe5\xb1\xb1.jp\0iwamizawa.hokkaido.jp\0nomi.ishikawa.jp\0takaoka.toyama.jp\0"
+"cloudns.asia\0is-a-caterer.com\0"
+"supabase.co\0"
+"garden.museum\0community-pro.de\0"
+"friuli-vegiulia.it\0"
+"in-addr.arpa\0app.render.com\0"
+"\xe5\xa4\xa7\xe6\x8b\xbf\0"
+"arai.shizuoka.jp\0moonscale.net\0"
+"communications.museum\0"
+"in.th\0"
+"geekgalaxy.com\0"
+"\xe5\x8f\xb0\xe6\xb9\xbe\0"
+"tranby.no\0joburg\0"
+"cc.wv.us\0"
+"in.ua\0ski\0"
+"pa.it\0moriyoshi.akita.jp\0"
+"akrehamn.no\0"
+"abashiri.hokkaido.jp\0gotemba.shizuoka.jp\0ecommerce-shop.pl\0"
+"is-a-conservative.com\0"
+"laakesvuemie.no\0panel.gg\0"
+"sukagawa.fukushima.jp\0ostrowiec.pl\0"
+"can.museum\0praxi\0"
"honefoss.no\0"
-"trentino.it\0dclk\0dsmynas.net\0"
-"surgeonshall.museum\0cc.ok.us\0cog.mi.us\0"
-"nov.su\0"
-"teo.br\0homesecuritymac.com\0"
-"org.za\0"
-"ah.cn\0bluebite.io\0dscloud.mobi\0"
-"\xe9\xa3\x9f\xe5\x93\x81\0"
-"org.yt\0"
-"chiba.jp\0"
-"adm.br\0shiranuka.hokkaido.jp\0web.nf\0"
-"dyndns.tv\0"
-"tado.mie.jp\0org.zm\0with.marketing\0"
-"web.ni\0go.th\0"
-"si.it\0"
-"go.tj\0"
-"kyowa.akita.jp\0kustanai.ru\0"
-"org.zw\0"
-"basilicata.it\0"
-"go.ug\0zip\0"
-"volkenkunde.museum\0"
-"tabuse.yamaguchi.jp\0go.tz\0"
-"government.aero\0"
-"motosu.gifu.jp\0"
-"\xe5\x8f\xb0\xe7\x81\xa3\0"
-"funagata.yamagata.jp\0lib.ny.us\0kustanai.su\0"
-"est-mon-blogueur.com\0"
-"moma.museum\0"
-"nedre-eiker.no\0"
-"cc.ks.us\0sk.eu.org\0"
-"secaas.hk\0"
-"web.pk\0joburg\0"
-"kawanehon.shizuoka.jp\0bykle.no\0"
-"sano.tochigi.jp\0s3.eu-west-3.amazonaws.com\0"
-"ski.museum\0"
-"aomori.jp\0lk3.ru\0"
-"cc.vt.us\0"
-"dyndns.ws\0"
-"soma.fukushima.jp\0nikon\0"
-"comsec\0"
-"pa.it\0"
-"notodden.no\0style\0"
-"mobara.chiba.jp\0\xe7\xb6\xb2\xe8\xb7\xaf.tw\0"
-"blockbuster\0"
-"lugansk.ua\0"
-"ee.eu.org\0"
-"unjarga.no\0sola.no\0"
-"kaneyama.fukushima.jp\0"
-"takayama.nagano.jp\0deno-staging.dev\0"
-"tokke.no\0translate.goog\0"
-"sakuho.nagano.jp\0war.museum\0"
-"hangout\0"
-"property\0debian.net\0"
-"k\xc3\xa5""fjord.no\0"
-"oz.au\0kamiizumi.saitama.jp\0research.museum\0pvt.k12.ma.us\0"
-"cloud.jelastic.open.tim.it\0"
-"from-hi.com\0"
-"oh.us\0"
-"from-ny.net\0futuremailing.at\0*.ex.ortsinfo.at\0"
-"pi.gov.br\0"
-"ru.eu.org\0se.eu.org\0"
-"web.tj\0"
-"ochi.kochi.jp\0"
-"li.it\0lawyer\0"
-"kids.museum\0",
-
-"lucerne.museum\0hopto.me\0"
-"takata.fukuoka.jp\0"
-"w.se\0web.tr\0finance\0"
-"yasuoka.nagano.jp\0folionetwork.site\0syno-ds.de\0"
-"frogn.no\0"
-"iwi.nz\0"
-"rimini.it\0"
-"yukuhashi.fukuoka.jp\0\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0"
-"swidnica.pl\0"
-"*.devcdnaccesso.com\0"
-"nishikata.tochigi.jp\0basicserver.io\0"
-"lib.hi.us\0ma.leg.br\0"
-"usarts.museum\0web.ve\0"
-"chikuhoku.nagano.jp\0"
-"choshi.chiba.jp\0stackhero-network.com\0"
-"barsy.co.uk\0"
-"creditcard\0"
-"tempioolbia.it\0minokamo.gifu.jp\0business\0"
-"dy.fi\0"
-"ainan.ehime.jp\0"
-"mb.ca\0"
-"tone.ibaraki.jp\0"
-"wa.us\0"
-"n\xc3\xa1vuotna.no\0photography\0"
-"contagem.br\0botanicalgarden.museum\0technology\0"
-"castle.museum\0convent.museum\0halloffame.museum\0"
-"kiyosu.aichi.jp\0"
-"gildesk\xc3\xa5l.no\0isa-geek.org\0"
-"herad.no\0"
-"adv.br\0mikawa.yamagata.jp\0"
-"mihama.aichi.jp\0dlugoleka.pl\0"
-"zgora.pl\0"
-"sr.it\0loabat.no\0"
-"usculture.museum\0giehtavuoatna.no\0"
-"fl\xc3\xa5.no\0"
-"diskussionsbereich.de\0"
-"jab.br\0helsinki\0qbuser.com\0"
-"ah.no\0myddns.rocks\0"
+"!city.sendai.jp\0"
+"naturalsciences.museum\0preservation.museum\0sky\0"
+"in.us\0"
+"koshigaya.saitama.jp\0"
+"r\xc3\xa6lingen.no\0arts.ro\0"
+"shichinohe.aomori.jp\0yaizu.shizuoka.jp\0"
+"halloffame.museum\0no-ip.ca\0"
+"kosher\0"
+"iruma.saitama.jp\0"
+"aukra.no\0"
+"tosu.saga.jp\0"
+"m\xc4\x81ori.nz\0"
+"takatsuki.osaka.jp\0yasugi.shimane.jp\0"
+"e.se\0yombo.me\0"
+"tagawa.fukuoka.jp\0"
+"toyoake.aichi.jp\0"
+"southwest.museum\0"
+"sandnes.no\0arvo.network\0"
+"jobs\0"
+"yamato.fukushima.jp\0"
+"n.se\0lifeinsurance\0yolasite.com\0"
+"health.nz\0"
+"olsztyn.pl\0trust\0"
+"fam.pk\0fedorapeople.org\0"
+"kr.ua\0"
+"dvrcam.info\0"
+"re.it\0"
+"cleaning\0"
+"togane.chiba.jp\0naruto.tokushima.jp\0stalowa-wola.pl\0memorial\0"
+"bristol.museum\0military.museum\0w.se\0spa\0"
+"medio-campidano.it\0seiro.niigata.jp\0"
+"arts.nf\0"
+"seirou.niigata.jp\0"
+"sciencehistory.museum\0soy\0from-oh.com\0in-dsl.de\0"
+"mar.it\0rn.it\0"
+"fujisawa.iwate.jp\0himeshima.oita.jp\0ryokami.saitama.jp\0"
+"za.com\0"
+"tab\0"
+"is-very-bad.org\0"
+"piedmont.it\0musashimurayama.tokyo.jp\0"
+"khakassia.su\0"
+"industries\0"
+"tsuno.miyazaki.jp\0dev.static.land\0"
+"press.museum\0lt.ua\0"
+"re.kr\0maori.nz\0"
+"lardal.no\0marketing\0"
+"kamikoani.akita.jp\0seihi.nagasaki.jp\0kouhoku.saga.jp\0czest.pl\0"
+"tcm.museum\0degree\0is-a-blogger.com\0"
+"numata.gunma.jp\0inagawa.hyogo.jp\0"
+"schweiz.museum\0"
+"patria.bo\0halsa.no\0\xd8\xa8\xd9\x8a\xd8\xaa\xd9\x83\0"
+"minamifurano.hokkaido.jp\0sakyo.kyoto.jp\0tax\0"
+"sherbrooke.museum\0"
+"md.us\0"
+"sp.it\0srl\0"
+"\xe0\xb8\x84\xe0\xb8\xad\xe0\xb8\xa1\0"
+"v\xc3\xa5ler.\xc3\xb8stfold.no\0"
+"saroma.hokkaido.jp\0higashiosaka.osaka.jp\0"
+"culture.museum\0dnshome.de\0u2.xnbay.com\0"
+"review\0"
+"itano.tokushima.jp\0podzone.net\0jele.cloud\0"
+"sld.pa\0"
+"sweetpepper.org\0"
+"ito.shizuoka.jp\0"
+"tci\0"
+"warabi.saitama.jp\0"
+"*.hosting.myjino.ru\0"
+"ce.leg.br\0"
+"stc\0"
+"amami.kagoshima.jp\0"
+"skedsmo.no\0songdalen.no\0"
+"tsukui.kanagawa.jp\0es-1.axarnet.cloud\0"
+"uk.com\0"
+"alstahaug.no\0gjerstad.no\0tdk\0"
+"tr.it\0hatoyama.saitama.jp\0"
+"reklam.hu\0"
+"amazon\0weber\0"
+"citic\0"
+"kafjord.no\0cn.eu.org\0"
+"hakui.ishikawa.jp\0tel\0"
+"moma.museum\0aetna\0fujitsu\0"
+"trentinsued-tirol.it\0ritto.shiga.jp\0"
+"sohu\0"
+"starostwo.gov.pl\0"
+"xz.cn\0health.vn\0playstation\0"
+"fujisawa.kanagawa.jp\0"
+"g\xc3\xa1ls\xc3\xa1.no\0v\xc3\xa5gan.no\0oh.us\0"
+"nogi.tochigi.jp\0"
+"dr\xc3\xb8""bak.no\0uk.kg\0"
+"tree.museum\0authgear-staging.com\0"
+"*.compute.amazonaws.com.cn\0"
"horten.no\0"
-"rocks\0"
-"i234.me\0"
-"sunagawa.hokkaido.jp\0hitachinaka.ibaraki.jp\0"
-"firmdale\0"
-"cc.ak.us\0"
-"geometre-expert.fr\0"
-"school.museum\0from-id.com\0"
-"glass.museum\0web.za\0"
-"fribourg.museum\0"
-"ayabe.kyoto.jp\0"
-"hitachi.ibaraki.jp\0akiruno.tokyo.jp\0"
-"omg.lol\0"
-"omitama.ibaraki.jp\0nikolaev.ua\0"
-"taketa.oita.jp\0aca.pro\0hosting\0sohu\0"
-"naklo.pl\0"
-"boston.museum\0"
-"amot.no\0"
-"gotdns.com\0"
-"hemnes.no\0"
-"shima.mie.jp\0dp.ua\0"
-"vald-aosta.it\0"
-"kamitsue.oita.jp\0"
-"shimane.jp\0tokoname.aichi.jp\0\xd9\x87\xd9\x85\xd8\xb1\xd8\xa7\xd9\x87\0"
-"railroad.museum\0pramerica\0"
-"taku.saga.jp\0country\0resindevice.io\0"
-"francaise.museum\0"
-"pe.gov.br\0"
-"kotoura.tottori.jp\0s3.dualstack.ap-northeast-1.amazonaws.com\0"
-"blogsyte.com\0"
-"fuso.aichi.jp\0"
-"okinawa\0en-root.fr\0"
-"aosta-valley.it\0ralingen.no\0""4u.com\0"
-"tanagura.fukushima.jp\0protonet.io\0"
-"oshima.yamaguchi.jp\0nome.pt\0"
-"cc.id.us\0dyndns-ip.com\0"
-"g12.br\0"
-"uchiko.ehime.jp\0"
-"pa.us\0"
-"westeurope.azurestaticapps.net\0"
-"n\xc3\xa5\xc3\xa5mesjevuemie.no\0"
-"aq.it\0ba.it\0"
-"qc.ca\0"
-"osasco.br\0ujitawara.kyoto.jp\0ap-northeast-2.elasticbeanstalk.com\0"
-"rifu.miyagi.jp\0"
-"indian.museum\0nowtv\0virgin\0"
-"forgot.her.name\0"
-"nctu.me\0"
-"mb.it\0homegoods\0"
-"ltda\0"
-"stuff-4-sale.us\0"
-"uda.nara.jp\0"
-"yombo.me\0"
-"hyatt\0"
-"music.museum\0"
-"york.museum\0"
-"kyotango.kyoto.jp\0"
-"fortmissoula.museum\0co.events\0"
-"*.gateway.dev\0"
-"from-mt.com\0from-nd.com\0"
-"piedmont.it\0"
-"song\0"
-"thingdustdata.com\0"
-"kawanishi.yamagata.jp\0"
-"tires\0"
-"mobi.gp\0"
-"owani.aomori.jp\0"
-"ky.us\0"
-"k12.ut.us\0ath.cx\0"
-"pol.dz\0"
-"warmia.pl\0"
-"\xe9\xa6\x99\xe6\xb8\xaf\0"
-"bj.cn\0aogashima.tokyo.jp\0sokndal.no\0ismaili\0"
-"news.hu\0test.tj\0sony\0"
-"from-dc.com\0"
-"yachts\0"
-"agents.aero\0"
-"b\xc3\xa1l\xc3\xa1t.no\0baby\0"
-"belau.pw\0"
-"utashinai.hokkaido.jp\0"
-"pa.gov.pl\0"
-"riopreto.br\0even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0"
-"app.br\0"
-"biei.hokkaido.jp\0elblag.pl\0deal\0bookonline.app\0"
-"edu.eu.org\0"
-"radoy.no\0"
-"ws.na\0"
-"taiji.wakayama.jp\0"
-"rodeo\0"
-"\xe7\x82\xb9\xe7\x9c\x8b\0httpbin.org\0"
-"k12.ga.us\0"
-"nishinoomote.kagoshima.jp\0horse\0"
-"reggio-calabria.it\0wajima.ishikawa.jp\0"
-"verm\xc3\xb6gensberatung\0collegefan.org\0"
-"adv.mz\0lunner.no\0"
-"ia.us\0"
-"enterprises\0"
-"m\xc3\xa5s\xc3\xb8y.no\0"
-"cc.me.us\0\xd9\x85\xd9\x88\xd8\xb1\xd9\x8a\xd8\xaa\xd8\xa7\xd9\x86\xd9\x8a\xd8\xa7\0test.ru\0"
-"yabu.hyogo.jp\0cn.eu.org\0"
-"kouyama.kagoshima.jp\0"
-"pol.ht\0"
-"hasvik.no\0"
-"cc.wv.us\0azure\0"
-"is-with-theband.com\0"
-"bozen.it\0"
-"\xd9\x82\xd8\xb7\xd8\xb1\0capitalone\0"
-"global\0"
-"sardegna.it\0"
-"military.museum\0pisz.pl\0isa-geek.com\0"
-"ouchi.saga.jp\0fiat\0"
-"\xe5\x92\x8c\xe6\xad\x8c\xe5\xb1\xb1.jp\0americanexpress\0prvcy.page\0"
-"g\xc3\xbcnstigliefern.de\0"
-"praxi\0"
-"shibata.miyagi.jp\0sandnes.no\0"
-"rio.br\0"
-"pr.gov.br\0"
-"citadel\0"
-"seiro.niigata.jp\0"
-"nord-fron.no\0"
-"git-repos.de\0"
-"smola.no\0"
-"app.gp\0"
-"tokushima.tokushima.jp\0"
-"tranibarlettaandria.it\0"
-"house.museum\0"
-"cc.tn.us\0microsoft\0"
-"fukushima.fukushima.jp\0jefferson.museum\0"
-"trentin-sudtirol.it\0ddns.net\0"
-"fido\0"
-"paris.eu.org\0"
-"catanzaro.it\0"
-"midsund.no\0"
-"x443.pw\0"
-"s3-external-1.amazonaws.com\0"
-"kv\xc3\xa6nangen.no\0"
-"madrid.museum\0"
-"sandnessjoen.no\0"
-"doesntexist.org\0"
-"s\xc3\xb8rfold.no\0"
-"s3-ap-southeast-2.amazonaws.com\0"
-"its.me\0"
-"kyuragi.saga.jp\0sn\xc3\xa5sa.no\0"
-"senseering.net\0"
-"artcenter.museum\0in-vpn.org\0"
-"flanders.museum\0"
-"tirol\0from.marketing\0"
-"nabari.mie.jp\0mimata.miyazaki.jp\0cy.eu.org\0"
-"miho.ibaraki.jp\0"
-"iopsys.se\0"
-"kizu.kyoto.jp\0"
-"kasai.hyogo.jp\0"
-"contemporary.museum\0from-wv.com\0"
-"oyamazaki.kyoto.jp\0"
-"aip.ee\0"
-"det.br\0narita.chiba.jp\0"
-"snillfjord.no\0"
-"\xe9\xa4\x90\xe5\x8e\x85\0to.work\0inc.hk\0"
-"jprs\0"
-"is.it\0"
-"tt.im\0"
-"univ.sn\0"
-"oguchi.aichi.jp\0audnedaln.no\0"
-"nemuro.hokkaido.jp\0bargains\0"
-"ud.it\0sango.nara.jp\0malvik.no\0"
-"cz.eu.org\0"
-"\xe9\xa6\x99\xe5\xb7\x9d.jp\0bible\0"
-"medio-campidano.it\0onomichi.hiroshima.jp\0"
-"minamiuonuma.niigata.jp\0band\0sandcats.io\0"
-"condos\0"
-"jele.club\0"
-"matsushima.miyagi.jp\0bank\0isteingeek.de\0"
-"studio\0"
-"berkeley.museum\0mansion.museum\0"
-"dell\0"
-"bonn.museum\0k12.sc.us\0"
-"unazuki.toyama.jp\0songdalen.no\0\xeb\x8b\xb7\xec\xbb\xb4\0"
-"swinoujscie.pl\0cc.mn.us\0agakhan\0"
-"bulsan-suedtirol.it\0"
-"okaya.nagano.jp\0"
+"fukuoka.jp\0"
+"medizinhistorisches.museum\0"
+"pa.us\0dclk\0"
+"nara.jp\0"
+"ushistory.museum\0dynvpn.de\0"
+"comsec\0cruises\0tuxfamily.org\0"
+"futtsu.chiba.jp\0zao.miyagi.jp\0"
+"pramerica\0"
+"thd\0"
+"authgearapps.com\0"
+"leirvik.no\0galsa.no\0"
+"sakurai.nara.jp\0"
+"ipiranga\0"
+"vix.br\0"
+"bjerkreim.no\0sandvik\0"
+"vv.it\0komae.tokyo.jp\0gmina.pl\0"
+"h\xc3\xa1mm\xc3\xa1rfeasta.no\0"
+"guam.gu\0"
+"yokaichiba.chiba.jp\0"
+"annefrank.museum\0"
+"tr.no\0"
+"padova.it\0"
+"pioneer\0"
+"andebu.no\0frei.no\0lerdal.no\0"
+"tosa.kochi.jp\0"
+"santoandre.br\0"
+"nakatombetsu.hokkaido.jp\0kamisato.saitama.jp\0"
+"ddnsgeek.com\0"
+"better-than.tv\0"
+"gran.no\0"
+"pesarourbino.it\0vibo-valentia.it\0shinichi.hiroshima.jp\0"
+"otaki.nagano.jp\0uonuma.niigata.jp\0"
+"zaporizhzhia.ua\0"
+"\xe3\x82\xa2\xe3\x83\x9e\xe3\x82\xbe\xe3\x83\xb3\0"
+"achi.nagano.jp\0kunisaki.oita.jp\0sos.pl\0"
+"science.museum\0"
+"\xc3\xa5rdal.no\0song\0"
+"byen.site\0"
+"sogndal.no\0cy.eu.org\0couchpotatofries.org\0"
+"nanao.ishikawa.jp\0wajiki.tokushima.jp\0tjx\0"
+"catering.aero\0"
+"sasayama.hyogo.jp\0"
+"jfk.museum\0"
+"calvinklein\0"
+"iwama.ibaraki.jp\0"
+"versailles.museum\0sony\0"
+"szkola.pl\0"
+"finnoy.no\0editorx.io\0"
+"choshi.chiba.jp\0\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0cdn-edges.net\0"
+"partners\0"
+"komforb.se\0"
+"shoo.okayama.jp\0"
+"music.museum\0\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0"
+"mg.gov.br\0"
+"council.aero\0stathelle.no\0baidar.no\0cz.eu.org\0"
+"travelchannel\0"
+"ingatlan.hu\0"
+"www.ro\0"
+"yorii.saitama.jp\0"
+"missile.museum\0"
+"lib.ia.us\0"
+"marche.it\0\xe7\xa6\x8f\xe5\xb3\xb6.jp\0"
+"nordreisa.no\0sondre-land.no\0"
+"baidu\0"
+"sor-odal.no\0"
+"kyoto.jp\0"
+"hole.no\0"
+"kawanabe.kagoshima.jp\0arao.kumamoto.jp\0"
+"dyndns1.de\0h\xc3\xa4kkinen.fi\0"
+"nikon\0"
+"vegas\0"
"dk.eu.org\0"
-"kitaura.miyazaki.jp\0hayakawa.yamanashi.jp\0"
-"c.bg\0kitadaito.okinawa.jp\0ota.tokyo.jp\0"
-"glade\0"
-"watari.miyagi.jp\0berlev\xc3\xa5g.no\0"
-"kamagaya.chiba.jp\0is-a-soxfan.org\0"
-"jl.cn\0"
-"guam.gu\0oi.kanagawa.jp\0"
-"ayagawa.kagawa.jp\0hanno.saitama.jp\0cards\0"
-"aibetsu.hokkaido.jp\0kanan.osaka.jp\0"
-"tsukui.kanagawa.jp\0"
-"boldlygoingnowhere.org\0"
-"memorial.museum\0"
-"perspecta.cloud\0"
+"bulsan-s\xc3\xbc""dtirol.it\0chita.aichi.jp\0it1.eur.aruba.jenv-aruba.cloud\0"
+"click\0"
+"eniwa.hokkaido.jp\0kawatana.nagasaki.jp\0"
+"stuttgart.museum\0"
+"malopolska.pl\0top\0"
+"blackfriday\0ltda\0"
+"rahkkeravju.no\0\xe7\x82\xb9\xe7\x9c\x8b\0"
+"corvette.museum\0"
+"nes.buskerud.no\0k12.al.us\0"
+"usa.oita.jp\0*.hosting.ovh.net\0"
+"from-ok.com\0familyds.com\0"
+"servequake.com\0"
+"servers.run\0"
+"jcloud-ver-jpc.ik-server.com\0"
+"aure.no\0"
+"kitahiroshima.hokkaido.jp\0"
+"unzen.nagasaki.jp\0karasuyama.tochigi.jp\0"
+"apigee.io\0"
+"oristano.it\0wakayama.wakayama.jp\0"
+"oceanographique.museum\0amscompute.com\0serveftp.com\0"
+"revista.bo\0"
+"higashiizumo.shimane.jp\0"
+"fitness\0"
+"ut.us\0"
+"myds.me\0"
+"isla.pr\0"
+"v\xc3\xa5ler.hedmark.no\0"
+"odate.akita.jp\0yashio.saitama.jp\0atm.pl\0"
+"cc.al.us\0ubs\0"
+"shobara.hiroshima.jp\0chuo.osaka.jp\0"
+"trv\0"
+"de.eu.org\0"
+"karuizawa.nagano.jp\0"
+"temasek\0"
+"frosinone.it\0"
+"yonago.tottori.jp\0"
+"alta.no\0"
+"mobi.gp\0kamishihoro.hokkaido.jp\0kamisunagawa.hokkaido.jp\0"
+"jambyl.su\0"
+"bmd.br\0"
+"brussels\0"
+"trentino-alto-adige.it\0jc.neen.it\0zakopane.pl\0"
+"gallery.museum\0"
+"shikama.miyagi.jp\0"
+"sanfrancisco.museum\0"
+"capetown\0"
+"uruma.okinawa.jp\0"
+"knx-server.net\0jls-sto2.elastx.net\0"
+"gyeonggi.kr\0nowtv\0"
+"alesund.no\0*.usercontent.goog\0"
+"kagamino.okayama.jp\0"
+"monticello.museum\0tui\0"
+"res.in\0"
+"cooperativa.bo\0"
+"mizunami.gifu.jp\0hatsukaichi.hiroshima.jp\0aus.basketball\0"
+"baghdad.museum\0"
+"dsmynas.org\0"
+"urown.cloud\0"
+"jewelry.museum\0mckinsey\0issmarterthanyou.com\0"
+"selfip.net\0"
+"maserati\0"
+"creditunion\0"
+"gausdal.no\0sula.no\0"
+"intuit\0"
+"gs.fm.no\0lib.mn.us\0"
+"tjmaxx\0"
+"tvs\0"
+"privatizehealthinsurance.net\0"
+"clinique\0s3-website-sa-east-1.amazonaws.com\0"
+"\xd8\xa8\xd8\xa7\xd8\xb1\xd8\xaa\0cloudns.biz\0"
+"kawakita.ishikawa.jp\0"
+"chesapeakebay.museum\0"
+"volyn.ua\0"
+"go.leg.br\0"
+"happou.akita.jp\0ichikawa.chiba.jp\0ouchi.saga.jp\0"
+"hadsel.no\0"
+"hyundai\0"
+"koshu.yamanashi.jp\0"
+"wpmucdn.com\0"
+"academia.bo\0"
+"yakage.okayama.jp\0jelenia-gora.pl\0"
+"andasuolo.no\0bnpparibas\0"
+"kurate.fukuoka.jp\0ota.tokyo.jp\0eu.platform.sh\0"
+"\xe5\x8f\xb0\xe7\x81\xa3\0"
+"barcelona.museum\0"
+"green\0"
+"edu.ac\0sorreisa.no\0"
+"trentinsuedtirol.it\0isahaya.nagasaki.jp\0"
+"edu.af\0"
+"basicserver.io\0"
+"edu.al\0togo.aichi.jp\0kounosu.saitama.jp\0beskidy.pl\0"
+"george\0s3-eu-central-1.amazonaws.com\0reservd.com\0"
+"leka.no\0valle.no\0"
+"kosaka.akita.jp\0udono.mie.jp\0mamurogawa.yamagata.jp\0"
+"edu.ba\0mad.museum\0eurodir.ru\0"
+"edu.ar\0edu.bb\0"
+"dynamic-dns.info\0"
+"akishima.tokyo.jp\0"
+"edu.au\0unusualperson.com\0prequalifyme.today\0"
+"sor-fron.no\0"
+"edu.bh\0ina.nagano.jp\0poznan.pl\0"
+"edu.bi\0"
+"edu.az\0"
+"coop.ht\0football\0"
+"edu.bm\0england.museum\0internet-dns.de\0"
+"edu.bn\0"
+"edu.bo\0homes\0ca.eu.org\0"
+"limited\0"
+"contemporary.museum\0dattorelay.com\0"
+"edu.br\0"
+"edu.bs\0"
+"edu.bt\0niihama.ehime.jp\0telebit.app\0"
+"geology.museum\0washingtondc.museum\0camera\0"
+"senasa.ar\0kiwi.nz\0"
+"tateshina.nagano.jp\0hokuto.yamanashi.jp\0"
+"edu.ci\0community.museum\0"
+"coop.ar\0edu.bz\0"
+"mytuleap.com\0*.platformsh.site\0xs4all.space\0"
+"edu.cn\0"
+"res.aero\0edu.co\0"
+"convent.museum\0settlement.museum\0"
+"deal\0"
+"edu.cu\0"
+"curitiba.br\0edu.cv\0"
+"edu.cw\0v\xc3\xa5gs\xc3\xb8y.no\0hzc.io\0"
+"spot\0"
+"bharti\0"
+"coop.br\0"
+"calabria.it\0midori.gunma.jp\0"
+"edu.dm\0"
+"edu.do\0blogsite.org\0"
+"tohma.hokkaido.jp\0ujiie.tochigi.jp\0fiat\0"
+"*.oci.customer-oci.com\0barsy.menu\0"
+"edu.ec\0"
+"clickrising.net\0"
+"edu.ee\0jerusalem.museum\0silk.museum\0chernovtsy.ua\0karaganda.su\0servep2p.com\0"
+"edu.eg\0os\xc3\xb8yro.no\0"
+"ishinomaki.miyagi.jp\0agano.niigata.jp\0"
+"shacknet.nu\0"
+"int.ar\0edu.dz\0"
+"amusement.aero\0\xe3\x82\xb0\xe3\x83\xbc\xe3\x82\xb0\xe3\x83\xab\0"
+"kashihara.nara.jp\0olecko.pl\0"
+"baby\0"
+"allfinanz\0"
+"ibestad.no\0"
+"friulivgiulia.it\0"
+"mansions.museum\0"
+"int.az\0\xe9\x9b\x86\xe5\x9b\xa2\0"
+"edu.es\0rendalen.no\0virtualserver.io\0"
+"edu.et\0ikeda.hokkaido.jp\0"
+"space.museum\0chase\0"
+"int.bo\0jprs\0uno\0"
+"takanezawa.tochigi.jp\0kaminoyama.yamagata.jp\0"
+"\xd9\x82\xd8\xb7\xd8\xb1\0"
+"gets-it.net\0"
+"edu.fm\0is-a-student.com\0"
+"stjordal.no\0podzone.org\0"
+"tokushima.tokushima.jp\0theshop.jp\0"
+"int.ci\0tank.museum\0"
+"jeonnam.kr\0"
+"boats\0"
+"edu.gd\0bulsan-sudtirol.it\0ninohe.iwate.jp\0uol\0"
+"edu.ge\0"
+"modelling.aero\0int.co\0br\xc3\xb8nn\xc3\xb8y.no\0"
+"edu.gh\0seki.gifu.jp\0"
+"edu.gi\0resistance.museum\0"
+"ed.ao\0cc.ia.us\0fido\0genting\0"
+"edu.gl\0yusuhara.kochi.jp\0"
+"int.cv\0edu.gn\0"
+"edu.gp\0kusu.oita.jp\0otsu.shiga.jp\0"
+"pharmaciens.km\0"
+"edu.gr\0"
+"edu.gt\0"
+"edu.gu\0is-a-green.com\0"
+"mircloud.us\0"
+"edu.gy\0"
+"edu.hk\0unj\xc3\xa1rga.no\0ups\0"
+"castres.museum\0"
+"edu.hn\0"
+"cd.eu.org\0"
+"edu.ht\0takashima.shiga.jp\0"
+"ed.ci\0\xe3\x82\xaf\xe3\x83\xa9\xe3\x82\xa6\xe3\x83\x89\0"
+"2000.hu\0from-ia.com\0"
+"trentinos\xc3\xbc""d-tirol.it\0nasu.tochigi.jp\0meet\0"
+"ed.cr\0edu.in\0"
+"vanylven.no\0"
+"an.it\0"
+"edu.iq\0"
+"edu.is\0dni.us\0"
+"edu.it\0"
+"soundandvision.museum\0"
+"condos\0"
+"kanie.aichi.jp\0jetzt\0eating-organic.net\0"
+"mulhouse.museum\0svizzera.museum\0"
+"engerdal.no\0club.tw\0"
+"kamijima.ehime.jp\0niikappu.hokkaido.jp\0zagan.pl\0"
+"tur.ar\0"
+"edu.jo\0"
+"cal.it\0bg.it\0inzai.chiba.jp\0"
+"monmouth.museum\0"
+"domains\0"
+"edu.kg\0gs.mr.no\0"
+"toyo.kochi.jp\0kitaaiki.nagano.jp\0bieszczady.pl\0"
+"edu.ki\0from-sd.com\0"
+"uchinomi.kagawa.jp\0takazaki.miyazaki.jp\0"
+"edu.km\0"
+"tur.br\0edu.kn\0"
+"bronnoysund.no\0"
+"edu.kp\0pup.gov.pl\0"
+"edu.la\0"
+"edu.lb\0"
+"edu.lc\0lug.org.uk\0"
+"edu.kw\0n\xc3\xa6r\xc3\xb8y.no\0"
+"andriabarlettatrani.it\0"
+"edu.ky\0watch-and-clock.museum\0"
+"edu.kz\0"
+"edu.lk\0bod\xc3\xb8.no\0"
+"cloudapps.digital\0"
+"kasserver.com\0"
+"ikano\0"
+"agrigento.it\0ci.it\0yazu.tottori.jp\0thruhere.net\0"
+"woltlab-demo.com\0"
+"edu.lr\0"
+"edu.ls\0alfaromeo\0devices.resinstaging.io\0"
+"obama.fukui.jp\0shopselect.net\0"
+"edu.me\0"
+"edu.lv\0"
+"edu.mg\0gs.nt.no\0lib.wi.us\0hermes\0"
+"omigawa.chiba.jp\0"
+"edu.ly\0ashgabad.su\0mircloud.ru\0"
+"int.is\0edu.mk\0webredirect.org\0"
+"\xe5\xba\x83\xe5\xb3\xb6.jp\0morioka.iwate.jp\0edu.ml\0vet\0"
+"edu.mn\0"
+"edu.mo\0kvam.no\0lab.ms\0"
+"cr.it\0"
+"yamaxun\0"
+"edu.ms\0"
+"vallee-d-aoste.it\0edu.mt\0"
+"edu.mv\0"
+"edu.mw\0edu.ng\0s\xc3\xb8gne.no\0independent-panel.uk\0"
+"minamiboso.chiba.jp\0miyazu.kyoto.jp\0itabashi.tokyo.jp\0edu.mx\0"
+"hawaii.museum\0edu.my\0edu.ni\0"
+"ha.cn\0edu.mz\0salon\0"
+"royrvik.no\0"
+"otake.hiroshima.jp\0"
+"k12.ma.us\0"
+"edu.nr\0"
+"matera.it\0minamidaito.okinawa.jp\0kofu.yamanashi.jp\0dell\0"
+"6.bg\0risor.no\0"
+"carraramassa.it\0genova.it\0minamiaiki.nagano.jp\0hoplix.shop\0"
+"int.la\0film\0pleskns.com\0"
+"gz.cn\0"
+"cc.mi.us\0"
+"edu.om\0myfast.space\0itcouldbewor.se\0"
+"skiptvet.no\0k12.mt.us\0"
+"monza.it\0sakegawa.yamagata.jp\0"
+"edu.pa\0"
+"int.lk\0"
+"fujishiro.ibaraki.jp\0kawanishi.nara.jp\0toyono.osaka.jp\0unazuki.toyama.jp\0mydatto.net\0ybo.faith\0"
+"edu.pe\0"
+"edu.pf\0"
+"edu.ph\0band\0"
+"bergen.no\0edu.pk\0"
+"ed.jp\0edu.pl\0"
+"honda\0meme\0my-gateway.de\0"
+"fortal.br\0nic.in\0edu.pn\0engineer\0"
+"k12.ok.us\0bank\0talk\0vig\0"
+"mobi.tt\0"
+"edu.qa\0"
+"edu.pr\0tourism.tn\0"
+"edu.ps\0graphics\0"
+"edu.pt\0"
+"mobi.tz\0vin\0"
+"vip\0barsy.net\0mypsx.net\0"
+"edu.py\0"
+"claims\0"
+"lucania.it\0\xe9\xb3\xa5\xe5\x8f\x96.jp\0"
+"int.mv\0anquan\0"
+"int.mw\0"
+"jls-sto1.elastx.net\0"
+"eisenbahn.museum\0int.ni\0webcam\0"
+"yusui.kagoshima.jp\0ent.platform.sh\0"
+"abbvie\0"
+"pmn.it\0is.gov.pl\0"
+"mo-siemens.io\0"
+"plc.ly\0menu\0"
+"sondrio.it\0framer.app\0"
+"edu.sa\0ddns5.com\0"
+"edu.sb\0"
+"edu.rs\0edu.sc\0"
+"trentino-sued-tirol.it\0shishikui.tokushima.jp\0edu.sd\0"
+"edu.ru\0"
"arab\0"
-"management\0"
-"bib.br\0amazon\0"
-"\xe5\x85\xac\xe7\x9b\x8a\0"
-"otama.fukushima.jp\0"
-"film\0"
-"cc.hn\0"
-"katashina.gunma.jp\0"
-"s3.dualstack.eu-west-3.amazonaws.com\0"
-"lib.md.us\0"
-"yamagata.ibaraki.jp\0pol.tr\0insurance\0"
-"valleeaoste.it\0nanbu.tottori.jp\0beauty\0"
-"amsterdam\0"
-"belem.br\0"
-"customer.speedpartner.de\0"
-"indiana.museum\0nannestad.no\0"
-"hotels\0meet\0"
-"kokonoe.oita.jp\0pagefrontapp.com\0"
-"cnt.br\0"
-"g\xc3\xa1ivuotna.no\0"
-"bs.it\0"
-"gd.cn\0edgecompute.app\0"
-"rochester.museum\0"
-"atl.jelastic.vps-host.net\0"
-"mt.it\0kimino.wakayama.jp\0"
-"usui.fukuoka.jp\0spot\0wmcloud.org\0"
-"de.eu.org\0mg.leg.br\0myactivedirectory.com\0"
-"tainai.niigata.jp\0izumiotsu.osaka.jp\0"
-"nanyo.yamagata.jp\0"
-"casadelamoneda.museum\0is-a-patsfan.org\0"
-"tsukuba.ibaraki.jp\0"
-"miyazaki.miyazaki.jp\0"
-"wsa.gov.pl\0"
-"hirono.fukushima.jp\0hino.tokyo.jp\0is-a-teacher.com\0"
-"mk.ua\0"
-"nankoku.kochi.jp\0dray-dns.de\0"
-"erotika.hu\0shiftedit.io\0"
-"from-mi.com\0"
-"kashiba.nara.jp\0"
-"az.us\0"
-"shunan.yamaguchi.jp\0k12.ks.us\0auction\0"
-"olbiatempio.it\0"
-"molise.it\0"
-"maritime.museum\0heroy.nordland.no\0"
-"plurinacional.bo\0"
-"hitachiomiya.ibaraki.jp\0murmansk.su\0"
-"wroclaw.pl\0"
-"desi\0"
-"yamanashi.jp\0"
-"iwate.iwate.jp\0"
-"suifu.ibaraki.jp\0jele.host\0"
+"sola.no\0edu.sg\0"
+"oncilla.mythic-beasts.com\0"
+"nago.okinawa.jp\0mima.tokushima.jp\0edu.sl\0sites.static.land\0"
+"filegear.me\0"
+"pro.az\0edu.sn\0"
+"broker.aero\0hyllestad.no\0edu.so\0v-info.info\0"
+"natori.miyagi.jp\0"
+"corporation.museum\0"
+"moskenes.no\0edu.ss\0"
+"takayama.gunma.jp\0takehara.hiroshima.jp\0hadano.kanagawa.jp\0edu.st\0"
+"pro.br\0edu.sv\0"
+"c.bg\0"
+"kikugawa.shizuoka.jp\0"
+"edu.sy\0*.ocs.customer-oci.com\0*.quipelements.com\0"
+"edu.tj\0*.gateway.dev\0"
+"int.pt\0budapest\0"
+"scienceandhistory.museum\0edu.tm\0"
+"coop.rw\0edu.to\0"
"ako.hyogo.jp\0"
-"milano.it\0go.dyndns.org\0"
-"fjaler.no\0"
-"hiraya.nagano.jp\0"
-"user.aseinet.ne.jp\0us.org\0ddnss.de\0"
-"keymachine.de\0"
-"stokke.no\0"
-"campania.it\0familyds.net\0"
-"cc.na\0"
+"bill.museum\0edu.ua\0fire\0"
+"edu.tr\0"
+"fitjar.no\0conn.uk\0"
+"muko.kyoto.jp\0swidnica.pl\0edu.tt\0"
+"l.bg\0edu.tw\0"
+"kaga.ishikawa.jp\0myfritz.net\0base.shop\0"
+"ancona.it\0toyooka.hyogo.jp\0demon.nl\0"
+"pro.cy\0mobi.na\0"
+"eid.no\0"
+"eu.int\0onjuku.chiba.jp\0kotohira.kagawa.jp\0publ.pt\0"
+"desi\0"
+"mobi.ng\0edu.vc\0"
+"lodi.it\0fish\0"
+"edu.ve\0from-or.com\0"
+"berlin\0"
+"u.bg\0pro.ec\0"
+"shinagawa.tokyo.jp\0"
+"edu.uy\0"
+"masoy.no\0no-ip.co.uk\0"
+"satosho.okayama.jp\0coop.tt\0"
+"mb.ca\0int.ru\0"
+"edu.vn\0"
+"tromsa.no\0"
+"wakayama.jp\0"
+"doesntexist.com\0"
+"ed.pw\0"
+"tsuruga.fukui.jp\0sytes.net\0"
+"forum.hu\0edu.vu\0"
+"slattum.no\0"
+"ogose.saitama.jp\0now-dns.top\0"
+"estate.museum\0"
+"juif.museum\0"
+"pro.fj\0coop.mv\0"
+"coop.mw\0fedje.no\0"
+"int.tj\0"
+"edu.ws\0"
+"torahime.shiga.jp\0*.banzai.cloud\0"
+"gose.nara.jp\0"
+"servehalflife.com\0"
+"kviteseid.no\0unjarga.no\0is-a-patsfan.org\0"
+"umbria.it\0ikata.ehime.jp\0int.tt\0"
+"cr.ua\0paas.massivegrid.com\0"
+"hs.kr\0"
+"tromso.no\0k12.sc.us\0"
+"lima.zone\0"
+"minamiise.mie.jp\0"
+"edu.ye\0"
+"ha.no\0cc.sc.us\0myspreadshop.co.uk\0"
+"wios.gov.pl\0"
+"sex.hu\0int.ve\0"
+"g12.br\0pony.club\0"
+"snillfjord.no\0"
+"motoyama.kochi.jp\0"
+"edu.za\0"
+"dabur\0"
+"eidsberg.no\0mo\xc3\xa5reke.no\0"
+"tenkawa.nara.jp\0northwesternmutual\0oxa.cloud\0"
+"coloradoplateau.museum\0"
+"int.vn\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0"
+"pro.ht\0"
"nm.cn\0"
-"hotelwithflight.com\0"
-"center\0fire\0"
-"ybo.science\0"
-"blackfriday\0"
-"mobi.tt\0"
-"memorial\0"
-"yn.cn\0"
-"eastafrica.museum\0spdns.eu\0"
-"po.gov.pl\0"
-"sakuragawa.ibaraki.jp\0mobi.tz\0\xe5\x85\xab\xe5\x8d\xa6\0"
-"imizu.toyama.jp\0"
-"newhampshire.museum\0fentiger.mythic-beasts.com\0*.quipelements.com\0"
-"niigata.niigata.jp\0"
-"accesscam.org\0"
-"nanae.hokkaido.jp\0"
-"fish\0"
-"ikeda.fukui.jp\0"
-"service.gov.scot\0"
-"from.hr\0luxembourg.museum\0vuelos\0home-webserver.de\0"
-"barsy.net\0"
-"toon.ehime.jp\0"
-"godaddy\0"
-"meme\0"
-"c.la\0"
-"l.bg\0marburg.museum\0"
-"from-oh.com\0adygeya.su\0"
-"\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x90\xe0\xb8\x9a\xe0\xb8\xb2\xe0\xb8\xa5.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"canada.museum\0"
-"shiraoka.saitama.jp\0roan.no\0"
-"orange\0"
-"re.it\0vlaanderen.museum\0"
-"com.ac\0"
-"com.af\0\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0"
+"rost.no\0pimienta.org\0"
+"edu.zm\0"
+"com.ac\0plc.uk\0"
+"tachiarai.fukuoka.jp\0"
+"mobi.ke\0coop.py\0lpusercontent.com\0"
+"com.af\0nissan\0"
"com.ag\0"
-"obira.hokkaido.jp\0"
-"com.ai\0lixil\0spdns.org\0"
+"com.ai\0of.by\0"
+"fuossko.no\0paris.eu.org\0"
"com.al\0"
"com.am\0"
-"k12.ec\0osteroy.no\0"
-"com.ba\0flor\xc3\xb8.no\0barsy.online\0"
-"com.ar\0com.bb\0moroyama.saitama.jp\0"
-"oum.gov.pl\0"
-"menu\0"
-"com.au\0"
-"not.br\0rockart.museum\0"
+"nic.tj\0"
+"b\xc3\xa1l\xc3\xa1t.no\0"
+"trentinoaltoadige.it\0\xe0\xb2\xad\xe0\xb2\xbe\xe0\xb2\xb0\xe0\xb2\xa4\0"
+"com.ba\0aip.ee\0luxe\0nissay\0br.com\0is-a-hard-worker.com\0"
+"com.ar\0com.bb\0cnt.br\0"
+"k12.tx.us\0"
+"aizuwakamatsu.fukushima.jp\0tajimi.gifu.jp\0"
+"com.au\0palmsprings.museum\0"
"com.aw\0"
-"com.bh\0wakayama.jp\0lib.nm.us\0"
-"com.bi\0ca.eu.org\0mcpre.ru\0"
-"com.az\0gov.nc.tr\0"
-"economia.bo\0"
-"com.bm\0"
+"com.bh\0"
+"com.bi\0"
+"com.az\0"
+"lighting\0vaporcloud.io\0"
+"com.bm\0lifestyle\0"
"com.bn\0"
-"com.bo\0"
-"takatori.nara.jp\0re.kr\0\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0"
-"mobi.na\0\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0kurgan.su\0"
-"com.br\0"
-"com.bs\0moriyama.shiga.jp\0"
-"com.bt\0moscow.museum\0"
-"kamiamakusa.kumamoto.jp\0minamiise.mie.jp\0mobi.ng\0"
-"kikugawa.shizuoka.jp\0shibuya.tokyo.jp\0"
-"4.bg\0com.by\0com.ci\0dyndns-server.com\0"
-"com.bz\0cl.it\0adygeya.ru\0"
-"hiji.oita.jp\0"
-"mielec.pl\0"
-"com.cm\0omotego.fukushima.jp\0"
-"com.cn\0piacenza.it\0freeddns.org\0"
-"com.co\0"
-"minamiechizen.fukui.jp\0ninja\0"
-"repbody.aero\0"
-"trento.it\0isa-geek.net\0"
-"com.cu\0com.de\0"
-"com.cw\0spdns.de\0"
-"com.cy\0"
-"okayama.okayama.jp\0"
-"cc.ua\0"
-"minami.tokushima.jp\0"
+"com.bo\0nhs.uk\0cc.tn.us\0"
+"taxi\0"
+"com.br\0kg.kr\0"
+"com.bs\0gos.pk\0dating\0"
+"com.bt\0li.it\0tourism.pl\0"
+"redumbrella\0for.sale\0"
+"bar.pro\0"
+"nsw.au\0com.by\0com.ci\0coop.km\0from-wv.com\0"
+"com.bz\0design\0"
+"\xe5\x8d\x83\xe8\x91\x89.jp\0miyoshi.tokushima.jp\0"
+"com.cm\0dolls.museum\0s3.dualstack.ap-northeast-2.amazonaws.com\0pagefrontapp.com\0"
+"com.cn\0"
+"com.co\0services\0"
+"oita.jp\0"
+"latrobe\0uber.space\0"
+"grp.lk\0"
+"mb.it\0takasu.hokkaido.jp\0saarland\0"
+"com.cu\0com.de\0c.la\0googlecode.com\0"
+"com.cv\0"
+"com.cw\0barsy.pro\0"
+"kujukuri.chiba.jp\0"
+"com.cy\0castle.museum\0"
+"is-a-knight.org\0"
+"kanmaki.nara.jp\0neyagawa.osaka.jp\0"
"com.dm\0"
-"aichi.jp\0dyn-vpn.de\0"
-"com.do\0"
-"otofuke.hokkaido.jp\0epson\0"
-"com.ec\0"
-"larvik.no\0"
-"com.ee\0naruto.tokushima.jp\0army\0"
-"entomology.museum\0"
-"com.eg\0trentinosud-tirol.it\0"
-"anjo.aichi.jp\0"
-"schools.nsw.edu.au\0noshiro.akita.jp\0"
+"com.do\0h\xc3\xb8yanger.no\0"
+"trentinos-tirol.it\0futurehosting.at\0"
+"com.ec\0roros.no\0k12.va.us\0"
+"westeurope.azurestaticapps.net\0"
+"com.ee\0"
+"com.eg\0vang.no\0"
+"pro.na\0"
"com.dz\0"
-"fujisawa.iwate.jp\0strand.no\0"
-"nagano.jp\0sukagawa.fukushima.jp\0"
-"nes.buskerud.no\0"
-"ome.tokyo.jp\0"
-"com.es\0is-a-rockstar.com\0"
-"com.et\0"
-"v\xc3\xa5gan.no\0"
-"bus.museum\0mt.us\0nd.us\0"
-"k12.il\0dance\0"
-"bar.pro\0"
-"com.fj\0togane.chiba.jp\0"
-"sakahogi.gifu.jp\0glass\0"
-"arpa\0com.fm\0"
-"fedje.no\0talk\0"
-"*.spectrum.myjino.ru\0zakopane.pl\0"
+"gifts\0press\0"
+"shioya.tochigi.jp\0"
+"*.paywhirl.com\0"
+"pro.mv\0"
+"cc.vi.us\0"
+"showa.fukushima.jp\0"
+"com.es\0k12.vt.us\0"
+"com.et\0mt.it\0sango.nara.jp\0kolobrzeg.pl\0"
+"lutsk.ua\0"
+"\xeb\x8b\xb7\xeb\x84\xb7\0"
+"shikatsu.aichi.jp\0nakadomari.aomori.jp\0kamigori.hyogo.jp\0"
+"com.fj\0barsy.pub\0"
+"com.fm\0trolley.museum\0"
+"arboretum.museum\0army\0ninja\0onthewifi.com\0"
"com.fr\0"
-"coop.ht\0"
-"of.by\0"
-"com.ge\0ondigitalocean.app\0"
-"forte.id\0"
-"com.gh\0"
+"investments\0ch.eu.org\0"
+"com.ge\0pro.om\0nic.za\0"
+"com.gh\0towada.aomori.jp\0beppu.oita.jp\0tadaoka.osaka.jp\0sex.pl\0"
"com.gi\0"
-"c.se\0uk.oxa.cloud\0bar0.net\0"
-"qld.gov.au\0brother\0"
-"com.gl\0"
+"win\0"
+"com.gl\0soma.fukushima.jp\0minamimaki.nagano.jp\0otaki.saitama.jp\0unnan.shimane.jp\0*.futurecms.at\0dsmynas.net\0"
"com.gn\0"
-"cloud.goog\0"
-"com.gp\0achi.nagano.jp\0h\xc3\xb8yanger.no\0herokuapp.com\0"
-"bomlo.no\0d\xc3\xb8nna.no\0singles\0alpha.bounty-full.com\0"
-"com.gr\0conn.uk\0"
-"!www.ck\0com.gt\0"
-"com.gu\0hinohara.tokyo.jp\0mobi.ke\0"
-"akishima.tokyo.jp\0b\xc3\xa1id\xc3\xa1r.no\0"
-"koeln\0"
-"com.gy\0from-ar.com\0cd.eu.org\0"
-"com.hk\0ancona.it\0"
-"\xe5\x85\xac\xe5\x8f\xb8\0"
+"com.gp\0"
+"com.gr\0"
+"divttasvuotna.no\0in-dsl.org\0"
+"com.gt\0noto.ishikawa.jp\0bizen.okayama.jp\0kakinoki.shimane.jp\0fujikawaguchiko.yamanashi.jp\0"
+"com.gu\0of.je\0"
+"selfip.org\0"
+"funahashi.toyama.jp\0"
+"arpa\0com.gy\0aquarium.museum\0"
+"pro.pr\0"
+"com.hk\0app.banzaicloud.io\0"
+"reggio-calabria.it\0iizuka.fukuoka.jp\0sakai.osaka.jp\0baseball\0"
"com.hn\0"
-"yoshida.saitama.jp\0"
-"ven.it\0inazawa.aichi.jp\0*.banzai.cloud\0"
-"coop.br\0"
-"com.hr\0free.hr\0"
-"cc.co.us\0"
-"com.ht\0bod\xc3\xb8.no\0"
-"adachi.tokyo.jp\0macys\0"
-"sjc.br\0"
-"toyota.yamaguchi.jp\0"
-"marketing\0"
-"computer\0"
+"kiho.mie.jp\0"
+"est-a-la-masion.com\0"
+"com.hr\0"
+"narviika.no\0sorum.no\0"
+"com.ht\0"
+"bplaced.com\0"
+"\xe5\x85\xac\xe7\x9b\x8a\0"
+"smart\0dynathome.net\0"
+"national.museum\0"
"com.im\0"
-"com.io\0mydrobo.com\0"
-"experts-comptables.fr\0yonaguni.okinawa.jp\0"
-"com.iq\0"
-"taifun-dns.de\0"
-"com.is\0"
-"u.bg\0higashimatsuyama.saitama.jp\0"
-"loginline.services\0"
-"bozen-sudtirol.it\0\xe6\x96\xb0\xe6\xbd\x9f.jp\0"
-"uzhgorod.ua\0"
-"map.fastlylb.net\0"
-"asda\0"
-"rn.it\0"
-"com.jo\0\xc3\xa1lt\xc3\xa1.no\0"
-"arte\0"
-"komatsu.ishikawa.jp\0"
-"yokkaichi.mie.jp\0"
-"luxe\0"
-"cherkassy.ua\0de.gt\0"
-"com.kg\0museumvereniging.museum\0kaluga.su\0"
-"devices.resinstaging.io\0"
-"com.ki\0embaixada.st\0"
-"messina.it\0\xe5\xa4\xa7\xe9\x98\xaa.jp\0"
-"gv.ao\0"
+"sn.cn\0"
+"com.io\0gildesk\xc3\xa5l.no\0\xc3\xb8rland.no\0"
+"com.iq\0\xd0\xbe\xd0\xbd\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd\0"
+"com.is\0il.us\0"
+"alaska.museum\0"
+"austrheim.no\0"
+"kasai.hyogo.jp\0kuzumaki.iwate.jp\0"
+"\xe6\xb7\xa1\xe9\xa9\xac\xe9\x94\xa1\0"
+"uenohara.yamanashi.jp\0"
+"jor.br\0"
+"ambulance.aero\0com.jo\0"
+"akune.kagoshima.jp\0wiih.gov.pl\0"
+"educational.museum\0wme\0"
+"langevag.no\0"
+"seven\0"
+"com.kg\0"
+"com.ki\0c.se\0"
+"zlg.br\0"
+"nishiokoppe.hokkaido.jp\0sakaiminato.tottori.jp\0tsuru.yamanashi.jp\0broke-it.net\0"
"com.km\0"
-"com.kp\0aviation.museum\0shell\0"
-"gv.at\0com.la\0"
+"yoshinogari.saga.jp\0com.kp\0"
+"com.la\0"
"com.lb\0"
"com.lc\0"
+"pz.it\0toyotsu.fukuoka.jp\0yaita.tochigi.jp\0"
+"broadcast.museum\0museumvereniging.museum\0chimkent.su\0"
"com.kw\0"
-"vf.no\0"
-"fujisato.akita.jp\0com.ky\0"
+"obuse.nagano.jp\0chofu.tokyo.jp\0"
+"ltd.cy\0com.ky\0bern.museum\0l.se\0asda\0"
"com.kz\0"
-"com.lk\0"
-"\xe6\xb2\x96\xe7\xb8\x84.jp\0barsy.pro\0"
-"bbva\0"
-"shimosuwa.nagano.jp\0"
-"omura.nagasaki.jp\0"
-"\xc3\xb8yer.no\0sorreisa.no\0"
-"com.lr\0gub.uy\0"
-"historical.museum\0l\xc3\xb8renskog.no\0shiksha\0"
-"com.lv\0cc.vi.us\0dynalias.net\0"
-"livorno.it\0kawaminami.miyazaki.jp\0com.mg\0"
-"com.ly\0"
-"seirou.niigata.jp\0com.mk\0trustee.museum\0"
-"com.ml\0"
-"com.mo\0"
-"crafts.museum\0of.je\0"
+"com.lk\0r\xc3\xb8mskog.no\0"
+"balsan.it\0shibata.miyagi.jp\0pro.tt\0discount\0"
+"arte\0"
+"of.no\0"
+"aoki.nagano.jp\0"
+"photography.museum\0"
+"com.lr\0"
+"journal.aero\0httpbin.org\0"
+"rc.it\0hitachiomiya.ibaraki.jp\0daito.osaka.jp\0kyuragi.saga.jp\0us.platform.sh\0"
+"com.lv\0"
+"com.mg\0"
+"com.ly\0u.se\0"
+"com.mk\0"
+"caserta.it\0shimada.shizuoka.jp\0oshima.tokyo.jp\0com.ml\0"
+"com.mo\0skanland.no\0"
+"higashikagura.hokkaido.jp\0swiebodzin.pl\0"
"com.na\0"
-"com.ms\0"
-"com.mt\0"
-"tomi.nagano.jp\0com.mu\0"
-"com.mv\0com.nf\0"
-"com.mw\0com.ng\0"
-"com.mx\0mw.gov.pl\0clickrising.net\0"
-"com.my\0com.ni\0exchange\0"
-"virtual.museum\0"
-"skaun.no\0"
-"barsy.pub\0"
-"com.nr\0"
-"campidano-medio.it\0"
-"hanyu.saitama.jp\0nid.io\0"
-"markets\0certmgr.org\0"
+"riopreto.br\0"
+"com.ms\0wow\0"
+"vao.it\0takahata.yamagata.jp\0com.mt\0"
+"com.mu\0"
+"com.mv\0com.nf\0pro.vn\0"
+"com.mw\0com.ng\0sm\xc3\xb8la.no\0"
+"com.mx\0"
+"film.hu\0stalbans.museum\0com.my\0com.ni\0bbva\0"
+"hammarfeasta.no\0ski.no\0"
+"foggia.it\0shitara.aichi.jp\0"
+"humanities.museum\0"
"\xd9\x83\xd9\x88\xd9\x85\0"
-"cloudycluster.net\0*.on-rancher.cloud\0"
-"*.kawasaki.jp\0k12.me.us\0"
-"bergbau.museum\0"
-"asia\0shinichi.hiroshima.jp\0com.om\0"
-"ovre-eiker.no\0"
-"accenture\0"
-"kasuga.hyogo.jp\0com.pa\0"
-"nm.us\0"
-"schlesisches.museum\0s\xc3\xb8mna.no\0"
-"s3.dualstack.us-east-2.amazonaws.com\0issmarterthanyou.com\0"
-"com.pe\0de.ls\0"
-"com.pf\0de.md\0"
-"suli.hu\0"
-"com.ph\0"
-"lewismiller.museum\0"
-"organic\0blog.gt\0"
-"com.pk\0"
-"com.pl\0"
-"\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93.jp\0"
-"ms.gov.br\0historyofscience.museum\0"
-"barletta-trani-andria.it\0holmestrand.no\0"
+"com.nr\0lancaster\0"
+"gloppen.no\0ky.us\0tunes\0at.eu.org\0protonet.io\0"
+"gallup\0"
+"emergency.aero\0"
+"cesena-forli.it\0"
+"ltd.gi\0"
+"austevoll.no\0hjartdal.no\0racing\0drud.io\0"
+"ogi.saga.jp\0"
+"com.om\0"
+"strand.no\0"
+"matsuura.nagasaki.jp\0kamikawa.saitama.jp\0"
+"com.pa\0mk.ua\0luxury\0"
+"yawara.ibaraki.jp\0"
+"com.pe\0"
+"com.pf\0"
+"trentins\xc3\xbc""d-tirol.it\0nakasatsunai.hokkaido.jp\0kokonoe.oita.jp\0com.ph\0"
+"youtube\0servemp3.com\0"
+"com.pk\0ltd.hk\0"
+"aikawa.kanagawa.jp\0com.pl\0zp.gov.pl\0homeunix.net\0"
+"santabarbara.museum\0"
+"wakasa.tottori.jp\0beta.tailscale.net\0"
"com.qa\0"
-"fukui.fukui.jp\0com.pr\0dontexist.net\0"
-"fla.no\0com.ps\0"
-"brussel.museum\0com.pt\0"
-"komono.mie.jp\0"
-"l.se\0"
-"kakegawa.shizuoka.jp\0"
-"komae.tokyo.jp\0com.py\0\xe5\x95\x86\xe5\xba\x97\0"
-"boleslawiec.pl\0"
-"k12.tr\0yali.mythic-beasts.com\0"
-"art.br\0fusa.no\0"
-"sakata.yamagata.jp\0discount\0"
-"abu.yamaguchi.jp\0"
-"us-gov-west-1.elasticbeanstalk.com\0jed.wafaicloud.com\0"
-"sakegawa.yamagata.jp\0"
-"vix.br\0asahi.ibaraki.jp\0ohira.miyagi.jp\0com.re\0"
-"kanie.aichi.jp\0natura\0"
-"graphics\0"
-"of.no\0"
-"philadelphiaarea.museum\0taxi\0"
-"mt.gov.br\0"
-"com.ro\0"
-"otsuchi.iwate.jp\0com.sa\0"
-"yawata.kyoto.jp\0com.sb\0"
-"yazu.tottori.jp\0com.sc\0"
-"com.sd\0k12.tx.us\0k12.vi\0withyoutube.com\0"
-"blog.bo\0com.se\0com.ru\0"
-"com.sg\0"
-"blog.br\0com.sh\0cc.ny.us\0tunk.org\0"
-"\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0no-ip.biz\0"
-"art.do\0\xe6\x8b\x9b\xe8\x81\x98\0githubpreview.dev\0"
-"com.sl\0"
-"bahn.museum\0com.sn\0"
-"ogori.fukuoka.jp\0com.so\0"
-"kainan.tokushima.jp\0"
-"usa.oita.jp\0hemsedal.no\0\xd8\xa7\xd8\xaa\xd8\xb5\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\0"
-"caxias.br\0mo\xc3\xa5reke.no\0skierva.no\0"
-"com.ss\0"
-"com.st\0"
-"art.dz\0kawaba.gunma.jp\0com.sv\0"
-"laspezia.it\0"
-"merseine.nu\0"
-"trentinos\xc3\xbc""dtirol.it\0com.sy\0"
-"com.tj\0eastasia.azurestaticapps.net\0"
-"loab\xc3\xa1t.no\0poltava.ua\0*.customer-oci.com\0"
+"ribeirao.br\0com.pr\0"
+"com.ps\0fresenius\0\xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x9f\0ae.org\0"
+"toki.gifu.jp\0ota.gunma.jp\0higashisumiyoshi.osaka.jp\0com.pt\0"
+"finearts.museum\0"
+"passenger-association.aero\0zapto.org\0"
+"asia\0lajolla.museum\0com.py\0"
+"gleeze.com\0loginline.site\0"
+"\xe5\x85\xab\xe5\x8d\xa6\0"
+"fyresdal.no\0wtc\0*.dweb.link\0"
+"masuda.shimane.jp\0"
+"bible.museum\0"
+"wtf\0"
+"svalbard.no\0mandal.no\0mt.us\0nd.us\0"
+"tp.it\0noshiro.akita.jp\0"
+"com.re\0amsterdam\0online\0"
+"blockbuster\0"
+"circle\0"
+"asahi.ibaraki.jp\0kanuma.tochigi.jp\0"
+"rl.no\0com.ro\0"
+"minano.saitama.jp\0"
+"com.sa\0"
+"com.sb\0"
+"sandefjord.no\0com.sc\0nm.us\0ox.rs\0"
+"sth.ac.at\0com.sd\0\xe6\x8b\x9b\xe8\x81\x98\0"
+"com.se\0com.ru\0"
+"nesset.no\0com.sg\0"
+"com.sh\0"
+"pharmacien.fr\0"
+"tran\xc3\xb8y.no\0"
+"harima.hyogo.jp\0com.sl\0"
+"com.sn\0repair\0"
+"com.so\0barsy.org\0"
+"utashinai.hokkaido.jp\0oishida.yamagata.jp\0"
+"settlers.museum\0"
+"com.ss\0nv.us\0"
+"vb.it\0tokorozawa.saitama.jp\0com.st\0"
+"medical.museum\0"
+"com.sv\0"
+"systems\0"
+"shikabe.hokkaido.jp\0fastblog.net\0"
+"cheltenham.museum\0lucerne.museum\0com.sy\0"
+"com.tj\0za.bz\0"
+"ltd.lk\0"
+"fedex\0"
"com.tm\0"
-"com.tn\0turen.tn\0"
-"teramo.it\0com.to\0"
+"com.tn\0"
+"com.to\0"
+"sakawa.kochi.jp\0"
"com.ua\0"
"com.tr\0"
-"com.tt\0"
-"pilot.aero\0"
-"com.tw\0com.ug\0audible\0"
-"ezproxy.kuleuven.be\0"
-"yasaka.nagano.jp\0"
-"cremona.it\0j.scaleforce.com.cy\0"
-"chicago.museum\0"
-"tamaki.mie.jp\0"
-"seki.gifu.jp\0timekeeping.museum\0lib.ok.us\0"
-"tysv\xc3\xa6r.no\0"
-"reliance\0"
-"com.vc\0in-vpn.net\0"
-"is-a-musician.com\0"
-"com.ve\0"
-"cam.it\0nisshin.aichi.jp\0takahama.fukui.jp\0aga.niigata.jp\0\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9\0"
-"zarow.pl\0cc.la.us\0com.uy\0com.vi\0"
+"odda.no\0"
+"ven.it\0altoadige.it\0com.tt\0museum.tt\0"
+"actor\0"
+"com.tw\0com.ug\0network\0"
+"*.compute-1.amazonaws.com\0"
+"zj.cn\0"
+"gulen.no\0"
+"3utilities.com\0"
+"rade.no\0com.vc\0"
+"teramo.it\0vt.it\0"
+"com.ve\0\xd0\xba\xd1\x80\xd1\x8b\xd0\xbc.\xd1\x80\xd1\x83\xd1\x81\0"
+"nsn.us\0is-very-evil.org\0ltd.ng\0"
+"philately.museum\0com.uy\0com.vi\0"
"com.uz\0"
-"kyiv.ua\0"
-"california.museum\0"
-"ibaraki.osaka.jp\0\xc3\xa5krehamn.no\0com.vn\0"
-"kokubunji.tokyo.jp\0skjervoy.no\0"
+"dielddanuorri.no\0"
+"ascolipiceno.it\0\xe5\xb2\x90\xe9\x98\x9c.jp\0inatsuki.fukuoka.jp\0"
+"pixolino.com\0"
+"com.vn\0"
+"istanbul\0"
+"no-ip.org\0"
+"fudai.iwate.jp\0"
"com.vu\0"
-"szex.hu\0"
-"telebit.io\0"
-"bearalvahki.no\0"
-"art.ht\0"
+"autos\0"
+"healthcare\0"
+"xin\0"
+"sande.vestfold.no\0"
+"trentino-altoadige.it\0tajiri.osaka.jp\0onavstack.net\0xx.gl\0"
+"pharmacy\0ybo.science\0"
+"sciencesnaturelles.museum\0mobile\0"
+"com.ws\0barrell-of-knowledge.info\0"
+"koga.fukuoka.jp\0dynu.net\0"
+"american.museum\0"
+"s3-website-us-east-1.amazonaws.com\0"
+"uchiko.ehime.jp\0otobe.hokkaido.jp\0shiriuchi.hokkaido.jp\0"
+"frog.museum\0is-a-geek.com\0"
+"ballangen.no\0"
+"nativeamerican.museum\0com.ye\0yokohama\0"
+"oppeg\xc3\xa5rd.no\0lib.gu.us\0"
+"kadoma.osaka.jp\0"
+"oregon.museum\0zone\0dscloud.me\0"
+"monza-e-della-brianza.it\0ide.kyoto.jp\0"
+"fribourg.museum\0"
+"dep.no\0fairwinds\0"
+"mutual\0sg-1.paas.massivegrid.net\0"
+"gs.aa.no\0"
+"kawagoe.saitama.jp\0\xe7\xa7\xbb\xe5\x8a\xa8\0"
+"protection\0"
+"hosting\0"
+"\xd9\x85\xd8\xb5\xd8\xb1\0com.zm\0from-ky.com\0"
+"s\xc3\xbc""dtirol.it\0contact\0"
+"dyndns-free.com\0"
+"aparecida.br\0"
+"gs.svalbard.no\0"
+"yatsushiro.kumamoto.jp\0cheap\0"
+"m\xc3\xa1latvuopmi.no\0"
+"\xe0\xb4\xad\xe0\xb4\xbe\xe0\xb4\xb0\xe0\xb4\xa4\xe0\xb4\x82\0"
+"drud.us\0"
+"mie.jp\0\xe5\x85\xac\xe5\x8f\xb8\0"
+"hof.no\0"
+"star\0"
+"fuso.aichi.jp\0"
+"chippubetsu.hokkaido.jp\0"
+"ltd.ua\0omniwe.site\0"
+"tadotsu.kagawa.jp\0"
+"filegear-ie.me\0"
+"takikawa.hokkaido.jp\0tawaramoto.nara.jp\0zgora.pl\0coach\0host\0"
+"ltd.uk\0"
+"es.leg.br\0"
+"tysfjord.no\0washtenaw.mi.us\0"
+"kddi\0"
+"larvik.no\0"
+"sassari.it\0fukui.fukui.jp\0taishi.osaka.jp\0vip.jelastic.cloud\0"
+"museum.mv\0"
+"museum.mw\0gs.bu.no\0bardu.no\0*.sch.uk\0builders\0versicherung\0"
+"bozen-s\xc3\xbc""dtirol.it\0kuchinotsu.nagasaki.jp\0rybnik.pl\0"
+"miyawaka.fukuoka.jp\0kanra.gunma.jp\0ayabe.kyoto.jp\0nagatoro.saitama.jp\0podlasie.pl\0"
+"delta\0isa-hockeynut.com\0exnet.su\0barsy.mobi\0"
+"museum.no\0frogn.no\0"
+"kakamigahara.gifu.jp\0"
+"cloudns.eu\0"
+"pa.gov.br\0"
+"\xc3\xa5krehamn.no\0diamonds\0"
+"kameoka.kyoto.jp\0"
+"notaires.km\0"
+"611.to\0"
+"taketa.oita.jp\0hicam.net\0clan.rip\0"
+"snoasa.no\0"
+"matsuyama.ehime.jp\0yamagata.gifu.jp\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0bplaced.net\0"
+"freemasonry.museum\0quebec.museum\0museum.om\0git-pages.rit.edu\0"
+"\xd0\xba\xd0\xb0\xd1\x82\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xba\0"
+"ichinomiya.aichi.jp\0"
+"tochigi.jp\0amakusa.kumamoto.jp\0abeno.osaka.jp\0"
+"fst.br\0githubpreview.dev\0"
+"raholt.no\0\xe5\x95\x86\xe5\xba\x97\0"
+"genoa.it\0shibecha.hokkaido.jp\0"
+"narusawa.yamanashi.jp\0"
+"k12.as.us\0"
+"pb.gov.br\0realtor\0"
+"au.eu.org\0be.eu.org\0"
+"fujinomiya.shizuoka.jp\0"
+"s3.dualstack.ca-central-1.amazonaws.com\0"
+"yorkshire.museum\0"
+"jevnaker.no\0cc.as.us\0"
+"wsa.gov.pl\0"
+"c66.me\0cloud.nospamproxy.com\0"
+"pinb.gov.pl\0"
+"tydal.no\0vt.us\0"
+"sakahogi.gifu.jp\0"
+"virtual.museum\0"
+"vall\xc3\xa9""e-aoste.it\0kyowa.hokkaido.jp\0tsukuba.ibaraki.jp\0takahashi.okayama.jp\0"
+"cloudns.in\0"
+"trentin-s\xc3\xbc""d-tirol.it\0r.cdn77.net\0"
+"hostyhosting.io\0"
+"platform0.app\0homeip.net\0"
+"flir\0"
+"geo.br\0"
+"operaunite.com\0"
+"bodo.no\0is-a-geek.org\0"
+"matsue.shimane.jp\0"
+"wellbeingzone.eu\0"
+"\xe7\xbd\x91\xe7\xbb\x9c.cn\0"
+"aurskog-h\xc3\xb8land.no\0cloudns.cc\0"
+"kiyosato.hokkaido.jp\0kawanehon.shizuoka.jp\0in-dsl.net\0"
+"wv.us\0"
+"nakagyo.kyoto.jp\0"
+"alipay\0"
+"macys\0"
+"verona.it\0oto.fukuoka.jp\0kahoku.ishikawa.jp\0gyokuto.kumamoto.jp\0haebaru.okinawa.jp\0naha.okinawa.jp\0"
+"control.aero\0k12.co.us\0"
+"kawamata.fukushima.jp\0okegawa.saitama.jp\0"
+"lindas.no\0bg.eu.org\0"
+"hasvik.no\0lib.ny.us\0"
+"hidaka.hokkaido.jp\0showa.yamanashi.jp\0mysecuritycamera.net\0"
+"verm\xc3\xb6gensberatung\0"
+"namie.fukushima.jp\0shirakawa.fukushima.jp\0hofu.yamaguchi.jp\0"
+"art.museum\0maritimo.museum\0"
+"pordenone.it\0"
+"ac.ae\0"
+"aknoluokta.no\0pictures\0"
+"andria-trani-barletta.it\0nextdirect\0"
+"mordovia.su\0"
+"tkmaxx\0blogspot.co.at\0"
+"verbania.it\0"
+"serveirc.com\0"
+"ollo\0"
+"ac.at\0"
+"ac.be\0"
+"gs.jan-mayen.no\0homeftp.org\0"
+"kamiichi.toyama.jp\0xxx\0*.rss.my.id\0"
+"caravan\0"
+"\xe6\x95\x8e\xe8\x82\xb2.hk\0"
+"\xe5\xa4\xa7\xe5\x88\x86.jp\0mihama.aichi.jp\0"
+"vicenza.it\0ozu.ehime.jp\0kannami.shizuoka.jp\0"
+"amfam\0"
+"pfizer\0"
+"matsuno.ehime.jp\0"
+"ac.ci\0impertrix.com\0"
+"xyz\0"
+"lodingen.no\0\xe5\x98\x89\xe9\x87\x8c\xe5\xa4\xa7\xe9\x85\x92\xe5\xba\x97\0"
+"ac.cn\0"
+"\xe7\xbd\x91\xe7\xbb\x9c.hk\0spacekit.io\0"
+"sakata.yamagata.jp\0dynv6.net\0"
+"columbia.museum\0rar.ve\0"
+"ac.cr\0"
+"airtraffic.aero\0for-our.info\0"
+"brasil.museum\0"
+"net.ac\0"
+"ravenna.it\0be.ax\0"
+"net.ae\0ac.cy\0mordovia.ru\0site.tb-hosting.com\0"
+"net.af\0"
+"net.ag\0"
+"tokushima.jp\0genkai.saga.jp\0"
+"net.ai\0ferrari\0travelersinsurance\0us-east-1.elasticbeanstalk.com\0"
+"net.al\0ando.nara.jp\0"
+"net.am\0qld.gov.au\0"
+"fukuchiyama.kyoto.jp\0"
+"net.ba\0"
+"net.ar\0net.bb\0qpon\0"
+"js.org\0"
+"molise.it\0"
+"net.au\0"
+"net.bh\0ono.fukushima.jp\0yokoze.saitama.jp\0"
+"cartoonart.museum\0"
+"net.az\0"
+"kvinesdal.no\0"
+"net.bm\0today\0"
+"net.bn\0"
+"net.bo\0"
+"yodobashi\0"
+"net.br\0"
+"net.bs\0hr.eu.org\0"
+"net.bt\0"
+"axis.museum\0pdns.page\0"
+"ac.fj\0"
+"suldal.no\0kerryhotels\0"
+"takahagi.ibaraki.jp\0ugim.gov.pl\0"
+"net.ci\0"
+"net.bz\0"
+"agents.aero\0"
+"usuki.oita.jp\0"
+"net.cm\0"
+"net.cn\0boehringer\0"
+"net.co\0"
+"*.elb.amazonaws.com.cn\0"
+"chosei.chiba.jp\0nagareyama.chiba.jp\0ofunato.iwate.jp\0oyabe.toyama.jp\0"
+"net.cu\0team\0homesecuritypc.com\0"
+"net.cw\0stj\xc3\xb8rdalshalsen.no\0stange.no\0"
+"kawanishi.hyogo.jp\0"
+"net.cy\0"
+"ac.gn\0"
+"net.dm\0"
+"net.do\0s\xc3\xb8r-varanger.no\0homeunix.org\0"
+"dental\0"
+"audi\0dyndns-work.com\0"
+"net.ec\0"
+"kasukabe.saitama.jp\0homesklep.pl\0"
+"net.eg\0"
+"nishimera.miyazaki.jp\0blogspot.co.id\0"
+"net.dz\0"
+"hagi.yamaguchi.jp\0"
+"ac.id\0hamura.tokyo.jp\0arida.wakayama.jp\0tech\0travel\0blogspot.co.il\0"
+"yalta.ua\0you\0"
+"j\xc3\xb8rpeland.no\0"
+"net.et\0barlettatraniandria.it\0otofuke.hokkaido.jp\0"
+"force.museum\0"
+"oyer.no\0"
+"ac.il\0\xe4\xbd\x90\xe8\xb3\x80.jp\0bungotakada.oita.jp\0ch.trendhosting.cloud\0"
+"ac.im\0ulm.museum\0filegear-jp.me\0virtualuser.de\0"
+"net.fj\0ac.in\0beer\0"
+"caa.aero\0"
+"net.fm\0"
+"ac.ir\0"
+"logistics.aero\0cloudns.us\0"
+"amagasaki.hyogo.jp\0shiiba.miyazaki.jp\0diet\0"
+"pi.gov.br\0name.hr\0\xda\x80\xd8\xa7\xd8\xb1\xd8\xaa\0"
+"taishi.hyogo.jp\0"
+"net.ge\0be.gy\0"
+"net.gg\0holdings\0game-host.org\0"
+"friulive-giulia.it\0trentino-sudtirol.it\0hokuto.hokkaido.jp\0"
+"niteroi.br\0"
+"nesseby.no\0lefrak\0"
+"net.gl\0ac.jp\0ono.fukui.jp\0"
+"net.gn\0dealer\0"
+"net.gp\0al.it\0mutsu.aomori.jp\0"
+"ac.ke\0"
+"net.gr\0"
+"kvits\xc3\xb8y.no\0"
+"name.et\0net.gt\0"
+"net.gu\0bugatti\0"
+"fukudomi.saga.jp\0final\0"
+"net.gy\0"
+"name.fj\0selfip.biz\0"
+"net.hk\0"
+"architecture.museum\0pagespeedmobilizer.com\0plesk.page\0qbuser.com\0"
+"net.hn\0ac.kr\0"
+"\xe6\x89\x8b\xe6\x9c\xba\0"
+"mypep.link\0"
+"net.ht\0net.id\0awaji.hyogo.jp\0tarama.okinawa.jp\0"
+"ac.lk\0"
+"bolzano.it\0"
+"from-id.com\0"
+"namsos.no\0"
+"net.il\0piemonte.it\0"
+"net.im\0ac.ma\0gripe\0"
+"fm.br\0net.in\0"
+"ac.ls\0"
+"bn.it\0kitami.hokkaido.jp\0"
+"net.iq\0ac.me\0"
+"net.ir\0"
+"net.is\0"
+"co.financial\0"
+"wa.edu.au\0net.je\0project.museum\0caa.li\0"
+"contagem.br\0"
+"int.eu.org\0"
+"viterbo.it\0katsushika.tokyo.jp\0"
+"takagi.nagano.jp\0kamo.niigata.jp\0"
+"ambulance.museum\0"
+"net.jo\0"
+"no-ip.net\0"
+"ac.mu\0jcloud.ik-server.com\0"
+"dyndns.biz\0"
+"ac.mw\0"
+"sakai.fukui.jp\0aridagawa.wakayama.jp\0"
+"ac.ni\0"
+"ac.mz\0"
+"name.eg\0net.kg\0"
+"sannan.hyogo.jp\0ichikai.tochigi.jp\0"
+"net.ki\0safety\0"
+"yun\0"
+"lillehammer.no\0"
+"tra.kp\0onflashdrive.app\0"
+"starnberg.museum\0"
+"net.kn\0"
+"perso.ht\0"
+"net.la\0"
+"net.lb\0"
+"net.lc\0b\xc3\xa1id\xc3\xa1r.no\0"
+"sosnowiec.pl\0eu.encoway.cloud\0"
+"go.ci\0arteducation.museum\0"
+"ac.nz\0"
+"net.kw\0"
+"kitamoto.saitama.jp\0"
+"net.ky\0"
+"name.az\0net.kz\0"
+"net.lk\0al.no\0"
+"bulsan.it\0!city.nagoya.jp\0yamatsuri.fukushima.jp\0"
+"act.au\0ac.pa\0"
+"go.cr\0"
+"stryn.no\0"
+"net.ma\0is-a-personaltrainer.com\0"
+"net.lr\0koeln\0"
+"net.ls\0"
+"net.me\0"
+"net.lv\0"
+"4.bg\0lib.wy.us\0"
+"tahara.aichi.jp\0"
+"net.ly\0"
+"gx.cn\0"
+"dgca.aero\0net.mk\0is-by.us\0"
+"net.ml\0"
+"mintere.site\0"
+"ac.pr\0"
+"net.mo\0"
+"monzaedellabrianza.it\0mashiko.tochigi.jp\0"
+"alsace\0"
+"net.ms\0americanexpress\0"
+"otsuki.yamanashi.jp\0net.mt\0"
+"net.mu\0"
+"net.mv\0net.nf\0"
+"net.mw\0net.ng\0"
+"net.mx\0walmart\0"
+"net.my\0net.ni\0grondar.za\0\xd0\xbc\xd0\xb8\xd1\x80.\xd1\x80\xd1\x83\xd1\x81\0"
+"adm.br\0net.mz\0"
+"inawashiro.fukushima.jp\0centralus.azurestaticapps.net\0"
+"sci.eg\0is-a-chef.org\0"
+"kyotanabe.kyoto.jp\0"
+"motorcycle.museum\0"
+"pe.gov.br\0net.nr\0"
+"elverum.no\0"
+"kazuno.akita.jp\0half.host\0"
+"presidio.museum\0"
+"rodoy.no\0sk\xc3\xa1nit.no\0"
+"nakagawa.fukuoka.jp\0wanouchi.gifu.jp\0it1.jenv-aruba.cloud\0"
+"adv.br\0net.nz\0"
+"ngo.lk\0"
+"zip\0redirectme.net\0"
+"net.om\0"
+"ac.rs\0"
+"kakuda.miyagi.jp\0oum.gov.pl\0"
+"lakas.hu\0net.pa\0ac.se\0ac.ru\0"
+"ac.rw\0"
+"nagasu.kumamoto.jp\0muika.niigata.jp\0toga.toyama.jp\0"
+"net.pe\0mini\0"
+"herad.no\0"
+"net.ph\0etisalat\0"
+"dyndns-mail.com\0myqnapcloud.com\0"
+"net.pk\0"
+"osakasayama.osaka.jp\0sugito.saitama.jp\0net.pl\0"
+"ybo.party\0"
+"net.pn\0"
+"fm.it\0mint\0"
+"net.qa\0cyou\0"
+"net.pr\0"
+"net.ps\0loans\0"
+"ibaraki.ibaraki.jp\0net.pt\0ac.th\0hyatt\0"
+"wales.museum\0balashov.su\0"
+"ac.sz\0ac.tj\0wolterskluwer\0"
+"ngo.ng\0"
+"itami.hyogo.jp\0namegata.ibaraki.jp\0nakagawa.nagano.jp\0"
+"lancashire.museum\0muenchen.museum\0net.py\0"
+"jl.cn\0"
+"airport.aero\0cc.ok.us\0potager.org\0"
"murata.miyagi.jp\0"
-"groks-the.info\0vaporcloud.io\0"
-"com.ws\0"
-"floripa.br\0""3utilities.com\0"
-"far.br\0"
-"woltlab-demo.com\0"
-"fukuroi.shizuoka.jp\0"
-"morimachi.shizuoka.jp\0bridgestone\0"
-"bestbuy\0"
-"keliweb.cloud\0"
-"cleverapps.io\0"
-"yamagata.gifu.jp\0"
-"yoshino.nara.jp\0"
-"de.us\0com.ye\0svn-repos.de\0"
-"coop.rw\0k12.nh.us\0"
-"landrover\0azure-mobile.net\0"
-"ogawara.miyagi.jp\0cc.hi.us\0"
-"ekloges.cy\0pri.ee\0"
-"puglia.it\0nv.us\0"
-"paas.hosted-by-previder.com\0"
-"gru.br\0idv.hk\0"
-"now-dns.net\0"
-"koza.wakayama.jp\0\xd0\xba\xd1\x80\xd1\x8b\xd0\xbc.\xd1\x80\xd1\x83\xd1\x81\0"
-"\xe9\x9d\x92\xe6\xa3\xae.jp\0"
-"nakamichi.yamanashi.jp\0"
-"nalchik.ru\0"
-"b\xc3\xa6rum.no\0"
-"poa.br\0kiwi.nz\0"
-"com.zm\0"
-"patria.bo\0fukuoka.jp\0urasoe.okinawa.jp\0bjugn.no\0"
-"sakyo.kyoto.jp\0"
-"omigawa.chiba.jp\0u.se\0"
-"coop.tt\0"
-"\xd9\x85\xd8\xb5\xd8\xb1\0"
-"uhren.museum\0"
-"hamada.shimane.jp\0other.nf\0"
-"lg.jp\0nalchik.su\0ent.platform.sh\0"
-"shinanomachi.nagano.jp\0"
-"lucca.it\0kamakura.kanagawa.jp\0"
-"rec.br\0steinkjer.no\0house\0"
-"daplie.me\0"
-"loans\0"
-"avoues.fr\0eiheiji.fukui.jp\0kishiwada.osaka.jp\0"
-"gamvik.no\0"
-"dnepropetrovsk.ua\0yalta.ua\0"
-"pictet\0barsy.org\0"
-"ltd.cy\0coop.mv\0"
-"coop.mw\0motorcycles\0"
-"skodje.no\0"
-"rec.co\0"
-"forgot.his.name\0"
-"aero.tt\0"
-"building.museum\0freesite.host\0"
-"\xe5\x85\xac\xe5\x8f\xb8.\xe9\xa6\x99\xe6\xb8\xaf\0\xe9\x9b\x86\xe5\x9b\xa2\0"
-"shingu.wakayama.jp\0"
-"cc.or.us\0"
-"liguria.it\0"
-"podzone.net\0"
-"skedsmokorset.no\0mazowsze.pl\0ivano-frankivsk.ua\0"
+"dr.na\0"
+"\xd9\xbe\xd8\xa7\xda\xa9\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0"
+"blogspot.co.uk\0"
+"go.id\0oiso.kanagawa.jp\0miasta.pl\0consulado.st\0"
+"artsandcrafts.museum\0epilepsy.museum\0"
+"ac.ug\0cloudns.pw\0"
+"nom.ad\0fujiyoshida.yamanashi.jp\0"
+"agric.za\0"
+"ac.tz\0"
+"nom.ag\0a.bg\0ac.uk\0"
+"ibigawa.gifu.jp\0primetel.cloud\0"
+"is-a-musician.com\0"
+"notaires.fr\0"
+"abr.it\0discourse.group\0"
+"reservd.disrec.thingdust.io\0"
+"go.it\0android\0"
+"net.sa\0stada\0hopto.me\0"
+"net.sb\0"
+"bjarkoy.no\0net.sc\0"
+"olbiatempio.it\0net.sd\0map.fastlylb.net\0"
+"georgia.museum\0dopaas.com\0net.ru\0",
+
+"j.bg\0net.rw\0net.sg\0*.advisor.ws\0nh-serv.co.uk\0"
+"shinonsen.hyogo.jp\0ngo.ph\0net.sh\0"
+"kunstsammlung.museum\0\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0"
+"ac.vn\0"
+"b\xc3\xb8.telemark.no\0malatvuopmi.no\0hamburg\0reservd.dev.thingdust.io\0"
+"go.jp\0otsuchi.iwate.jp\0net.sl\0"
+"net.so\0al.us\0"
+"bounceme.net\0"
+"go.ke\0"
+"porsgrunn.no\0net.ss\0"
+"!city.yokohama.jp\0tarnobrzeg.pl\0net.st\0dish\0"
+"is-a-chef.com\0"
+"s.bg\0gjerdrum.no\0"
+"shiogama.miyagi.jp\0tara.saga.jp\0yamada.toyama.jp\0net.th\0"
+"net.sy\0"
+"net.tj\0"
+"s\xc3\xb8r-aurdal.no\0"
+"pa.gov.pl\0best\0"
+"net.tm\0"
+"go.kr\0net.tn\0surf\0\xd8\xa7\xd9\x84\xd8\xb9\xd9\x84\xd9\x8a\xd8\xa7\xd9\x86\0"
+"nom.co\0net.to\0"
+"shingu.fukuoka.jp\0oizumi.gunma.jp\0obira.hokkaido.jp\0chizu.tottori.jp\0"
+"civilization.museum\0net.ua\0pokrovsk.su\0"
+"net.tr\0"
+"nakagawa.hokkaido.jp\0sanagochi.tokushima.jp\0net.tt\0bc.platform.sh\0"
+"portal.museum\0"
+"prd.fr\0*.lclstage.dev\0"
+"net.tw\0auto\0public-inquiry.uk\0"
+"banamex\0"
+"fm.no\0luroy.no\0net.uk\0"
+"visa\0selfip.com\0fastvps-server.com\0co.place\0"
+"lindesnes.no\0rakkestad.no\0net.vc\0"
+"imakane.hokkaido.jp\0"
+"net.ve\0fnwk.site\0"
+"karm\xc3\xb8y.no\0"
+"soo.kagoshima.jp\0"
+"net.uy\0net.vi\0"
+"net.uz\0"
+"marriott\0"
+"nb.ca\0ac.za\0prime\0"
+"net.vn\0"
+"bryne.no\0"
+"lig.it\0is.it\0bihoro.hokkaido.jp\0"
+"niepce.museum\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\xe0\xa4\xae\xe0\xa5\x8d\0"
+"student.aero\0nom.es\0il.eu.org\0"
+"*.kitakyushu.jp\0inuyama.aichi.jp\0"
+"net.vu\0mydrobo.com\0"
+"aramco\0weibo\0"
+"is-a-geek.net\0"
+"ac.zm\0blogspot.co.ke\0"
+"broker\0"
+"barrel-of-knowledge.info\0"
+"hasura-app.io\0"
+"nt.au\0from-mt.com\0from-nd.com\0"
+"far.br\0nom.fr\0"
+"net.ws\0ac.zw\0platterp.us\0"
+"targi.pl\0"
+"nature.museum\0supply\0s3-ap-south-1.amazonaws.com\0official.academy\0"
+"rovigo.it\0joboji.iwate.jp\0"
+"teva\0s3-ap-southeast-2.amazonaws.com\0"
+"saga.saga.jp\0"
+"nt.ca\0london.museum\0viva\0"
+"dr.tr\0name.vn\0"
+"qa2.com\0"
+"pr.gov.br\0free.hr\0"
+"hu.eu.org\0ie.eu.org\0"
+"kagawa.jp\0kumamoto.kumamoto.jp\0azure-mobile.net\0"
+"net.ye\0"
+"surgeonshall.museum\0"
+"vivo\0mysecuritycamera.org\0"
+"tagami.niigata.jp\0"
+"\xe0\xb8\x97\xe0\xb8\xab\xe0\xb8\xb2\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"winb.gov.pl\0"
+"prd.km\0fundacio.museum\0net.za\0mycd.eu\0"
+"go.pw\0"
+"aoste.it\0firenze.it\0namikata.ehime.jp\0"
+"her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0phx.enscaled.us\0"
+"arezzo.it\0gotsu.shimane.jp\0router.management\0"
+"name.tj\0"
+"higashiomi.shiga.jp\0"
+"net.zm\0"
+"plumbing\0"
+"homeftp.net\0"
+"film.museum\0"
+"adv.mz\0name.tr\0"
+"name.tt\0"
+"browsersafetymark.io\0"
+"soka.saitama.jp\0"
+"prd.mg\0mosj\xc3\xb8""en.no\0"
+"lg.jp\0"
+"blogspot.co.nz\0"
+"shikaoi.hokkaido.jp\0"
+"s3-ap-northeast-1.amazonaws.com\0"
+"qcx.io\0"
+"gratangen.no\0"
+"tokigawa.saitama.jp\0aogashima.tokyo.jp\0tmall\0ju.mp\0"
+"nom.km\0lviv.ua\0ui.nabu.casa\0"
+"cn-northwest-1.eb.amazonaws.com.cn\0"
+"mi.it\0obama.nagasaki.jp\0"
+"ngo.za\0ravendb.me\0"
+"flora.no\0"
+"bifuka.hokkaido.jp\0shinjuku.tokyo.jp\0go.th\0"
+"from-wy.com\0"
+"go.tj\0"
+"rygge.no\0"
+"iwatsuki.saitama.jp\0"
+"qh.cn\0"
+"bearalvahki.no\0"
+"sic.it\0naganohara.gunma.jp\0numazu.shizuoka.jp\0"
+"firmdale\0"
+"aostavalley.it\0"
+"stordal.no\0tolga.no\0go.ug\0"
+"horse\0"
+"go.tz\0"
+"nom.mg\0"
+"takayama.nagano.jp\0"
+"perso.sn\0"
+"isa.us\0"
+"sciences.museum\0rs.ba\0"
+"modalen.no\0k12.wa.us\0"
+"nishiazai.shiga.jp\0futuremailing.at\0"
+"name.qa\0is-a-nascarfan.com\0"
+"name.pr\0"
+"nom.nc\0bjugn.no\0homegoods\0"
+"taketomi.okinawa.jp\0"
+"skanit.no\0valer.ostfold.no\0id.forgerock.io\0"
+"trentinoaadige.it\0"
+"nom.ni\0sa.com\0"
+"perso.tn\0"
+"cc.wi.us\0"
+"pruszkow.pl\0"
+"seiyo.ehime.jp\0"
+"nationalheritage.museum\0name.na\0"
+"iwi.nz\0"
+"name.mv\0"
+"name.ng\0"
+"venice.it\0bielawa.pl\0"
+"name.my\0"
+"sc.cn\0"
+"hanggliding.aero\0nissedal.no\0noip.us\0"
+"pisa.it\0akita.jp\0"
+"cloud66.zone\0*.nodebalancer.linode.com\0"
+"lenvik.no\0ia.us\0"
+"nom.pa\0nis.za\0"
+"ralingen.no\0"
+"nom.pe\0myvnc.com\0"
+"anani.br\0"
+"oksnes.no\0"
+"tsukiyono.gunma.jp\0"
+"vacations\0"
+"chiba.jp\0nom.pl\0debian.net\0dynalias.net\0"
+"artgallery.museum\0"
+"cuneo.it\0\xe5\xb1\xb1\xe5\xbd\xa2.jp\0takaharu.miyazaki.jp\0serveminecraft.net\0"
+"n\xc3\xa5\xc3\xa5mesjevuemie.no\0"
+"sabae.fukui.jp\0furukawa.miyagi.jp\0okaya.nagano.jp\0"
+"showtime\0university\0ap-southeast-2.elasticbeanstalk.com\0"
+"mr.no\0"
+"*.owo.codes\0"
+"po.it\0kiwa.mie.jp\0"
+"gr.eu.org\0"
+"eiheiji.fukui.jp\0"
+"nom.re\0a.se\0"
+"hsbc\0icbc\0"
+"yao.osaka.jp\0funagata.yamagata.jp\0"
+"environmentalconservation.museum\0\xd0\xba\xd0\xbe\xd0\xbc.\xd1\x80\xd1\x83\xd1\x81\0"
+"name.mk\0"
+"namerikawa.toyama.jp\0"
+"vinnica.ua\0"
+"troms\xc3\xb8.no\0nom.ro\0"
+"kadogawa.miyazaki.jp\0ondigitalocean.app\0""64-b.it\0"
+"ichihara.chiba.jp\0cistron.nl\0"
+"stpetersburg.museum\0codeberg.page\0mel.cloudlets.com.au\0"
+"beiarn.no\0b\xc3\xa5tsfjord.no\0carrd.co\0"
+"from-ma.com\0"
+"tw.cn\0"
+"nt.no\0"
+"colonialwilliamsburg.museum\0"
+"med.br\0"
+"name.jo\0"
+"ra.it\0ibara.okayama.jp\0hinohara.tokyo.jp\0"
+"s.se\0nov.ru\0"
+"us.eu.org\0"
+"slask.pl\0"
+"development.run\0"
+"tsugaru.aomori.jp\0"
+"tas.au\0nom.tm\0lg.ua\0charity\0"
+"misugi.mie.jp\0"
+"meland.no\0rennes\xc3\xb8y.no\0"
+"pavia.it\0"
+"nov.su\0blogspot.co.za\0"
+"bonn.museum\0sandiego.museum\0"
+"med.ec\0"
+"tsuruoka.yamagata.jp\0toyota.yamaguchi.jp\0turystyka.pl\0cloud\0"
+"med.ee\0stateofdelaware.museum\0"
+"mi.th\0"
+"nom.ve\0kustanai.ru\0"
+"yuasa.wakayama.jp\0"
+"homedns.org\0"
+"jotelulu.cloud\0"
+"khmelnitskiy.ua\0"
+"works.aero\0lind\xc3\xa5s.no\0pors\xc3\xa1\xc5\x8bgu.no\0"
+"tatsuno.hyogo.jp\0"
+"sc.ke\0"
+"lyngdal.no\0codes\0"
+"kisarazu.chiba.jp\0"
+"fhsk.se\0gr.com\0kustanai.su\0"
+"orsta.no\0"
+"kosei.shiga.jp\0"
+"*.vps.myjino.ru\0"
+"nt.ro\0"
+"jinsekikogen.hiroshima.jp\0minamiashigara.kanagawa.jp\0po.gov.pl\0"
+"brussels.museum\0"
+"sc.kr\0"
+"mi.us\0"
+"te.it\0furano.hokkaido.jp\0nobeoka.miyazaki.jp\0ketrzyn.pl\0"
+"lier.no\0b-data.io\0"
+"friuli-ve-giulia.it\0"
+"helsinki.museum\0museumcenter.museum\0"
+"eidfjord.no\0"
+"kunimi.fukushima.jp\0bunkyo.tokyo.jp\0"
+"center.museum\0maritime.museum\0gub.uy\0from-nv.com\0"
+"kaufen\0"
+"sc.ls\0"
+"vda.it\0tn.it\0"
+"lib.ct.us\0flights\0pstmn.io\0"
+"\xe7\xa6\x8f\xe5\xb2\xa1.jp\0lomza.pl\0"
+"botanical.museum\0sologne.museum\0"
+"mywire.org\0"
+"\xe6\x85\x88\xe5\x96\x84\0"
+"is-a-linux-user.org\0"
+"ookuwa.nagano.jp\0ashikaga.tochigi.jp\0is-a-chef.net\0"
+"od.ua\0"
+"for-some.biz\0"
+"mil.ac\0b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0meloy.no\0"
+"med.ht\0yawata.kyoto.jp\0"
+"mil.ae\0nom.za\0"
+"paroch.k12.ma.us\0"
+"mil.al\0campobasso.it\0kobierzyce.pl\0hosting-cluster.nl\0"
+"taa.it\0lplfinancial\0"
+"mil.ba\0noip.me\0"
+"mil.ar\0"
+"hobby-site.com\0"
+"tonami.toyama.jp\0"
+"website\0"
+"mil.az\0"
+"grosseto.it\0kunitomi.miyazaki.jp\0hasura.app\0"
+"bet.ar\0"
+"mil.bo\0movimiento.bo\0"
+"seidat.net\0"
+"mil.br\0"
+"reggiocalabria.it\0vi.it\0"
+"royken.no\0"
+"mil.by\0"
+"mil.cl\0shimosuwa.nagano.jp\0"
+"jus.br\0mil.cn\0"
+"mil.co\0"
+"chikushino.fukuoka.jp\0perspecta.cloud\0"
+"karacol.su\0forgeblocks.com\0"
+"vr.it\0"
+"otago.museum\0""1kapp.com\0"
+"ong.br\0guardian\0"
+"anpachi.gifu.jp\0"
+"mil.cy\0trycloudflare.com\0lohmus.me\0"
+"dnsdojo.org\0from-me.org\0"
+"hioki.kagoshima.jp\0"
+"norfolk.museum\0"
+"mil.do\0"
+"oshu.iwate.jp\0"
+"mil.ec\0is-a-bruinsfan.org\0"
+"aero.tt\0gov.scot\0"
+"blogspot.com\0"
+"mil.eg\0barclays\0"
+"trentinosud-tirol.it\0mikasa.hokkaido.jp\0"
+"med.ly\0"
+"!www.ck\0"
+"suzu.ishikawa.jp\0saku.nagano.jp\0static.land\0"
+"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0"
+"ishikawa.fukushima.jp\0"
+"kalmykia.su\0"
+"appspacehosted.com\0"
"aero.mv\0"
-"odessa.ua\0"
-"sp.it\0kep.tr\0"
-"koeln.museum\0newyork.museum\0"
-"urausu.hokkaido.jp\0"
-"kuki.saitama.jp\0"
-"fuossko.no\0"
-"scrapping.cc\0eating-organic.net\0"
-"mima.tokushima.jp\0lib.dc.us\0"
-"ltd.gi\0eaton.mi.us\0"
-"shonai.yamagata.jp\0"
-"coop.py\0*.webpaas.ovh.net\0art.pl\0"
-"nakaniikawa.toyama.jp\0\xd8\xa7\xd9\x84\xd8\xb9\xd9\x84\xd9\x8a\xd8\xa7\xd9\x86\0"
-"mashiki.kumamoto.jp\0sandvikcoromant\0"
-"tysnes.no\0blog.vu\0"
-"saiki.oita.jp\0"
-"kaneyama.yamagata.jp\0gucci\0"
-"kagoshima.jp\0legnica.pl\0"
-"gv.vc\0"
-"archaeological.museum\0agric.za\0"
-"bloomberg\0"
-"ullensvang.no\0*.cryptonomic.net\0"
-"nat.tn\0"
-"press.aero\0ltd.hk\0"
-"mombetsu.hokkaido.jp\0"
-"ch.eu.org\0"
-"os\xc3\xb8yro.no\0"
-"ternopil.ua\0"
-"\xe7\xbb\x84\xe7\xbb\x87\xe6\x9c\xba\xe6\x9e\x84\0"
-"jinsekikogen.hiroshima.jp\0"
+"urakawa.hokkaido.jp\0nanbu.tottori.jp\0food\0"
+"media.hu\0intelligence.museum\0nikolaev.ua\0is-gone.com\0my-wan.de\0"
+"mil.fj\0"
+"time.no\0"
+"kuwana.mie.jp\0tsuwano.shimane.jp\0imamat\0"
+"attorney\0filegear-sg.me\0"
+"heroy.more-og-romsdal.no\0"
+"la-spezia.it\0"
+"jewish.museum\0"
+"miyako.fukuoka.jp\0akaiwa.okayama.jp\0"
+"mil.ge\0"
+"snasa.no\0"
+"mil.gh\0"
+"maryland.museum\0amica\0"
+"leksvik.no\0"
+"\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\0"
+"med.om\0"
+"higashiura.aichi.jp\0"
+"med.pa\0"
+"mil.gt\0kawazu.shizuoka.jp\0ustka.pl\0"
+"s3-website-ap-northeast-1.amazonaws.com\0"
+"gjovik.no\0kr\xc3\xa5""anghke.no\0sc.ug\0lib.il.us\0"
+"noheji.aomori.jp\0"
+"bestbuy\0s3-eu-west-2.amazonaws.com\0"
+"sc.tz\0goodyear\0"
+"varoy.no\0"
+"kokubunji.tokyo.jp\0med.pl\0"
+"otsuka\0"
+"mil.hn\0localzone.xyz\0"
+"kamoenai.hokkaido.jp\0"
+"komatsu\0is-a-therapist.com\0kalmykia.ru\0"
+"sc.us\0"
+"mil.id\0uk.reclaim.cloud\0"
+"arkhangelsk.su\0"
+"gs.ah.no\0"
+"ford\0"
+"abogado\0"
+"\xe6\x94\xbf\xe5\xba\x9c\0"
+"pittsburgh.museum\0clicketcloud.com\0"
+"bhz.br\0mil.in\0"
+"kimobetsu.hokkaido.jp\0"
+"mil.iq\0te.ua\0"
+"shoes\0"
+"sasaguri.fukuoka.jp\0"
+"haram.no\0"
+"jelastic.saveincloud.net\0"
+"keymachine.de\0"
+"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0diskstation.org\0"
+"yasuoka.nagano.jp\0"
+"alt.za\0"
+"mil.jo\0tennis\0"
+"nishitosa.kochi.jp\0"
+"bolt.hu\0civilwar.museum\0nyny.museum\0med.sa\0grocery\0"
+"beardu.no\0r\xc3\xb8""d\xc3\xb8y.no\0"
+"kahoku.yamagata.jp\0med.sd\0"
+"mil.kg\0"
+"mil.km\0sciencecenters.museum\0"
+"quebec\0scrapping.cc\0collegefan.org\0"
+"maizuru.kyoto.jp\0"
+"cechire.com\0"
+"mil.kr\0"
+"farsund.no\0tn.us\0co.business\0"
+"honjo.akita.jp\0mutsuzawa.chiba.jp\0ojiya.niigata.jp\0"
+"career\0"
+"trader.aero\0"
+"naie.hokkaido.jp\0aizumi.tokushima.jp\0"
+"mil.kz\0"
+"field.museum\0lugansk.ua\0stockholm\0"
+"s\xc3\xb8mna.no\0"
+"hirosaki.aomori.jp\0tempurl.host\0"
+"sydney\0"
+"mil.lv\0"
+"mil.mg\0home.dyndns.org\0loginline.services\0"
+"is-leet.com\0prvcy.page\0"
+"sandnessjoen.no\0\xc3\xa5l.no\0flakstad.no\0eu.org\0"
+"hakone.kanagawa.jp\0kikuchi.kumamoto.jp\0minato.tokyo.jp\0digital\0kicks-ass.net\0"
+"nesna.no\0k12.az.us\0"
+"shop.ht\0watarai.mie.jp\0media.pl\0"
+"shop.hu\0"
+"open\0"
+"hizen.saga.jp\0maibara.shiga.jp\0"
+"graz.museum\0from-pr.com\0"
+"mil.mv\0"
+"mil.ng\0\xc3\xb8yer.no\0locus\0"
+"mil.my\0mil.ni\0dyndns-remote.com\0hk.com\0"
+"mil.mz\0"
+"monash\0"
+"computer.museum\0money.museum\0"
+"mil.no\0vik.no\0"
+"sobetsu.hokkaido.jp\0mw.gov.pl\0bialystok.pl\0"
+"lans.museum\0"
+"vi.us\0"
+"sand\xc3\xb8y.no\0*.diher.solutions\0"
+"minami.kyoto.jp\0kotoura.tottori.jp\0minobu.yamanashi.jp\0"
+"mil.nz\0"
+"samnanger.no\0"
+"ogaki.gifu.jp\0iwate.iwate.jp\0pulawy.pl\0"
+"s3-us-east-2.amazonaws.com\0"
+"air-traffic-control.aero\0"
+"ehime.jp\0izunokuni.shizuoka.jp\0"
+"tatamotors\0"
+"asuke.aichi.jp\0homedepot\0stcgroup\0"
+"games.hu\0mil.pe\0"
+"lib.md.us\0*.otap.co\0"
+"mil.ph\0ownip.net\0"
+"tushu\0"
+"law.pro\0cc.az.us\0"
+"mil.pl\0"
+"nittedal.no\0"
+"kumamoto.jp\0"
+"mil.qa\0"
+"statebank\0"
+"hamatonbetsu.hokkaido.jp\0"
+"ms.gov.br\0"
+"lib.nm.us\0us.org\0"
+"mil.py\0from-il.com\0"
+"froland.no\0"
+"\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93.jp\0asakuchi.okayama.jp\0ricoh\0"
+"tmp.br\0\xe0\xb8\x98\xe0\xb8\xb8\xe0\xb8\xa3\xe0\xb8\x81\xe0\xb8\xb4\xe0\xb8\x88.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"kuji.iwate.jp\0miyota.nagano.jp\0"
+"security\0shiksha\0de.com\0"
+"melhus.no\0"
+"caltanissetta.it\0yamagata.ibaraki.jp\0"
+"piw.gov.pl\0"
+"k12.de.us\0feedback\0"
+"computerhistory.museum\0\xd1\x8f.\xd1\x80\xd1\x83\xd1\x81\0"
+"nemuro.hokkaido.jp\0"
+"jewishart.museum\0mil.ru\0tula.su\0*.spectrum.myjino.ru\0health-carereform.com\0"
+"mt.gov.br\0"
+"bykle.no\0mil.rw\0lib.ok.us\0"
+"mil.sh\0\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0"
+"\xe3\x82\xb9\xe3\x83\x88\xe3\x82\xa2\0"
+"cc.de.us\0"
+"ar.com\0"
+"navuotna.no\0"
+"gifu.jp\0cloudaccess.host\0"
+"mil.st\0"
+"fylkesbibl.no\0jondal.no\0"
+"mil.sy\0s3-website-us-west-2.amazonaws.com\0svn-repos.de\0"
+"mil.tj\0"
+"gildeskal.no\0grimstad.no\0inder\xc3\xb8y.no\0"
+"museet.museum\0mil.tm\0*.landing.myjino.ru\0"
+"mil.to\0booking\0"
+"oi.kanagawa.jp\0"
+"compare\0"
+"eco.br\0mil.tr\0"
+"zuerich\0"
+"heimatunduhren.museum\0"
+"ringebu.no\0mil.tw\0gwiddle.co.uk\0"
+"ichinomiya.chiba.jp\0midori.chiba.jp\0"
+"hotelwithflight.com\0"
+"mil.tz\0"
+"bronnoy.no\0"
+"oguchi.aichi.jp\0ilawa.pl\0"
+"mazeplay.com\0"
+"hellas.museum\0"
+"mil.vc\0"
+"kasugai.aichi.jp\0global.prod.fastly.net\0"
+"mil.ve\0"
+"gs.hm.no\0"
+"oarai.ibaraki.jp\0shibata.niigata.jp\0"
+"mil.uy\0synology.me\0"
+"aerodrome.aero\0"
+"minamiizu.shizuoka.jp\0yandexcloud.net\0"
+"solar\0"
+"bato.tochigi.jp\0"
+"nyc.museum\0"
+"kimitsu.chiba.jp\0ohi.fukui.jp\0konsulat.gov.pl\0"
+"holiday\0"
+"police.uk\0"
+"kariya.aichi.jp\0"
+"indianapolis.museum\0"
+"bc.ca\0assisi.museum\0"
+"h\xc3\xa6gebostad.no\0"
+"akashi.hyogo.jp\0rawa-maz.pl\0"
+"durban\0"
+"\xc3\xb8ygarden.no\0ferrero\0"
+"matsudo.chiba.jp\0horonobe.hokkaido.jp\0nakagawa.tokushima.jp\0select\0"
+"folionetwork.site\0myiphost.com\0"
+"dyn53.io\0"
+"flog.br\0"
+"naroy.no\0"
+"hatogaya.saitama.jp\0nasushiobara.tochigi.jp\0"
+"gitpage.si\0"
+"mil.ye\0africa\0"
+"kristiansand.no\0fr.eu.org\0"
+"higashine.yamagata.jp\0"
+"isleofman.museum\0"
+"shimodate.ibaraki.jp\0kameyama.mie.jp\0olawa.pl\0read\0"
+"tiaa\0dyndns.ddnss.de\0"
+"ikeda.fukui.jp\0kuju.oita.jp\0"
+"mil.za\0"
+"gaivuotna.no\0"
+"pesaro-urbino.it\0"
+"rochester.museum\0company\0withyoutube.com\0"
+"servebbs.net\0"
+"vlog.br\0"
+"ogliastra.it\0"
+"historical.museum\0mil.zm\0"
+"test.tj\0"
+"hidaka.kochi.jp\0clerkstage.app\0"
+"diskussionsbereich.de\0"
+"lib.sc.us\0mil.zw\0rdv.to\0"
+"iwate.jp\0toda.saitama.jp\0sumida.tokyo.jp\0"
+"mc.eu.org\0"
+"palermo.it\0"
+"lima-city.de\0"
+"research.aero\0halden.no\0"
+"trentin-s\xc3\xbc""dtirol.it\0kashiba.nara.jp\0yamanakako.yamanashi.jp\0"
+"dynalias.org\0"
+"museum\0is-a-socialist.com\0"
+"shimoichi.nara.jp\0izena.okinawa.jp\0"
+"is-a-hunter.com\0loginto.me\0"
+"riobranco.br\0"
+"vestv\xc3\xa5g\xc3\xb8y.no\0cust.retrosnub.co.uk\0"
+"ushiku.ibaraki.jp\0okutama.tokyo.jp\0"
+"ieee\0dynamisches-dns.de\0"
+"lamer\0"
+"kids\0independent-review.uk\0"
+"okazaki.aichi.jp\0"
+"historisch.museum\0"
+"test.ru\0is-a-cpa.com\0paas.datacenter.fi\0"
+"lt.eu.org\0"
+"lima-city.at\0"
+"dinosaur.museum\0"
+"doesntexist.org\0"
+"nakatsugawa.gifu.jp\0hirogawa.wakayama.jp\0"
+"takko.aomori.jp\0siteleaf.net\0"
+"noop.app\0"
+"academy\0"
+"motosu.gifu.jp\0"
+"dyndns-pics.com\0"
+"aurskog-holand.no\0"
+"lima-city.ch\0"
+"griw.gov.pl\0"
+"shinjo.okayama.jp\0"
+"page\0"
+"is-a-painter.com\0"
+"vald-aosta.it\0bl.it\0bozen.it\0gamagori.aichi.jp\0matsukawa.nagano.jp\0london.cloudapps.digital\0"
+"lebesby.no\0tickets\0"
+"inami.wakayama.jp\0"
+"is-a-nurse.com\0"
+"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0"
+"lib.ut.us\0"
+"malbork.pl\0dnsdojo.net\0myspreadshop.nl\0"
+"myspreadshop.no\0"
+"living.museum\0\xed\x95\x9c\xea\xb5\xad\0"
+"freebox-os.fr\0"
+"k12.ks.us\0"
+"ce.it\0"
+"cinema.museum\0delivery\0eu-west-2.elasticbeanstalk.com\0wphostedmail.com\0"
+"stuff-4-sale.org\0"
+"shop.th\0"
+"dy.fi\0"
+"economia.bo\0solund.no\0"
+"helsinki\0webhosting.be\0"
+"gd.cn\0"
+"gv.ao\0aa.no\0lorenskog.no\0cc.ks.us\0"
+"tenei.fukushima.jp\0ogimi.okinawa.jp\0kutno.pl\0"
+"gv.at\0cn.it\0toyone.aichi.jp\0j.scaleforce.net\0"
+"bike\0s3.ca-central-1.amazonaws.com\0"
+"place\0"
+"for-better.biz\0"
+"myspreadshop.pl\0"
+"lewismiller.museum\0"
+"monza-brianza.it\0katsuragi.wakayama.jp\0reit\0user.srcf.net\0"
+"qualifioapp.com\0"
+"k12.me.us\0"
+"kyonan.chiba.jp\0kami.miyagi.jp\0"
+"discourse.team\0my-vigor.de\0"
+"glass\0"
+"hekinan.aichi.jp\0ozu.kumamoto.jp\0"
+"2.bg\0"
+"yonabaru.okinawa.jp\0za.net\0"
+"dyndns-wiki.com\0"
+"randaberg.no\0cc.me.us\0shop.ro\0"
+"hospital\0"
+"platter-app.dev\0"
+"k12.nh.us\0"
+"valle-aosta.it\0\xe6\xb2\x96\xe7\xb8\x84.jp\0myspreadshop.it\0"
+"poltava.ua\0"
+"d.gv.vc\0"
+"is-certified.com\0"
+"ppg.br\0"
+"game\0house\0"
+"cc.mn.us\0"
+"omitama.ibaraki.jp\0"
+"k12.mo.us\0from.work\0"
+"newyork.museum\0"
+"bing\0"
+"rexroth\0"
+"trentino-stirol.it\0bozen-suedtirol.it\0yachiyo.chiba.jp\0shop.pl\0pages.torproject.net\0"
+"bu.no\0"
+"chijiwa.nagasaki.jp\0"
+"rad\xc3\xb8y.no\0eng.pro\0"
+"taranto.it\0faststacks.net\0"
+"spy.museum\0"
+"aremark.no\0"
+"kamifurano.hokkaido.jp\0kinokawa.wakayama.jp\0"
+"is-into-cartoons.com\0"
+"schlesisches.museum\0ing.pa\0"
+"canon\0flt.cloud.muni.cz\0"
+"semine.miyagi.jp\0kawachinagano.osaka.jp\0"
+"association.aero\0s\xc3\xb8r-fron.no\0"
+"uk.net\0"
+"kaluga.su\0"
+"affinitylottery.org.uk\0"
+"fujimi.saitama.jp\0"
+"ap-northeast-2.elasticbeanstalk.com\0"
+"cloud66.ws\0"
+"kawai.iwate.jp\0"
+"cc.ny.us\0"
+"tsurugi.ishikawa.jp\0kitagata.saga.jp\0rent\0"
+"agematsu.nagano.jp\0ishikawa.okinawa.jp\0"
+"us-gov-west-1.elasticbeanstalk.com\0"
+"ma.leg.br\0"
+"conference.aero\0midsund.no\0"
+"ravendb.cloud\0"
+"homeunix.com\0"
+"js.cn\0"
+"cc.or.us\0"
+"otoineppu.hokkaido.jp\0"
+"zaporizhzhe.ua\0"
+"daejeon.kr\0gyeongbuk.kr\0"
+"grue.no\0"
+"powiat.pl\0"
+"manchester.museum\0osaka\0try-snowplow.com\0"
+"palmas.br\0"
+"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0"
+"gru.br\0"
+"h.bg\0"
+"siracusa.it\0*.kawasaki.jp\0"
+"ocelot.mythic-beasts.com\0"
+"\xe6\xa0\x83\xe6\x9c\xa8.jp\0higashiagatsuma.gunma.jp\0"
+"house.museum\0"
+"pilot.aero\0oppegard.no\0tips\0kicks-ass.org\0"
+"rishirifuji.hokkaido.jp\0hamatama.saga.jp\0wpmudev.host\0"
+"under.one\0"
+"mitake.gifu.jp\0"
+"sellfy.store\0"
+"q.bg\0"
+"rimini.it\0"
+"eu.pythonanywhere.com\0"
+"reggio-emilia.it\0hiroshima.jp\0"
+"\xe9\xa6\x99\xe6\xa0\xbc\xe9\x87\x8c\xe6\x8b\x89\0"
+"lavangen.no\0tj\xc3\xb8me.no\0as.us\0"
+"anthro.museum\0portland.museum\0"
+"not.br\0"
+"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0tiffany\0\xd0\xb1\xd0\xb8\xd0\xb7.\xd1\x80\xd1\x83\xd1\x81\0"
+"z.bg\0pars\0"
+"embetsu.hokkaido.jp\0makurazaki.kagoshima.jp\0"
+"ln.cn\0"
+"mk.eu.org\0"
+"yugawa.fukushima.jp\0kariwa.niigata.jp\0aguni.okinawa.jp\0"
+"webhop.me\0"
+"staples\0"
+"homelinux.com\0"
+"ayagawa.kagawa.jp\0suzaka.nagano.jp\0"
+"transporte.bo\0"
+"free\0from-mi.com\0"
+"cupcake.is\0"
+"rest\0dattolocal.net\0storage.yandexcloud.net\0"
+"cn.ua\0goip.de\0"
+"mp.br\0iz.hr\0"
+"izumizaki.fukushima.jp\0taku.saga.jp\0"
+"in-berlin.de\0myspreadshop.se\0"
+"barreau.bj\0"
+"leangaviika.no\0"
+"tranibarlettaandria.it\0hannan.osaka.jp\0"
+"onion\0"
+"mj\xc3\xb8ndalen.no\0misconfused.org\0"
+"nishihara.okinawa.jp\0okinoshima.shimane.jp\0"
+"archi\0"
+"kids.us\0"
+"kashima.saga.jp\0"
+"macapa.br\0"
+"game-server.cc\0"
+"from-ct.com\0"
+"dyroy.no\0"
+"kashiwazaki.niigata.jp\0"
+"rishiri.hokkaido.jp\0"
+"sjc.br\0"
+"instances.spawn.cc\0"
+"yuu.yamaguchi.jp\0"
+"dp.ua\0"
+"caxias.br\0cng.br\0"
+"t\xc3\xb8nsberg.no\0bitbucket.io\0dh.bytemark.co.uk\0edugit.io\0"
+"imperia.it\0"
+"cn.vu\0"
+"arendal.no\0"
+"etajima.hiroshima.jp\0"
+"kiwi\0is-a-bookkeeper.com\0"
+"physio\0"
+"tonaki.okinawa.jp\0iwade.wakayama.jp\0"
+"stufftoread.com\0"
+"lu.eu.org\0me.eu.org\0"
+"cesenaforl\xc3\xac.it\0myfast.host\0"
+"its.me\0"
+"arna.no\0lahppi.no\0"
+"miyoshi.saitama.jp\0skoczow.pl\0"
+"worse-than.tv\0"
+"dyndns-office.com\0"
+"campinas.br\0*.code.run\0"
+"\xe7\xa6\x8f\xe4\xba\x95.jp\0"
+"smile\0"
+"le.it\0nagato.yamaguchi.jp\0"
+"coldwar.museum\0"
+"ac.gov.br\0"
+"balsfjord.no\0"
+"tomobe.ibaraki.jp\0komatsu.ishikawa.jp\0"
+"americanantiques.museum\0"
+"hiranai.aomori.jp\0fukagawa.hokkaido.jp\0"
+"lv.eu.org\0"
+"tsuruta.aomori.jp\0sakura.tochigi.jp\0"
+"gbiz\0"
+"\xd9\x83\xd8\xa7\xd8\xab\xd9\x88\xd9\x84\xd9\x8a\xd9\x83\0"
+"linkyard-cloud.ch\0"
+"entomology.museum\0bridgestone\0"
+"opole.pl\0"
+"madrid.museum\0s3-ap-northeast-2.amazonaws.com\0"
+"aquila.it\0hiroo.hokkaido.jp\0izumi.kagoshima.jp\0"
+"slg.br\0"
+"kvinnherad.no\0"
+"florence.it\0radom.pl\0"
+"guovdageaidnu.no\0"
+"takarazuka.hyogo.jp\0familyds.net\0"
+"flatanger.no\0"
+"media.museum\0gucci\0"
+"properties\0leadpages.co\0"
+"my.id\0nakai.kanagawa.jp\0"
+"and.museum\0cyber.museum\0lk3.ru\0"
+"marshalls\0"
+"aizumisato.fukushima.jp\0pisz.pl\0fr-1.paas.massivegrid.net\0"
+"elasticbeanstalk.com\0"
+"analytics\0"
"kagoshima.kagoshima.jp\0"
-"center.museum\0"
-"ann-arbor.mi.us\0"
-"barum.no\0"
-"servequake.com\0"
-"coop.km\0gentlentapis.com\0familyds.org\0"
-"brescia.it\0nyaa.am\0"
-"dn.ua\0"
-"technology.museum\0"
-"lib.ak.us\0"
-"host\0"
-"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0*.oci.customer-oci.com\0"
-"\xe7\xbd\x91\xe7\xb5\xa1.hk\0"
-"yasugi.shimane.jp\0marine.ru\0"
-"\xe9\x95\xb7\xe5\xb4\x8e.jp\0art.sn\0"
-"recreation.aero\0"
-"zuerich\0de.trendhosting.cloud\0"
-"ddr.museum\0"
-"zp.ua\0"
-"ube.yamaguchi.jp\0airguard.museum\0k12.mo.us\0"
-"happou.akita.jp\0ny-2.paas.massivegrid.net\0"
-"oppegard.no\0mragowo.pl\0"
-"terni.it\0lib.wi.us\0christmas\0"
-"kisosaki.mie.jp\0wios.gov.pl\0fidelity\0"
-"beppu.oita.jp\0"
-"troitsk.su\0"
-"ao.it\0impertrix.com\0"
-"hiratsuka.kanagawa.jp\0"
-"ltd.lk\0"
-"sanfrancisco.museum\0"
-"amber.museum\0\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0"
-"hjelmeland.no\0"
-"gov.ac\0"
-"gov.ae\0"
-"gov.af\0kddi\0"
-"gwiddle.co.uk\0"
-"gojome.akita.jp\0kumano.hiroshima.jp\0"
-"higashikurume.tokyo.jp\0"
-"gov.al\0"
-"est-a-la-maison.com\0"
-"lg.ua\0"
-"gov.ba\0flir\0"
-"gov.ar\0gov.bb\0"
-"gov.as\0"
-"iwate.jp\0"
-"gov.au\0jor.br\0demon.nl\0"
-"gov.bf\0misato.shimane.jp\0"
-"gov.bh\0ltd.ng\0"
-"gov.az\0michigan.museum\0"
-"gov.bm\0"
-"gov.bn\0selfip.info\0"
-"idv.tw\0"
+"hongo.hiroshima.jp\0"
+"sa.au\0britishcolumbia.museum\0"
+"tanabe.wakayama.jp\0"
+"game.tw\0"
+"miura.kanagawa.jp\0"
+"wif.gov.pl\0"
+"birthplace.museum\0"
+"nord-odal.no\0gv.vc\0kaas.gg\0"
+"yamakita.kanagawa.jp\0onna.okinawa.jp\0koganei.tokyo.jp\0"
+"navigation.aero\0"
+"sagamihara.kanagawa.jp\0taiji.wakayama.jp\0"
+"suifu.ibaraki.jp\0definima.net\0"
+"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0"
+"sa.cr\0"
+"nagara.chiba.jp\0"
+"hamaroy.no\0"
+"acct.pro\0"
+"shimogo.fukushima.jp\0rankoshi.hokkaido.jp\0supabase.net\0"
+"valley.museum\0"
+"cc.wy.us\0"
+"kanan.osaka.jp\0"
+"toyota\0"
+"tc.br\0"
+"myspreadshop.es\0"
+"ot.it\0pd.it\0wedeploy.sh\0"
+"trentin-sud-tirol.it\0hashbang.sh\0"
+"myspreadshop.fi\0"
+"freeddns.org\0"
+"kitaakita.akita.jp\0blog.gt\0"
+"qld.au\0"
+"gangwon.kr\0"
+"ogori.fukuoka.jp\0tsuga.tochigi.jp\0"
+"myspreadshop.fr\0"
+"beta.bounty-full.com\0"
+"aver\xc3\xb8y.no\0"
+"carrier.museum\0"
+"bahn.museum\0"
+"langev\xc3\xa5g.no\0kr.eu.org\0"
+"nango.fukushima.jp\0"
+"copenhagen.museum\0russia.museum\0barsycenter.com\0"
+"\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0"
+"pv.it\0zushi.kanagawa.jp\0"
+"delaware.museum\0dnipropetrovsk.ua\0s3.ap-south-1.amazonaws.com\0gotdns.com\0"
+"gj\xc3\xb8vik.no\0lib.al.us\0"
+"hazu.aichi.jp\0"
+"h.se\0science\0fuettertdasnetz.de\0"
+"tomigusuku.okinawa.jp\0nikko.tochigi.jp\0"
+"mobi\0"
+"enterprises\0"
+"utah.museum\0"
+"ens.tn\0"
+"\xe6\xb8\xb8\xe6\x88\x8f\0"
+"myspreadshop.ie\0"
+"blog.bo\0docs\0"
+"blog.br\0"
+"b\xc3\xa1hcavuotna.no\0es.eu.org\0"
+"echizen.fukui.jp\0gushikami.okinawa.jp\0"
+"steiermark.museum\0ravendb.community\0"
+"git-repos.de\0"
+"epson\0"
+"otoyo.kochi.jp\0oe.yamagata.jp\0a.run.app\0myspreadshop.at\0"
+"cody.museum\0moda\0myspreadshop.be\0"
+"l\xc3\xb8""dingen.no\0\xc3\xb8vre-eiker.no\0lib.az.us\0"
+"sakai.ibaraki.jp\0ny-2.paas.massivegrid.net\0"
+"z.se\0"
+"higashishirakawa.gifu.jp\0"
+"from-md.com\0fin.ci\0"
+"hamar.no\0pccw\0duckdns.org\0"
+"campidanomedio.it\0"
+"naturhistorisches.museum\0cipriani\0photography\0myspreadshop.ca\0"
+"sa.it\0semboku.akita.jp\0"
+"dyn-o-saur.com\0"
+"lib.as.us\0"
+"basilicata.it\0piacenza.it\0myspreadshop.ch\0"
+"fie.ee\0""12hp.de\0"
+"tonosho.kagawa.jp\0"
+"gouv.fr\0"
+"skien.no\0"
+"myspreadshop.de\0"
+"fin.ec\0"
+"tarui.gifu.jp\0zachpomor.pl\0"
+"vagsoy.no\0myspreadshop.dk\0"
+"kaneyama.yamagata.jp\0"
+"servebbs.org\0"
+"atami.shizuoka.jp\0"
+"asn.au\0"
+"boavista.br\0"
+"ss.it\0shimoda.shizuoka.jp\0"
+"lib.ca.us\0"
+"valdaosta.it\0maebashi.gunma.jp\0""12hp.at\0"
+"act.edu.au\0"
+"dell-ogliastra.it\0realestate.pl\0web.app\0"
+"likes-pie.com\0"
+"za.org\0"
+"gouv.ht\0"
+"hapmir.no\0"
+"culturalcenter.museum\0chrome\0myforum.community\0"
+"est.pr\0"
+"midtre-gauldal.no\0nord-aurdal.no\0"
+"nabari.mie.jp\0kamitonda.wakayama.jp\0""12hp.ch\0"
+"southcarolina.museum\0dyn.cosidns.de\0"
+"muos\xc3\xa1t.no\0"
+"vall\xc3\xa9""eaoste.it\0"
+"dscloud.mobi\0"
+"gouv.bj\0"
+"lib.co.us\0\xd2\x9b\xd0\xb0\xd0\xb7\0"
+"time.museum\0"
+"net.eu.org\0"
+"friuli-venezia-giulia.it\0nagano.jp\0"
+"serveexchange.com\0"
+"kutchan.hokkaido.jp\0"
+"savannahga.museum\0wedeploy.me\0"
+"okagaki.fukuoka.jp\0"
+"gouv.ci\0"
+"\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0"
+"evenes.no\0"
+"higashi.fukuoka.jp\0isehara.kanagawa.jp\0"
+"kamisu.ibaraki.jp\0homelinux.net\0"
+"iwaizumi.iwate.jp\0"
+"hob\xc3\xb8l.no\0ok.us\0"
+"atsuma.hokkaido.jp\0shinkamigoto.nagasaki.jp\0"
+"progressive\0\xd7\xa7\xd7\x95\xd7\x9d\0ezproxy.kuleuven.be\0"
+"al.gov.br\0center\0"
+"nanjo.okinawa.jp\0matsubara.osaka.jp\0"
+"boutique\0"
+"mitou.yamaguchi.jp\0"
+"from-tx.com\0"
+"bas.it\0nakama.fukuoka.jp\0ariake.saga.jp\0"
+"shiwa.iwate.jp\0haga.tochigi.jp\0dentist\0"
+"skygearapp.com\0"
+"mg.leg.br\0"
+"flor\xc3\xb8.no\0grane.no\0ventures\0"
+"is-a-techie.com\0"
+"!city.kitakyushu.jp\0nanbu.yamanashi.jp\0"
+"database.museum\0cherkasy.ua\0s3.dualstack.us-east-2.amazonaws.com\0sphinx.mythic-beasts.com\0"
+"aomori.aomori.jp\0in-the-band.net\0"
+"trentinosued-tirol.it\0"
+"independent-inquest.uk\0"
+"umi.fukuoka.jp\0iwanuma.miyagi.jp\0netlify.app\0"
+"saskatchewan.museum\0"
+"\xe9\x95\xb7\xe9\x87\x8e.jp\0group\0"
+"paris.museum\0mcdir.me\0"
+"\xe5\xae\xae\xe5\x9f\x8e.jp\0chikujo.fukuoka.jp\0cloudaccess.net\0"
+"s3-us-west-2.amazonaws.com\0"
+"\xc3\xb8rskog.no\0\xce\xb5\xce\xbb\0"
+"insurance\0"
+"ipifony.net\0"
+"farmers.museum\0"
+"\xce\xb5\xcf\x85\0"
+"friulivegiulia.it\0morotsuka.miyazaki.jp\0"
+"\xc3\xa5""fjord.no\0kvitsoy.no\0romskog.no\0lib.hi.us\0"
+"mragowo.pl\0"
+"fi.eu.org\0"
+"blog.vu\0"
+"hemnes.no\0"
+"kazo.saitama.jp\0hangout\0"
+"bauern.museum\0"
+"foz.br\0"
+"monzabrianza.it\0karatsu.saga.jp\0"
+"friulivenezia-giulia.it\0"
+"skole.museum\0is-an-artist.com\0"
+"awsmppl.com\0"
+"accident-prevention.aero\0safety.aero\0"
+"*.ex.ortsinfo.at\0"
+"jeju.kr\0"
+"tinn.no\0"
+"\xe7\xb6\xb2\xe7\xb5\xa1.\xe9\xa6\x99\xe6\xb8\xaf\0"
+"iwanai.hokkaido.jp\0"
+"austin.museum\0"
+"asn.lv\0"
+"odessa.ua\0"
+"eidskog.no\0hopto.org\0"
+"trondheim.no\0"
+"kawakami.nagano.jp\0"
+"biz.bb\0"
+"is-very-good.org\0"
+"imabari.ehime.jp\0biz.at\0"
+"finland.museum\0bashkiria.ru\0"
+"soccer\0"
+"abiko.chiba.jp\0kanonji.kagawa.jp\0"
+"biz.az\0"
+"paragliding.aero\0"
+"shiroishi.miyagi.jp\0"
+"mormon\0"
+"hvaler.no\0"
+"toyota.aichi.jp\0shimane.shimane.jp\0"
+"is-a-rockstar.com\0bashkiria.su\0"
+"takamori.nagano.jp\0"
+"air-surveillance.aero\0"
+"airguard.museum\0hembygdsforbund.museum\0"
+"feira.br\0"
+"cyon.link\0"
+"moto\0"
+"nikaho.akita.jp\0"
+"biz.cy\0"
+"biz.dk\0azimuth.network\0"
+"muroto.kochi.jp\0"
+"chiropractic.museum\0kommunalforbund.se\0vote\0"
+"on-the-web.tv\0"
+"taiki.mie.jp\0kumenan.okayama.jp\0scrapper-site.net\0"
+"promo\0"
+"toya.hokkaido.jp\0toyonaka.osaka.jp\0"
+"fin.tn\0\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0"
+"kerrylogistics\0voto\0"
+"usdecorativearts.museum\0"
+"fishing\0*.sys.qcx.io\0"
+"trentino-aadige.it\0urausu.hokkaido.jp\0kawahara.tottori.jp\0*.sensiosite.cloud\0"
+"asmatart.museum\0"
+"\xc3\xa5s.no\0roan.no\0shiftcrypto.io\0wedeploy.io\0"
+"kamioka.akita.jp\0"
+"santacruz.museum\0"
+"gratis\0"
+"biz.et\0buzen.fukuoka.jp\0miasa.nagano.jp\0yufu.oita.jp\0kakegawa.shizuoka.jp\0"
+"torino.museum\0"
+"knowsitall.info\0"
+"corsica\0"
+"biz.fj\0"
+"lib.la.us\0"
+"dsmynas.com\0"
+"kanegasaki.iwate.jp\0principe.st\0"
+"farmequipment.museum\0"
+"experts-comptables.fr\0"
+"mcdir.ru\0servehttp.com\0"
+"dellogliastra.it\0kamimine.saga.jp\0"
+"kongsvinger.no\0"
+"oki.fukuoka.jp\0miki.hyogo.jp\0nishiwaki.hyogo.jp\0target\0biz.gl\0"
+"utsunomiya.tochigi.jp\0"
+"virtuel.museum\0troitsk.su\0"
+"ena.gifu.jp\0ooshika.nagano.jp\0"
+"tozsde.hu\0blogsyte.com\0"
+"vlaanderen\0"
+"hornindal.no\0v\xc3\xa6r\xc3\xb8y.no\0wi.us\0"
+"lebork.pl\0gdansk.pl\0"
+"mod.gi\0orsites.com\0"
+"etnedal.no\0cc.ca.us\0"
+"ascoli-piceno.it\0"
+"biz.id\0trentino.it\0parma.it\0hasama.oita.jp\0kai.yamanashi.jp\0merckmsd\0"
+"york.museum\0"
+"hoylandet.no\0"
+"muni.il\0kusatsu.shiga.jp\0"
+"lib.mt.us\0lib.nd.us\0"
+"gouv.sn\0"
+"oga.akita.jp\0"
+"skjak.no\0k12.dc.us\0"
+"freesite.host\0lon-1.paas.massivegrid.net\0"
+"awsglobalaccelerator.com\0"
+"forsand.no\0"
+"indiana.museum\0"
+"cc.dc.us\0"
+"salerno.it\0yokote.akita.jp\0\xe6\x9c\xba\xe6\x9e\x84\0"
+"blog.kg\0"
+"tabitorder.co.il\0"
+"azurewebsites.net\0"
+"biz.ki\0trust.museum\0"
+"ggf.br\0"
+"sykkylven.no\0"
+"iheya.okinawa.jp\0"
+"hammerfest.no\0"
+"shari.hokkaido.jp\0"
+"lasalle\0"
+"nhlfan.net\0"
+"tosashimizu.kochi.jp\0oseto.nagasaki.jp\0"
+"giving\0"
+"nagiso.nagano.jp\0"
+"biz.ls\0"
+"tateyama.chiba.jp\0"
+"deno-staging.dev\0"
+"damnserver.com\0"
+"blog\0"
+"orland.no\0"
+"togitsu.nagasaki.jp\0habikino.osaka.jp\0lubin.pl\0"
+"is-an-engineer.com\0"
+"hinode.tokyo.jp\0"
+"biz.mv\0"
+"biz.mw\0gs.oslo.no\0eidsvoll.no\0"
+"kanazawa.ishikawa.jp\0"
+"biz.my\0biz.ni\0"
+"tatar\0"
+"familyds.org\0"
+"chieti.it\0kanagawa.jp\0hichiso.gifu.jp\0"
+"ah.cn\0"
+"biz.nr\0"
+"eero.online\0"
+"zapto.xyz\0"
+"steam.museum\0"
+"norton\0republican\0"
+"frosta.no\0"
+"accountant\0"
+"touch.museum\0azure\0"
+"ikawa.akita.jp\0"
+"4u.com\0pages.wiardweb.com\0"
+"k12.ga.us\0"
+"akita.akita.jp\0onomichi.hiroshima.jp\0pippu.hokkaido.jp\0szczecin.pl\0ts.net\0"
+"datsun\0"
+"mukawa.hokkaido.jp\0"
+"biz.pk\0"
+"okawa.kochi.jp\0biz.pl\0dnsalias.net\0"
+"bj.cn\0"
+"restaurant\0"
+"childrensgarden.museum\0"
+"biz.pr\0"
+"higashikagawa.kagawa.jp\0krasnik.pl\0"
+"botanicgarden.museum\0watchandclock.museum\0"
+"gouv.km\0textile.museum\0"
+"izumo.shimane.jp\0cancerresearch\0"
+"red.sv\0"
+"krakow.pl\0"
+"linz.museum\0*.ocp.customer-oci.com\0lynx.mythic-beasts.com\0"
+"porsanger.no\0"
+"mihama.fukui.jp\0sakuragawa.ibaraki.jp\0"
+"grandrapids.museum\0"
+"bahcavuotna.no\0q-a.eu.org\0"
+"asti.it\0"
+"dance\0"
+"geek.nz\0"
+"cards\0rogers\0"
+"yoshioka.gunma.jp\0rich\0"
+"blue\0"
+"gouv.ml\0psse.gov.pl\0"
+"balat.no\0cc.id.us\0"
+"bnr.la\0"
+"idrett.no\0biz.ss\0id.repl.co\0"
+"sande.m\xc3\xb8re-og-romsdal.no\0"
+"kyotamba.kyoto.jp\0global\0"
+"s3-website-eu-west-1.amazonaws.com\0"
+"biz.tj\0"
+"misato.akita.jp\0credit\0"
+"anthropology.museum\0ddnslive.com\0"
+"habmer.no\0lexus\0"
+"donostia.museum\0sibenik.museum\0biz.ua\0"
+"biz.tr\0crafting.xyz\0"
+"r\xc3\xb8yken.no\0"
+"kagami.kochi.jp\0biz.tt\0"
+"gemological.museum\0mycloud.by\0"
+"kr\xc3\xb8""dsherad.no\0"
+"lib.tx.us\0"
+"!city.kobe.jp\0"
+"jab.br\0"
+"seika.kyoto.jp\0nichinan.tottori.jp\0"
+"info.gu\0"
+"homelinux.org\0"
+"aq.it\0ba.it\0daiwa.hiroshima.jp\0nieruchomosci.pl\0"
+"franziskaner.museum\0*.frusky.de\0"
+"armenia.su\0"
+"kvalsund.no\0"
+"biz.vn\0cc.hn\0"
+"info.ht\0oirase.aomori.jp\0soja.okayama.jp\0kita.osaka.jp\0"
+"info.hu\0"
+"livorno.it\0mup.gov.pl\0"
+"lincoln.museum\0"
+"lincoln\0"
+"ddnss.org\0"
+"olbia-tempio.it\0"
+"hu.com\0"
+"tokyo\0"
+"info.et\0katsuura.chiba.jp\0"
+"daplie.me\0hs.zone\0"
+"fi.cr\0"
+"k12.ky.us\0"
+"bs.it\0takayama.gifu.jp\0de.gt\0"
+"info.fj\0"
+"miyakonojo.miyazaki.jp\0"
+"is-a-liberal.com\0"
+"bando.ibaraki.jp\0"
+"cc.la.us\0"
+"hamada.shimane.jp\0"
+"cl.it\0"
+"\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0"
+"moroyama.saitama.jp\0inagi.tokyo.jp\0"
+"bible\0"
+"gov.ac\0k12.ec\0lib.vt.us\0"
+"obihiro.hokkaido.jp\0rzeszow.pl\0"
+"gov.ae\0vantaa.museum\0s3-website.ca-central-1.amazonaws.com\0rhcloud.com\0"
+"gov.af\0santamaria.br\0"
+"ah.no\0"
+"of.london\0"
+"villas\0"
+"gov.al\0info.cx\0"
+"own.pm\0"
+"gov.ba\0"
+"gov.ar\0gov.bb\0volkswagen\0"
+"gov.as\0""0.bg\0is-a-candidate.org\0"
+"fastvps.host\0serveblog.net\0*.svc.firenet.ch\0"
+"gov.au\0biz.zm\0"
+"gov.bf\0"
+"info.ec\0"
+"gov.bh\0masaki.ehime.jp\0erimo.hokkaido.jp\0furubira.hokkaido.jp\0"
+"gov.az\0ulsan.kr\0"
+"minami.tokushima.jp\0"
+"gov.bm\0is-not-certified.com\0"
+"gov.bn\0"
+"windows\0"
+"gorizia.it\0date.hokkaido.jp\0fastlylb.net\0"
"gov.br\0"
-"gov.bs\0"
-"gov.bt\0gov.cd\0js.wpenginepowered.com\0"
-"sassari.it\0nyny.museum\0rec.nf\0"
-"staples\0"
-"gov.by\0"
+"9.bg\0gov.bs\0"
+"gov.bt\0gov.cd\0itako.ibaraki.jp\0glogow.pl\0"
+"shouji\0"
+"info.bb\0"
+"obanazawa.yamagata.jp\0info.at\0"
+"info.au\0gov.by\0cc.na\0directory\0ddnss.de\0"
"gov.bz\0"
-"mcpe.me\0"
-"gov.cl\0"
+"stat.no\0sauherad.no\0k12.ne.us\0"
+"gov.cl\0kuroiso.tochigi.jp\0"
"gov.cm\0"
-"gov.cn\0dyn-o-saur.com\0"
+"info.az\0gov.cn\0"
"gov.co\0"
-"karm\xc3\xb8y.no\0"
-"haugesund.no\0"
-"osen.no\0"
-"rennesoy.no\0"
-"gov.cu\0"
-"toyoake.aichi.jp\0knx-server.net\0"
-"gov.cx\0\xe5\xae\xae\xe5\xb4\x8e.jp\0"
+"ujitawara.kyoto.jp\0pila.pl\0wien.funkfeuer.at\0"
+"vodka\0from-ga.com\0tuva.su\0"
+"info.bo\0netbank\0"
+"tottori.jp\0yamaga.kumamoto.jp\0"
+"gov.cu\0name\0"
+"cc.ne.us\0"
+"gov.cx\0fund\0supersale.jp\0"
"gov.cy\0"
-"takino.hyogo.jp\0cya.gg\0"
-"hellas.museum\0"
-"medicina.bo\0xj.cn\0"
+"pol.dz\0"
+"k12.oh.us\0\xd0\xb1\xd0\xb5\xd0\xbb\0\xe5\x95\x86\xe6\xa0\x87\0jp.eu.org\0de.ls\0"
+"chino.nagano.jp\0de.md\0"
"gov.dm\0"
-"at.eu.org\0"
-"gov.do\0vanylven.no\0"
-"cn-north-1.eb.amazonaws.com.cn\0"
-"izumi.osaka.jp\0"
-"nakagusuku.okinawa.jp\0"
-"gov.ec\0"
+"gov.do\0loten.no\0"
+"info.co\0gov.ec\0"
"gov.ee\0"
-"gov.eg\0himi.toyama.jp\0"
-"esashi.hokkaido.jp\0"
-"morena.br\0gov.dz\0vda.it\0skygearapp.com\0"
-"works\0"
-"firm.ht\0cc.ar.us\0world\0"
-"tenkawa.nara.jp\0"
-"tokashiki.okinawa.jp\0"
-"gov.et\0"
-"press\0"
-"tempio-olbia.it\0gobo.wakayama.jp\0"
-"firm.in\0land-4-sale.us\0"
-"gov.fj\0s3.ca-central-1.amazonaws.com\0"
-"ox.rs\0"
-"\xe7\x86\x8a\xe6\x9c\xac.jp\0"
-"asago.hyogo.jp\0"
-"\xe5\xa4\xa7\xe5\x88\x86.jp\0kita.tokyo.jp\0flickr\0"
-"otaru.hokkaido.jp\0us-east-2.elasticbeanstalk.com\0"
-"urbino-pesaro.it\0chihayaakasaka.osaka.jp\0"
-"isumi.chiba.jp\0artsandcrafts.museum\0essex.museum\0"
-"nagoya\0"
-"is-a-linux-user.org\0"
+"gov.eg\0secaas.hk\0"
+"gent\0"
+"bloxcms.com\0"
+"cim.br\0gov.dz\0"
+"k12.il\0fi.it\0kawaminami.miyazaki.jp\0irish\0"
+"gov.et\0yamada.fukuoka.jp\0"
+"holtalen.no\0wang\0"
+"gov.fj\0"
+"leirfjord.no\0k12.or.us\0"
+"fr.it\0ichinoseki.iwate.jp\0"
+"bushey.museum\0"
+"wegrow.pl\0"
+"casino.hu\0burghof.museum\0space\0eu.meteorapp.com\0"
+"spjelkavik.no\0"
"gov.gd\0"
"gov.ge\0"
-"gov.gh\0"
+"gov.gh\0saitama.jp\0"
"gov.gi\0"
-"izena.okinawa.jp\0kirovograd.ua\0audi\0vologda.su\0"
-"monster\0"
-"mediocampidano.it\0shiogama.miyagi.jp\0endofinternet.net\0"
-"gov.gn\0powiat.pl\0rec.ro\0"
-"rel.ht\0s\xc3\xb8r-varanger.no\0"
-"degree\0"
-"gov.gr\0pimienta.org\0blog.kg\0"
-"qld.edu.au\0"
-"elasticbeanstalk.com\0"
-"gov.gu\0ujiie.tochigi.jp\0exeter.museum\0"
-"firm.co\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0"
-"gov.gy\0\xe5\xb2\xa9\xe6\x89\x8b.jp\0newmexico.museum\0"
-"kunisaki.oita.jp\0"
-"gov.hk\0star\0"
-"yusuhara.kochi.jp\0lib.la.us\0"
-"shinkamigoto.nagasaki.jp\0sandoy.no\0minisite.ms\0"
-"dating\0"
-"hirata.fukushima.jp\0chattanooga.museum\0ltd.ua\0small-web.org\0"
-"beer\0"
-"media.museum\0firm.dk\0"
-"gov.ie\0"
-"palace.museum\0plumbing\0"
-"taka.hyogo.jp\0"
-"kami.kochi.jp\0chrome\0"
-"gov.il\0ltd.uk\0"
+"k12.pa.us\0"
+"adachi.tokyo.jp\0"
+"gov.gn\0"
+"forte.id\0"
+"plantation.museum\0"
+"gov.gr\0"
+"f.bg\0\xe6\x95\x99\xe8\x82\xb2.hk\0gs.sf.no\0"
+"pol.ht\0"
+"gov.gu\0"
+"cust.dev.thingdust.io\0"
+"gov.gy\0"
+"gov.hk\0"
+"carrara-massa.it\0"
+"nanyo.yamagata.jp\0"
+"woodside\0"
+"o.bg\0romsa.no\0blogdns.org\0myftp.org\0"
+"sardinia.it\0"
+"pri.ee\0gov.ie\0"
+"upaas.kazteleport.kz\0"
+"cc.pr.us\0"
+"shinshiro.aichi.jp\0"
+"gov.il\0"
"gov.in\0"
-"yakage.okayama.jp\0"
-"toyo.kochi.jp\0vadso.no\0"
-"gov.iq\0kvitsoy.no\0"
+"trentinsudtirol.it\0"
+"gov.iq\0trade\0"
"gov.ir\0"
-"gov.is\0"
-"gov.it\0"
-"priv.hu\0"
-"hiraizumi.iwate.jp\0"
-"fi.cr\0mi.it\0aurland.no\0passagens\0istmein.de\0"
-"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0"
-"nonoichi.ishikawa.jp\0"
-"ac.gov.br\0kagawa.jp\0"
-"lanxess\0\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0"
-"gov.jo\0\xe7\xa7\xbb\xe5\x8a\xa8\0"
-"trentinsued-tirol.it\0"
-"geisei.kochi.jp\0lighting\0"
-"rec.ve\0"
-"ato.br\0gov.kg\0"
-"guardian\0"
+"x.bg\0gov.is\0"
+"gov.it\0abira.hokkaido.jp\0jaworzno.pl\0"
+"prof.pr\0"
+"naustdal.no\0"
+"kunohe.iwate.jp\0yugawara.kanagawa.jp\0"
+"cc.ua\0"
+"pueblo.bo\0froya.no\0az.us\0"
+"gov.jo\0egersund.no\0adimo.co.uk\0"
+"witd.gov.pl\0"
+"plo.ps\0\xe3\x82\xbb\xe3\x83\xbc\xe3\x83\xab\0"
+"yamatokoriyama.nara.jp\0"
+"gov.kg\0\xc3\xa5mli.no\0"
+"como.it\0"
"gov.ki\0"
-"security\0stockholm\0"
-"\xe6\x89\x8b\xe6\x9c\xba\0"
-"diet\0unusualperson.com\0"
-"gov.km\0surnadal.no\0"
-"gov.kn\0bnpparibas\0"
-"gov.kp\0bloger.id\0"
-"gov.la\0sebastopol.ua\0shouji\0*.tst.site\0"
-"gov.lb\0group\0"
-"gov.lc\0g\xc3\xa1ls\xc3\xa1.no\0zone\0"
-"gratis\0"
-"tsushima.nagasaki.jp\0gov.kw\0"
-"maringa.br\0"
-"gov.ky\0"
+"izumozaki.niigata.jp\0fuchu.tokyo.jp\0"
+"gov.km\0"
+"gov.kn\0"
+"airline.aero\0"
+"kasamatsu.gifu.jp\0gov.kp\0"
+"gov.la\0g\xc3\xbcnstigbestellen.de\0"
+"gov.lb\0"
+"gov.lc\0"
+"yokoshibahikari.chiba.jp\0"
+"platter-app.com\0"
+"\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0no-ip.biz\0"
+"gov.kw\0github.io\0"
+"\xe6\xbe\xb3\xe9\x96\x80\0"
"gov.kz\0"
-"slg.br\0gov.lk\0l\xc3\xb8ten.no\0"
-"newspaper.museum\0contact\0"
-"k12.va.us\0"
-"grosseto.it\0trogstad.no\0piw.gov.pl\0"
-"noheji.aomori.jp\0rocher\0"
-"gov.ma\0stordal.no\0trust\0"
-"nb.ca\0gov.lr\0duckdns.org\0"
-"nagaoka.niigata.jp\0gov.ls\0"
-"gov.lt\0is-a-landscaper.com\0tuva.su\0"
+"gov.lk\0"
+"boston.museum\0labor.museum\0"
+"ngrok.io\0io.kg\0"
+"gov.ma\0"
+"gov.lr\0"
+"gov.ls\0"
+"kumano.mie.jp\0gov.lt\0vxl.sh\0"
"gov.me\0"
"gov.lv\0"
-"\xe5\xb1\xb1\xe5\x8f\xa3.jp\0gov.mg\0"
-"gov.ly\0"
-"echizen.fukui.jp\0gov.mk\0"
-"fukuchiyama.kyoto.jp\0gov.ml\0"
-"gov.mn\0norton\0dynalias.org\0"
-"gov.mo\0"
-"history.museum\0deno.dev\0"
-"gov.mr\0cincinnati.museum\0"
-"tr.it\0gov.ms\0"
-"kiyama.saga.jp\0mypsx.net\0"
+"recreation.aero\0gov.mg\0leikanger.no\0"
+"koriyama.fukushima.jp\0\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\0"
+"gov.ly\0dn.ua\0s3-ap-southeast-1.amazonaws.com\0"
+"gov.mk\0\xc3\xa5lesund.no\0de.us\0"
+"gov.ml\0"
+"gov.mn\0"
+"gov.mo\0lunner.no\0"
+"hiraya.nagano.jp\0"
+"pvh.br\0gov.mr\0"
+"gov.ms\0orkanger.no\0"
"gov.mu\0"
-"gov.mv\0schulserver.de\0"
-"gov.mw\0gov.ng\0"
-"tsuchiura.ibaraki.jp\0"
-"gov.my\0"
-"gov.mz\0ollo\0"
-"r\xc3\xb8yrvik.no\0"
-"africa\0"
-"n\xc3\xb8tter\xc3\xb8y.no\0"
+"gov.mv\0olayan\0"
+"pb.ao\0gov.mw\0gov.ng\0hm.no\0"
+"gov.my\0navy\0"
+"gov.mz\0"
+"or.at\0"
+"aosta.it\0minamiyamashiro.kyoto.jp\0"
+"or.bi\0philadelphiaarea.museum\0js.wpenginepowered.com\0"
"gov.nr\0"
-"\xd9\xbe\xd8\xa7\xda\xa9\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0"
-"kikonai.hokkaido.jp\0mifune.kumamoto.jp\0johana.toyama.jp\0"
-"hs.zone\0"
-"academy.museum\0priv.at\0"
-"rel.pl\0pgfog.com\0applinzi.com\0"
-"tokorozawa.saitama.jp\0"
-"banamex\0"
-"gov.om\0channelsdvr.net\0"
-"tateyama.chiba.jp\0r\xc3\xb8st.no\0babia-gora.pl\0"
-"whaling.museum\0"
-"\xce\xb5\xce\xbb\0ownprovider.com\0"
-"observer\0diadem.cloud\0"
-"kragero.no\0gov.ph\0"
-"a.bg\0fhsk.se\0"
-"fi.it\0monza.it\0ginoza.okinawa.jp\0gov.pk\0\xce\xb5\xcf\x85\0"
-"gov.pl\0"
-"gdansk.pl\0"
-"gov.pn\0meteorapp.com\0"
-"minowa.nagano.jp\0"
-"tabayama.yamanashi.jp\0"
-"gov.qa\0"
-"samukawa.kanagawa.jp\0gov.pr\0"
-"gov.ps\0nodum.co\0"
-"pz.it\0gov.pt\0"
-"mitake.gifu.jp\0"
-"infiniti\0lincoln\0"
-"heroy.more-og-romsdal.no\0gov.py\0"
-"dontexist.org\0"
-"airforce\0jele.site\0"
-"bifuka.hokkaido.jp\0"
-"somna.no\0"
-"carrara-massa.it\0"
-"orsta.no\0"
-"shiroishi.saga.jp\0"
-"school\0"
-"buyshouses.net\0"
-"joetsu.niigata.jp\0"
-"kembuchi.hokkaido.jp\0"
-"seg.br\0"
-"tr.no\0firm.ve\0"
-"*.backyards.banzaicloud.io\0"
-"gen.in\0tateshina.nagano.jp\0gov.sa\0"
+"stranda.no\0"
+"accenture\0"
+"aju.br\0"
+"mango\0"
+"joetsu.niigata.jp\0lezajsk.pl\0"
+"info.ve\0law.za\0"
+"lc.it\0trento.it\0"
+"gov.om\0"
+"jele.io\0"
+"taka.hyogo.jp\0"
+"or.ci\0krasnodar.su\0"
+"info.vn\0"
+"accesscam.org\0"
+"\xe6\x96\xb0\xe6\xbd\x9f.jp\0nayoro.hokkaido.jp\0"
+"is-a-democrat.com\0*.r.appspot.com\0"
+"osen.no\0dnsupdate.info\0"
+"gov.ph\0"
+"from-in.com\0"
+"or.cr\0"
+"gov.pk\0"
+"tokamachi.niigata.jp\0gov.pl\0myeffect.net\0"
+"pasadena.museum\0"
+"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0gov.pn\0"
+"iraq.museum\0gov.qa\0lamborghini\0"
+"gov.pr\0k12.tr\0"
+"gov.ps\0"
+"ginan.gifu.jp\0wazuka.kyoto.jp\0gov.pt\0"
+"gov.py\0"
+"lu.it\0me.it\0miyagi.jp\0nerima.tokyo.jp\0shunan.yamaguchi.jp\0capital\0"
+"morena.br\0"
+"batsfjord.no\0"
+"fortworth.museum\0isteingeek.de\0"
+"info.tn\0"
+"info.tr\0"
+"akkeshi.hokkaido.jp\0info.tt\0"
+"farmstead.museum\0k12.vi\0"
+"sn\xc3\xa5sa.no\0"
+"mn.it\0nakanojo.gunma.jp\0omiya.saitama.jp\0"
+"me.ke\0yosemite.museum\0"
+"info.tz\0"
+"\xe6\xbe\xb3\xe9\x97\xa8\0"
+"gov.sa\0servebbs.com\0"
"gov.sb\0"
-"gov.rs\0gov.sc\0ens.tn\0nodum.io\0"
-"toga.toyama.jp\0naval.museum\0gov.sd\0author\0"
-"mutsu.aomori.jp\0gov.ru\0"
-"himeji.hyogo.jp\0gov.rw\0gov.sg\0"
-"kitakami.iwate.jp\0gov.sh\0"
-"certification.aero\0"
-"koga.fukuoka.jp\0"
-"dnsdojo.org\0"
-"ca.it\0gov.sl\0"
-"gov.so\0\xe6\xb7\xa1\xe9\xa9\xac\xe9\x94\xa1\0eu.org\0"
-"qpon\0"
-"moka.tochigi.jp\0salon\0pokrovsk.su\0"
-"gov.ss\0"
-"gov.sx\0"
-"treviso.it\0gov.sy\0"
-"soeda.fukuoka.jp\0takasu.hokkaido.jp\0gov.tj\0"
-"balsan-sudtirol.it\0"
-"gov.tl\0"
-"mi.th\0gov.tm\0"
-"gov.tn\0"
-"arao.kumamoto.jp\0gov.to\0"
-"askoy.no\0framer.app\0"
-"langev\xc3\xa5g.no\0gov.ua\0"
+"gov.rs\0gov.sc\0"
+"anjo.aichi.jp\0tobe.ehime.jp\0oguni.yamagata.jp\0gov.sd\0"
+"handson.museum\0gov.ru\0"
+"gov.rw\0gov.sg\0"
+"hanawa.fukushima.jp\0gov.sh\0"
+"simple-url.com\0herokuapp.com\0"
+"salvador.br\0"
+"susono.shizuoka.jp\0misasa.tottori.jp\0gov.sl\0"
+"dattoweb.com\0quicksytes.com\0"
+"sorocaba.br\0"
+"floro.no\0gov.so\0"
+"vic.gov.au\0from-fl.com\0"
+"pol.tr\0"
+"info.ro\0gov.ss\0"
+"\xe9\xb9\xbf\xe5\x85\x90\xe5\xb3\xb6.jp\0narita.chiba.jp\0yabuki.fukushima.jp\0"
+"ubank\0"
+"info.sd\0gov.sx\0"
+"gov.sy\0"
+"gov.tj\0"
+"wlocl.pl\0gov.tl\0"
+"gov.tm\0\xd1\x81\xd0\xbf\xd0\xb1.\xd1\x80\xd1\x83\xd1\x81\0"
+"gov.tn\0frontdoor\0"
+"gov.to\0"
+"gov.ua\0"
"gov.tr\0"
-"gov.tt\0"
-"friulive-giulia.it\0ulsan.kr\0gov.tw\0"
+"potenza.it\0starachowice.pl\0gov.tt\0"
+"africa.com\0sells-for-u.com\0"
+"gov.tw\0crd.co\0"
+"rokunohe.aomori.jp\0"
+"if.ua\0"
"gov.uk\0"
-"rsc.cdn77.org\0"
-"kotohira.kagawa.jp\0hirakata.osaka.jp\0cyou\0"
-"suedtirol.it\0myoko.niigata.jp\0k12.ky.us\0"
-"podzone.org\0"
-"minamitane.kagoshima.jp\0gov.vc\0"
-"iz.hr\0cc.fl.us\0"
-"gov.ve\0"
-"googlecode.com\0"
-"mi.us\0"
-"tarui.gifu.jp\0k12.vt.us\0"
-"kitagawa.miyazaki.jp\0notteroy.no\0"
-"gov.vn\0au.eu.org\0be.eu.org\0"
-"minakami.gunma.jp\0"
-"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0"
-"kinokawa.wakayama.jp\0kudamatsu.yamaguchi.jp\0usa.museum\0"
-"best\0"
-"suisse.museum\0s3.dualstack.eu-west-1.amazonaws.com\0"
-"firm.ro\0"
-"ca.na\0"
-"nishio.aichi.jp\0gen.ng\0"
-"eidfjord.no\0malopolska.pl\0"
-"pruszkow.pl\0in.net\0"
-"mizusawa.iwate.jp\0"
-"community.museum\0"
-"auto\0"
-"arteducation.museum\0mircloud.host\0"
-"koge.tottori.jp\0oster\xc3\xb8y.no\0gov.ws\0"
-"hazu.aichi.jp\0"
-"team\0"
-"\xd1\x81\xd0\xbe\xd1\x87\xd0\xb8.\xd1\x80\xd1\x83\xd1\x81\0"
-"ogasawara.tokyo.jp\0"
-"anquan\0channel\0hughes\0"
-"gen.nz\0"
-"futtsu.chiba.jp\0"
-"mr.no\0dish\0"
-"nikaho.akita.jp\0"
-"uk.kg\0"
-"swiftcover\0"
-"profesional.bo\0"
-"gov.ye\0"
-"shinyoshitomi.fukuoka.jp\0"
-"nakasatsunai.hokkaido.jp\0"
-"nosegawa.nara.jp\0caravan\0"
-"s3.dualstack.ap-southeast-1.amazonaws.com\0"
-"wellbeingzone.co.uk\0"
-"shimodate.ibaraki.jp\0mo-i-rana.no\0cc.ne.us\0"
-"brasil.museum\0\xc3\xb8stre-toten.no\0"
-"gov.za\0tech\0"
-"kamifurano.hokkaido.jp\0"
-"takatsuki.shiga.jp\0filatelia.museum\0"
-"j.bg\0"
-"fr.it\0"
-"stalowa-wola.pl\0mckinsey\0"
-"haga.tochigi.jp\0hyundai\0bplaced.com\0"
-"now-dns.org\0"
-"barcelona.museum\0ap-south-1.elasticbeanstalk.com\0"
-"js.cn\0hokkaido.jp\0"
-"gov.zm\0"
-"bg.eu.org\0pa.leg.br\0"
-"firm.nf\0vapor.cloud\0"
-"rc.it\0firm.ng\0"
-"firebaseapp.com\0"
-"padova.it\0"
-"gov.zw\0s3-us-west-1.amazonaws.com\0myfritz.net\0"
-"kibichuo.okayama.jp\0"
-"from-nj.com\0api.stdlib.com\0"
-"seto.aichi.jp\0"
-"union.aero\0townnews-staging.com\0"
-"yaese.okinawa.jp\0"
-"s3.dualstack.sa-east-1.amazonaws.com\0"
-"takaharu.miyazaki.jp\0"
-"neyagawa.osaka.jp\0"
-"matsumoto.kagoshima.jp\0"
-"yakumo.shimane.jp\0"
-"is-a-blogger.com\0"
-"al.gov.br\0"
-"vaga.no\0acct.pro\0pb.leg.br\0"
-"lpages.co\0"
-"yanagawa.fukuoka.jp\0"
-"fvg.it\0"
-"sejny.pl\0raid\0"
-"2.bg\0"
-"bz.it\0alipay\0no-ip.co.uk\0"
-"lillehammer.no\0"
-"virtualserver.io\0"
-"yamagata.jp\0"
-"mini\0"
-"londrina.br\0"
-"lodi.it\0health-carereform.com\0"
-"sogndal.no\0\xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x9f\0"
-"gen.tr\0traeumtgerade.de\0"
-"khplay.nl\0"
-"kikuchi.kumamoto.jp\0mint\0"
-"nagasu.kumamoto.jp\0"
-"equipment.aero\0*.elb.amazonaws.com.cn\0"
-"barsyonline.co.uk\0"
-"tomari.hokkaido.jp\0"
-"asakuchi.okayama.jp\0"
-"asahi.nagano.jp\0locus\0"
-"akita.jp\0"
-"bosch\0insure\0"
-"my-gateway.de\0"
-"ca.us\0"
-"inabe.mie.jp\0webthings.io\0"
-"nt.au\0"
-"brunel.museum\0neat-url.com\0"
-"kvam.no\0"
-"arvo.network\0"
-"lubartow.pl\0"
-"massacarrara.it\0from-wy.com\0"
-"yorkshire.museum\0"
-"lamer\0"
-"glogow.pl\0vps.mcdir.ru\0"
-"nt.ca\0"
-"usdecorativearts.museum\0"
-"hr.eu.org\0"
-"narviika.no\0"
-"miyakonojo.miyazaki.jp\0kitayama.wakayama.jp\0"
-"children.museum\0"
-"kimitsu.chiba.jp\0"
-"a.se\0"
-"js.org\0synology-ds.de\0"
-"kamo.kyoto.jp\0"
-"nahari.kochi.jp\0"
-"takahashi.okayama.jp\0curv.dev\0"
-"priv.pl\0"
-"u2-local.xnbay.com\0"
-"tranoy.no\0"
-"tajimi.gifu.jp\0"
-"trentino-sudtirol.it\0"
-"urakawa.hokkaido.jp\0"
-"readmyblog.org\0"
-"k12.id.us\0dyn-ip24.de\0"
-"\xd1\x8f.\xd1\x80\xd1\x83\xd1\x81\0"
-"kunimi.fukushima.jp\0williamsburg.museum\0"
-"raisa.no\0from-ma.com\0"
-"barrell-of-knowledge.info\0scrysec.com\0"
-"awaji.hyogo.jp\0"
-"luxury\0"
-"yugawa.fukushima.jp\0"
-"sund.no\0"
-"synology-diskstation.de\0"
-"kamikawa.saitama.jp\0miasta.pl\0"
-"barueri.br\0"
-"stj\xc3\xb8rdal.no\0is-a-photographer.com\0"
-"trentinsuedtirol.it\0priv.no\0"
-"s.bg\0"
-"gaular.no\0"
-"taa.it\0hizen.saga.jp\0"
-"oguni.yamagata.jp\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0"
-"slattum.no\0"
-"hyllestad.no\0"
-"tsushima.aichi.jp\0"
-"\xe4\xb8\x89\xe9\x87\x8d.jp\0"
-"seidat.net\0"
-"intelligence.museum\0"
-"is-very-nice.org\0"
-"awsglobalaccelerator.com\0"
-"air-traffic-control.aero\0davvesiida.no\0"
-"k12.fl.us\0hk.com\0"
-"lib.mt.us\0lib.nd.us\0barsy.me\0"
-"takatsuki.osaka.jp\0"
-"priv.me\0"
-"rotorcraft.aero\0"
-"cahcesuolo.no\0playstation\0"
-"healthcare\0"
-"trentinoalto-adige.it\0kaminokawa.tochigi.jp\0"
-"trentinsudtirol.it\0"
-"niikappu.hokkaido.jp\0"
-"usercontent.jp\0"
-"cs.it\0is-a-libertarian.com\0"
-"ragusa.it\0"
-"x.mythic-beasts.com\0"
-"kunitomi.miyazaki.jp\0juedisches.museum\0"
-"caltanissetta.it\0koryo.nara.jp\0langevag.no\0"
-"satx.museum\0etnedal.no\0"
-"database.museum\0"
-"muroran.hokkaido.jp\0"
-"denmark.museum\0"
-"presse.km\0"
+"or.id\0"
+"aviation.museum\0\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9\0"
+"klepp.no\0info.pk\0"
+"info.pl\0"
+"*.compute.amazonaws.com\0"
+"gov.vc\0"
+"takinoue.hokkaido.jp\0tobetsu.hokkaido.jp\0"
+"tas.edu.au\0gov.ve\0"
+"sh.cn\0info.pr\0"
+"n\xc3\xa1vuotna.no\0"
+"napoli.it\0shinanomachi.nagano.jp\0"
+"or.it\0"
+"naturbruksgymn.se\0"
+"gov.vn\0"
+"oygarden.no\0"
+"mizusawa.iwate.jp\0hyuga.miyazaki.jp\0makeup\0"
+"assassination.museum\0school.museum\0"
+"otari.nagano.jp\0sejny.pl\0"
+"iron.museum\0info.na\0\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\0"
+"hotel.tz\0"
+"or.jp\0chiyoda.gunma.jp\0"
+"ukco.me\0"
+"info.mv\0info.nf\0"
+"nesodden.no\0"
+"or.ke\0info.ni\0"
+"nflfan.org\0"
+"beep.pl\0"
+"cuiaba.br\0"
+"gov.ws\0"
"chocolate.museum\0"
-"dyroy.no\0"
-"uchinomi.kagawa.jp\0"
-"surf\0"
-"science-fiction.museum\0\xc3\xb8ksnes.no\0"
-"kazimierz-dolny.pl\0"
-"eastus2.azurestaticapps.net\0"
-"dali.museum\0rl.no\0fairwinds\0"
-"media.hu\0"
-"trentino-s\xc3\xbc""dtirol.it\0"
-"\xe6\x84\x9b\xe7\x9f\xa5.jp\0sykkylven.no\0"
-"kwpsp.gov.pl\0"
-"getmyip.com\0"
-"santamaria.br\0"
-"taishin.fukushima.jp\0bygland.no\0"
-"latina.it\0modum.no\0"
-"shinjuku.tokyo.jp\0"
-"izumozaki.niigata.jp\0presse.ml\0"
-"mitsue.nara.jp\0tendo.yamagata.jp\0r\xc3\xa5holt.no\0"
-"properties\0"
-"fetsund.no\0myasustor.com\0"
-"pistoia.it\0verona.it\0githubusercontent.com\0jcloud.kz\0"
-"\xe6\x85\x88\xe5\x96\x84\0pi.leg.br\0"
-"dazaifu.fukuoka.jp\0environmentalconservation.museum\0"
-"kounosu.saitama.jp\0*.on-k3s.io\0"
-"khmelnytskyi.ua\0"
-"exnet.su\0"
-"fuoisku.no\0"
-"tos.it\0"
-"imakane.hokkaido.jp\0"
-"adult\0endofinternet.org\0"
-"visa\0"
-"workinggroup.aero\0higashisumiyoshi.osaka.jp\0isa-hockeynut.com\0"
-"gob.ar\0nagara.chiba.jp\0colonialwilliamsburg.museum\0"
-"m\xc4\x81ori.nz\0"
-"is-into-anime.com\0"
-"nt.no\0webspace.rocks\0"
-"oizumi.gunma.jp\0furniture\0hsbc\0icbc\0"
-"teva\0"
-"padua.it\0"
-"ponpes.id\0"
-"settsu.osaka.jp\0voagat.no\0test-iserv.de\0azimuth.network\0"
-"gob.bo\0showtime\0"
-"rygge.no\0\xd8\xa7\xd9\x84\xd8\xa8\xd8\xad\xd8\xb1\xd9\x8a\xd9\x86\0"
-"iwakuni.yamaguchi.jp\0"
-"wodzislaw.pl\0"
-"ut.us\0"
-"koto.tokyo.jp\0alvdal.no\0"
-"gob.cl\0"
-"hostyhosting.io\0"
-"yokoze.saitama.jp\0sauda.no\0is-a-doctor.com\0"
-"sado.niigata.jp\0"
-"\xe0\xb8\x84\xe0\xb8\xad\xe0\xb8\xa1\0"
-"mazeplay.com\0"
-"amami.kagoshima.jp\0vegas\0barsy.uk\0"
-"oxford.museum\0u.channelsdvr.net\0"
-"chirurgiens-dentistes.fr\0kasuga.fukuoka.jp\0"
-"wpdevcloud.com\0"
-"jelastic.tsukaeru.net\0mysecuritycamera.net\0"
-"nakagawa.fukuoka.jp\0"
-"gob.do\0seven\0"
-"viva\0"
-"authgear-staging.com\0"
-"mus.br\0"
-"gob.ec\0"
-"valleedaoste.it\0"
-"tomakomai.hokkaido.jp\0"
-"oita.oita.jp\0dnsdojo.net\0"
-"futsu.nagasaki.jp\0"
-"is-a-techie.com\0"
-"tas.au\0"
-"kumenan.okayama.jp\0"
-"vivo\0alp1.ae.flow.ch\0"
-"l\xc3\xb8""dingen.no\0"
-"storj.farm\0"
-"gob.es\0maori.nz\0"
-"nt.ro\0"
-"pagespeedmobilizer.com\0"
-"akabira.hokkaido.jp\0"
-"lakas.hu\0"
-"oarai.ibaraki.jp\0berlevag.no\0"
-"cagliari.it\0"
-"goodyear\0bplaced.net\0"
-"hakusan.ishikawa.jp\0"
-"pavia.it\0nichinan.tottori.jp\0selje.no\0media.pl\0"
-"restaurant\0"
-"apps.fbsbx.com\0"
-"racing\0"
-"sekigahara.gifu.jp\0"
-"hamatonbetsu.hokkaido.jp\0"
-"sn.cn\0"
-"lucania.it\0"
-"toyooka.hyogo.jp\0cyber.museum\0"
-"\xd0\xbe\xd0\xbd\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd\0"
-"tagajo.miyagi.jp\0"
-"gob.gt\0togitsu.nagasaki.jp\0"
-"cat.ax\0"
-"square.museum\0"
-"jls-sto3.elastx.net\0"
-"koya.wakayama.jp\0"
-"cadaques.museum\0od.ua\0global.ssl.fastly.net\0"
-"joboji.iwate.jp\0"
-"pe.leg.br\0"
-"gob.hn\0"
-"moonscale.net\0pagexl.com\0"
-"coal.museum\0"
-"mikasa.hokkaido.jp\0"
-"dc.us\0"
-"tsk.tr\0"
-"sakawa.kochi.jp\0"
-"yamaguchi.jp\0"
-"ostre-toten.no\0weber\0"
-"is-into-cartoons.com\0"
-"bulsan-s\xc3\xbc""dtirol.it\0"
-"ikaruga.nara.jp\0smart\0"
-"tottori.tottori.jp\0"
-"tychy.pl\0us-4.evennode.com\0"
-"dyndns.org\0"
-"\xeb\x8b\xb7\xeb\x84\xb7\0"
-"skoczow.pl\0hasura-app.io\0"
-"makurazaki.kagoshima.jp\0"
-"filegear-de.me\0"
-"salem.museum\0"
-"le.it\0"
-"arezzo.it\0\xe5\xb2\x90\xe9\x98\x9c.jp\0"
-"ad.jp\0nanto.toyama.jp\0"
-"il.eu.org\0"
-"lillesand.no\0s.se\0ru.com\0bar1.net\0*.sensiosite.cloud\0"
+"tj.cn\0info.nr\0"
+"katori.chiba.jp\0"
+"onrender.com\0"
+"or.kr\0"
+"csx.cc\0"
+"pt.it\0"
+"arts.museum\0"
+"scholarships\0pantheonsite.io\0"
+"f.se\0"
+"doctor\0"
+"info.la\0gov.ye\0"
+"resindevice.io\0"
+"ryugasaki.ibaraki.jp\0"
+"jewelry\0"
+"mifune.kumamoto.jp\0*.northflank.app\0"
+"berkeley.museum\0"
+"other.nf\0"
+"o.se\0gov.za\0"
+"kawajima.saitama.jp\0sano.tochigi.jp\0"
+"bellevue.museum\0"
+"busan.kr\0"
+"info.ls\0dynserv.org\0ybo.review\0"
+"shimokawa.hokkaido.jp\0"
+"or.na\0ks.ua\0"
+"is.eu.org\0gitlab.io\0"
+"or.mu\0gov.zm\0lacaixa\0*.digitaloceanspaces.com\0"
+"construction\0"
+"x.se\0us-4.evennode.com\0"
+"ntdll.top\0"
+"presse.km\0ivano-frankivsk.ua\0ro.im\0"
+"vevelstad.no\0me.so\0gov.zw\0myphotos.cc\0"
+"fermo.it\0yamagata.nagano.jp\0"
+"ggee\0"
+"des.br\0"
+"me.ss\0ks.us\0me.tc\0"
+"ro.it\0chikuho.fukuoka.jp\0"
+"portlligat.museum\0bofa\0enterprisecloud.nu\0"
+"tamakawa.fukushima.jp\0takasaki.gunma.jp\0"
+"mysecuritycamera.com\0"
+"chikuhoku.nagano.jp\0"
+"*.compute.estate\0"
+"inderoy.no\0skj\xc3\xa5k.no\0dnsalias.org\0"
+"tsuno.kochi.jp\0*.cryptonomic.net\0"
+"info.ke\0"
+"plurinacional.bo\0it.eu.org\0"
+"info.ki\0marylhurst.museum\0"
+"sk\xc3\xa5nland.no\0"
+"bulsan-suedtirol.it\0"
+"usarts.museum\0from-ak.com\0navoi.su\0"
+"me.tz\0"
+"me.uk\0"
+"takatsuki.shiga.jp\0presse.ml\0"
+"osasco.br\0"
+"salat.no\0"
+"barefoot\0"
+"vinnytsia.ua\0"
+"me.us\0"
+"ta.it\0hiraizumi.iwate.jp\0sukumo.kochi.jp\0williamhill\0"
+"or.pw\0"
+"uwu.ai\0"
+"fredrikstad.no\0ardal.no\0"
+"nanmoku.gunma.jp\0"
+"hotel.lk\0"
+"liguria.it\0nankoku.kochi.jp\0tome.miyagi.jp\0"
+"\xe4\xba\x9a\xe9\xa9\xac\xe9\x80\x8a\0"
+"mn.us\0"
+"tateyama.toyama.jp\0"
+"cherkassy.ua\0college\0me.vu\0"
+"shinto.gunma.jp\0teshikaga.hokkaido.jp\0bar0.net\0"
+"us-3.evennode.com\0ddns.me\0"
+"biev\xc3\xa1t.no\0stord.no\0"
+"\xe4\xbd\x9b\xe5\xb1\xb1\0"
+"ts.it\0prochowice.pl\0"
+"*.transurl.be\0"
+"urasoe.okinawa.jp\0"
+"kyiv.ua\0"
+"vision\0"
+"is-a-lawyer.com\0"
+"saogonca.br\0"
+"tsukumi.oita.jp\0"
+"yk.ca\0public.museum\0"
+"airbus\0backplaneapp.io\0in.eu.org\0"
+"campania.it\0ono.hyogo.jp\0mihara.kochi.jp\0tabayama.yamanashi.jp\0"
+"v\xc3\xa1rgg\xc3\xa1t.no\0\xe3\x83\x95\xe3\x82\xa1\xe3\x83\x83\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0"
+"bolzano-altoadige.it\0hayashima.okayama.jp\0nose.osaka.jp\0koza.wakayama.jp\0or.th\0"
+"hokksund.no\0"
+"kakogawa.hyogo.jp\0"
+"decorativearts.museum\0sochi.su\0"
+"fbx-os.fr\0"
+"sor-varanger.no\0"
+"ashoro.hokkaido.jp\0"
+"paas.hosted-by-previder.com\0"
+"ny.us\0"
+"ve.it\0swinoujscie.pl\0"
+"florida.museum\0"
+"k\xc3\xa5""fjord.no\0or.ug\0"
+"or.tz\0dscloud.biz\0"
+"vard\xc3\xb8.no\0"
+"nishinomiya.hyogo.jp\0"
+"uhren.museum\0"
+"or.us\0"
"online.th\0"
-"vv.it\0glitch.me\0"
-"jdf.br\0jpmorgan\0"
-"bir.ru\0"
-"ybo.party\0"
-"chuo.fukuoka.jp\0"
-"jaguar\0"
-"k12.in.us\0is-by.us\0"
-"email\0"
-"wiih.gov.pl\0blogspot.vn\0"
-"cim.br\0"
-"am.br\0chikuzen.fukuoka.jp\0"
-"siracusa.it\0"
-"tateyama.toyama.jp\0vega.no\0co.financial\0"
-"yaita.tochigi.jp\0tj\xc3\xb8me.no\0hu.eu.org\0ie.eu.org\0"
-"mulhouse.museum\0"
-"homeftp.org\0"
-"food\0"
-"finland.museum\0selbu.no\0lenug.su\0"
-"anan.nagano.jp\0"
-"oamishirasato.chiba.jp\0"
-"rivne.ua\0voorloper.cloud\0"
-"inawashiro.fukushima.jp\0"
-"is-a-personaltrainer.com\0"
-"ln.cn\0alsace\0us-3.evennode.com\0"
-"pvh.br\0kumano.mie.jp\0*.r.appspot.com\0"
-"matsukawa.nagano.jp\0"
-"\xe6\x94\xbf\xe5\xba\x9c\0authgearapps.com\0"
-"001www.com\0"
-"dnsalias.com\0"
-"gob.mx\0"
-"gob.ni\0"
+"e164.arpa\0loyalist.museum\0"
+"fnd.br\0\xe5\xbe\xae\xe5\x8d\x9a\0"
+"music\0read-books.org\0"
+"umaji.kochi.jp\0ishigaki.okinawa.jp\0"
+"hotel.hu\0us-2.evennode.com\0termez.su\0"
+"steigen.no\0"
+"ternopil.ua\0"
+"gov.nc.tr\0"
+"sellsyourhome.org\0"
+"daigo.ibaraki.jp\0"
+"*.transurl.eu\0"
+"aircraft.aero\0magazine.aero\0dovre.no\0"
+"sardegna.it\0hasami.nagasaki.jp\0bond\0"
+"berlevag.no\0"
+"nisshin.aichi.jp\0shizuoka.shizuoka.jp\0"
+"wiki.bo\0viajes\0"
+"cn.com\0"
+"wiki.br\0"
+"lea\xc5\x8bgaviika.no\0"
+"gateway.museum\0"
+"hakodate.hokkaido.jp\0kin.okinawa.jp\0"
+"book\0apps.lair.io\0"
+"*.linodeobjects.com\0"
+"consulting.aero\0fhs.no\0"
+"s3-sa-east-1.amazonaws.com\0"
+"port.fr\0"
+"fed.us\0"
+"kitagawa.miyazaki.jp\0hidaka.wakayama.jp\0"
+"karate.museum\0"
+"sosa.chiba.jp\0"
+"tsubata.ishikawa.jp\0"
+"dyn.home-webserver.de\0eu-4.evennode.com\0"
+"toolforge.org\0"
+"iizuna.nagano.jp\0handcrafted.jp\0"
+"ontario.museum\0"
+"ichikawa.hyogo.jp\0cs.keliweb.cloud\0"
+"cincinnati.museum\0us-1.evennode.com\0"
+"pa.leg.br\0"
+"fetsund.no\0"
+"kunitachi.tokyo.jp\0warszawa.pl\0"
+"orangecloud.tn\0"
+"oshima.yamaguchi.jp\0"
+"e12.ve\0fidelity\0tashkent.su\0"
+"s3.dualstack.ap-southeast-2.amazonaws.com\0from-va.com\0north-kazakhstan.su\0"
+"cog.mi.us\0sandcats.io\0"
+"kochi.jp\0"
+"harvestcelebration.museum\0"
"realm.cz\0"
-"myvnc.com\0"
-"mihama.chiba.jp\0"
-"lib.de.us\0"
-"ribeirao.br\0yamazoe.nara.jp\0"
-"utsunomiya.tochigi.jp\0"
-"co.education\0"
-"takayama.gunma.jp\0"
-"is-very-good.org\0"
-"toyotsu.fukuoka.jp\0blogspot.re\0"
-"iglesias-carbonia.it\0hichiso.gifu.jp\0"
-"gorizia.it\0gob.pa\0"
-"hamar.no\0ford\0"
-"is-an-anarchist.com\0\xd0\xbc\xd0\xb8\xd1\x80.\xd1\x80\xd1\x83\xd1\x81\0gda.pl\0"
-"hashimoto.wakayama.jp\0"
-"gob.pe\0"
-"\xe6\x95\x99\xe8\x82\xb2.hk\0"
-"birkenes.no\0blogspot.ro\0"
-"ishikari.hokkaido.jp\0mel\xc3\xb8y.no\0"
-"gob.pk\0cc.wi.us\0gehirn.ne.jp\0"
-"cafjs.com\0blogspot.rs\0"
-"blogspot.ru\0blogspot.se\0"
-"shiriuchi.hokkaido.jp\0blogspot.sg\0"
-"wif.gov.pl\0"
-"blogspot.si\0"
-"barsy.bg\0"
-"blogspot.sk\0"
-"blogspot.sn\0on-web.fr\0"
-"abkhazia.su\0"
-"kharkiv.ua\0barsy.ca\0blogspot.td\0"
-"forl\xc3\xac""cesena.it\0fujikawa.yamanashi.jp\0us-2.evennode.com\0"
-"stat.no\0"
-"deatnu.no\0"
-"hm.no\0j\xc3\xb8lster.no\0mus.mi.us\0"
-"isla.pr\0"
-"ogawa.nagano.jp\0"
-"mandal.no\0"
-"pors\xc3\xa1\xc5\x8bgu.no\0pr.leg.br\0"
-"city.hu\0"
-"k12.ne.us\0"
-"blogspot.tw\0blogspot.ug\0"
-"barsy.de\0"
-"aguni.okinawa.jp\0"
-"latino\0"
-"aizumisato.fukushima.jp\0"
-"habikino.osaka.jp\0"
-"blogspot.mr\0"
-"isen.kagoshima.jp\0"
-"bozen-suedtirol.it\0blogspot.mx\0"
-"yoshida.shizuoka.jp\0saarland\0blogspot.my\0"
-"ravendb.me\0"
-"botanical.museum\0blogspot.nl\0"
-"gob.sv\0"
-"blogspot.no\0"
-"barsy.eu\0"
-"aukra.no\0"
-"gifu.jp\0prime\0"
-"brussels.museum\0decorativearts.museum\0schaeffler\0"
-"network\0"
-"yomitan.okinawa.jp\0niepce.museum\0penza.su\0"
-"kunitachi.tokyo.jp\0"
-"and.mom\0"
-"koshu.yamanashi.jp\0richardli\0blogspot.pe\0"
-"us-1.evennode.com\0"
-"presse.ci\0"
-"valdaosta.it\0"
-"lib.sc.us\0"
-"gob.ve\0"
-"shiraoi.hokkaido.jp\0"
-"blogspot.qa\0"
-"ivgu.no\0"
-"kopervik.no\0dedyn.io\0"
-"gr.eu.org\0blogspot.pt\0"
-"\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa7\xb0\xe0\xa6\xa4\0"
-"orskog.no\0"
-"circus.museum\0"
-"filegear-gb.me\0"
-"h\xc3\xb8nefoss.no\0"
-"dagestan.ru\0"
-"okinoshima.shimane.jp\0winb.gov.pl\0"
-"med.pro\0blogspot.is\0"
-"blogspot.it\0"
-"does-it.net\0ryd.wafaicloud.com\0"
-"scienceandhistory.museum\0"
-"nishi.osaka.jp\0"
+"cityeats\0"
+"hitachi.ibaraki.jp\0kitayama.wakayama.jp\0tn.oxa.cloud\0"
+"frankfurt.museum\0is-into-cars.com\0"
+"cust.disrec.thingdust.io\0"
+"catania.it\0forl\xc3\xac-cesena.it\0fukuchi.fukuoka.jp\0inabe.mie.jp\0ureshino.mie.jp\0"
+"ulvik.no\0"
+"isumi.chiba.jp\0"
+"williamsburg.museum\0"
+"owariasahi.aichi.jp\0katsuyama.fukui.jp\0kurogi.fukuoka.jp\0tomioka.gunma.jp\0"
+"pb.leg.br\0"
+"sanjo.niigata.jp\0"
+"crafts.museum\0livinghistory.museum\0oceanographic.museum\0"
+"bio.br\0"
+"moss.no\0"
+"otaru.hokkaido.jp\0boomla.net\0"
+"dyndns.dappnode.io\0"
+"flynnhosting.net\0us.reclaim.cloud\0"
+"club.aero\0"
+"joinville.br\0"
+"ftpaccess.cc\0asso.eu.org\0"
+"detroit.museum\0"
+"of.fashion\0"
+"omotego.fukushima.jp\0ginoza.okinawa.jp\0"
+"eu-3.evennode.com\0"
+"mombetsu.hokkaido.jp\0karumai.iwate.jp\0bialowieza.pl\0vanguard\0"
+"texas.museum\0"
+"muncie.museum\0paleo.museum\0satx.museum\0kherson.ua\0"
+"enebakk.no\0graphox.us\0"
+"sannohe.aomori.jp\0"
+"narvik.no\0k12.ak.us\0"
+"suwalki.pl\0feste-ip.net\0"
+"labour.museum\0is-a-player.com\0"
+"aaa\0"
+"sakaki.nagano.jp\0yomitan.okinawa.jp\0kozagawa.wakayama.jp\0"
+"youth.museum\0info.zm\0"
+"lawyer\0"
+"hurum.no\0"
+"omi.nagano.jp\0*.transurl.nl\0"
+"satte.saitama.jp\0"
+"entertainment.aero\0"
+"\xe5\x85\xb5\xe5\xba\xab.jp\0"
+"abb\0for-more.biz\0"
+"abc\0"
+"hara.nagano.jp\0blogdns.net\0"
+"geelvinck.museum\0"
+"\xe0\xb9\x80\xe0\xb8\x99\xe0\xb9\x87\xe0\xb8\x95.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"drangedal.no\0tranoy.no\0"
+"aogaki.hyogo.jp\0suwa.nagano.jp\0"
+"penza.su\0remotewd.com\0"
+"mayfirst.org\0"
+"vn.ua\0s3-us-gov-west-1.amazonaws.com\0*.uberspace.de\0"
+"svelvik.no\0"
+"okawa.fukuoka.jp\0ham-radio-op.net\0"
+"windmill.museum\0aktyubinsk.su\0"
+"chungbuk.kr\0"
+"mjondalen.no\0lib.ks.us\0"
+"shingu.wakayama.jp\0"
+"careers\0"
+"schulserver.de\0"
+"eu-2.evennode.com\0"
+"siljan.no\0aco\0"
+"association.museum\0"
+"val-d-aosta.it\0"
+"tuscany.it\0taiki.hokkaido.jp\0"
+"bbs.tr\0"
+"bo.nordland.no\0"
+"virginia.museum\0"
+"floripa.br\0town\0"
+"b\xc3\xa1hccavuotna.no\0"
+"miyako.iwate.jp\0"
+"dyndns.tv\0"
+"lib.ma.us\0ads\0*.s5y.io\0"
+"toscana.it\0isen.kagoshima.jp\0kawaiishop.jp\0from-az.net\0cloudapp.net\0"
+"aeg\0"
+"shonai.yamagata.jp\0"
+"yamanobe.yamagata.jp\0edu.krd\0"
+"drr.ac\0"
+"shibetsu.hokkaido.jp\0"
+"s\xc3\xa1l\xc3\xa1t.no\0"
+"fujikawa.shizuoka.jp\0akiruno.tokyo.jp\0freetls.fastly.net\0"
+"is-an-anarchist.com\0storebase.store\0"
+"0e.vc\0"
+"undersea.museum\0hockey\0"
+"afl\0"
+"wy.us\0"
+"lib.mo.us\0toys\0"
+"kushima.miyazaki.jp\0iobb.net\0"
+"kawaue.gifu.jp\0"
+"countryestate.museum\0"
"yatsuka.shimane.jp\0"
-"fukui.jp\0kunstsammlung.museum\0homedns.org\0"
-"v\xc3\xa5ler.hedmark.no\0"
-"dagestan.su\0"
-"jessheim.no\0andasuolo.no\0"
-"blogspot.jp\0"
-"abira.hokkaido.jp\0barsy.in\0"
-"east-kazakhstan.su\0barsy.io\0ciscofreak.com\0"
-"vall\xc3\xa9""e-d-aoste.it\0appspot.com\0"
-"furano.hokkaido.jp\0"
-"namsskogan.no\0"
-"takasaki.gunma.jp\0"
-"shop.ht\0traniandriabarletta.it\0meiwa.gunma.jp\0kushima.miyazaki.jp\0karpacz.pl\0"
-"shop.hu\0"
-"aki.kochi.jp\0"
-"asahi.chiba.jp\0review\0blogspot.kr\0"
-"kumatori.osaka.jp\0"
-"computer.museum\0"
+"eu-1.evennode.com\0"
+"fjaler.no\0tools\0dyndns.ws\0small-web.org\0"
+"udine.it\0"
+"servesarcasm.com\0"
+"wiw.gov.pl\0"
+"presse.ci\0"
+"guide\0appchizi.com\0"
+"gyeongnam.kr\0"
+"vaapste.no\0"
+"matsushima.miyagi.jp\0chuo.tokyo.jp\0"
+"tselinograd.su\0mein-iserv.de\0"
+"kushiro.hokkaido.jp\0"
+"aig\0kpmg\0myddns.rocks\0"
+"slupsk.pl\0email\0"
+"conf.au\0krym.ua\0sebastopol.ua\0technology\0from-tn.com\0smushcdn.com\0cloud.interhostsolutions.be\0"
+"comcast\0"
+"rana.no\0vpnplus.to\0"
+"!city.sapporo.jp\0itoman.okinawa.jp\0appengine.flow.ch\0"
+"hb.cldmail.ru\0"
+"lib.or.us\0"
+"trani-andria-barletta.it\0"
+"storage\0"
+"federation.aero\0"
+"workshop.museum\0"
+"sumita.iwate.jp\0omi.niigata.jp\0nishi.osaka.jp\0"
+"vs.mythic-beasts.com\0"
+"johana.toyama.jp\0"
+"in-vpn.org\0"
+"guitars\0"
+"shiki.saitama.jp\0higashiyamato.tokyo.jp\0ddns.net\0"
+"sowa.ibaraki.jp\0"
+"service.one\0"
+"ecologia.bo\0l\xc3\xb8ten.no\0surnadal.no\0"
+"malselv.no\0"
+"tobishima.aichi.jp\0misawa.aomori.jp\0limanowa.pl\0global.ssl.fastly.net\0"
+"pi.leg.br\0"
+"landrover\0"
+"shimonita.gunma.jp\0citadel\0"
+"\xe6\x97\xb6\xe5\xb0\x9a\0"
+"myasustor.com\0net-freaks.com\0"
+"lib.ri.us\0"
+"ogawara.miyagi.jp\0"
+"\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0firewall-gateway.com\0"
+"santafe.museum\0"
+"trd.br\0"
+"mus.mi.us\0"
+"nakatane.kagoshima.jp\0netflix\0"
+"abu.yamaguchi.jp\0"
+"abudhabi\0"
+"tgory.pl\0"
+"horology.museum\0xen.prgmr.com\0"
+"friuli-veneziagiulia.it\0"
+"tagajo.miyagi.jp\0"
+"melbourne\0"
+"sp.gov.br\0"
+"cc.hi.us\0"
+"\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0\xd0\xbe\xd0\xb4.\xd1\x81\xd1\x80\xd0\xb1\0"
+"natal.br\0anz\0"
+"k12.id.us\0hepforge.org\0"
+"ube.yamaguchi.jp\0aol\0"
+"jelastic.regruhosting.ru\0"
+"imdb\0"
+"ask\xc3\xb8y.no\0"
+"gorlice.pl\0"
+"appudo.net\0"
+"press.cy\0ddnsking.com\0"
+"cooking\0"
+"pics\0"
+"kamo.kyoto.jp\0"
+"assn.lk\0"
+"lombardia.it\0app\0"
+"us-west-1.elasticbeanstalk.com\0vladikavkaz.ru\0lcube-server.de\0"
+"juniper\0"
+"friuli-vgiulia.it\0ginowan.okinawa.jp\0"
+"cafe\0"
+"chungnam.kr\0reisen\0"
+"krager\xc3\xb8.no\0"
+"consultant.aero\0k12.in.us\0"
+"iide.yamagata.jp\0"
+"viking.museum\0\xe5\xa4\xa9\xe4\xb8\xbb\xe6\x95\x99\0"
+"repbody.aero\0loab\xc3\xa1t.no\0pt.eu.org\0"
+"vladikavkaz.su\0"
+"\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0bar\0"
+"karlsoy.no\0bbc\0"
+"okinawa.okinawa.jp\0"
+"baths.museum\0"
+"bokn.no\0"
+"nakano.tokyo.jp\0health\0"
+"americanfamily\0codespot.com\0"
+"os.hordaland.no\0"
+"ao.it\0kitakata.fukushima.jp\0gift\0"
+"dali.museum\0"
+"london\0weather\0repl.run\0"
+"inc.hk\0"
+"minamisanriku.miyagi.jp\0so.gov.pl\0*.kunden.ortsinfo.at\0westus2.azurestaticapps.net\0"
+"bari.it\0wassamu.hokkaido.jp\0art\0bbt\0"
+"builtwithdark.com\0"
+"amli.no\0bcg\0"
+"izumiotsu.osaka.jp\0"
+"coupon\0"
+"nombre.bo\0"
+"cam.it\0ayase.kanagawa.jp\0"
+"erotika.hu\0"
+"bcn\0"
+"gokase.miyazaki.jp\0"
+"abc.br\0pe.leg.br\0for.men\0"
+"okayama.jp\0waw.pl\0"
+"wales\0"
+"ca.it\0omachi.nagano.jp\0faith\0"
+"family.museum\0"
+"bilbao.museum\0"
+"gob.ar\0"
+"gs.nl.no\0lib.va.us\0royal-commission.uk\0"
+"showa.gunma.jp\0fukusaki.hyogo.jp\0kawasaki.miyagi.jp\0tondabayashi.osaka.jp\0"
+"trading\0"
+"toei.aichi.jp\0hiji.oita.jp\0omaezaki.shizuoka.jp\0"
+"sandnessj\xc3\xb8""en.no\0"
+"bz.it\0aisho.shiga.jp\0"
+"education.museum\0"
+"gob.bo\0"
+"capebreton.museum\0"
+"poa.br\0eurovision\0"
+"business\0"
+"yono.saitama.jp\0bet\0nz.basketball\0"
+"servecounterstrike.com\0"
+"tvedestrand.no\0"
+"lukow.pl\0"
+"k12.mi.us\0"
+"gob.cl\0cs.it\0kami.kochi.jp\0hiphop\0"
+"trentinosuedtirol.it\0minamiawaji.hyogo.jp\0uk.primetel.cloud\0"
+"blogspot.vn\0"
+"olayangroup\0"
+"hb.cn\0weir\0"
"cc.ma.us\0"
-"takagi.nagano.jp\0"
-"kvits\xc3\xb8y.no\0"
-"arts.museum\0"
+"uvic.museum\0"
+"sveio.no\0living\0"
+"call\0"
+"id.au\0beauxarts.museum\0from-nj.com\0"
+"gob.do\0"
+"axa\0"
+"7.bg\0gob.ec\0aws\0readthedocs.io\0spdns.org\0"
+"njs.jelastic.vps-host.net\0"
+"jdf.br\0hk.cn\0"
+"fukushima.hokkaido.jp\0"
+"ca.na\0oracle\0is-a-teacher.com\0freemyip.com\0"
+"k12.ms.us\0k12.nc.us\0\xe8\x87\xba\xe7\x81\xa3\0"
+"camp\0"
+"modern.museum\0draydns.de\0"
+"gob.es\0h\xc3\xb8nefoss.no\0tynset.no\0gives\0freedesktop.org\0"
+"ichinohe.iwate.jp\0kmpsp.gov.pl\0bid\0ca.reclaim.cloud\0"
+"rovno.ua\0"
+"webhop.biz\0"
+"r\xc3\xb8ros.no\0cc.ms.us\0cc.nc.us\0"
+"nagasaki.jp\0"
+"k12.nv.us\0immo\0nid.io\0"
+"en.it\0kira.aichi.jp\0minamiminowa.nagano.jp\0misato.saitama.jp\0"
+"telekommunikation.museum\0"
+"r\xc3\xa5""de.no\0bio\0"
+"trentins\xc3\xbc""dtirol.it\0yoshida.shizuoka.jp\0*.statics.cloud\0mymediapc.net\0"
+"i234.me\0"
+"saijo.ehime.jp\0kisofukushima.nagano.jp\0iwata.shizuoka.jp\0augustow.pl\0land\0"
+"\xe9\x9b\xbb\xe8\xa8\x8a\xe7\x9b\x88\xe7\xa7\x91\0"
+"seg.br\0"
+"asahi.nagano.jp\0matsuzaki.shizuoka.jp\0nordeste-idc.saveincloud.net\0"
+"blogspot.re\0conf.se\0"
+"biz\0"
+"fg.it\0yamanouchi.nagano.jp\0edogawa.tokyo.jp\0social\0"
+"office\0getmyip.com\0"
+"ping\0"
+"chuo.fukuoka.jp\0"
+"pink\0blogspot.ro\0"
+"gob.gt\0"
+"blogspot.rs\0"
+"mazury.pl\0"
+"blogspot.ru\0blogspot.se\0test-iserv.de\0"
+"rotorcraft.aero\0blogspot.sg\0"
+"scienceandindustry.museum\0blogspot.si\0"
+"enf.br\0avoues.fr\0gob.hn\0"
+"blogspot.sk\0"
+"my-router.de\0"
+"blogspot.sn\0"
+"kayabe.hokkaido.jp\0tainai.niigata.jp\0"
+"commune.am\0cafjs.com\0is-a-cubicle-slave.com\0"
+"maringa.br\0*.cloud.metacentrum.cz\0"
+"abruzzo.it\0hisayama.fukuoka.jp\0blogspot.td\0"
+"dvag\0"
+"manx.museum\0hostedpi.com\0magnet.page\0"
+"engineering\0"
+"fujiidera.osaka.jp\0sr.gov.pl\0"
+"d.bg\0alvdal.no\0"
+"cloud.jelastic.open.tim.it\0"
+"care\0"
+"jx.cn\0"
+"s\xc3\xb8rum.no\0dyndns.org\0"
+"ikaruga.nara.jp\0"
+"theater.museum\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0"
+"k12.pr.us\0blogspot.tw\0blogspot.ug\0"
+"gr.it\0"
+"airforce\0casa\0"
+"psi.br\0"
+"m.bg\0barum.no\0bms\0cars\0"
+"bosch\0\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0\0"
+"mykolaiv.ua\0case\0wpdevcloud.com\0"
+"blogspot.mr\0pr.leg.br\0"
+"bmw\0"
+"gr.jp\0onagawa.miyagi.jp\0nosegawa.nara.jp\0cash\0"
+"riodejaneiro.museum\0"
+"gsj.bz\0"
+"tone.ibaraki.jp\0hirono.iwate.jp\0blogspot.mx\0"
+"blogspot.my\0"
+"1337.pictures\0"
+"lecce.it\0blogspot.nl\0mc.ax\0"
+"columbus.museum\0"
+"xihuan\0"
+"v.bg\0asnes.no\0blogspot.no\0"
+"s3.ap-northeast-2.amazonaws.com\0"
+"mmafan.biz\0"
+"hattfjelldal.no\0express\0"
+"chiryu.aichi.jp\0mishima.shizuoka.jp\0report\0"
+"id.ir\0"
+"moseushi.hokkaido.jp\0wblog.id\0"
+"bom\0"
+"boo\0pubtls.org\0"
+"aland.fi\0"
+"togura.nagano.jp\0bot\0"
+"zoology.museum\0ip.linodeusercontent.com\0"
+"moscow\0"
+"box\0blackbaudcdn.net\0"
+"blogspot.pe\0"
+"ca.us\0"
+"im.it\0shikokuchuo.ehime.jp\0"
+"cab\0"
+"her\xc3\xb8y.nordland.no\0"
+"kred\0"
+"nebraska.museum\0blogspot.qa\0""4lima.de\0"
+"gob.mx\0blogspot.pt\0"
+"gob.ni\0instance.datadetect.com\0"
+"hyogo.jp\0cal\0"
+"allstate\0cam\0is-an-actor.com\0alpha-myqnapcloud.com\0"
+"himi.toyama.jp\0iwakuni.yamaguchi.jp\0"
+"cba\0"
+"car\0garden\0"
+"\xe5\x80\x8b\xe4\xba\xba.hk\0gs.va.no\0"
+"cat\0saiki.oita.jp\0okayama.okayama.jp\0"
+"og.ao\0cc.sd.us\0blogspot.is\0"
+"nishikatsura.yamanashi.jp\0blogspot.it\0"
+"info\0dc.us\0"
+"bologna.it\0forlicesena.it\0"
+"id.lv\0cbn\0"
+"is-lost.org\0"
+"saigawa.fukuoka.jp\0ochi.kochi.jp\0ug.gov.pl\0"
+"id.ly\0gob.pa\0press.se\0"
+"cbs\0softbank\0"
+"blogspot.jp\0""4lima.at\0"
+"communication.museum\0gob.pe\0"
+"trentinostirol.it\0rikuzentakata.iwate.jp\0"
+"gob.pk\0christmas\0courses\0daemon.panel.gg\0"
+"nagasaki.nagasaki.jp\0"
+"fi.cloudplatform.fi\0"
+"\xe0\xb8\xa8\xe0\xb8\xb6\xe0\xb8\x81\xe0\xb8\xa9\xe0\xb8\xb2.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"trentin-sudtirol.it\0cesena-forl\xc3\xac.it\0yabu.hyogo.jp\0"
+"and\xc3\xb8y.no\0"
+"air.museum\0"
+"blogspot.kr\0"
+"news\0"
+"4lima.ch\0"
+"kr.com\0"
+"conf.lv\0"
+"gok.pk\0"
+"gujo.gifu.jp\0tomika.gifu.jp\0"
"blogspot.li\0"
-"nikko.tochigi.jp\0\xe5\x80\x8b\xe4\xba\xba.\xe9\xa6\x99\xe6\xb8\xaf\0"
-"usantiques.museum\0"
-"en.it\0historisches.museum\0gok.pk\0"
-"communications.museum\0int.eu.org\0"
-"saves-the-whales.com\0"
-"abc.br\0"
-"compare\0blogspot.lt\0blogspot.md\0"
-"psi.br\0beats\0blogspot.lu\0unicloud.pl\0"
-"empresa.bo\0dyndns-mail.com\0us.platform.sh\0"
-"po.it\0"
-"in-dsl.org\0"
-"imageandsound.museum\0us.eu.org\0blogspot.mk\0"
-"rennebu.no\0"
-"broadway\0j.scaleforce.net\0"
-"is-very-bad.org\0"
-"aya.miyazaki.jp\0"
-"britishcolumbia.museum\0"
-"co.place\0"
-"faith\0"
-"mol.it\0blogspot.fi\0"
-"hidora.com\0"
-"lib.ks.us\0"
-"judygarland.museum\0"
-"dyn.ddnss.de\0onthewifi.com\0"
-"k12.oh.us\0design\0blogspot.fr\0"
-"asahi.yamagata.jp\0dontexist.com\0"
-"cng.br\0agrinet.tn\0"
-"ecologia.bo\0"
-"direct\0"
-"lon-1.paas.massivegrid.net\0"
-"av.it\0open\0"
-"koganei.tokyo.jp\0"
+"\xe6\x94\xbf\xe5\xba\x9c.hk\0"
+"mitoyo.kagawa.jp\0fra1-de.cloudjiffy.net\0"
+"elburg.museum\0"
+"holmestrand.no\0\xc3\xb8stre-toten.no\0"
+"next\0blogspot.lt\0blogspot.md\0"
+"blogspot.lu\0"
+"esp.br\0"
+"ceo\0blogspot.mk\0"
+"isa.kagoshima.jp\0oita.oita.jp\0abarth\0"
+"cfa\0s3.dualstack.ap-northeast-1.amazonaws.com\0"
+"cfd\0"
+"for.mom\0logoip.com\0pro.typeform.com\0"
+"cc.tx.us\0"
+"elk.pl\0"
+"buy\0"
+"k12.vi.us\0*.alces.network\0"
+"lombardy.it\0mc.it\0nagaokakyo.kyoto.jp\0shirataka.yamagata.jp\0"
+"blogspot.fi\0"
+"eti.br\0\xd9\xbe\xd8\xa7\xd9\x83\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0"
+"land-4-sale.us\0"
+"ise.mie.jp\0"
+"folkebibl.no\0fusa.no\0weeklylottery.org.uk\0"
+"tsushima.nagasaki.jp\0kurashiki.okayama.jp\0"
+"capitalone\0coffee\0dyndns-server.com\0"
+"gob.sv\0blogspot.fr\0loginline.dev\0"
+"\xc3\xa5lg\xc3\xa5rd.no\0cc.va.us\0"
+"isernia.it\0mizuho.tokyo.jp\0"
+"from-ne.com\0"
+"j\xc3\xb8lster.no\0"
+"ogawa.ibaraki.jp\0yamamoto.miyagi.jp\0"
+"mcpre.ru\0"
+"gjemnes.no\0vardo.no\0"
+"uryu.hokkaido.jp\0"
"blogspot.gr\0"
-"try-snowplow.com\0"
-"bunkyo.tokyo.jp\0stathelle.no\0"
-"riik.ee\0"
-"pharmacy.museum\0"
-"med.br\0is-a-republican.com\0"
-"blogspot.hk\0"
-"qh.cn\0t\xc3\xb8nsberg.no\0"
-"namikata.ehime.jp\0*.hosting.myjino.ru\0""4lima.de\0"
-"reggio-emilia.it\0yugawara.kanagawa.jp\0mallorca.museum\0"
-"yuu.yamaguchi.jp\0"
+"assabu.hokkaido.jp\0"
+"fastly-terrarium.com\0"
+"empresa.bo\0"
+"sayo.hyogo.jp\0futsu.nagasaki.jp\0"
+"press.ma\0servegame.com\0"
+"r\xc3\xa5holt.no\0blogspot.hk\0"
+"tsunan.niigata.jp\0"
+"california.museum\0"
+"walter\0"
+"leclerc\0wmcloud.org\0"
+"messina.it\0ashiya.fukuoka.jp\0chihayaakasaka.osaka.jp\0fussa.tokyo.jp\0"
+"gob.ve\0apps.fbsbx.com\0"
"blogspot.hr\0"
-"kawatana.nagasaki.jp\0volyn.ua\0"
-"solund.no\0blogspot.hu\0blogspot.ie\0"
-"webredirect.org\0"
-"grondar.za\0"
-"*.compute.amazonaws.com\0"
-"dsmynas.com\0"
-"ichihara.chiba.jp\0from-mo.com\0"
+"ne.jp\0financial\0cdn77-ssl.net\0"
+"blogspot.hu\0blogspot.ie\0"
+"masfjorden.no\0"
+"ostrowwlkp.pl\0"
+"ne.ke\0"
+"jampa.br\0foundation\0"
+"\xe9\x9d\x99\xe5\xb2\xa1.jp\0aisai.aichi.jp\0toon.ehime.jp\0ogawa.saitama.jp\0"
+"servebeer.com\0"
"blogspot.in\0"
+"balsan-s\xc3\xbc""dtirol.it\0ozora.hokkaido.jp\0ome.tokyo.jp\0nachikatsuura.wakayama.jp\0quest\0"
"blogspot.ba\0"
-"kv\xc3\xa6""fjord.no\0"
-"tomigusuku.okinawa.jp\0blogspot.be\0"
-"loppa.no\0blogspot.bg\0"
-"lanbib.se\0company\0"
-"nobeoka.miyazaki.jp\0"
+"\xe5\x85\xac\xe5\x8f\xb8.cn\0"
+"\xe1\x83\x92\xe1\x83\x94\0bzh\0"
+"blogspot.be\0static.observableusercontent.com\0"
+"ne.kr\0"
+"skaun.no\0blogspot.bg\0"
+"og.it\0yasu.shiga.jp\0"
"blogspot.bj\0"
-"med.ec\0living\0"
-"med.ee\0"
-"4lima.at\0"
-"civilwar.museum\0cc.pr.us\0"
-"panasonic\0blogspot.ca\0"
-"mp.br\0nakijin.okinawa.jp\0mircloud.us\0"
-"yamatsuri.fukushima.jp\0"
-"blogspot.cf\0"
-"bolt.hu\0kagamiishi.fukushima.jp\0is-a-hunter.com\0mysecuritycamera.org\0"
-"knowsitall.info\0blogspot.ch\0"
-"laz.it\0nakagawa.nagano.jp\0"
-"b-data.io\0"
-"manchester.museum\0"
-"fujikawaguchiko.yamanashi.jp\0blogspot.cl\0"
-"aknoluokta.no\0"
-"trading.aero\0"
-"s3-ap-southeast-1.amazonaws.com\0"
-"tp.it\0alibaba\0irish\0""4lima.ch\0"
-"s3-website-ap-northeast-1.amazonaws.com\0"
-"tashkent.su\0"
+"toyokawa.aichi.jp\0kouzushima.tokyo.jp\0"
+"\xe5\x85\xac\xe5\x8f\xb8.hk\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0"
+"blogspot.ca\0g\xc3\xbcnstigliefern.de\0"
+"valleedaoste.it\0hakata.fukuoka.jp\0"
+"artcenter.museum\0"
+"recife.br\0blogspot.cf\0"
+"id.us\0"
+"urbinopesaro.it\0blogspot.ch\0"
+"indie.porn\0"
+"blogspot.cl\0"
+"leitungsen.de\0"
+"flesberg.no\0"
+"azumino.nagano.jp\0"
"blogspot.de\0"
-"ushuaia.museum\0blogspot.cv\0"
-"vall\xc3\xa9""edaoste.it\0asaminami.hiroshima.jp\0"
-"if.ua\0blogspot.cz\0"
-"urawa.saitama.jp\0blogspot.dk\0"
-"io.kg\0storage.yandexcloud.net\0"
-"tobishima.aichi.jp\0jls-sto1.elastx.net\0"
-"corvette.museum\0"
-"jeonbuk.kr\0is-a-hard-worker.com\0"
-"gyeongnam.kr\0hoyanger.no\0"
-"mytis.ru\0"
-"games.hu\0"
-"finn\xc3\xb8y.no\0"
-"utwente.io\0"
-"*.alces.network\0wbq.me\0"
-"is-a-democrat.com\0"
-"alwaysdata.net\0"
-"melbourne\0"
-"schmidt\0"
-"publishproxy.com\0"
-"\xe5\xae\xae\xe5\x9f\x8e.jp\0"
-"hirado.nagasaki.jp\0"
-"astronomy.museum\0"
-"iwata.shizuoka.jp\0"
-"fg.it\0"
-"med.ht\0bike\0"
-"trentin-sued-tirol.it\0"
-"tagami.niigata.jp\0"
-"ichinomiya.chiba.jp\0"
-"ieee\0id.repl.co\0"
-"austevoll.no\0"
-"res.in\0mircloud.ru\0"
-"izunokuni.shizuoka.jp\0"
-"catering.aero\0austrheim.no\0"
-"toolforge.org\0"
-"servebeer.com\0"
-"aoki.nagano.jp\0tjmaxx\0"
-"lib.wy.us\0"
-"blogspot.ae\0"
-"sortland.no\0*.triton.zone\0"
-"ito.shizuoka.jp\0"
-"pittsburgh.museum\0leikanger.no\0"
-"bo.it\0"
-"blogspot.al\0"
-"merckmsd\0tunes\0blogspot.am\0"
-"newport.museum\0bing\0"
-"minamidaito.okinawa.jp\0"
-"kinghost.net\0"
-"rovigo.it\0\xe7\xa7\x8b\xe7\x94\xb0.jp\0"
-"mielno.pl\0"
-"navuotna.no\0"
-"maintenance.aero\0vennesla.no\0"
-"missile.museum\0"
-"living.museum\0kinder\0"
-"av.tr\0"
-"zaporizhzhe.ua\0"
-"manno.kagawa.jp\0odda.no\0"
-"med.ly\0"
-"soni.nara.jp\0\xd8\xa8\xd8\xa7\xd8\xb2\xd8\xa7\xd8\xb1\0"
-"mizumaki.fukuoka.jp\0vestre-toten.no\0"
-"*.nagoya.jp\0contemporaryart.museum\0soccer\0software\0theater\0"
-"ofunato.iwate.jp\0hidaka.kochi.jp\0homeftp.net\0"
-"\xd2\x9b\xd0\xb0\xd0\xb7\0"
-"sth.ac.at\0"
-"folldal.no\0paas.beebyte.io\0"
-"mup.gov.pl\0"
-"hof.no\0"
-"moriguchi.osaka.jp\0"
-"b\xc3\xa5tsfjord.no\0"
-"tsuru.yamanashi.jp\0"
-"gose.nara.jp\0lajolla.museum\0lesja.no\0"
-"minamiashigara.kanagawa.jp\0"
-"v\xc3\xa6r\xc3\xb8y.no\0"
-"yamada.iwate.jp\0"
-"ota.gunma.jp\0"
-"kawahara.tottori.jp\0med.om\0"
-"tokai.aichi.jp\0mozilla-iot.org\0"
-"tatsuno.nagano.jp\0med.pa\0"
-"game\0"
-"read\0s3-website.eu-west-3.amazonaws.com\0"
-"historisch.museum\0"
-"chichibu.saitama.jp\0"
-"statebank\0us-west-2.elasticbeanstalk.com\0"
-"xz.cn\0dynamisches-dns.de\0"
-"skjak.no\0med.pl\0"
-"\xe7\xbd\x91\xe7\xbb\x9c.cn\0"
-"mangyshlak.su\0"
-"vacations\0"
-"lombardia.it\0""16-b.it\0"
-"dep.no\0"
-"atm.pl\0"
-"shop.th\0"
-"mie.jp\0is-not-certified.com\0"
-"wzmiuw.gov.pl\0"
-"yamato.kanagawa.jp\0lyngen.no\0"
-"ono.hyogo.jp\0cc.ms.us\0cc.nc.us\0s3.dualstack.eu-west-2.amazonaws.com\0"
-"macapa.br\0"
-"v\xc3\xa5ler.\xc3\xb8stfold.no\0tiaa\0"
-"online.museum\0"
-"tecnologia.bo\0"
-"no-ip.info\0"
-"h.bg\0louvre.museum\0aver\xc3\xb8y.no\0namsos.no\0"
-"parti.se\0"
-"med.sa\0"
-"monmouth.museum\0"
-"med.sd\0"
-"idrett.no\0"
-"ra.it\0kindle\0"
-"abarth\0"
-"date.hokkaido.jp\0"
-"*.frusky.de\0"
-"aaa\0"
-"page\0"
-"parachuting.aero\0"
-"bronnoy.no\0worse-than.tv\0shop.ro\0"
-"valle-daosta.it\0"
-"shisui.chiba.jp\0durham.museum\0*.telebit.xyz\0"
-"9guacu.br\0"
-"saskatchewan.museum\0online\0"
-"info.gu\0"
-"lib.ma.us\0abb\0"
-"nombre.bo\0abc\0"
-"leclerc\0is-a-nascarfan.com\0"
-"helsinki.museum\0k12.or.us\0protection\0"
-"tawaramoto.nara.jp\0"
-"my.id\0freemasonry.museum\0"
-"\xe7\xbd\x91\xe7\xbb\x9c.hk\0kitaakita.akita.jp\0os.hordaland.no\0blogspot.com\0"
-"info.ht\0\xe6\x9d\xb1\xe4\xba\xac.jp\0"
-"info.hu\0ishikawa.okinawa.jp\0kamitonda.wakayama.jp\0beta.bounty-full.com\0"
-"0.bg\0trolley.museum\0shop.pl\0"
-"ch.it\0rokunohe.aomori.jp\0eu.meteorapp.com\0"
-"qld.au\0zgorzelec.pl\0"
-"steigen.no\0"
-"tarumizu.kagoshima.jp\0cloudns.asia\0"
-"chonan.chiba.jp\0aco\0"
-"info.et\0s3-website.eu-central-1.amazonaws.com\0"
-"gs.nl.no\0"
-"is-gone.com\0"
-"seljord.no\0"
-"info.fj\0urbinopesaro.it\0hirokawa.fukuoka.jp\0"
-"edugit.org\0"
-"alt.za\0"
-"shizukuishi.iwate.jp\0"
-"rost.no\0"
-"kanoya.kagoshima.jp\0\xe5\xa4\xa7\xe4\xbc\x97\xe6\xb1\xbd\xe8\xbd\xa6\0"
-"chikugo.fukuoka.jp\0hongo.hiroshima.jp\0"
-"foggia.it\0"
-"guide\0"
-"\xd1\x83\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0"
-"ads\0"
-"film.hu\0"
-"evenassi.no\0"
-"aeg\0free\0"
-"toshima.tokyo.jp\0kurobe.toyama.jp\0"
-"tajiri.osaka.jp\0"
-"fosnes.no\0"
-"yosemite.museum\0"
-"tynset.no\0"
-"naka.ibaraki.jp\0nakano.nagano.jp\0freebox-os.fr\0"
-"k12.wa.us\0"
-"daigo.ibaraki.jp\0"
-"nishiarita.saga.jp\0bardu.no\0info.cx\0"
-"bibai.hokkaido.jp\0sannan.hyogo.jp\0sochi.su\0"
-"rexroth\0"
-"muni.il\0furukawa.miyagi.jp\0reit\0vladikavkaz.ru\0"
-"cq.cn\0lutsk.ua\0"
-"takamori.nagano.jp\0"
-"afl\0"
-"nara.jp\0"
-"vads\xc3\xb8.no\0"
-"info.ec\0northwesternmutual\0g\xc3\xbcnstigbestellen.de\0"
+"blogspot.cv\0"
+"lom.it\0pi.it\0"
+"blogspot.cz\0"
+"blogspot.dk\0"
+"shisui.chiba.jp\0"
+"karmoy.no\0varggat.no\0"
+"wildlife.museum\0cbre\0toray\0\xe8\xb4\xad\xe7\x89\xa9\0"
+"to.gov.br\0sx.cn\0"
+"s3-external-1.amazonaws.com\0radio.am\0"
+"goupile.fr\0"
+"pr.it\0"
"storfjord.no\0"
-"mitsuke.niigata.jp\0supplies\0ms.leg.br\0"
-"inagi.tokyo.jp\0fly.dev\0"
-"shibetsu.hokkaido.jp\0"
-"vb.it\0szczytno.pl\0"
-"hidaka.wakayama.jp\0of.fashion\0"
-"vladikavkaz.su\0"
-"iki.fi\0"
-"info.bb\0"
-"olayangroup\0"
-"rieti.it\0gs.jan-mayen.no\0info.at\0"
-"info.au\0czest.pl\0"
-"atlanta.museum\0environment.museum\0oya.to\0wblog.id\0"
-"haibara.shizuoka.jp\0"
-"info.az\0oto.fukuoka.jp\0"
-"hirono.iwate.jp\0"
-"info.bo\0"
-"nishinoshima.shimane.jp\0service.one\0sites.static.land\0"
-"adult.ht\0pointto.us\0"
-"on-the-web.tv\0"
-"kodaira.tokyo.jp\0"
-"fr.eu.org\0mt.leg.br\0"
-"chippubetsu.hokkaido.jp\0in-dsl.net\0"
-"tsukigata.hokkaido.jp\0hospital\0"
-"hobol.no\0"
-"aig\0"
-"yamanashi.yamanashi.jp\0"
-"info.co\0dealer\0ukco.me\0"
-"tamano.okayama.jp\0przeworsk.pl\0is-a-painter.com\0"
-"iveland.no\0bedzin.pl\0"
-"q.bg\0"
-"supply\0"
-"from-ks.com\0"
-"koto.shiga.jp\0"
-"niyodogawa.kochi.jp\0soundandvision.museum\0"
-"santoandre.br\0\xe4\xbd\x90\xe8\xb3\x80.jp\0"
-"kasama.ibaraki.jp\0christiansburg.museum\0"
-"minoh.osaka.jp\0"
-"gbiz\0gives\0"
-"imari.saga.jp\0jaworzno.pl\0"
-"futbol\0browsersafetymark.io\0"
-"uryu.hokkaido.jp\0"
-"arte.bo\0"
-"minamiizu.shizuoka.jp\0"
-"de.com\0"
-"elk.pl\0"
-"aircraft.aero\0rent\0"
-"\xe5\xaf\x8c\xe5\xb1\xb1.jp\0"
-"*.ocs.customer-oci.com\0"
-"osoyro.no\0"
-"kitaaiki.nagano.jp\0*.otap.co\0"
-"\xe6\x94\xbf\xe5\xba\x9c.\xe9\xa6\x99\xe6\xb8\xaf\0"
-"per.la\0"
-"k12.pa.us\0"
-"openair.museum\0hb.cldmail.ru\0"
-"bronnoysund.no\0"
-"odate.akita.jp\0yuki.ibaraki.jp\0"
-"tamayu.shimane.jp\0"
-"komagane.nagano.jp\0freedesktop.org\0"
-"wales.museum\0kiwi\0"
-"app.render.com\0"
-"aoste.it\0recipes\0"
-"shitara.aichi.jp\0can.museum\0"
-"9.bg\0dyndns.ddnss.de\0"
-"kochi.jp\0"
-"pars\0"
-"ch.tc\0idnblogger.com\0"
-"hb.cn\0umbria.it\0haram.no\0"
-"torino.museum\0custom.metacentrum.cz\0"
-"mc.eu.org\0"
-"kochi.kochi.jp\0lexus\0"
-"\xe5\xb1\xb1\xe6\xa2\xa8.jp\0"
-"sc.cn\0"
-"zappos\0"
-"sakai.ibaraki.jp\0"
-"ichikawa.hyogo.jp\0"
-"broke-it.net\0"
-"per.nf\0flt.cloud.muni.cz\0"
-"aizumi.tokushima.jp\0rzeszow.pl\0"
-"udono.mie.jp\0"
-"k12.ar.us\0today\0"
-"wafflecell.com\0"
-"tysvar.no\0lib.in.us\0"
-"niihama.ehime.jp\0"
-"trentinosuedtirol.it\0education\0"
-"shioya.tochigi.jp\0k12.mi.us\0theatre\0"
-"v\xc3\xa5gs\xc3\xb8y.no\0lohmus.me\0"
-"texas.museum\0est.pr\0"
-"uri.arpa\0readthedocs.io\0"
-"nakatane.kagoshima.jp\0susono.shizuoka.jp\0lt.eu.org\0"
-"anz\0"
-"togo.aichi.jp\0starachowice.pl\0"
-"yaizu.shizuoka.jp\0aol\0"
-"kvalsund.no\0"
-"epilepsy.museum\0tips\0"
-"br\xc3\xb8nn\xc3\xb8y.no\0"
-"trentinoaltoadige.it\0"
-"fujimino.saitama.jp\0grane.no\0cloudcontrolled.com\0"
-"is-a-celticsfan.org\0"
-"rest\0"
-"ontario.museum\0clothing\0"
-"mortgage\0"
-"eidsberg.no\0"
-"h.se\0app\0"
-"detroit.museum\0couchpotatofries.org\0"
-"cesena-forli.it\0dattolocal.com\0"
-"tozsde.hu\0carraramassa.it\0fredrikstad.no\0"
-"vm.bytemark.co.uk\0"
-"ringebu.no\0"
-"s\xc3\xb8gne.no\0cn.com\0"
-"kepno.pl\0"
-"shimonoseki.yamaguchi.jp\0"
-"ustka.pl\0"
-"audio\0docs\0rag-cloud-ch.hosteur.com\0"
-"postman-echo.com\0"
-"trentins\xc3\xbc""dtirol.it\0kameyama.mie.jp\0bar\0"
-"bbc\0"
-"lindas.no\0"
-"bialystok.pl\0k12.ia.us\0"
-"karuizawa.nagano.jp\0cc.ct.us\0"
-"ab.ca\0"
-"bounceme.net\0"
-"ui.nabu.casa\0"
-"blogdns.org\0"
-"virtuel.museum\0"
-"davvenj\xc3\xa1rga.no\0\xd7\xa7\xd7\x95\xd7\x9d\0"
-"undersea.museum\0art\0bbt\0sells-for-u.com\0"
-"per.sg\0bcg\0"
-"z.bg\0"
-"gr.it\0"
-"goshiki.hyogo.jp\0bcn\0"
-"matsushige.tokushima.jp\0carrier.museum\0s\xc3\xb8rreisa.no\0dental\0"
-"vik.no\0stada\0"
-"info.ve\0"
-"onion\0"
-"revista.bo\0osaka\0"
-"gr.jp\0"
-"karacol.su\0"
-"gs.sf.no\0andebu.no\0"
-"info.vn\0"
-"from-me.org\0"
-"\xc3\xa5snes.no\0from-nm.com\0"
-"is-found.org\0that.win\0"
-"sc.ke\0"
-"tobetsu.hokkaido.jp\0"
-"g\xc3\xa1\xc5\x8bgaviika.no\0molde.no\0"
-"lib.mo.us\0"
-"hamura.tokyo.jp\0"
-"h\xc3\xa6gebostad.no\0accountant\0betainabox.com\0"
-"name.hr\0"
-"sc.kr\0"
-"edeka\0"
-"bet\0"
-"place\0from-ky.com\0"
-"huissier-justice.fr\0takikawa.hokkaido.jp\0"
-"movimiento.bo\0hagi.yamaguchi.jp\0"
-"info.tn\0"
-"hachijo.tokyo.jp\0kaufen\0from-ct.com\0"
-"cz.it\0"
+"osaka.jp\0niki.hokkaido.jp\0toba.mie.jp\0higashimatsuyama.saitama.jp\0"
+"suli.hu\0d.se\0withgoogle.com\0"
+"customer.speedpartner.de\0"
+"trading.aero\0"
+"kh.ua\0l-o-g-i-n.de\0barsy.online\0homelink.one\0"
+"poivron.org\0oy.lc\0"
+"west1-us.cloudjiffy.net\0"
+"dnepropetrovsk.ua\0"
+"radio.br\0\xe3\x81\xbf\xe3\x82\x93\xe3\x81\xaa\0"
+"nishinoomote.kagoshima.jp\0hidaka.saitama.jp\0in-vpn.net\0jelastic.tsukaeru.net\0us.ax\0"
+"m.se\0"
+"\xe5\x9f\xbc\xe7\x8e\x89.jp\0"
+"com\0members.linode.com\0"
+"ne.pw\0whoswho\0"
+"channel\0"
+"cpa\0"
+"uchihara.ibaraki.jp\0exposed\0"
+"stuff-4-sale.us\0"
+"\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0"
+"la.us\0"
+"rm.it\0"
+"x.mythic-beasts.com\0"
+"workisboring.com\0"
+"mihara.hiroshima.jp\0meguro.tokyo.jp\0dad\0pcloud.host\0"
+"shell.museum\0"
+"lom.no\0sunndal.no\0valer.hedmark.no\0"
+"massacarrara.it\0"
+"szex.hu\0broadway\0couk.me\0blogspot.ae\0"
+"bayern\0"
+"we.bs\0"
+"matsumoto.nagano.jp\0"
+"historisches.museum\0v.ua\0"
+"krodsherad.no\0"
+"from-la.net\0blogspot.al\0"
+"blogspot.am\0"
+"goiania.br\0"
+"koya.wakayama.jp\0"
+"coal.museum\0"
+"arq.br\0"
+"luster.no\0recht.pro\0*.on-rio.io\0"
+"ogasawara.tokyo.jp\0"
+"day\0radio.fm\0"
+"ebiz.tw\0"
+"so.it\0"
+"oystre-slidre.no\0"
+"crs\0"
"\xe5\xa5\x88\xe8\x89\xaf.jp\0"
-"higashiyamato.tokyo.jp\0info.tr\0indie.porn\0"
-"daegu.kr\0schule\0"
-"info.tt\0goldpoint\0"
-"sch.ae\0hk.cn\0vpnplus.to\0"
-"serveftp.net\0"
-"name.et\0kanonji.kagawa.jp\0sc.ls\0"
-"countryestate.museum\0eu-west-1.elasticbeanstalk.com\0"
-"sardinia.it\0nowaruda.pl\0info.tz\0"
-"name.fj\0yono.saitama.jp\0"
-"omuta.fukuoka.jp\0muenchen.museum\0"
-"cloudfunctions.net\0"
-"matsumae.hokkaido.jp\0apps.lair.io\0"
-"valer.ostfold.no\0axa\0"
-"space.museum\0aws\0"
-"*.futurecms.at\0"
-"fortworth.museum\0\xd8\xa7\xd8\xb1\xd8\xa7\xd9\x85\xd9\x83\xd9\x88\0"
-"nagano.nagano.jp\0"
-"\xc3\xb8ystre-slidre.no\0"
-"gouv.fr\0l\xc3\xa4ns.museum\0info.ro\0fastvps.host\0"
-"aizuwakamatsu.fukushima.jp\0riodejaneiro.museum\0"
-"ashibetsu.hokkaido.jp\0info.sd\0dynu.net\0"
-"sasebo.nagasaki.jp\0pantheonsite.io\0"
-"asuke.aichi.jp\0yonabaru.okinawa.jp\0cc.gu.us\0lib.ut.us\0bid\0"
-"seaport.museum\0\xd0\xb1\xd0\xb5\xd0\xbb\0dyndns-at-home.com\0"
-"name.cy\0"
-"ocelot.mythic-beasts.com\0"
-"chuo.osaka.jp\0"
-"bio\0"
-"mobi\0"
-"run.app\0"
-"*.webhare.dev\0"
-"name.eg\0lc.it\0\xe6\xb8\xb8\xe6\x88\x8f\0"
-"info.pk\0no.com\0"
-"s\xc3\xa1lat.no\0info.pl\0"
-"2ix.at\0"
-"biz\0railway.museum\0shoparena.pl\0"
-"gouv.ht\0"
-"info.pr\0ddnsfree.com\0"
-"vt.it\0"
-"enf.br\0from-nh.com\0"
-"in-vpn.de\0"
-"tanabe.kyoto.jp\0aktyubinsk.su\0"
-"rawa-maz.pl\0boutique\0"
-"campinas.br\0"
-"moda\0"
-"name.az\0"
-"tickets\0"
-"fujiidera.osaka.jp\0"
-"bip.sh\0"
-"info.na\0""2ix.ch\0"
-"gunma.jp\0"
-"jelenia-gora.pl\0"
-"shimada.shizuoka.jp\0"
-"okutama.tokyo.jp\0info.mv\0info.nf\0jele.cloud\0"
-"gouv.bj\0"
-"info.ni\0"
-"from-md.com\0"
-"2ix.de\0"
-"production.aero\0"
-"chuo.yamanashi.jp\0"
-"info.nr\0"
-"sp.gov.br\0"
-"leg.br\0"
-"gouv.ci\0"
-"togura.nagano.jp\0bc.platform.sh\0"
-"sekd1.beebyteapp.io\0"
-"susaki.kochi.jp\0palmsprings.museum\0"
-"altoadige.it\0higashinaruse.akita.jp\0"
-"consulting.aero\0mk.eu.org\0"
-"services.aero\0"
-"columbia.museum\0"
-"info.la\0s3.eu-west-2.amazonaws.com\0"
-"tadotsu.kagawa.jp\0"
-"hayashima.okayama.jp\0"
-"kaas.gg\0"
-"higashiagatsuma.gunma.jp\0bms\0"
-"firenze.it\0"
-"pccw\0"
-"goto.nagasaki.jp\0"
-"bmw\0wedeploy.sh\0"
-"hasura.app\0"
-"rishirifuji.hokkaido.jp\0"
-"info.ls\0"
-"journal.aero\0sch.id\0"
-"kunohe.iwate.jp\0"
-"id.au\0press.museum\0"
-"sc.ug\0"
-"kawakami.nara.jp\0"
-"sc.tz\0"
-"satsumasendai.kagoshima.jp\0"
-"realestate.pl\0bom\0"
-"sch.ir\0"
-"boo\0"
-"serveirc.com\0"
-"sc.us\0"
-"bot\0"
-"vic.gov.au\0"
-"motegi.tochigi.jp\0box\0"
-"so.gov.pl\0"
-"sch.jo\0"
-"users.scale.virtualcloud.com.br\0"
-"ot.it\0pd.it\0info.ke\0"
-"cab\0from-ok.com\0"
-"misato.saitama.jp\0"
-"info.ki\0"
-"is-a-therapist.com\0"
-"kuchinotsu.nagasaki.jp\0muosat.no\0crimea.ua\0"
-"lu.eu.org\0me.eu.org\0"
-"rikubetsu.hokkaido.jp\0"
-"kunst.museum\0"
+"brunel.museum\0luzern.museum\0"
+"trentino-s\xc3\xbc""d-tirol.it\0\xe5\xaf\x8c\xe5\xb1\xb1.jp\0ikeda.nagano.jp\0"
+"dyn-vpn.de\0"
"nowruz\0"
-"kawai.nara.jp\0cal\0"
-"cam\0demo.datacenter.fi\0"
-"beauxarts.museum\0quebec.museum\0"
-"gjovik.no\0cba\0"
-"car\0"
-"utazas.hu\0ehime.jp\0ricoh\0"
-"cat\0kawamata.fukushima.jp\0"
-"vicenza.it\0kayabe.hokkaido.jp\0schokokeks.net\0"
-"sch.lk\0cloudns.eu\0clan.rip\0"
-"k12.ms.us\0k12.nc.us\0"
-"cbn\0"
-"farm.museum\0black\0"
-"magazine.aero\0davvenjarga.no\0zagan.pl\0cbs\0"
-"ok.us\0geekgalaxy.com\0"
-"sch.ly\0svelvik.no\0"
-"tomiya.miyagi.jp\0"
-"naoshima.kagawa.jp\0lv.eu.org\0"
-"\xd8\xa7\xd8\xa8\xd9\x88\xd8\xb8\xd8\xa8\xd9\x8a\0"
-"s\xc3\xb8ndre-land.no\0barcelona\0"
-"trust.museum\0lifeinsurance\0"
-"steam.museum\0\xe3\x82\xa2\xe3\x83\x9e\xe3\x82\xbe\xe3\x83\xb3\0"
-"gsj.bz\0"
-"zao.miyagi.jp\0fujitsu\0"
-"civilization.museum\0"
-"village.museum\0tennis\0whoswho\0"
-"ecn.br\0sch.ng\0*.code.run\0"
-"armenia.su\0"
-"z.se\0jozi.biz\0"
-"sagamihara.kanagawa.jp\0"
-"makinohara.shizuoka.jp\0automotive.museum\0ac.leg.br\0"
-"field.museum\0dynamic-dns.info\0"
-"stavern.no\0"
-"ks.ua\0"
-"habmer.no\0"
-"orkanger.no\0"
-"tsuiki.fukuoka.jp\0"
-"hannan.osaka.jp\0"
-"medical.museum\0*.ocp.customer-oci.com\0"
-"photos\0"
-"adobeaemcloud.net\0"
-"ceo\0"
-"cloudns.in\0"
-"cfa\0"
-"honai.ehime.jp\0bytom.pl\0"
-"cfd\0app.os.stg.fedoraproject.org\0"
-"ks.us\0"
-"sanagochi.tokushima.jp\0"
-"urayasu.chiba.jp\0tmall\0"
-"gujo.gifu.jp\0"
-"buy\0"
-"booking\0"
-"airline.aero\0overhalla.no\0unicom\0"
-"nordkapp.no\0sch.qa\0"
-"okayama.jp\0vt.us\0"
-"id.ir\0"
-"from-nv.com\0ca.reclaim.cloud\0"
-"lapy.pl\0grocery\0cloudns.cc\0"
-"tamamura.gunma.jp\0"
-"on-aptible.com\0"
-"sumita.iwate.jp\0machida.tokyo.jp\0from-ga.com\0"
-"e4.cz\0"
-"te.it\0tranby.no\0"
-"izumi.kagoshima.jp\0name.vn\0"
-"b\xc3\xa1hccavuotna.no\0"
-"uonuma.niigata.jp\0rennes\xc3\xb8y.no\0"
-"bandai.fukushima.jp\0"
-"wedeploy.me\0"
-"repair\0cn-northwest-1.eb.amazonaws.com.cn\0*.awdev.ca\0"
-"pacific.museum\0"
-"tempurl.host\0noip.us\0"
-"exchange.aero\0sch.sa\0\xe7\xb5\x84\xe7\xb9\x94.tw\0"
-"misconfused.org\0"
-"shiroishi.miyagi.jp\0capetown\0for.men\0"
-"gjerdrum.no\0"
-"barclays\0"
-"asahi.mie.jp\0"
-"a.prod.fastly.net\0"
-"kutno.pl\0chernivtsi.ua\0"
-"jfk.museum\0"
-"name.tj\0"
-"sch.so\0"
-"dupont\0"
-"web.app\0"
-"sch.ss\0shoes\0ar.com\0"
-"katsuyama.fukui.jp\0"
-"name.tr\0"
-"dolls.museum\0name.tt\0"
-"id.lv\0"
-"kazuno.akita.jp\0"
-"numazu.shizuoka.jp\0id.ly\0bzh\0"
-"sr.gov.pl\0tec.mi.us\0"
-"dgca.aero\0at-band-camp.net\0"
-"blog\0"
-"siljan.no\0"
-"es.eu.org\0"
-"logoip.de\0"
-"onagawa.miyagi.jp\0"
-"dellogliastra.it\0kr.eu.org\0"
-"mango\0"
-"oirm.gov.pl\0"
-"andriatranibarletta.it\0"
-"glas.museum\0"
-"namegata.ibaraki.jp\0bieszczady.pl\0eu.ax\0"
-"press.cy\0lon.wafaicloud.com\0"
-"moto\0\xe6\x9c\xba\xe6\x9e\x84\0"
-"biella.it\0k12.nv.us\0"
-"yamatotakada.nara.jp\0rissa.no\0"
-"lecco.it\0kiev.ua\0"
-"soo.kagoshima.jp\0"
-"s3-ap-south-1.amazonaws.com\0"
-"higashine.yamagata.jp\0"
-"\xe5\x95\x86\xe6\xa0\x87\0nym.by\0"
-"nym.bz\0"
-"earth\0"
-"at.it\0"
-"sasayama.hyogo.jp\0"
-"gouv.sn\0"
-"*.kitakyushu.jp\0"
-"hirara.okinawa.jp\0"
-"sor-varanger.no\0"
-"lu.it\0me.it\0"
-"name.qa\0"
-"chofu.tokyo.jp\0name.pr\0builders\0"
-"kannami.shizuoka.jp\0"
-"suzu.ishikawa.jp\0bar2.net\0"
-"frontdoor\0target\0"
-"\xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\0"
-"shiki.saitama.jp\0"
-"nym.ec\0"
-"abiko.chiba.jp\0"
-"laakesvuemie.no\0"
-"manaus.br\0me.ke\0"
-"name.na\0"
-"trieste.it\0folkebibl.no\0"
-"cust.testing.thingdust.io\0"
-"kanzaki.saga.jp\0ch.trendhosting.cloud\0"
-"caserta.it\0rikuzentakata.iwate.jp\0himeshima.oita.jp\0fukaya.saitama.jp\0name.mv\0"
-"name.ng\0repair.men\0"
-"name.my\0lorenskog.no\0ak.us\0"
-"doomdns.org\0"
-"lugs.org.uk\0"
-"com\0"
-"florida.museum\0nore-og-uvdal.no\0"
-"coldwar.museum\0router.management\0"
-"cpa\0"
-"freeboxos.com\0"
-"lenvik.no\0at.md\0"
-"livinghistory.museum\0"
-"ug.gov.pl\0info.zm\0sch.zm\0blue\0"
-"website\0s3.dualstack.eu-central-1.amazonaws.com\0"
-"hanamaki.iwate.jp\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0"
-"hida.gifu.jp\0kosei.shiga.jp\0"
-"im.it\0"
-"marumori.miyagi.jp\0"
-"shintoku.hokkaido.jp\0tjeldsund.no\0"
-"dad\0hosting-cluster.nl\0"
-"barsy.info\0dynserv.org\0"
-"ikawa.akita.jp\0"
-"tn.it\0pages.dev\0"
-"nym.gr\0"
-"ltd.co.im\0"
-"webhop.me\0"
-"shinjo.nara.jp\0"
-"donna.no\0"
-"health\0"
-"kashiwara.osaka.jp\0nym.gy\0"
-"nym.hk\0"
-"cloudns.us\0"
-"miyazaki.jp\0brasilia.me\0"
-"modern.museum\0"
-"takaoka.toyama.jp\0te.ua\0day\0logoip.com\0"
-"name.mk\0"
-"berlin\0"
-"nym.ie\0"
-"lib.or.us\0"
-"id.us\0"
-"crs\0csc\0s3-website-us-west-1.amazonaws.com\0reserve-online.net\0"
-"maceio.br\0"
-"tcm.museum\0"
-"dyndns-home.com\0"
-"mjondalen.no\0noip.me\0"
-"agano.niigata.jp\0"
-"name.jo\0"
-"fe.it\0utsira.no\0cc.wy.us\0"
-"woodside\0"
-"osaka.jp\0shiroi.chiba.jp\0nakanojo.gunma.jp\0"
-"pv.it\0"
-"kashiwa.chiba.jp\0kiyose.tokyo.jp\0"
-"bingo\0"
-"tw.cn\0wedeploy.io\0"
-"inf.br\0"
-"ardal.no\0"
+"fly.dev\0"
+"ne.ug\0doomdns.org\0"
+"sekigahara.gifu.jp\0hitachinaka.ibaraki.jp\0oji.nara.jp\0miyashiro.saitama.jp\0school\0"
+"ne.tz\0"
+"\xe7\xae\x87\xe4\xba\xba.hk\0\xe5\x95\x86\xe6\xa5\xad.tw\0"
+"kaneyama.fukushima.jp\0"
+"ibaraki.osaka.jp\0"
+"mex.com\0"
+"ne.us\0"
+"lib.dc.us\0forumz.info\0"
+"hikari.yamaguchi.jp\0xy.ax\0"
"dds\0"
-"friuliv-giulia.it\0gouv.km\0"
-"\xe1\x83\x92\xe1\x83\x94\0"
-"aquarium.museum\0vote\0"
-"nym.la\0"
-"pstmn.io\0"
-"nym.lc\0"
-"nym.li\0"
-"inf.cu\0aramco\0voto\0nym.kz\0"
-"munakata.fukuoka.jp\0r\xc3\xa5""de.no\0bd.se\0dev\0"
-"alessandria.it\0"
-"cuisinella\0al.leg.br\0"
-"pubtls.org\0"
-"blogdns.net\0nym.lt\0playstation-cloud.com\0"
-"sogne.no\0nym.lu\0nym.me\0"
-"wakayama.wakayama.jp\0"
-"carboniaiglesias.it\0"
-"fi.eu.org\0"
-"fuefuki.yamanashi.jp\0gouv.ml\0"
-"association.aero\0nym.mn\0"
-"mitou.yamaguchi.jp\0"
-"me.so\0"
-"mn.it\0"
-"me.ss\0\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0me.tc\0"
-"kunstunddesign.museum\0nym.mx\0"
-"science.museum\0dunlop\0"
-"collection.museum\0"
-"\xc3\xa5mli.no\0"
-"yawara.ibaraki.jp\0*.stolos.io\0"
-"lancia\0"
-"trentin-sud-tirol.it\0kamishihoro.hokkaido.jp\0"
-"dhl\0"
-"labour.museum\0makeup\0"
-"search\0"
-"shimamaki.hokkaido.jp\0jondal.no\0"
-"sweden.museum\0nym.nz\0"
-"kozagawa.wakayama.jp\0me.tz\0"
-"me.uk\0"
-"risor.no\0"
-"at.vg\0"
-"dh.bytemark.co.uk\0"
-"riobranco.br\0servecounterstrike.com\0"
-"kawakita.ishikawa.jp\0yamanobe.yamagata.jp\0me.us\0*.linodeobjects.com\0nym.pe\0"
-"plc.co.im\0"
-"passenger-association.aero\0montreal.museum\0"
-"usuki.oita.jp\0"
-"kamogawa.chiba.jp\0secure\0"
-"wv.us\0"
-"nordeste-idc.saveincloud.net\0"
-"user.party.eus\0"
-"diy\0"
-"nym.pt\0"
-"fr\xc3\xa6na.no\0for.mom\0"
-"to.gov.br\0me.vu\0"
+"donetsk.ua\0"
+"fet.no\0nsupdate.info\0"
+"bar1.net\0"
+"siena.it\0kuriyama.hokkaido.jp\0"
+"tec.br\0dev\0myftp.biz\0"
+"sf.no\0"
+"sagae.yamagata.jp\0"
+"bergbau.museum\0"
+"sor-aurdal.no\0"
+"vc.it\0\xe9\xab\x98\xe7\x9f\xa5.jp\0"
+"aerobatic.aero\0n4t.co\0"
+"miho.ibaraki.jp\0*.ex.futurecms.at\0trafficplex.cloud\0"
+"government.aero\0"
+"shinjo.nara.jp\0edu.scot\0"
+"costume.museum\0"
+"davvenj\xc3\xa1rga.no\0us.kg\0"
+"yoka.hyogo.jp\0"
+"childrens.museum\0godaddy\0voyage\0"
+"marnardal.no\0"
+"valledaosta.it\0asahi.yamagata.jp\0"
+"chicago.museum\0gentapps.com\0"
+"g\xc3\xa1ivuotna.no\0"
+"neustar\0"
+"asakawa.fukushima.jp\0dhl\0"
+"onred.one\0"
+"catholic\0hobby-site.org\0"
+"mugi.tokushima.jp\0"
+"modum.no\0raisa.no\0aca.pro\0"
"emiliaromagna.it\0"
-"suldal.no\0"
-"juif.museum\0"
-"kamimine.saga.jp\0kharkov.ua\0"
-"serveftp.org\0"
-"siteleaf.net\0"
-"miki.hyogo.jp\0kawagoe.mie.jp\0lans.museum\0"
-"s3-website-ap-southeast-1.amazonaws.com\0"
-"msk.ru\0"
-"hammerfest.no\0\xd0\xb1\xd0\xb3\0"
-"sciencesnaturelles.museum\0"
-"\xe7\xb5\x84\xe7\xb9\x94.hk\0boxfuse.io\0dopaas.com\0pages.torproject.net\0"
-"hasama.oita.jp\0bielawa.pl\0associates\0"
-"enna.it\0"
-"valled-aosta.it\0k12.gu.us\0"
-"higashiyodogawa.osaka.jp\0nym.ro\0"
-"mil.ac\0myftp.org\0"
-"bologna.it\0kita.kyoto.jp\0"
-"mil.ae\0"
-"msk.su\0"
-"hanawa.fukushima.jp\0"
-"b\xc3\xb8.telemark.no\0"
-"judaica.museum\0eidsvoll.no\0cookingchannel\0"
-"sakura\0"
-"mil.al\0ong.br\0"
-"asti.it\0bremanger.no\0"
-"malbork.pl\0solar\0nym.sk\0enterprisecloud.nu\0"
-"nishigo.fukushima.jp\0saito.miyazaki.jp\0"
-"mil.ba\0"
-"mil.ar\0tn.us\0"
-"matsuno.ehime.jp\0s3-website.eu-west-2.amazonaws.com\0cloudns.pw\0lug.org.uk\0"
-"okuma.fukushima.jp\0"
-"f.bg\0"
-"nym.su\0"
-"mil.az\0app.banzaicloud.io\0"
-"nym.sx\0"
-"futaba.fukushima.jp\0castres.museum\0"
-"mil.bo\0kashiwazaki.niigata.jp\0"
-"fund\0"
-"mil.br\0chigasaki.kanagawa.jp\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0"
-"cesenaforli.it\0tadaoka.osaka.jp\0"
-"embetsu.hokkaido.jp\0"
-"mad.museum\0\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0wpmudev.host\0"
-"microlight.aero\0mil.by\0"
-"nym.tw\0"
-"dnp\0"
-"mil.cl\0obama.fukui.jp\0otsu.shiga.jp\0press.se\0"
-"lib.ar.us\0"
-"mil.cn\0myhome-server.de\0"
-"mil.co\0"
-"malselv.no\0gent\0linkyard-cloud.ch\0"
-"karasjohka.no\0dog\0xx.gl\0"
-"inf.mk\0"
-"town.museum\0rad\xc3\xb8y.no\0bharti\0"
-"s\xc3\xb8r-aurdal.no\0"
-"is-a-bulls-fan.com\0"
-"deloitte\0gg.ax\0"
-"valle-aosta.it\0rich\0"
-"krasnodar.su\0"
-"\xe4\xba\xac\xe9\x83\xbd.jp\0"
-"como.it\0"
-"laquila.it\0musashimurayama.tokyo.jp\0"
-"mil.do\0tatebayashi.gunma.jp\0dot\0express\0"
-"bialowieza.pl\0"
-"mizunami.gifu.jp\0"
-"mil.ec\0yoro.gifu.jp\0sanok.pl\0"
-"toyota.aichi.jp\0hiranai.aomori.jp\0"
-"mil.eg\0higashikawa.hokkaido.jp\0is-an-artist.com\0"
-"boomla.net\0"
-"anpachi.gifu.jp\0"
-"trading\0"
-"ginowan.okinawa.jp\0\xe4\xbd\x9b\xe5\xb1\xb1\0"
-"\xd0\xb5\xd1\x8e\0dyndns.info\0"
-"from-ca.com\0"
-"co.ae\0logistics.aero\0komatsushima.tokushima.jp\0"
-"co.ag\0"
-"higashi.okinawa.jp\0"
-"mil.fj\0feste-ip.net\0"
-"sowa.ibaraki.jp\0"
-"rentals\0"
-"co.am\0dreamhosters.com\0"
-"co.ao\0szkola.pl\0eat\0"
-"southwest.museum\0is-an-accountant.com\0"
-"chikusei.ibaraki.jp\0gotemba.shizuoka.jp\0dynvpn.de\0"
-"co.bb\0gs.svalbard.no\0edu.scot\0"
-"co.at\0"
-"mil.ge\0"
+"jefferson.museum\0"
+"prato.it\0higashiizu.shizuoka.jp\0"
+"pr.us\0"
+"czeladz.pl\0"
+"virtual-user.de\0"
+"industria.bo\0"
+"is-a-guru.com\0"
+"\xe5\xae\xb6\xe9\x9b\xbb\0"
+"forde.no\0hemsedal.no\0loppa.no\0"
+"pomorskie.pl\0"
+"cultural.museum\0us.na\0diy\0"
+"homesense\0"
+"ami.ibaraki.jp\0katano.osaka.jp\0channelsdvr.net\0"
+"cloud.goog\0"
+"shingo.aomori.jp\0shika.ishikawa.jp\0ine.kyoto.jp\0poniatowa.pl\0"
+"co.com\0"
+"l\xc3\xa6rdal.no\0"
+"sampa.br\0"
+"\xe7\xbe\xa4\xe9\xa6\xac.jp\0fuchu.hiroshima.jp\0embaixada.st\0nerdpol.ovh\0"
+"salem.museum\0"
+"chikusei.ibaraki.jp\0"
+"coupons\0"
+"yokkaichi.mie.jp\0"
+"rv.ua\0room\0"
+"greta.fr\0"
+"!city.kawasaki.jp\0yamagata.yamagata.jp\0"
+"openair.museum\0"
+"ass.km\0"
+"l\xc3\xb8renskog.no\0"
+"aomori.jp\0\xe4\xb8\x96\xe7\x95\x8c\0"
+"\xe4\xb8\xad\xe4\xbf\xa1\0spb.ru\0"
+"ua.rs\0"
+"kamagaya.chiba.jp\0azurestaticapps.net\0"
+"frana.no\0nordre-land.no\0\xd0\xb1\xd0\xb3\0commbank\0"
+"loseyourip.com\0"
+"spb.su\0"
+"voting\0"
+"ina.saitama.jp\0"
+"\xe9\x80\x9a\xe8\xb2\xa9\0from-ut.com\0"
+"insurance.aero\0"
+"taki.mie.jp\0dnp\0"
+"play\0"
+"uwajima.ehime.jp\0"
+"\xd1\x83\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0indowapblog.com\0wixsite.com\0"
+"design.aero\0dog\0shop.brendly.rs\0"
+"plants.museum\0is-a-financialadvisor.com\0"
+"aioi.hyogo.jp\0aya.miyazaki.jp\0"
+"impertrixcdn.com\0"
+"lib.in.us\0ssl.origin.cdn77-secure.org\0"
+"askvoll.no\0origins\0winners\0"
+"dot\0"
+"ms.leg.br\0"
+"accident-investigation.aero\0vgs.no\0voss.no\0"
+"newport.museum\0unicom\0"
+"orkdal.no\0telebit.io\0"
+"karikatur.museum\0"
+"seoul.kr\0"
+"\xe7\xbb\x84\xe7\xb9\x94.hk\0ostre-toten.no\0"
+"ashibetsu.hokkaido.jp\0xerox\0"
+"stj\xc3\xb8rdal.no\0samsung\0"
+"sirdal.no\0"
+"munakata.fukuoka.jp\0"
+"accountants\0pl.eu.org\0"
+"*.developer.app\0"
+"direct.quickconnect.to\0"
+"chuo.chiba.jp\0shintoku.hokkaido.jp\0eat\0"
+"chernigov.ua\0uzhgorod.ua\0lenug.su\0"
+"mt.leg.br\0"
+"aibetsu.hokkaido.jp\0morimachi.shizuoka.jp\0"
+"from-mn.com\0"
+"jaguar\0"
+"\xe7\xb6\xb2\xe8\xb7\xaf.tw\0we.tc\0"
+"kerryproperties\0"
+"yasuda.kochi.jp\0oyodo.nara.jp\0yoshida.saitama.jp\0"
+"s3.eu-west-3.amazonaws.com\0is-an-actress.com\0"
+"eigersund.no\0cc.ak.us\0"
+"carboniaiglesias.it\0moriya.ibaraki.jp\0takanabe.miyazaki.jp\0"
+"durham.museum\0kunst.museum\0"
+"here-for-more.info\0"
+"shimotsuma.ibaraki.jp\0"
+"\xd0\xb5\xd1\x8e\0"
+"vads\xc3\xb8.no\0"
+"shiraoka.saitama.jp\0wloclawek.pl\0"
+"medecin.km\0hamburg.museum\0myspreadshop.com\0"
+"eco\0"
+"equipment\0"
+"\xe6\x95\x99\xe8\x82\xb2.\xe9\xa6\x99\xe6\xb8\xaf\0"
+"tsu.mie.jp\0nagawa.nagano.jp\0"
+"dev-myqnapcloud.com\0"
+"for.one\0"
+"jozi.biz\0"
+"democracia.bo\0"
+"kuki.saitama.jp\0adult\0"
+"rag-cloud-ch.hosteur.com\0"
+"drobak.no\0lundbeck\0"
+"static-access.net\0"
+"edu\0"
+"dtv\0"
+"hk.org\0"
+"chirurgiens-dentistes.fr\0"
+"wmflabs.org\0"
+"ama.aichi.jp\0nagaoka.niigata.jp\0creditcard\0"
+"lib.nh.us\0"
+"heritage.museum\0"
+"takamatsu.kagawa.jp\0"
+"indian.museum\0"
+"aeroport.fr\0\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xae\0"
+"andriatranibarletta.it\0gdynia.pl\0"
+"gjesdal.no\0ruovat.no\0"
+"sicily.it\0"
+"dyndns-ip.com\0"
+"dvr\0rehab\0hs.run\0"
+"cc.co.us\0bci.dnstrace.pro\0"
+"toshima.tokyo.jp\0"
+"\xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\0"
+"audnedaln.no\0x443.pw\0"
+"turin.it\0koga.ibaraki.jp\0tamayu.shimane.jp\0"
+"observer\0"
+"nanto.toyama.jp\0endofinternet.net\0"
+"vp4.me\0"
+"davvenjarga.no\0lib.nv.us\0"
+"torproject.net\0"
+"blogspot.com.cy\0"
+"webspace.rocks\0"
+"shimane.jp\0kembuchi.hokkaido.jp\0akagi.shimane.jp\0t3l3p0rt.net\0"
+"louvre.museum\0ras.ru\0mein-vigor.de\0"
+"oster\xc3\xb8y.no\0"
+"chichibu.saitama.jp\0misato.shimane.jp\0"
+"astronomy.museum\0"
+"north.museum\0blogspot.com.ee\0"
+"blogspot.com.eg\0"
+"hachijo.tokyo.jp\0unicloud.pl\0"
};
static const quint16 tldChunkCount = 2;
-static const quint32 tldChunks[] = {65530, 108837};
+static const quint32 tldChunks[] = {65521, 109928};
QT_END_NAMESPACE
diff --git a/src/corelib/io/qwindowspipereader.cpp b/src/corelib/io/qwindowspipereader.cpp
index c20909766d..39e129971c 100644
--- a/src/corelib/io/qwindowspipereader.cpp
+++ b/src/corelib/io/qwindowspipereader.cpp
@@ -193,11 +193,11 @@ void QWindowsPipeReader::notified(DWORD errorCode, DWORD numberOfBytesRead)
actualReadBufferSize += numberOfBytesRead;
readBuffer.truncate(actualReadBufferSize);
- startAsyncRead();
if (!readyReadPending) {
readyReadPending = true;
emit _q_queueReadyRead(QWindowsPipeReader::QPrivateSignal());
}
+ startAsyncRead();
}
/*!
diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp
index 3a79c502af..997a634e76 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.cpp
+++ b/src/corelib/itemmodels/qabstractitemmodel.cpp
@@ -3196,9 +3196,8 @@ bool QAbstractItemModel::beginMoveColumns(const QModelIndex &sourceParent, int s
destinationChange.needsAdjust = destinationParent.isValid() && destinationParent.row() >= sourceLast && destinationParent.parent() == sourceParent;
d->changes.push(destinationChange);
- d->itemsAboutToBeMoved(sourceParent, sourceFirst, sourceLast, destinationParent, destinationChild, Qt::Horizontal);
-
emit columnsAboutToBeMoved(sourceParent, sourceFirst, sourceLast, destinationParent, destinationChild, QPrivateSignal());
+ d->itemsAboutToBeMoved(sourceParent, sourceFirst, sourceLast, destinationParent, destinationChild, Qt::Horizontal);
return true;
}
@@ -3231,7 +3230,6 @@ void QAbstractItemModel::endMoveColumns()
adjustedSource = createIndex(adjustedSource.row(), adjustedSource.column() + numMoved, adjustedSource.internalPointer());
d->itemsMoved(adjustedSource, removeChange.first, removeChange.last, adjustedDestination, insertChange.first, Qt::Horizontal);
-
emit columnsMoved(adjustedSource, removeChange.first, removeChange.last, adjustedDestination, insertChange.first, QPrivateSignal());
}
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index ca2864df83..2a2dcc72ca 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -2052,6 +2052,8 @@ void QCoreApplication::quit()
The function returns \c true on success and false on failure.
+ \note QCoreApplication does \e not take ownership of \a translationFile.
+
\sa removeTranslator(), translate(), QTranslator::load(), {Dynamic Translation}
*/
diff --git a/src/corelib/kernel/qcoreevent.cpp b/src/corelib/kernel/qcoreevent.cpp
index e3326f00d7..b497532008 100644
--- a/src/corelib/kernel/qcoreevent.cpp
+++ b/src/corelib/kernel/qcoreevent.cpp
@@ -421,6 +421,8 @@ struct QBasicAtomicBitField {
QBasicAtomicInteger<uint> next;
QBasicAtomicInteger<uint> data[NumInts];
+ constexpr QBasicAtomicBitField() = default;
+
bool allocateSpecific(int which) noexcept
{
QBasicAtomicInteger<uint> &entry = data[which / BitsPerInt];
@@ -461,7 +463,7 @@ struct QBasicAtomicBitField {
typedef QBasicAtomicBitField<QEvent::MaxUser - QEvent::User + 1> UserEventTypeRegistry;
-static UserEventTypeRegistry userEventTypeRegistry;
+static UserEventTypeRegistry userEventTypeRegistry {};
static inline int registerEventTypeZeroBased(int id) noexcept
{
diff --git a/src/corelib/kernel/qelapsedtimer.cpp b/src/corelib/kernel/qelapsedtimer.cpp
index 57825583dd..3bfb1f15ec 100644
--- a/src/corelib/kernel/qelapsedtimer.cpp
+++ b/src/corelib/kernel/qelapsedtimer.cpp
@@ -139,9 +139,9 @@ QT_BEGIN_NAMESPACE
\value SystemTime The human-readable system time. This clock is not monotonic.
\value MonotonicClock The system's monotonic clock, usually found in Unix systems. This clock is monotonic and does not overflow.
- \value TickCounter The system's tick counter, used on Windows systems. This clock may overflow.
+ \value TickCounter Not used anymore.
\value MachAbsoluteTime The Mach kernel's absolute time (\macos and iOS). This clock is monotonic and does not overflow.
- \value PerformanceCounter The high-resolution performance counter provided by Windows. This clock is monotonic and does not overflow.
+ \value PerformanceCounter The performance counter provided by Windows. This clock is monotonic and does not overflow.
\section2 SystemTime
@@ -161,24 +161,6 @@ QT_BEGIN_NAMESPACE
This clock does not overflow.
- \section2 TickCounter
-
- The tick counter clock type is based on the system's or the processor's
- tick counter, multiplied by the duration of a tick. This clock type is
- used on Windows platforms. If the high-precision performance
- counter is available on Windows, the \tt{PerformanceCounter} clock type
- is used instead.
-
- The TickCounter clock type is the only clock type that may overflow.
- Windows Vista and Windows Server 2008 support the extended 64-bit tick
- counter, which allows avoiding the overflow.
-
- On Windows systems, the clock overflows after 2^32 milliseconds, which
- corresponds to roughly 49.7 days. This means two processes' reckoning of
- the time since the reference may be different by multiples of 2^32
- milliseconds. When comparing such values, it's recommended that the high
- 32 bits of the millisecond count be masked off.
-
\section2 MachAbsoluteTime
This clock type is based on the absolute time presented by Mach kernels,
@@ -192,10 +174,7 @@ QT_BEGIN_NAMESPACE
\section2 PerformanceCounter
This clock uses the Windows functions \tt{QueryPerformanceCounter} and
- \tt{QueryPerformanceFrequency} to access the system's high-precision
- performance counter. Since this counter may not be available on all
- systems, QElapsedTimer will fall back to the \tt{TickCounter} clock
- automatically, if this clock cannot be used.
+ \tt{QueryPerformanceFrequency} to access the system's performance counter.
This clock is monotonic and does not overflow.
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index b249d37adf..c9d0f03619 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -275,6 +275,8 @@ LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPA
void QEventDispatcherWin32Private::startPostedEventsTimer()
{
+ // we received WM_QT_SENDPOSTEDEVENTS, so allow posting it again
+ wakeUps.storeRelaxed(0);
if (sendPostedEventsTimerId == 0) {
// Start a timer to deliver posted events when the message queue is emptied.
sendPostedEventsTimerId = SetTimer(internalHwnd, SendPostedEventsTimerId,
diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp
index a81112d227..b1de8907b2 100644
--- a/src/corelib/mimetypes/qmimeglobpattern.cpp
+++ b/src/corelib/mimetypes/qmimeglobpattern.cpp
@@ -94,7 +94,7 @@ QMimeGlobPattern::PatternType QMimeGlobPattern::detectPatternType(const QString
if (!patternLength)
return OtherPattern;
- const bool starCount = pattern.count(QLatin1Char('*')) == 1;
+ const int starCount = pattern.count(QLatin1Char('*'));
const bool hasSquareBracket = pattern.indexOf(QLatin1Char('[')) != -1;
const bool hasQuestionMark = pattern.indexOf(QLatin1Char('?')) != -1;
@@ -106,10 +106,10 @@ QMimeGlobPattern::PatternType QMimeGlobPattern::detectPatternType(const QString
// Patterns like "README*" (well this is currently the only one like that...)
if (pattern.at(patternLength - 1) == QLatin1Char('*'))
return PrefixPattern;
- }
- // Names without any wildcards like "README"
- if (starCount == 0)
+ } else if (starCount == 0) {
+ // Names without any wildcards like "README"
return LiteralPattern;
+ }
}
if (pattern == QLatin1String("[0-9][0-9][0-9].vdr"))
diff --git a/src/corelib/mimetypes/qmimetype.cpp b/src/corelib/mimetypes/qmimetype.cpp
index de450c68f4..0c0de63961 100644
--- a/src/corelib/mimetypes/qmimetype.cpp
+++ b/src/corelib/mimetypes/qmimetype.cpp
@@ -529,3 +529,5 @@ QDebug operator<<(QDebug debug, const QMimeType &mime)
#endif
QT_END_NAMESPACE
+
+#include "moc_qmimetype.cpp"
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
index 739947cee9..5d2f024267 100644
--- a/src/corelib/plugin/qlibrary.cpp
+++ b/src/corelib/plugin/qlibrary.cpp
@@ -807,11 +807,11 @@ void QLibraryPrivate::updatePluginState()
debug ? "debug" : "release");
}
errorString = QLibrary::tr("The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5]")
- .arg(fileName)
- .arg((qt_version&0xff0000) >> 16)
- .arg((qt_version&0xff00) >> 8)
- .arg(qt_version&0xff)
- .arg(debug ? QLatin1String("debug") : QLatin1String("release"));
+ .arg(fileName,
+ QString::number((qt_version & 0xff0000) >> 16),
+ QString::number((qt_version & 0xff00) >> 8),
+ QString::number(qt_version & 0xff),
+ debug ? QLatin1String("debug") : QLatin1String("release"));
#ifndef QT_NO_DEBUG_PLUGIN_CHECK
} else if(debug != QLIBRARY_AS_DEBUG) {
//don't issue a qWarning since we will hopefully find a non-debug? --Sam
diff --git a/src/corelib/serialization/qjsonparser.cpp b/src/corelib/serialization/qjsonparser.cpp
index 17e6f111ab..2e40b6c8fb 100644
--- a/src/corelib/serialization/qjsonparser.cpp
+++ b/src/corelib/serialization/qjsonparser.cpp
@@ -379,10 +379,30 @@ error:
return QCborValue();
}
+// We need to retain the _last_ value for any duplicate keys and we need to deref containers.
+// Therefore the manual implementation of std::unique().
+template<typename Iterator, typename Compare, typename Assign>
+static Iterator customAssigningUniqueLast(Iterator first, Iterator last,
+ Compare compare, Assign assign)
+{
+ first = std::adjacent_find(first, last, compare);
+ if (first == last)
+ return last;
+
+ Iterator result = first;
+ while (++first != last) {
+ if (!compare(*result, *first))
+ ++result;
+ if (result != first)
+ assign(*result, *first);
+ }
+
+ return ++result;
+}
+
static void sortContainer(QCborContainerPrivate *container)
{
using Forward = QJsonPrivate::KeyIterator;
- using Reverse = std::reverse_iterator<Forward>;
using Value = Forward::value_type;
auto compare = [container](const Value &a, const Value &b)
@@ -420,17 +440,31 @@ static void sortContainer(QCborContainerPrivate *container)
}
};
- std::sort(Forward(container->elements.begin()), Forward(container->elements.end()),
- [&compare](const Value &a, const Value &b) { return compare(a, b) < 0; });
+ // The elements' containers are owned by the outer container, not by the elements themselves.
+ auto move = [](Forward::reference target, Forward::reference source)
+ {
+ QtCbor::Element &targetValue = target.value();
+
+ // If the target has a container, deref it before overwriting, so that we don't leak.
+ if (targetValue.flags & QtCbor::Element::IsContainer)
+ targetValue.container->deref();
+
+ // Do not move, so that we can clear the value afterwards.
+ target = source;
+
+ // Clear the source value, so that we don't store the same container twice.
+ source.value() = QtCbor::Element();
+ };
+
+ std::stable_sort(
+ Forward(container->elements.begin()), Forward(container->elements.end()),
+ [&compare](const Value &a, const Value &b) { return compare(a, b) < 0; });
- // We need to retain the _last_ value for any duplicate keys. Therefore the reverse dance here.
- auto it = std::unique(Reverse(container->elements.end()), Reverse(container->elements.begin()),
- [&compare](const Value &a, const Value &b) {
- return compare(a, b) == 0;
- }).base().elementsIterator();
+ Forward result = customAssigningUniqueLast(
+ Forward(container->elements.begin()), Forward(container->elements.end()),
+ [&compare](const Value &a, const Value &b) { return compare(a, b) == 0; }, move);
- // The erase from beginning is expensive but hopefully rare.
- container->elements.erase(container->elements.begin(), it);
+ container->elements.erase(result.elementsIterator(), container->elements.end());
}
diff --git a/src/corelib/serialization/qjsonvalue.h b/src/corelib/serialization/qjsonvalue.h
index 3b5c0545fc..92dddfaf05 100644
--- a/src/corelib/serialization/qjsonvalue.h
+++ b/src/corelib/serialization/qjsonvalue.h
@@ -232,6 +232,11 @@ public:
Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QJsonValue)
+inline bool operator==(const QJsonValueRef &lhs, const QJsonValueRef &rhs)
+{ return QJsonValue(lhs) == QJsonValue(rhs); }
+inline bool operator!=(const QJsonValueRef &lhs, const QJsonValueRef &rhs)
+{ return !(lhs == rhs); }
+
Q_CORE_EXPORT uint qHash(const QJsonValue &value, uint seed = 0);
#if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_JSON_READONLY)
diff --git a/src/corelib/text/qbytearraymatcher.h b/src/corelib/text/qbytearraymatcher.h
index f5f9bef7b8..54a385d6b3 100644
--- a/src/corelib/text/qbytearraymatcher.h
+++ b/src/corelib/text/qbytearraymatcher.h
@@ -140,6 +140,7 @@ template <uint N>
class QStaticByteArrayMatcher : QStaticByteArrayMatcherBase
{
char m_pattern[N];
+ // N includes the terminating '\0'!
Q_STATIC_ASSERT_X(N > 2, "QStaticByteArrayMatcher makes no sense for finding a single-char pattern");
public:
explicit Q_DECL_RELAXED_CONSTEXPR QStaticByteArrayMatcher(const char (&patternToMatch)[N]) noexcept
diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp
index 3e88ab4859..8deeae47bb 100644
--- a/src/corelib/text/qstring.cpp
+++ b/src/corelib/text/qstring.cpp
@@ -12312,7 +12312,7 @@ static qsizetype qLastIndexOf(Haystack haystack0, qsizetype from,
const auto needle = needle0.data();
const auto *end = haystack;
haystack += from;
- const std::size_t sl_minus_1 = sl - 1;
+ const std::size_t sl_minus_1 = sl ? sl - 1 : 0;
const auto *n = needle + sl_minus_1;
const auto *h = haystack + sl_minus_1;
std::size_t hashNeedle = 0, hashHaystack = 0;
diff --git a/src/corelib/text/qstringview.h b/src/corelib/text/qstringview.h
index cd5bd3343d..5a317479ca 100644
--- a/src/corelib/text/qstringview.h
+++ b/src/corelib/text/qstringview.h
@@ -141,7 +141,7 @@ private:
}
template <typename Char>
- static qsizetype lengthHelperPointer(const Char *str) noexcept
+ static Q_DECL_RELAXED_CONSTEXPR qsizetype lengthHelperPointer(const Char *str) noexcept
{
#if defined(Q_CC_GNU) && !defined(Q_CC_CLANG) && !defined(Q_CC_INTEL)
if (__builtin_constant_p(*str)) {
diff --git a/src/corelib/thread/qfuturewatcher.cpp b/src/corelib/thread/qfuturewatcher.cpp
index 06bc4740f9..ecde665e1f 100644
--- a/src/corelib/thread/qfuturewatcher.cpp
+++ b/src/corelib/thread/qfuturewatcher.cpp
@@ -511,9 +511,15 @@ void QFutureWatcherBasePrivate::sendCallOutEvent(QFutureCallOutEvent *event)
Starts watching the given \a future.
- One of the signals might be emitted for the current state of the
- \a future. For example, if the future is already stopped, the
- finished signal will be emitted.
+ If \a future has already started, the watcher will initially emit signals
+ that bring their listeners up to date about the future's state. The
+ following signals will, if applicable, be emitted in the given order:
+ started(), progressRangeChanged(), progressValueChanged(),
+ progressTextChanged(), resultsReadyAt(), resultReadyAt(), paused(),
+ canceled(), and finished(). Of these, resultsReadyAt() and
+ resultReadyAt() may be emitted several times to cover all available
+ results. progressValueChanged() and progressTextChanged() will only be
+ emitted once for the latest available progress value and text.
To avoid a race condition, it is important to call this function
\e after doing the connections.
diff --git a/src/corelib/thread/qorderedmutexlocker_p.h b/src/corelib/thread/qorderedmutexlocker_p.h
index 9a9aaefa02..309413173e 100644
--- a/src/corelib/thread/qorderedmutexlocker_p.h
+++ b/src/corelib/thread/qorderedmutexlocker_p.h
@@ -91,9 +91,9 @@ public:
}
QOrderedMutexLocker(QOrderedMutexLocker &&other) noexcept
- : mtx1(std::exchange(other.mtx1, nullptr))
- , mtx2(std::exchange(other.mtx2, nullptr))
- , locked(std::exchange(other.locked, false))
+ : mtx1(qExchange(other.mtx1, nullptr))
+ , mtx2(qExchange(other.mtx2, nullptr))
+ , locked(qExchange(other.locked, false))
{}
~QOrderedMutexLocker()
diff --git a/src/corelib/thread/qthread_p.h b/src/corelib/thread/qthread_p.h
index b2d1628e6e..f32f6f0460 100644
--- a/src/corelib/thread/qthread_p.h
+++ b/src/corelib/thread/qthread_p.h
@@ -174,7 +174,7 @@ public:
int returnCode;
uint stackSize;
- QThread::Priority priority;
+ std::underlying_type<QThread::Priority>::type priority;
static QThread *threadForId(int id);
@@ -213,6 +213,13 @@ public:
QCoreApplication::instance()->postEvent(q_ptr, new QEvent(QEvent::Quit));
}
}
+
+#ifndef Q_OS_INTEGRITY
+private:
+ // Used in QThread(Private)::start to avoid racy access to QObject::objectName,
+ // unset afterwards. On INTEGRITY we set the thread name before starting it.
+ QString objectName;
+#endif
};
#else // QT_CONFIG(thread)
diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
index 56a8e0a038..f6499b38d0 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -278,6 +278,29 @@ static void setCurrentThreadName(const char *name)
}
#endif
+namespace {
+template <typename T>
+void terminate_on_exception(T &&t)
+{
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ std::forward<T>(t)();
+#ifndef QT_NO_EXCEPTIONS
+#ifdef __GLIBCXX__
+ // POSIX thread cancellation under glibc is implemented by throwing an exception
+ // of this type. Do what libstdc++ is doing and handle it specially in order not to
+ // abort the application if user's code calls a cancellation function.
+ } catch (abi::__forced_unwind &) {
+ throw;
+#endif // __GLIBCXX__
+ } catch (...) {
+ qTerminate();
+ }
+#endif // QT_NO_EXCEPTIONS
+}
+} // unnamed namespace
+
void *QThreadPrivate::start(void *arg)
{
#if !defined(Q_OS_ANDROID)
@@ -285,10 +308,7 @@ void *QThreadPrivate::start(void *arg)
#endif
pthread_cleanup_push(QThreadPrivate::finish, arg);
-#ifndef QT_NO_EXCEPTIONS
- try
-#endif
- {
+ terminate_on_exception([&] {
QThread *thr = reinterpret_cast<QThread *>(arg);
QThreadData *data = QThreadData::get2(thr);
@@ -296,7 +316,7 @@ void *QThreadPrivate::start(void *arg)
QMutexLocker locker(&thr->d_func()->mutex);
// do we need to reset the thread priority?
- if (int(thr->d_func()->priority) & ThreadPriorityResetFlag) {
+ if (thr->d_func()->priority & ThreadPriorityResetFlag) {
thr->d_func()->setPriority(QThread::Priority(thr->d_func()->priority & ~ThreadPriorityResetFlag));
}
@@ -316,10 +336,10 @@ void *QThreadPrivate::start(void *arg)
// Sets the name of the current thread. We can only do this
// when the thread is starting, as we don't have a cross
// platform way of setting the name of an arbitrary thread.
- if (Q_LIKELY(thr->objectName().isEmpty()))
+ if (Q_LIKELY(thr->d_func()->objectName.isEmpty()))
setCurrentThreadName(thr->metaObject()->className());
else
- setCurrentThreadName(thr->objectName().toLocal8Bit());
+ setCurrentThreadName(std::exchange(thr->d_func()->objectName, {}).toLocal8Bit());
}
#endif
@@ -329,20 +349,7 @@ void *QThreadPrivate::start(void *arg)
pthread_testcancel();
#endif
thr->run();
- }
-#ifndef QT_NO_EXCEPTIONS
-#ifdef __GLIBCXX__
- // POSIX thread cancellation under glibc is implemented by throwing an exception
- // of this type. Do what libstdc++ is doing and handle it specially in order not to
- // abort the application if user's code calls a cancellation function.
- catch (const abi::__forced_unwind &) {
- throw;
- }
-#endif // __GLIBCXX__
- catch (...) {
- qTerminate();
- }
-#endif // QT_NO_EXCEPTIONS
+ });
// This pop runs finish() below. It's outside the try/catch (and has its
// own try/catch) to prevent finish() to be run in case an exception is
@@ -354,10 +361,7 @@ void *QThreadPrivate::start(void *arg)
void QThreadPrivate::finish(void *arg)
{
-#ifndef QT_NO_EXCEPTIONS
- try
-#endif
- {
+ terminate_on_exception([&] {
QThread *thr = reinterpret_cast<QThread *>(arg);
QThreadPrivate *d = thr->d_func();
@@ -389,20 +393,7 @@ void QThreadPrivate::finish(void *arg)
d->data->threadId.storeRelaxed(nullptr);
d->thread_done.wakeAll();
- }
-#ifndef QT_NO_EXCEPTIONS
-#ifdef __GLIBCXX__
- // POSIX thread cancellation under glibc is implemented by throwing an exception
- // of this type. Do what libstdc++ is doing and handle it specially in order not to
- // abort the application if user's code calls a cancellation function.
- catch (const abi::__forced_unwind &) {
- throw;
- }
-#endif // __GLIBCXX__
- catch (...) {
- qTerminate();
- }
-#endif // QT_NO_EXCEPTIONS
+ });
}
@@ -671,7 +662,7 @@ void QThread::start(Priority priority)
// could not set scheduling hints, fallback to inheriting them
// we'll try again from inside the thread
pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
- d->priority = Priority(priority | ThreadPriorityResetFlag);
+ d->priority = std::underlying_type<Priority>::type(priority) | ThreadPriorityResetFlag;
}
break;
}
@@ -702,7 +693,10 @@ void QThread::start(Priority priority)
pthread_attr_setthreadname(&attr, metaObject()->className());
else
pthread_attr_setthreadname(&attr, objectName().toLocal8Bit());
+#else
+ d->objectName = objectName();
#endif
+
pthread_t threadId;
int code = pthread_create(&threadId, &attr, QThreadPrivate::start, this);
if (code == EPERM) {
diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
index bc70e3178a..4e76972498 100644
--- a/src/corelib/thread/qthread_win.cpp
+++ b/src/corelib/thread/qthread_win.cpp
@@ -394,10 +394,9 @@ unsigned int __stdcall QT_ENSURE_STACK_ALIGNED_FOR_SSE QThreadPrivate::start(voi
#if !defined(QT_NO_DEBUG) && defined(Q_CC_MSVC) && !defined(Q_OS_WINRT)
// sets the name of the current thread.
- QByteArray objectName = thr->objectName().toLocal8Bit();
- qt_set_thread_name(HANDLE(-1),
- objectName.isEmpty() ?
- thr->metaObject()->className() : objectName.constData());
+ qt_set_thread_name(HANDLE(-1), thr->d_func()->objectName.isEmpty()
+ ? thr->metaObject()->className()
+ : std::exchange(thr->d_func()->objectName, {}).toLocal8Bit().constData());
#endif
emit thr->started(QThread::QPrivateSignal());
@@ -503,6 +502,7 @@ void QThread::start(Priority priority)
if (d->running)
return;
+ d->objectName = objectName();
d->running = true;
d->finished = false;
d->exited = false;
@@ -548,7 +548,7 @@ void QThread::start(Priority priority)
int prio;
d->priority = priority;
- switch (d->priority) {
+ switch (priority) {
case IdlePriority:
prio = THREAD_PRIORITY_IDLE;
break;
@@ -686,7 +686,7 @@ void QThreadPrivate::setPriority(QThread::Priority threadPriority)
int prio;
priority = threadPriority;
- switch (priority) {
+ switch (threadPriority) {
case QThread::IdlePriority:
prio = THREAD_PRIORITY_IDLE;
break;
diff --git a/src/corelib/time/qcalendar.cpp b/src/corelib/time/qcalendar.cpp
index 62b32370e1..076b401c56 100644
--- a/src/corelib/time/qcalendar.cpp
+++ b/src/corelib/time/qcalendar.cpp
@@ -1296,3 +1296,7 @@ QStringList QCalendar::availableCalendars()
}
QT_END_NAMESPACE
+
+#ifndef QT_BOOTSTRAPPED
+#include "moc_qcalendar.cpp"
+#endif
diff --git a/src/corelib/time/qdatetime.cpp b/src/corelib/time/qdatetime.cpp
index ec12569e3f..c30fd046a4 100644
--- a/src/corelib/time/qdatetime.cpp
+++ b/src/corelib/time/qdatetime.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2020 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Copyright (C) 2016 Intel Corporation.
** Contact: https://www.qt.io/licensing/
**
@@ -75,6 +75,7 @@
#include "qcalendar.h"
#include "qgregoriancalendar_p.h"
+#include "private/qnumeric_p.h"
QT_BEGIN_NAMESPACE
@@ -1429,9 +1430,11 @@ QDate QDate::addDays(qint64 ndays) const
if (isNull())
return QDate();
- // Due to limits on minJd() and maxJd() we know that any overflow
- // will be invalid and caught by fromJulianDay().
- return fromJulianDay(jd + ndays);
+ qint64 r;
+ if (Q_UNLIKELY(add_overflow(jd, ndays, &r)))
+ return QDate();
+ else
+ return fromJulianDay(r);
}
/*!
@@ -4548,9 +4551,9 @@ static inline void massageAdjustedDateTime(const QDateTimeData &d, QDate *date,
QDateTimePrivate::DaylightStatus status = QDateTimePrivate::UnknownDaylightTime;
localMSecsToEpochMSecs(timeToMSecs(*date, *time), &status, date, time);
#if QT_CONFIG(timezone)
- } else if (spec == Qt::TimeZone && d->m_timeZone.isValid()) {
+ } else if (spec == Qt::TimeZone && d.d->m_timeZone.isValid()) {
QDateTimePrivate::zoneMSecsToEpochMSecs(timeToMSecs(*date, *time),
- d->m_timeZone,
+ d.d->m_timeZone,
QDateTimePrivate::UnknownDaylightTime,
date, time);
#endif // timezone
diff --git a/src/corelib/time/qtimezoneprivate_p.h b/src/corelib/time/qtimezoneprivate_p.h
index 62cd32c898..eb847b80f5 100644
--- a/src/corelib/time/qtimezoneprivate_p.h
+++ b/src/corelib/time/qtimezoneprivate_p.h
@@ -243,6 +243,7 @@ public:
QIcuTimeZonePrivate *clone() const override;
+ using QTimeZonePrivate::displayName;
QString displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType,
const QLocale &locale) const override;
QString abbreviation(qint64 atMSecsSinceEpoch) const override;
@@ -345,12 +346,17 @@ public:
QList<QByteArray> availableTimeZoneIds(QLocale::Country country) const override;
private:
- void init(const QByteArray &ianaId);
+ static QByteArray staticSystemTimeZoneId();
QVector<QTimeZonePrivate::Data> getPosixTransitions(qint64 msNear) const;
Data dataForTzTransition(QTzTransitionTime tran) const;
#if QT_CONFIG(icu)
- mutable QSharedDataPointer<QTimeZonePrivate> m_icu;
+# ifdef __cpp_lib_is_final
+ static_assert(std::is_final<QIcuTimeZonePrivate>::value,
+ "if QIcuTimeZonePrivate isn't final, we may need to specialize "
+ "QExplicitlySharedDataPointer::clone() to call QTimeZonePrivate::clone()");
+# endif
+ mutable QExplicitlySharedDataPointer<const QIcuTimeZonePrivate> m_icu;
#endif
QTzTimeZoneCacheEntry cached_data;
QVector<QTzTransitionTime> tranCache() const { return cached_data.m_tranTimes; }
diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp
index b1611d7ddb..55914cc7da 100644
--- a/src/corelib/time/qtimezoneprivate_tz.cpp
+++ b/src/corelib/time/qtimezoneprivate_tz.cpp
@@ -42,6 +42,7 @@
#include "qtimezone.h"
#include "qtimezoneprivate_p.h"
#include "private/qlocale_tools_p.h"
+#include "private/qlocking_p.h"
#include <QtCore/QDataStream>
#include <QtCore/QDateTime>
@@ -62,6 +63,10 @@
QT_BEGIN_NAMESPACE
+#if QT_CONFIG(icu)
+static QBasicMutex s_icu_mutex;
+#endif
+
/*
Private
@@ -654,14 +659,8 @@ static QVector<QTimeZonePrivate::Data> calculatePosixTransitions(const QByteArra
// Create the system default time zone
QTzTimeZonePrivate::QTzTimeZonePrivate()
+ : QTzTimeZonePrivate(staticSystemTimeZoneId())
{
- init(systemTimeZoneId());
-}
-
-// Create a named time zone
-QTzTimeZonePrivate::QTzTimeZonePrivate(const QByteArray &ianaId)
-{
- init(ianaId);
}
QTzTimeZonePrivate::~QTzTimeZonePrivate()
@@ -670,6 +669,9 @@ QTzTimeZonePrivate::~QTzTimeZonePrivate()
QTzTimeZonePrivate *QTzTimeZonePrivate::clone() const
{
+#if QT_CONFIG(icu)
+ const auto lock = qt_scoped_lock(s_icu_mutex);
+#endif
return new QTzTimeZonePrivate(*this);
}
@@ -872,7 +874,8 @@ QTzTimeZoneCacheEntry QTzTimeZoneCache::fetchEntry(const QByteArray &ianaId)
return ret;
}
-void QTzTimeZonePrivate::init(const QByteArray &ianaId)
+// Create a named time zone
+QTzTimeZonePrivate::QTzTimeZonePrivate(const QByteArray &ianaId)
{
static QTzTimeZoneCache tzCache;
auto entry = tzCache.fetchEntry(ianaId);
@@ -913,12 +916,14 @@ QString QTzTimeZonePrivate::displayName(qint64 atMSecsSinceEpoch,
const QLocale &locale) const
{
#if QT_CONFIG(icu)
+ auto lock = qt_unique_lock(s_icu_mutex);
if (!m_icu)
m_icu = new QIcuTimeZonePrivate(m_id);
// TODO small risk may not match if tran times differ due to outdated files
// TODO Some valid TZ names are not valid ICU names, use translation table?
if (m_icu->isValid())
return m_icu->displayName(atMSecsSinceEpoch, nameType, locale);
+ lock.unlock();
#else
Q_UNUSED(nameType)
Q_UNUSED(locale)
@@ -932,12 +937,14 @@ QString QTzTimeZonePrivate::displayName(QTimeZone::TimeType timeType,
const QLocale &locale) const
{
#if QT_CONFIG(icu)
+ auto lock = qt_unique_lock(s_icu_mutex);
if (!m_icu)
m_icu = new QIcuTimeZonePrivate(m_id);
// TODO small risk may not match if tran times differ due to outdated files
// TODO Some valid TZ names are not valid ICU names, use translation table?
if (m_icu->isValid())
return m_icu->displayName(timeType, nameType, locale);
+ lock.unlock();
#else
Q_UNUSED(timeType)
Q_UNUSED(nameType)
@@ -1285,6 +1292,11 @@ private:
QByteArray QTzTimeZonePrivate::systemTimeZoneId() const
{
+ return staticSystemTimeZoneId();
+}
+
+QByteArray QTzTimeZonePrivate::staticSystemTimeZoneId()
+{
// Check TZ env var first, if not populated try find it
QByteArray ianaId = qgetenv("TZ");
diff --git a/src/corelib/tools/qfreelist_p.h b/src/corelib/tools/qfreelist_p.h
index 5ba23b344b..9974102136 100644
--- a/src/corelib/tools/qfreelist_p.h
+++ b/src/corelib/tools/qfreelist_p.h
@@ -161,7 +161,7 @@ class QFreeList
return i;
x -= size;
}
- Q_ASSERT(false);
+ Q_UNREACHABLE();
return -1;
}
diff --git a/src/corelib/tools/qmargins.cpp b/src/corelib/tools/qmargins.cpp
index ac00aaee96..3d6a62af64 100644
--- a/src/corelib/tools/qmargins.cpp
+++ b/src/corelib/tools/qmargins.cpp
@@ -489,7 +489,7 @@ QDebug operator<<(QDebug dbg, const QMargins &m)
/*!
\fn QMarginsF::QMarginsF(const QMargins &margins)
- Constructs margins copied from the given \a margins
+ Constructs margins copied from the given \a margins.
*/
/*!
diff --git a/src/corelib/tools/qversionnumber.h b/src/corelib/tools/qversionnumber.h
index d43b86ba51..d1180b54e6 100644
--- a/src/corelib/tools/qversionnumber.h
+++ b/src/corelib/tools/qversionnumber.h
@@ -133,8 +133,8 @@ class QVersionNumber
explicit SegmentStorage(QVector<int> &&seg)
{
- if (dataFitsInline(seg.begin(), seg.size()))
- setInlineData(seg.begin(), seg.size());
+ if (dataFitsInline(seg.cbegin(), seg.size()))
+ setInlineData(seg.cbegin(), seg.size());
else
pointer_segments = new QVector<int>(std::move(seg));
}
@@ -269,14 +269,14 @@ public:
Q_REQUIRED_RESULT Q_CORE_EXPORT static int compare(const QVersionNumber &v1, const QVersionNumber &v2) noexcept;
- Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber commonPrefix(const QVersionNumber &v1, const QVersionNumber &v2);
+ Q_REQUIRED_RESULT Q_CORE_EXPORT static QVersionNumber commonPrefix(const QVersionNumber &v1, const QVersionNumber &v2);
Q_REQUIRED_RESULT Q_CORE_EXPORT QString toString() const;
#if QT_STRINGVIEW_LEVEL < 2
- Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(const QString &string, int *suffixIndex = nullptr);
+ Q_REQUIRED_RESULT Q_CORE_EXPORT static QVersionNumber fromString(const QString &string, int *suffixIndex = nullptr);
#endif
- Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(QLatin1String string, int *suffixIndex = nullptr);
- Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(QStringView string, int *suffixIndex = nullptr);
+ Q_REQUIRED_RESULT Q_CORE_EXPORT static QVersionNumber fromString(QLatin1String string, int *suffixIndex = nullptr);
+ Q_REQUIRED_RESULT Q_CORE_EXPORT static QVersionNumber fromString(QStringView string, int *suffixIndex = nullptr);
private:
#ifndef QT_NO_DATASTREAM
diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp
index d705bfccb5..d0d46942fb 100644
--- a/src/gui/accessible/qaccessible.cpp
+++ b/src/gui/accessible/qaccessible.cpp
@@ -162,7 +162,6 @@ Q_LOGGING_CATEGORY(lcAccessibilityCore, "qt.accessibility.core");
\value hasPopup The object opens a popup.
\value hotTracked The object's appearance is sensitive to the mouse cursor position.
\value invalid The object is no longer valid (because it has been deleted).
- \value invalidEntry Input validation current input invalid.
\value invisible The object is not visible to the user.
\value linked The object is linked to another object, e.g. a hyperlink.
\value marqueed The object displays scrolling contents, e.g. a log view.
diff --git a/src/gui/doc/snippets/code/src_gui_util_qdesktopservices.cpp b/src/gui/doc/snippets/code/src_gui_util_qdesktopservices.cpp
index 6527021dd6..5cb100c711 100644
--- a/src/gui/doc/snippets/code/src_gui_util_qdesktopservices.cpp
+++ b/src/gui/doc/snippets/code/src_gui_util_qdesktopservices.cpp
@@ -66,7 +66,7 @@ mailto:user@foo.com?subject=Test&body=Just a test
//! [1]
//! [2]
-QDesktopServices::openUrl(QUrl("file:///C:/Documents and Settings/All Users/Desktop", QUrl::TolerantMode));
+QDesktopServices::openUrl(QUrl("file:///C:/Program Files", QUrl::TolerantMode));
//! [2]
//! [3]
diff --git a/src/gui/kernel/qcursor.cpp b/src/gui/kernel/qcursor.cpp
index d6ccaff8ed..455088241c 100644
--- a/src/gui/kernel/qcursor.cpp
+++ b/src/gui/kernel/qcursor.cpp
@@ -251,7 +251,8 @@ void QCursor::setPos(QScreen *screen, int x, int y)
{
if (screen) {
if (QPlatformCursor *cursor = screen->handle()->cursor()) {
- const QPoint devicePos = QHighDpi::toNativePixels(QPoint(x, y), screen);
+ const QPoint pos(x, y);
+ const QPoint devicePos = QHighDpi::toNativePixels(pos, screen->virtualSiblingAt(pos));
// Need to check, since some X servers generate null mouse move
// events, causing looping in applications which call setPos() on
// every mouse move event.
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 87643a3a39..b39b3b4e5e 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -61,7 +61,7 @@
#include <QtCore/private/qlocking_p.h>
#include <QtCore/qdir.h>
#include <QtCore/qlibraryinfo.h>
-#include <QtCore/qnumeric.h>
+#include <QtCore/private/qnumeric_p.h>
#include <QtDebug>
#ifndef QT_NO_ACCESSIBILITY
#include "qaccessible.h"
@@ -140,7 +140,7 @@ Q_GUI_EXPORT bool qt_is_gui_used = true;
Qt::MouseButtons QGuiApplicationPrivate::mouse_buttons = Qt::NoButton;
Qt::KeyboardModifiers QGuiApplicationPrivate::modifier_buttons = Qt::NoModifier;
-QPointF QGuiApplicationPrivate::lastCursorPosition(qInf(), qInf());
+QPointF QGuiApplicationPrivate::lastCursorPosition(qt_inf(), qt_inf());
QWindow *QGuiApplicationPrivate::currentMouseWindow = nullptr;
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index c1c79a74ce..639817257e 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -458,7 +458,7 @@ void QWindowPrivate::updateSiblingPosition(SiblingPosition position)
siblings.move(currentPosition, targetPosition);
}
-inline bool QWindowPrivate::windowRecreationRequired(QScreen *newScreen) const
+bool QWindowPrivate::windowRecreationRequired(QScreen *newScreen) const
{
Q_Q(const QWindow);
const QScreen *oldScreen = q->screen();
@@ -466,7 +466,7 @@ inline bool QWindowPrivate::windowRecreationRequired(QScreen *newScreen) const
&& !(oldScreen && oldScreen->virtualSiblings().contains(newScreen));
}
-inline void QWindowPrivate::disconnectFromScreen()
+void QWindowPrivate::disconnectFromScreen()
{
if (topLevelScreen)
topLevelScreen = nullptr;
diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h
index 3a2393ea58..9dee796eab 100644
--- a/src/gui/opengl/qopengl.h
+++ b/src/gui/opengl/qopengl.h
@@ -157,8 +157,6 @@ typedef char GLchar;
# endif
#endif
-QT_BEGIN_NAMESPACE
-
// When all else fails we provide sensible fallbacks - this is needed to
// allow compilation on OS X 10.6
@@ -287,6 +285,7 @@ typedef GLintptr GLvdpauSurfaceNV;
// End of block copied from glext.h
#endif
+QT_BEGIN_NAMESPACE
// Types that aren't defined in all system's gl.h files.
typedef ptrdiff_t qopengl_GLintptr;
diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp
index 2147d9d61d..703c492a6b 100644
--- a/src/gui/painting/qbackingstore.cpp
+++ b/src/gui/painting/qbackingstore.cpp
@@ -320,32 +320,34 @@ bool QBackingStore::hasStaticContents() const
void Q_GUI_EXPORT qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset)
{
// make sure we don't detach
- uchar *mem = const_cast<uchar*>(const_cast<const QImage &>(img).bits());
+ uchar *mem = const_cast<uchar*>(img.constBits());
int lineskip = img.bytesPerLine();
int depth = img.depth() >> 3;
const QRect imageRect(0, 0, img.width(), img.height());
- const QRect r = rect & imageRect & imageRect.translated(-offset);
- const QPoint p = rect.topLeft() + offset;
-
- if (r.isEmpty())
+ const QRect sourceRect = rect.intersected(imageRect).intersected(imageRect.translated(-offset));
+ if (sourceRect.isEmpty())
return;
+ const QRect destRect = sourceRect.translated(offset);
+ Q_ASSERT_X(imageRect.contains(destRect), "qt_scrollRectInImage",
+ "The sourceRect should already account for clipping, both pre and post scroll");
+
const uchar *src;
uchar *dest;
- if (r.top() < p.y()) {
- src = mem + r.bottom() * lineskip + r.left() * depth;
- dest = mem + (p.y() + r.height() - 1) * lineskip + p.x() * depth;
+ if (sourceRect.top() < destRect.top()) {
+ src = mem + sourceRect.bottom() * lineskip + sourceRect.left() * depth;
+ dest = mem + (destRect.top() + sourceRect.height() - 1) * lineskip + destRect.left() * depth;
lineskip = -lineskip;
} else {
- src = mem + r.top() * lineskip + r.left() * depth;
- dest = mem + p.y() * lineskip + p.x() * depth;
+ src = mem + sourceRect.top() * lineskip + sourceRect.left() * depth;
+ dest = mem + destRect.top() * lineskip + destRect.left() * depth;
}
- const int w = r.width();
- int h = r.height();
+ const int w = sourceRect.width();
+ int h = sourceRect.height();
const int bytes = w * depth;
// overlapping segments?
diff --git a/src/gui/painting/qblendfunctions_p.h b/src/gui/painting/qblendfunctions_p.h
index 080da98ec4..6997d62b3c 100644
--- a/src/gui/painting/qblendfunctions_p.h
+++ b/src/gui/painting/qblendfunctions_p.h
@@ -246,25 +246,32 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
int dudx, int dvdx, int dudy, int dvdy, int u0, int v0,
Blender blender)
{
- int fromY = qMax(qRound(topY), clip.top());
- int toY = qMin(qRound(bottomY), clip.top() + clip.height());
+ qint64 fromY = qMax(qRound(topY), clip.top());
+ qint64 toY = qMin(qRound(bottomY), clip.top() + clip.height());
if (fromY >= toY)
return;
qreal leftSlope = (bottomLeft.x - topLeft.x) / (bottomLeft.y - topLeft.y);
qreal rightSlope = (bottomRight.x - topRight.x) / (bottomRight.y - topRight.y);
- int dx_l = int(leftSlope * 0x10000);
- int dx_r = int(rightSlope * 0x10000);
- int x_l = int((topLeft.x + (qreal(0.5) + fromY - topLeft.y) * leftSlope + qreal(0.5)) * 0x10000);
- int x_r = int((topRight.x + (qreal(0.5) + fromY - topRight.y) * rightSlope + qreal(0.5)) * 0x10000);
-
- int fromX, toX, x1, x2, u, v, i, ii;
+ qint64 dx_l = qint64(leftSlope * 0x10000);
+ qint64 dx_r = qint64(rightSlope * 0x10000);
+ qint64 x_l = qint64((topLeft.x + (qreal(0.5) + fromY - topLeft.y) * leftSlope + qreal(0.5)) * 0x10000);
+ qint64 x_r = qint64((topRight.x + (qreal(0.5) + fromY - topRight.y) * rightSlope + qreal(0.5)) * 0x10000);
+
+ qint64 sourceRectTop = qint64(sourceRect.top());
+ qint64 sourceRectLeft = qint64(sourceRect.left());
+ qint64 sourceRectWidth = qint64(sourceRect.width());
+ qint64 sourceRectHeight = qint64(sourceRect.height());
+ qint64 clipLeft = qint64(clip.left());
+ qint64 clipWidth = qint64(clip.width());
+
+ qint64 fromX, toX, x1, x2, u, v, i, ii;
DestT *line;
- for (int y = fromY; y < toY; ++y) {
+ for (qint64 y = fromY; y < toY; ++y) {
line = reinterpret_cast<DestT *>(reinterpret_cast<uchar *>(destPixels) + y * dbpl);
- fromX = qMax(x_l >> 16, clip.left());
- toX = qMin(x_r >> 16, clip.left() + clip.width());
+ fromX = qMax(x_l >> 16, clipLeft);
+ toX = qMin(x_r >> 16, clipLeft + clipWidth);
if (fromX < toX) {
// Because of rounding, we can get source coordinates outside the source image.
// Clamp these coordinates to the source rect to avoid segmentation fault and
@@ -275,10 +282,10 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
u = x1 * dudx + y * dudy + u0;
v = x1 * dvdx + y * dvdy + v0;
for (; x1 < toX; ++x1) {
- int uu = u >> 16;
- int vv = v >> 16;
- if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width()
- && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) {
+ qint64 uu = u >> 16;
+ qint64 vv = v >> 16;
+ if (uu >= sourceRectLeft && uu < sourceRectLeft + sourceRectWidth
+ && vv >= sourceRectTop && vv < sourceRectTop + sourceRectHeight) {
break;
}
u += dudx;
@@ -290,10 +297,10 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
u = (x2 - 1) * dudx + y * dudy + u0;
v = (x2 - 1) * dvdx + y * dvdy + v0;
for (; x2 > x1; --x2) {
- int uu = u >> 16;
- int vv = v >> 16;
- if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width()
- && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) {
+ qint64 uu = u >> 16;
+ qint64 vv = v >> 16;
+ if (uu >= sourceRectLeft && uu < sourceRectLeft + sourceRectWidth
+ && vv >= sourceRectTop && vv < sourceRectTop + sourceRectHeight) {
break;
}
u -= dudx;
@@ -308,8 +315,8 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
// Beginning of the scan line, with per-pixel checks.
i = x1 - fromX;
while (i) {
- int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1);
- int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1);
+ qint64 uu = qBound(sourceRectLeft, u >> 16, sourceRectLeft + sourceRectWidth - 1);
+ qint64 vv = qBound(sourceRectTop, v >> 16, sourceRectTop + sourceRectHeight - 1);
blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + vv * sbpl)[uu]);
u += dudx;
v += dvdx;
@@ -348,8 +355,8 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
// End of the scan line, with per-pixel checks.
i = toX - x2;
while (i) {
- int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1);
- int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1);
+ qint64 uu = qBound(sourceRectLeft, u >> 16, sourceRectLeft + sourceRectWidth - 1);
+ qint64 vv = qBound(sourceRectTop, v >> 16, sourceRectTop + sourceRectHeight - 1);
blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + vv * sbpl)[uu]);
u += dudx;
v += dvdx;
diff --git a/src/gui/painting/qcompositionfunctions.cpp b/src/gui/painting/qcompositionfunctions.cpp
index ced213e36d..aa3f148934 100644
--- a/src/gui/painting/qcompositionfunctions.cpp
+++ b/src/gui/painting/qcompositionfunctions.cpp
@@ -1045,12 +1045,12 @@ private:
static inline int mix_alpha(int da, int sa)
{
- return 255 - ((255 - sa) * (255 - da) >> 8);
+ return 255 - qt_div_255((255 - sa) * (255 - da));
}
static inline uint mix_alpha_rgb64(uint da, uint sa)
{
- return 65535 - ((65535 - sa) * (65535 - da) >> 16);
+ return 65535U - qt_div_65535((65535U - sa) * (65535U - da));
}
/*
@@ -1337,7 +1337,7 @@ static inline void comp_func_Screen_impl(uint *Q_DECL_RESTRICT dest, const uint
int da = qAlpha(d);
int sa = qAlpha(s);
-#define OP(a, b) 255 - (((255-a) * (255-b)) >> 8)
+#define OP(a, b) 255 - qt_div_255((255-a) * (255-b))
int r = OP( qRed(d), qRed(s));
int b = OP( qBlue(d), qBlue(s));
int g = OP(qGreen(d), qGreen(s));
@@ -1367,7 +1367,7 @@ static inline void comp_func_Screen_impl(QRgba64 *Q_DECL_RESTRICT dest, const QR
uint da = d.alpha();
uint sa = s.alpha();
-#define OP(a, b) 65535 - (((65535-a) * (65535-b)) >> 16)
+#define OP(a, b) 65535U - qt_div_65535((65535U-a) * (65535U-b))
uint r = OP( d.red(), s.red());
uint b = OP( d.blue(), s.blue());
uint g = OP(d.green(), s.green());
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 283923de52..38bad9a6b0 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -560,31 +560,6 @@ void QRasterPaintEngine::updateMatrix(const QTransform &matrix)
QRasterPaintEngineState *s = state();
// FALCON: get rid of this line, see drawImage call below.
s->matrix = matrix;
- QTransform::TransformationType txop = s->matrix.type();
-
- switch (txop) {
-
- case QTransform::TxNone:
- s->flags.int_xform = true;
- break;
-
- case QTransform::TxTranslate:
- s->flags.int_xform = qreal(int(s->matrix.dx())) == s->matrix.dx()
- && qreal(int(s->matrix.dy())) == s->matrix.dy();
- break;
-
- case QTransform::TxScale:
- s->flags.int_xform = qreal(int(s->matrix.dx())) == s->matrix.dx()
- && qreal(int(s->matrix.dy())) == s->matrix.dy()
- && qreal(int(s->matrix.m11())) == s->matrix.m11()
- && qreal(int(s->matrix.m22())) == s->matrix.m22();
- break;
-
- default: // shear / perspective...
- s->flags.int_xform = false;
- break;
- }
-
s->flags.tx_noshear = qt_scaleForTransform(s->matrix, &s->txscale);
ensureOutlineMapper();
@@ -617,7 +592,6 @@ QRasterPaintEngineState::QRasterPaintEngineState()
flags.bilinear = false;
flags.legacy_rounding = false;
flags.fast_text = true;
- flags.int_xform = true;
flags.tx_noshear = true;
flags.fast_images = true;
@@ -1793,7 +1767,7 @@ void QRasterPaintEngine::fill(const QVectorPath &path, const QBrush &brush)
QRectF cpRect = path.controlPointRect();
const QRectF pathDeviceRect = s->matrix.mapRect(cpRect);
// Skip paths that by conservative estimates are completely outside the paint device.
- if (!pathDeviceRect.intersects(QRectF(d->deviceRect)))
+ if (!pathDeviceRect.intersects(QRectF(d->deviceRect)) || !pathDeviceRect.isValid())
return;
ProcessSpans blend = d->getBrushFunc(pathDeviceRect, &s->brushData);
@@ -3095,10 +3069,10 @@ QRasterPaintEnginePrivate::getPenFunc(const QRectF &rect,
static QPair<int, int> visibleGlyphRange(const QRectF &clip, QFontEngine *fontEngine,
glyph_t *glyphs, QFixedPoint *positions, int numGlyphs)
{
- QFixed clipLeft = QFixed::fromReal(clip.left());
- QFixed clipRight = QFixed::fromReal(clip.right());
- QFixed clipTop = QFixed::fromReal(clip.top());
- QFixed clipBottom = QFixed::fromReal(clip.bottom());
+ QFixed clipLeft = QFixed::fromReal(clip.left() - 1);
+ QFixed clipRight = QFixed::fromReal(clip.right() + 1);
+ QFixed clipTop = QFixed::fromReal(clip.top() - 1);
+ QFixed clipBottom = QFixed::fromReal(clip.bottom() + 1);
int first = 0;
while (first < numGlyphs) {
@@ -3585,7 +3559,7 @@ QRasterPaintEngine::ClipType QRasterPaintEngine::clipType() const
\internal
Returns the bounding rect of the currently set clip.
*/
-QRect QRasterPaintEngine::clipBoundingRect() const
+QRectF QRasterPaintEngine::clipBoundingRect() const
{
Q_D(const QRasterPaintEngine);
@@ -3597,7 +3571,7 @@ QRect QRasterPaintEngine::clipBoundingRect() const
if (clip->hasRectClip)
return clip->clipRect;
- return QRect(clip->xmin, clip->ymin, clip->xmax - clip->xmin, clip->ymax - clip->ymin);
+ return QRectF(clip->xmin, clip->ymin, clip->xmax - clip->xmin, clip->ymax - clip->ymin);
}
void QRasterPaintEnginePrivate::initializeRasterizer(QSpanData *data)
diff --git a/src/gui/painting/qpaintengine_raster_p.h b/src/gui/painting/qpaintengine_raster_p.h
index 089aadc3f7..7b15292ebb 100644
--- a/src/gui/painting/qpaintengine_raster_p.h
+++ b/src/gui/painting/qpaintengine_raster_p.h
@@ -111,7 +111,6 @@ public:
uint bilinear : 1;
uint legacy_rounding : 1;
uint fast_text : 1;
- uint int_xform : 1;
uint tx_noshear : 1;
uint fast_images : 1;
};
@@ -206,7 +205,7 @@ public:
ComplexClip
};
ClipType clipType() const;
- QRect clipBoundingRect() const;
+ QRectF clipBoundingRect() const;
#ifdef Q_OS_WIN
void setDC(HDC hdc);
diff --git a/src/gui/painting/qpathclipper_p.h b/src/gui/painting/qpathclipper_p.h
index 9444a87b71..18f64c5e8c 100644
--- a/src/gui/painting/qpathclipper_p.h
+++ b/src/gui/painting/qpathclipper_p.h
@@ -156,7 +156,7 @@ public:
int vertex(Direction direction) const;
private:
- int m_next[2][2];
+ int m_next[2][2] = { { -1, -1 }, { -1, -1 } };
};
class QPathSegments
@@ -296,10 +296,6 @@ inline QPathEdge::QPathEdge(int a, int b)
, angle(0)
, invAngle(0)
{
- m_next[0][0] = -1;
- m_next[1][0] = -1;
- m_next[0][0] = -1;
- m_next[1][0] = -1;
}
inline int QPathEdge::next(Traversal traversal, Direction direction) const
diff --git a/src/gui/painting/qstroker.cpp b/src/gui/painting/qstroker.cpp
index cb5d395e80..3b6357a893 100644
--- a/src/gui/painting/qstroker.cpp
+++ b/src/gui/painting/qstroker.cpp
@@ -1182,6 +1182,7 @@ void QDashStroker::processCurrentSubpath()
// Check if the entire line should be clipped away or simplified
bool clipIt = clipping && !lineIntersectsRect(prev, e, clip_tl, clip_br);
bool skipDashing = elen * invSumLength > repetitionLimit();
+ int maxDashes = dashCount;
if (skipDashing || clipIt) {
// Cut away full dash sequences.
elen -= std::floor(elen * invSumLength) * sumLength;
@@ -1196,7 +1197,7 @@ void QDashStroker::processCurrentSubpath()
pos = estop; // move pos to next path element
done = true;
} else { // Dash is on this line
- pos = dpos + estart;
+ pos = --maxDashes > 0 ? dpos + estart : estop;
done = pos >= estop;
if (++idash >= dashCount)
idash = 0;
diff --git a/src/gui/rhi/qrhid3d11.cpp b/src/gui/rhi/qrhid3d11.cpp
index 65f0a2262b..ac6c43693b 100644
--- a/src/gui/rhi/qrhid3d11.cpp
+++ b/src/gui/rhi/qrhid3d11.cpp
@@ -131,7 +131,7 @@ QRhiD3D11::QRhiD3D11(QRhiD3D11InitParams *params, QRhiD3D11NativeHandles *import
dev = reinterpret_cast<ID3D11Device *>(importDevice->dev);
if (dev) {
ID3D11DeviceContext *ctx = reinterpret_cast<ID3D11DeviceContext *>(importDevice->context);
- if (SUCCEEDED(ctx->QueryInterface(IID_ID3D11DeviceContext1, reinterpret_cast<void **>(&context)))) {
+ if (SUCCEEDED(ctx->QueryInterface(__uuidof(ID3D11DeviceContext1), reinterpret_cast<void **>(&context)))) {
// get rid of the ref added by QueryInterface
ctx->Release();
} else {
@@ -171,7 +171,7 @@ static IDXGIFactory1 *createDXGIFactory2()
using PtrCreateDXGIFactory2 = HRESULT (WINAPI *)(UINT, REFIID, void **);
QSystemLibrary dxgilib(QStringLiteral("dxgi"));
if (auto createDXGIFactory2 = reinterpret_cast<PtrCreateDXGIFactory2>(dxgilib.resolve("CreateDXGIFactory2"))) {
- const HRESULT hr = createDXGIFactory2(0, IID_IDXGIFactory2, reinterpret_cast<void **>(&result));
+ const HRESULT hr = createDXGIFactory2(0, __uuidof(IDXGIFactory2), reinterpret_cast<void **>(&result));
if (FAILED(hr)) {
qWarning("CreateDXGIFactory2() failed to create DXGI factory: %s", qPrintable(comErrorMessage(hr)));
result = nullptr;
@@ -186,7 +186,7 @@ static IDXGIFactory1 *createDXGIFactory2()
static IDXGIFactory1 *createDXGIFactory1()
{
IDXGIFactory1 *result = nullptr;
- const HRESULT hr = CreateDXGIFactory1(IID_IDXGIFactory1, reinterpret_cast<void **>(&result));
+ const HRESULT hr = CreateDXGIFactory1(__uuidof(IDXGIFactory1), reinterpret_cast<void **>(&result));
if (FAILED(hr)) {
qWarning("CreateDXGIFactory1() failed to create DXGI factory: %s", qPrintable(comErrorMessage(hr)));
result = nullptr;
@@ -269,7 +269,7 @@ bool QRhiD3D11::create(QRhi::Flags flags)
qWarning("Failed to create D3D11 device and context: %s", qPrintable(comErrorMessage(hr)));
return false;
}
- if (SUCCEEDED(ctx->QueryInterface(IID_ID3D11DeviceContext1, reinterpret_cast<void **>(&context)))) {
+ if (SUCCEEDED(ctx->QueryInterface(__uuidof(ID3D11DeviceContext1), reinterpret_cast<void **>(&context)))) {
ctx->Release();
} else {
qWarning("ID3D11DeviceContext1 not supported");
@@ -280,7 +280,7 @@ bool QRhiD3D11::create(QRhi::Flags flags)
featureLevel = dev->GetFeatureLevel();
}
- if (FAILED(context->QueryInterface(IID_ID3DUserDefinedAnnotation, reinterpret_cast<void **>(&annotations))))
+ if (FAILED(context->QueryInterface(__uuidof(ID3DUserDefinedAnnotation), reinterpret_cast<void **>(&annotations))))
annotations = nullptr;
deviceLost = false;
@@ -336,7 +336,7 @@ void QRhiD3D11::reportLiveObjects(ID3D11Device *device)
{
// this works only when params.enableDebugLayer was true
ID3D11Debug *debug;
- if (SUCCEEDED(device->QueryInterface(IID_ID3D11Debug, reinterpret_cast<void **>(&debug)))) {
+ if (SUCCEEDED(device->QueryInterface(__uuidof(ID3D11Debug), reinterpret_cast<void **>(&debug)))) {
debug->ReportLiveDeviceObjects(D3D11_RLDO_DETAIL);
debug->Release();
}
@@ -4197,7 +4197,7 @@ bool QD3D11SwapChain::buildOrResize()
// swapchain."
// So just query index 0 once (per resize) and be done with it.
- HRESULT hr = swapChain->GetBuffer(0, IID_ID3D11Texture2D, reinterpret_cast<void **>(&backBufferTex));
+ HRESULT hr = swapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), reinterpret_cast<void **>(&backBufferTex));
if (FAILED(hr)) {
qWarning("Failed to query swapchain backbuffer: %s", qPrintable(comErrorMessage(hr)));
return false;
diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
index f3e6ea2100..72267e9380 100644
--- a/src/gui/text/qtextdocumentlayout.cpp
+++ b/src/gui/text/qtextdocumentlayout.cpp
@@ -2123,7 +2123,7 @@ void QTextDocumentLayoutPrivate::drawListItem(const QPointF &offset, QPainter *p
{
Q_Q(const QTextDocumentLayout);
const QTextBlockFormat blockFormat = bl.blockFormat();
- const QTextCharFormat charFormat = QTextCursor(bl).charFormat();
+ const QTextCharFormat charFormat = bl.charFormat();
QFont font(charFormat.font());
if (q->paintDevice())
font = QFont(font, q->paintDevice());
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index ce4abac472..6336fadf74 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -1565,6 +1565,12 @@ void QTextEngine::shapeText(int item) const
// Overwrite with 0 token to indicate failure
QGlyphLayout g = availableGlyphs(&si);
g.glyphs[0] = 0;
+ g.attributes[0].clusterStart = true;
+
+ ushort *log_clusters = logClusters(&si);
+ for (int i = 0; i < itemLength; ++i)
+ log_clusters[i] = 0;
+
return;
}
diff --git a/src/gui/text/qtexthtmlparser.cpp b/src/gui/text/qtexthtmlparser.cpp
index 124c530cb5..5458e646c5 100644
--- a/src/gui/text/qtexthtmlparser.cpp
+++ b/src/gui/text/qtexthtmlparser.cpp
@@ -784,8 +784,8 @@ void QTextHtmlParser::parseCloseTag()
void QTextHtmlParser::parseExclamationTag()
{
++pos;
- if (hasPrefix(QLatin1Char('-'),1) && hasPrefix(QLatin1Char('-'),2)) {
- pos += 3;
+ if (hasPrefix(QLatin1Char('-')) && hasPrefix(QLatin1Char('-'), 1)) {
+ pos += 2;
// eat comments
int end = txt.indexOf(QLatin1String("-->"), pos);
pos = (end >= 0 ? end + 3 : len);
@@ -880,7 +880,7 @@ QString QTextHtmlParser::parseWord()
while (pos < len) {
QChar c = txt.at(pos++);
if (c == QLatin1Char('>')
- || (c == QLatin1Char('/') && hasPrefix(QLatin1Char('>'), 1))
+ || (c == QLatin1Char('/') && hasPrefix(QLatin1Char('>')))
|| c == QLatin1Char('<')
|| c == QLatin1Char('=')
|| c.isSpace()) {
diff --git a/src/gui/text/qtexthtmlparser_p.h b/src/gui/text/qtexthtmlparser_p.h
index 31f558709f..e5622afe9d 100644
--- a/src/gui/text/qtexthtmlparser_p.h
+++ b/src/gui/text/qtexthtmlparser_p.h
@@ -323,7 +323,9 @@ protected:
void applyAttributes(const QStringList &attributes);
void eatSpace();
inline bool hasPrefix(QChar c, int lookahead = 0) const
- {return pos + lookahead < len && txt.at(pos) == c; }
+ {
+ return pos + lookahead < len && txt.at(pos + lookahead) == c;
+ }
int margin(int i, int mar) const;
bool nodeIsChildOf(int i, QTextHTMLElements id) const;
diff --git a/src/gui/text/qtextmarkdownimporter.cpp b/src/gui/text/qtextmarkdownimporter.cpp
index e0d16d2d2a..cff4f12b5d 100644
--- a/src/gui/text/qtextmarkdownimporter.cpp
+++ b/src/gui/text/qtextmarkdownimporter.cpp
@@ -418,6 +418,7 @@ int QTextMarkdownImporter::cbEnterSpan(int spanType, void *det)
}
case MD_SPAN_CODE:
charFmt.setFont(m_monoFont);
+ charFmt.setFontFixedPitch(true);
break;
case MD_SPAN_DEL:
charFmt.setFontStrikeOut(true);
diff --git a/src/gui/text/qtextmarkdownwriter.cpp b/src/gui/text/qtextmarkdownwriter.cpp
index ae63fcb4dd..3b4d794c1a 100644
--- a/src/gui/text/qtextmarkdownwriter.cpp
+++ b/src/gui/text/qtextmarkdownwriter.cpp
@@ -531,7 +531,7 @@ int QTextMarkdownWriter::writeBlock(const QTextBlock &block, bool wrap, bool ign
col += s.length();
} else {
QFontInfo fontInfo(fmt.font());
- bool monoFrag = fontInfo.fixedPitch();
+ bool monoFrag = fontInfo.fixedPitch() || fmt.fontFixedPitch();
QString markers;
if (!ignoreFormat) {
if (monoFrag != mono && !m_indentedCodeBlock && !m_fencedCodeBlock) {
diff --git a/src/gui/text/qzip.cpp b/src/gui/text/qzip.cpp
index 80c0f122e8..feab5b85b9 100644
--- a/src/gui/text/qzip.cpp
+++ b/src/gui/text/qzip.cpp
@@ -1024,13 +1024,33 @@ bool QZipReader::extractAll(const QString &destinationDir) const
// create directories first
const QVector<FileInfo> allFiles = fileInfoList();
+ bool foundDirs = false;
+ bool hasDirs = false;
for (const FileInfo &fi : allFiles) {
const QString absPath = destinationDir + QDir::separator() + fi.filePath;
if (fi.isDir) {
+ foundDirs = true;
if (!baseDir.mkpath(fi.filePath))
return false;
if (!QFile::setPermissions(absPath, fi.permissions))
return false;
+ } else if (!hasDirs && fi.filePath.contains(u"/")) {
+ // filePath does not have leading or trailing '/', so if we find
+ // one, than the file path contains directories.
+ hasDirs = true;
+ }
+ }
+
+ // Some zip archives can be broken in the sense that they do not report
+ // separate entries for directories, only for files. In this case we
+ // need to recreate directory structure based on the file paths.
+ if (hasDirs && !foundDirs) {
+ for (const FileInfo &fi : allFiles) {
+ const auto dirPath = fi.filePath.left(fi.filePath.lastIndexOf(u"/"));
+ if (!baseDir.mkpath(dirPath))
+ return false;
+ // We will leave the directory permissions default in this case,
+ // because setting dir permissions based on file is incorrect
}
}
diff --git a/src/gui/util/qdesktopservices.cpp b/src/gui/util/qdesktopservices.cpp
index fbb63a9408..4446b4297a 100644
--- a/src/gui/util/qdesktopservices.cpp
+++ b/src/gui/util/qdesktopservices.cpp
@@ -54,6 +54,8 @@
#include <qpa/qplatformintegration.h>
#include <qdir.h>
+#include <QtCore/private/qlocking_p.h>
+
QT_BEGIN_NAMESPACE
class QOpenUrlHandlerRegistry : public QObject
@@ -72,24 +74,33 @@ public:
typedef QHash<QString, Handler> HandlerHash;
HandlerHash handlers;
+#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
public Q_SLOTS:
void handlerDestroyed(QObject *handler);
+#endif
};
Q_GLOBAL_STATIC(QOpenUrlHandlerRegistry, handlerRegistry)
+#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
void QOpenUrlHandlerRegistry::handlerDestroyed(QObject *handler)
{
+ const auto lock = qt_scoped_lock(mutex);
HandlerHash::Iterator it = handlers.begin();
while (it != handlers.end()) {
if (it->receiver == handler) {
it = handlers.erase(it);
+ qWarning("Please call QDesktopServices::unsetUrlHandler() before destroying a "
+ "registered URL handler object.\n"
+ "Support for destroying a registered URL handler object is deprecated, "
+ "and will be removed in Qt 6.6.");
} else {
++it;
}
}
}
+#endif
/*!
\class QDesktopServices
@@ -279,6 +290,10 @@ bool QDesktopServices::openUrl(const QUrl &url)
Note that the handler will always be called from within the same thread that
calls QDesktopServices::openUrl().
+ You must call unsetUrlHandler() before destroying the handler object, so
+ the destruction of the handler object does not overlap with concurrent
+ invocations of openUrl() using it.
+
\sa openUrl(), unsetUrlHandler()
*/
void QDesktopServices::setUrlHandler(const QString &scheme, QObject *receiver, const char *method)
@@ -293,13 +308,20 @@ void QDesktopServices::setUrlHandler(const QString &scheme, QObject *receiver, c
h.receiver = receiver;
h.name = method;
registry->handlers.insert(scheme.toLower(), h);
+#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
QObject::connect(receiver, SIGNAL(destroyed(QObject*)),
- registry, SLOT(handlerDestroyed(QObject*)));
+ registry, SLOT(handlerDestroyed(QObject*)),
+ Qt::DirectConnection);
+#endif
}
/*!
Removes a previously set URL handler for the specified \a scheme.
+ Call this function before the handler object that was registered for \a scheme
+ is destroyed, to prevent concurrent openUrl() calls from continuing to call
+ the destroyed handler object.
+
\sa setUrlHandler()
*/
void QDesktopServices::unsetUrlHandler(const QString &scheme)
diff --git a/src/gui/util/qpkmhandler.cpp b/src/gui/util/qpkmhandler.cpp
index e0c3b75efe..3414f9d8ba 100644
--- a/src/gui/util/qpkmhandler.cpp
+++ b/src/gui/util/qpkmhandler.cpp
@@ -57,7 +57,7 @@ struct PkmType
quint32 bytesPerBlock;
};
-static PkmType typeMap[5] = {
+static constexpr PkmType typeMap[5] = {
{ 0x8D64, 8 }, // GL_ETC1_RGB8_OES
{ 0x9274, 8 }, // GL_COMPRESSED_RGB8_ETC2
{ 0, 0 }, // unused (obsolete)
diff --git a/src/gui/vulkan/qvulkaninstance.cpp b/src/gui/vulkan/qvulkaninstance.cpp
index 555dee3a9c..19a88074af 100644
--- a/src/gui/vulkan/qvulkaninstance.cpp
+++ b/src/gui/vulkan/qvulkaninstance.cpp
@@ -531,6 +531,13 @@ void QVulkanInstance::setExtensions(const QByteArrayList &extensions)
\note This function can only be called before create() and has no effect if
called afterwards.
+
+ \note Be aware that Vulkan 1.1 changes the behavior with regards to the
+ Vulkan API version field. In Vulkan 1.0 specifying an unsupported \a
+ vulkanVersion led to failing create() with \c VK_ERROR_INCOMPATIBLE_DRIVER,
+ as was mandated by the specification. Starting with Vulkan 1.1, the
+ specification disallows this, the driver must accept any version without
+ failing the instance creation.
*/
void QVulkanInstance::setApiVersion(const QVersionNumber &vulkanVersion)
{
diff --git a/src/gui/vulkan/qvulkanwindow.cpp b/src/gui/vulkan/qvulkanwindow.cpp
index cee1f2540f..14944d47f8 100644
--- a/src/gui/vulkan/qvulkanwindow.cpp
+++ b/src/gui/vulkan/qvulkanwindow.cpp
@@ -195,6 +195,23 @@ Q_LOGGING_CATEGORY(lcGuiVk, "qt.vulkan")
\note QVulkanWindow does not expose device layers since this functionality
has been deprecated since version 1.0.13 of the Vulkan API.
+ \section1 Layers, device features, and extensions
+
+ To enable instance layers, call QVulkanInstance::setLayers() before creating
+ the QVulkanInstance. To query what instance layer are available, call
+ QVulkanInstance::supportedLayers().
+
+ To enable device extensions, call setDeviceExtensions() early on when setting
+ up the QVulkanWindow. To query what device extensions are available, call
+ supportedDeviceExtensions().
+
+ Specifying an unsupported layer or extension is handled gracefully: this will
+ not fail instance or device creation, but the layer or extension request is
+ rather ignored.
+
+ When it comes to device features, QVulkanWindow enables all Vulkan 1.0
+ features that are reported as supported from vkGetPhysicalDeviceFeatures().
+
\sa QVulkanInstance, QWindow
*/
@@ -712,6 +729,12 @@ void QVulkanWindowPrivate::init()
devInfo.enabledExtensionCount = devExts.count();
devInfo.ppEnabledExtensionNames = devExts.constData();
+ // Enable all 1.0 features.
+ VkPhysicalDeviceFeatures features;
+ memset(&features, 0, sizeof(features));
+ f->vkGetPhysicalDeviceFeatures(physDev, &features);
+ devInfo.pEnabledFeatures = &features;
+
// Device layers are not supported by QVulkanWindow since that's an already deprecated
// API. However, have a workaround for systems with older API and layers (f.ex. L4T
// 24.2 for the Jetson TX1 provides API 1.0.13 and crashes when the validation layer
@@ -2020,7 +2043,7 @@ void QVulkanWindowPrivate::endFrame()
// order to circumvent driver frame callbacks
inst->presentAboutToBeQueued(q);
- err = vkQueuePresentKHR(gfxQueue, &presInfo);
+ err = vkQueuePresentKHR(presQueue, &presInfo);
if (err != VK_SUCCESS) {
if (err == VK_ERROR_OUT_OF_DATE_KHR) {
recreateSwapChain();
diff --git a/src/network/access/qhttp2configuration.cpp b/src/network/access/qhttp2configuration.cpp
index 408f141e77..e4126905b2 100644
--- a/src/network/access/qhttp2configuration.cpp
+++ b/src/network/access/qhttp2configuration.cpp
@@ -159,7 +159,7 @@ QHttp2Configuration::~QHttp2Configuration()
/*!
If \a enable is \c true, a remote server can potentially
- use server push to send reponses in advance.
+ use server push to send responses in advance.
\sa serverPushEnabled
*/
diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp
index ddd661cc50..39dd460881 100644
--- a/src/network/access/qhttp2protocolhandler.cpp
+++ b/src/network/access/qhttp2protocolhandler.cpp
@@ -1135,8 +1135,6 @@ void QHttp2ProtocolHandler::updateStream(Stream &stream, const HPack::HttpHeader
// moment and we are probably not done yet. So we extract url and set it
// here, if needed.
int statusCode = 0;
- QUrl redirectUrl;
-
for (const auto &pair : headers) {
const auto &name = pair.name;
auto value = pair.value;
@@ -1159,8 +1157,6 @@ void QHttp2ProtocolHandler::updateStream(Stream &stream, const HPack::HttpHeader
if (ok)
httpReply->setContentLength(length);
} else {
- if (name == "location")
- redirectUrl = QUrl::fromEncoded(value);
QByteArray binder(", ");
if (name == "set-cookie")
binder = "\n";
@@ -1225,8 +1221,20 @@ void QHttp2ProtocolHandler::updateStream(Stream &stream, const HPack::HttpHeader
}
}
- if (QHttpNetworkReply::isHttpRedirect(statusCode) && redirectUrl.isValid())
- httpReply->setRedirectUrl(redirectUrl);
+ if (QHttpNetworkReply::isHttpRedirect(statusCode) && httpRequest.isFollowRedirects()) {
+ QHttpNetworkConnectionPrivate::ParseRedirectResult result =
+ m_connection->d_func()->parseRedirectResponse(httpReply);
+ if (result.errorCode != QNetworkReply::NoError) {
+ auto errorString = m_connection->d_func()->errorDetail(result.errorCode, m_socket);
+ finishStreamWithError(stream, result.errorCode, errorString);
+ sendRST_STREAM(stream.streamID, INTERNAL_ERROR);
+ markAsReset(stream.streamID);
+ return;
+ }
+
+ if (result.redirectUrl.isValid())
+ httpReply->setRedirectUrl(result.redirectUrl);
+ }
if (httpReplyPrivate->isCompressed() && httpRequest.d->autoDecompress)
httpReplyPrivate->removeAutoDecompressHeader();
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index 1bef9157e6..db4dd591e3 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -462,7 +462,12 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
else
channels[i].authMethod = priv->method;
- if (priv->phase == QAuthenticatorPrivate::Done) {
+ if (priv->phase == QAuthenticatorPrivate::Done ||
+ (priv->phase == QAuthenticatorPrivate::Start
+ && priv->method == QAuthenticatorPrivate::Ntlm)) {
+ if (priv->phase == QAuthenticatorPrivate::Start)
+ priv->phase = QAuthenticatorPrivate::Phase1;
+
pauseConnection();
if (!isProxy) {
if (channels[i].authenticationCredentialsSent) {
@@ -528,10 +533,23 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
return false;
}
-QUrl QHttpNetworkConnectionPrivate::parseRedirectResponse(QAbstractSocket *socket, QHttpNetworkReply *reply)
+// Used by the HTTP1 code-path
+QUrl QHttpNetworkConnectionPrivate::parseRedirectResponse(QAbstractSocket *socket,
+ QHttpNetworkReply *reply)
+{
+ ParseRedirectResult result = parseRedirectResponse(reply);
+ if (result.errorCode != QNetworkReply::NoError) {
+ emitReplyError(socket, reply, result.errorCode);
+ return {};
+ }
+ return std::move(result.redirectUrl);
+}
+
+QHttpNetworkConnectionPrivate::ParseRedirectResult
+QHttpNetworkConnectionPrivate::parseRedirectResponse(QHttpNetworkReply *reply)
{
if (!reply->request().isFollowRedirects())
- return QUrl();
+ return {{}, QNetworkReply::NoError};
QUrl redirectUrl;
const QList<QPair<QByteArray, QByteArray> > fields = reply->header();
@@ -542,17 +560,13 @@ QUrl QHttpNetworkConnectionPrivate::parseRedirectResponse(QAbstractSocket *socke
}
}
- // If the location url is invalid/empty, we emit ProtocolUnknownError
- if (!redirectUrl.isValid()) {
- emitReplyError(socket, reply, QNetworkReply::ProtocolUnknownError);
- return QUrl();
- }
+ // If the location url is invalid/empty, we return ProtocolUnknownError
+ if (!redirectUrl.isValid())
+ return {{}, QNetworkReply::ProtocolUnknownError};
// Check if we have exceeded max redirects allowed
- if (reply->request().redirectCount() <= 0) {
- emitReplyError(socket, reply, QNetworkReply::TooManyRedirectsError);
- return QUrl();
- }
+ if (reply->request().redirectCount() <= 0)
+ return {{}, QNetworkReply::TooManyRedirectsError};
// Resolve the URL if it's relative
if (redirectUrl.isRelative())
@@ -573,8 +587,7 @@ QUrl QHttpNetworkConnectionPrivate::parseRedirectResponse(QAbstractSocket *socke
if (priorUrl.host() != redirectUrl.host()
|| priorUrl.scheme() != redirectUrl.scheme()
|| priorUrl.port() != redirectUrl.port()) {
- emitReplyError(socket, reply, QNetworkReply::InsecureRedirectError);
- return QUrl();
+ return {{}, QNetworkReply::InsecureRedirectError};
}
break;
case QNetworkRequest::UserVerifiedRedirectPolicy:
@@ -583,10 +596,9 @@ QUrl QHttpNetworkConnectionPrivate::parseRedirectResponse(QAbstractSocket *socke
Q_ASSERT(!"Unexpected redirect policy");
}
} else {
- emitReplyError(socket, reply, QNetworkReply::ProtocolUnknownError);
- return QUrl();
+ return {{}, QNetworkReply::ProtocolUnknownError};
}
- return redirectUrl;
+ return {std::move(redirectUrl), QNetworkReply::NoError};
}
void QHttpNetworkConnectionPrivate::createAuthorization(QAbstractSocket *socket, QHttpNetworkRequest &request)
@@ -1446,7 +1458,7 @@ void QHttpNetworkConnection::setCacheProxy(const QNetworkProxy &networkProxy)
d->networkProxy = networkProxy;
// update the authenticator
if (!d->networkProxy.user().isEmpty()) {
- for (int i = 0; i < d->activeChannelCount; ++i) {
+ for (int i = 0; i < d->channelCount; ++i) {
d->channels[i].proxyAuthenticator.setUser(d->networkProxy.user());
d->channels[i].proxyAuthenticator.setPassword(d->networkProxy.password());
}
@@ -1462,7 +1474,7 @@ QNetworkProxy QHttpNetworkConnection::cacheProxy() const
void QHttpNetworkConnection::setTransparentProxy(const QNetworkProxy &networkProxy)
{
Q_D(QHttpNetworkConnection);
- for (int i = 0; i < d->activeChannelCount; ++i)
+ for (int i = 0; i < d->channelCount; ++i)
d->channels[i].setProxy(networkProxy);
}
diff --git a/src/network/access/qhttpnetworkconnection_p.h b/src/network/access/qhttpnetworkconnection_p.h
index 845b55bc5d..5fed62fc97 100644
--- a/src/network/access/qhttpnetworkconnection_p.h
+++ b/src/network/access/qhttpnetworkconnection_p.h
@@ -273,6 +273,12 @@ public:
void emitReplyError(QAbstractSocket *socket, QHttpNetworkReply *reply, QNetworkReply::NetworkError errorCode);
bool handleAuthenticateChallenge(QAbstractSocket *socket, QHttpNetworkReply *reply, bool isProxy, bool &resend);
+ struct ParseRedirectResult {
+ QUrl redirectUrl;
+ QNetworkReply::NetworkError errorCode;
+ };
+ ParseRedirectResult parseRedirectResponse(QHttpNetworkReply *reply);
+ // Used by the HTTP1 code-path
QUrl parseRedirectResponse(QAbstractSocket *socket, QHttpNetworkReply *reply);
#ifndef QT_NO_NETWORKPROXY
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index 517c460825..a10fe9e3fe 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -755,7 +755,7 @@ bool QNetworkAccessManager::isStrictTransportSecurityEnabled() const
store is enabled, these policies will be preserved in the store. In case both
cache and store contain the same known hosts, policies from cache are considered
to be more up-to-date (and thus will overwrite the previous values in the store).
- If this behavior is undesired, enable HSTS store before enabling Strict Tranport
+ If this behavior is undesired, enable HSTS store before enabling Strict Transport
Security. By default, the persistent store of HSTS policies is disabled.
\sa isStrictTransportSecurityStoreEnabled(), setStrictTransportSecurityEnabled(),
diff --git a/src/network/access/qnetworkreplywasmimpl.cpp b/src/network/access/qnetworkreplywasmimpl.cpp
index 2ee57a0860..7f23390a8d 100644
--- a/src/network/access/qnetworkreplywasmimpl.cpp
+++ b/src/network/access/qnetworkreplywasmimpl.cpp
@@ -234,10 +234,13 @@ void QNetworkReplyWasmImplPrivate::doSendRequest()
}
}
+ QByteArray userName, password;
// username & password
if (!request.url().userInfo().isEmpty()) {
- attr.userName = request.url().userName().toUtf8();
- attr.password = request.url().password().toUtf8();
+ userName = request.url().userName().toUtf8();
+ password = request.url().password().toUtf8();
+ attr.userName = userName.constData();
+ attr.password = password.constData();
}
attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY;
@@ -265,7 +268,8 @@ void QNetworkReplyWasmImplPrivate::doSendRequest()
attr.userData = reinterpret_cast<void *>(this);
QString dPath = QStringLiteral("/home/web_user/") + request.url().fileName();
- attr.destinationPath = dPath.toUtf8();
+ QByteArray destinationPath = dPath.toUtf8();
+ attr.destinationPath = destinationPath.constData();
m_fetch = emscripten_fetch(&attr, request.url().toString().toUtf8());
}
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index 03ed2a455d..0235790efe 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
@@ -423,6 +423,11 @@ QT_BEGIN_NAMESPACE
for example, to ask the user whether to
accept the redirect, or to decide
based on some app-specific configuration.
+
+ \note When Qt handles redirects it will, for legacy and compatibility
+ reasons, issue the redirected request using GET when the server returns
+ a 301 or 302 response, regardless of the original method used, unless it was
+ HEAD.
*/
/*!
@@ -1036,9 +1041,10 @@ static QByteArray headerValue(QNetworkRequest::KnownHeaders header, const QVaria
case QNetworkRequest::LastModifiedHeader:
case QNetworkRequest::IfModifiedSinceHeader:
switch (value.userType()) {
+ // Generate RFC 1123/822 dates:
case QMetaType::QDate:
+ return QNetworkHeadersPrivate::toHttpDate(value.toDate().startOfDay(Qt::UTC));
case QMetaType::QDateTime:
- // generate RFC 1123/822 dates:
return QNetworkHeadersPrivate::toHttpDate(value.toDateTime());
default:
@@ -1482,8 +1488,7 @@ QDateTime QNetworkHeadersPrivate::fromHttpDate(const QByteArray &value)
QByteArray QNetworkHeadersPrivate::toHttpDate(const QDateTime &dt)
{
- return QLocale::c().toString(dt, u"ddd, dd MMM yyyy hh:mm:ss 'GMT'")
- .toLatin1();
+ return QLocale::c().toString(dt.toUTC(), u"ddd, dd MMM yyyy hh:mm:ss 'GMT'").toLatin1();
}
QT_END_NAMESPACE
diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
index d9fe7bc47b..ccd04b294a 100644
--- a/src/network/kernel/qauthenticator.cpp
+++ b/src/network/kernel/qauthenticator.cpp
@@ -50,6 +50,7 @@
#include <qstring.h>
#include <qdatetime.h>
#include <qrandom.h>
+#include "private/qsystemlibrary_p.h"
#ifdef Q_OS_WIN
#include <qmutex.h>
@@ -1563,7 +1564,7 @@ static bool q_SSPI_library_load()
// Initialize security interface
if (pSecurityFunctionTable == nullptr) {
- securityDLLHandle = LoadLibrary(L"secur32.dll");
+ securityDLLHandle = QSystemLibrary::load(L"secur32");
if (securityDLLHandle != nullptr) {
INIT_SECURITY_INTERFACE pInitSecurityInterface =
reinterpret_cast<INIT_SECURITY_INTERFACE>(
diff --git a/src/network/kernel/qauthenticator_p.h b/src/network/kernel/qauthenticator_p.h
index 1813634ee0..b234925a0e 100644
--- a/src/network/kernel/qauthenticator_p.h
+++ b/src/network/kernel/qauthenticator_p.h
@@ -91,6 +91,7 @@ public:
enum Phase {
Start,
+ Phase1,
Phase2,
Done,
Invalid
diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp
index 9b0a2ee669..73679c9ef1 100644
--- a/src/network/kernel/qhostinfo_unix.cpp
+++ b/src/network/kernel/qhostinfo_unix.cpp
@@ -122,7 +122,6 @@ static QFunctionPointer resolveSymbol(QLibrary &lib, const char *sym)
LibResolv::LibResolv()
{
- QLibrary lib;
#ifdef LIBRESOLV_SO
lib.setFileName(QStringLiteral(LIBRESOLV_SO));
if (!lib.load())
diff --git a/src/network/kernel/qnetworkinterface.cpp b/src/network/kernel/qnetworkinterface.cpp
index 6e87a783a8..c89d7f898c 100644
--- a/src/network/kernel/qnetworkinterface.cpp
+++ b/src/network/kernel/qnetworkinterface.cpp
@@ -489,7 +489,7 @@ void QNetworkAddressEntry::clearAddressLifetime()
\since 5.11
Returns \c true if this address is permanent on this interface, \c false if
- it's temporary. A permenant address is one which has no expiration time and
+ it's temporary. A permanent address is one which has no expiration time and
is often static (manually configured).
If this information could not be determined, this function returns \c true.
diff --git a/src/network/kernel/qnetworkinterface_unix.cpp b/src/network/kernel/qnetworkinterface_unix.cpp
index 4c57bff3bc..e7889b6249 100644
--- a/src/network/kernel/qnetworkinterface_unix.cpp
+++ b/src/network/kernel/qnetworkinterface_unix.cpp
@@ -113,6 +113,7 @@ uint QNetworkInterfaceManager::interfaceIndexFromName(const QString &name)
qt_safe_close(socket);
return id;
#else
+ Q_UNUSED(name);
return 0;
#endif
}
@@ -232,6 +233,7 @@ static QNetworkInterfacePrivate *findInterface(int socket, QList<QNetworkInterfa
break;
}
#else
+ Q_UNUSED(socket);
// Search by name
QList<QNetworkInterfacePrivate *>::Iterator if_it = interfaces.begin();
for ( ; if_it != interfaces.end(); ++if_it)
diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index 3cabdd0bd5..f2864bdf93 100644
--- a/src/network/kernel/qnetworkproxy.cpp
+++ b/src/network/kernel/qnetworkproxy.cpp
@@ -189,7 +189,7 @@
QNetworkProxy sets different capabilities by default when the
object is created (see QNetworkProxy::ProxyType for a list of the
- defaults). However, it is possible to change the capabitilies
+ defaults). However, it is possible to change the capabilities
after the object has been created with setCapabilities().
The capabilities that QNetworkProxy supports are:
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index e7fc17142e..59f8253c1a 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Copyright (C) 2016 Intel Corporation.
** Contact: https://www.qt.io/licensing/
**
@@ -437,7 +437,7 @@
\value DontShareAddress Bind the address and port exclusively, so that
no other services are allowed to rebind. By passing this option to
- QAbstractSocket::bind(), you are guaranteed that on successs, your service
+ QAbstractSocket::bind(), you are guaranteed that on success, your service
is the only one that listens to the address and port. No services are
allowed to rebind, even if they pass ReuseAddressHint. This option
provides more security than ShareAddress, but on certain operating
@@ -1404,12 +1404,29 @@ 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);
+ bool read = socketEngine->isReadNotificationEnabled();
+ bool write = socketEngine->isWriteNotificationEnabled();
+ bool except = socketEngine->isExceptionNotificationEnabled();
+
+#ifdef QABSTRACTSOCKET_DEBUG
+ qDebug() << socketEngine->socketDescriptor()
+ << "pause notifiers, storing 'true' states, currently read:" << read
+ << "write:" << write << "except:" << except;
+#endif
+ // We do this if-check to avoid accidentally overwriting any previously stored state
+ // It will reset to false once the socket is re-enabled.
+ if (read) {
+ socket->d_func()->prePauseReadSocketNotifierState = true;
+ socketEngine->setReadNotificationEnabled(false);
+ }
+ if (write) {
+ socket->d_func()->prePauseWriteSocketNotifierState = true;
+ socketEngine->setWriteNotificationEnabled(false);
+ }
+ if (except) {
+ socket->d_func()->prePauseExceptionSocketNotifierState = true;
+ socketEngine->setExceptionNotificationEnabled(false);
+ }
}
void QAbstractSocketPrivate::resumeSocketNotifiers(QAbstractSocket *socket)
@@ -1417,9 +1434,19 @@ 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);
+ QAbstractSocketPrivate *priv = socket->d_func();
+#ifdef QABSTRACTSOCKET_DEBUG
+ qDebug() << socketEngine->socketDescriptor()
+ << "Maybe resume notifiers, read:" << priv->prePauseReadSocketNotifierState
+ << "write:" << priv->prePauseWriteSocketNotifierState
+ << "exception:" << priv->prePauseExceptionSocketNotifierState;
+#endif
+ if (qExchange(priv->prePauseReadSocketNotifierState, false))
+ socketEngine->setReadNotificationEnabled(true);
+ if (qExchange(priv->prePauseWriteSocketNotifierState, false))
+ socketEngine->setWriteNotificationEnabled(true);
+ if (qExchange(priv->prePauseExceptionSocketNotifierState, false))
+ socketEngine->setExceptionNotificationEnabled(true);
}
QAbstractSocketEngine* QAbstractSocketPrivate::getSocketEngine(QAbstractSocket *socket)
diff --git a/src/network/socket/qabstractsocket_p.h b/src/network/socket/qabstractsocket_p.h
index 5aa69d747e..a20e0aacad 100644
--- a/src/network/socket/qabstractsocket_p.h
+++ b/src/network/socket/qabstractsocket_p.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
@@ -162,9 +162,9 @@ public:
QAbstractSocket::NetworkLayerProtocol preferredNetworkLayerProtocol;
- bool prePauseReadSocketNotifierState;
- bool prePauseWriteSocketNotifierState;
- bool prePauseExceptionSocketNotifierState;
+ bool prePauseReadSocketNotifierState = false;
+ bool prePauseWriteSocketNotifierState = false;
+ bool prePauseExceptionSocketNotifierState = false;
static void pauseSocketNotifiers(QAbstractSocket*);
static void resumeSocketNotifiers(QAbstractSocket*);
static QAbstractSocketEngine* getSocketEngine(QAbstractSocket*);
diff --git a/src/network/socket/qlocalserver.cpp b/src/network/socket/qlocalserver.cpp
index 5ca2db70b9..6190e27875 100644
--- a/src/network/socket/qlocalserver.cpp
+++ b/src/network/socket/qlocalserver.cpp
@@ -147,7 +147,7 @@ QLocalServer::~QLocalServer()
In some cases, such as with Unix domain sockets on Linux, the
access to the socket will be determined by file system permissions,
and are created based on the umask. Setting the access flags will
- overide this and will restrict or permit access as specified.
+ override this and will restrict or permit access as specified.
Other Unix-based operating systems, such as \macos, do not
honor file permissions for Unix domain sockets and by default
diff --git a/src/network/socket/qlocalsocket.cpp b/src/network/socket/qlocalsocket.cpp
index 8d93e1fa61..23f5af472b 100644
--- a/src/network/socket/qlocalsocket.cpp
+++ b/src/network/socket/qlocalsocket.cpp
@@ -90,7 +90,7 @@ QT_BEGIN_NAMESPACE
Note that unlike in most other QIODevice subclasses, open() may not open the device directly.
The function return false if the socket was already connected or if the server to connect
to was not defined and true in any other case. The connected() or errorOccurred() signals will be
- emitted once the device is actualy open (or the connection failed).
+ emitted once the device is actually open (or the connection failed).
See connectToServer() for more details.
*/
diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp
index e5b9fbbdb2..feb102b42a 100644
--- a/src/network/socket/qnativesocketengine_unix.cpp
+++ b/src/network/socket/qnativesocketengine_unix.cpp
@@ -46,6 +46,7 @@
#include "qelapsedtimer.h"
#include "qvarlengtharray.h"
#include "qnetworkinterface.h"
+#include "qendian.h"
#include <time.h>
#include <errno.h>
#include <fcntl.h>
@@ -364,12 +365,12 @@ int QNativeSocketEnginePrivate::option(QNativeSocketEngine::SocketOption opt) co
}
int n, level;
- int v = -1;
+ int v = 0;
QT_SOCKOPTLEN_T len = sizeof(v);
convertToLevelAndOption(opt, socketProtocol, level, n);
if (n != -1 && ::getsockopt(socketDescriptor, level, n, (char *) &v, &len) != -1)
- return v;
+ return len == 1 ? qFromUnaligned<quint8>(&v) : v;
return -1;
}
diff --git a/src/network/ssl/qdtls.cpp b/src/network/ssl/qdtls.cpp
index 74fb691dde..29a4df0f41 100644
--- a/src/network/ssl/qdtls.cpp
+++ b/src/network/ssl/qdtls.cpp
@@ -876,7 +876,7 @@ bool QDtls::startHandshake(QUdpSocket *socket, const QByteArray &datagram)
}
/*!
- If a timeout occures during the handshake, the handshakeTimeout() signal
+ If a timeout occurs during the handshake, the handshakeTimeout() signal
is emitted. The application must call handleTimeout() to retransmit handshake
messages; handleTimeout() returns \c true if a timeout has occurred, false
otherwise. \a socket must be a valid pointer.
diff --git a/src/network/ssl/qocspresponse.cpp b/src/network/ssl/qocspresponse.cpp
index 7fc83fa54a..51c9f71b71 100644
--- a/src/network/ssl/qocspresponse.cpp
+++ b/src/network/ssl/qocspresponse.cpp
@@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE
\ingroup ssl
\inmodule QtNetwork
- The QOcspResponse class represents the revocation status of a server's certficate,
+ The QOcspResponse class represents the revocation status of a server's certificate,
received by the client-side socket during the TLS handshake. QSslSocket must be
configured with OCSP stapling enabled.
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp
index 6367ee10c1..5bb6e7ee4a 100644
--- a/src/network/ssl/qsslsocket.cpp
+++ b/src/network/ssl/qsslsocket.cpp
@@ -188,7 +188,7 @@
behavior is identical to QTcpSocket.
\value SslClientMode The socket is a client-side SSL socket.
- It is either alreayd encrypted, or it is in the SSL handshake
+ It is either already encrypted, or it is in the SSL handshake
phase (see QSslSocket::isEncrypted()).
\value SslServerMode The socket is a server-side SSL socket.
diff --git a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
index 92d6eef850..52ce36b0e3 100644
--- a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
+++ b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
@@ -750,8 +750,10 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format,
// fake bold
if ((fontDef.weight >= QFont::Bold) && !(face->style_flags & FT_STYLE_FLAG_BOLD) && !FT_IS_FIXED_WIDTH(face) && !qEnvironmentVariableIsSet("QT_NO_SYNTHESIZED_BOLD")) {
if (const TT_OS2 *os2 = reinterpret_cast<const TT_OS2 *>(FT_Get_Sfnt_Table(face, ft_sfnt_os2))) {
- if (os2->usWeightClass < 700 && fontDef.pixelSize < 64)
+ if (os2->usWeightClass < 700 &&
+ (fontDef.pixelSize < 64 || qEnvironmentVariableIsSet("QT_NO_SYNTHESIZED_BOLD_LIMIT"))) {
embolden = true;
+ }
}
}
// underline metrics
diff --git a/src/plugins/platforms/android/androidjniaccessibility.cpp b/src/plugins/platforms/android/androidjniaccessibility.cpp
index 989d0d18f4..afe15677b6 100644
--- a/src/plugins/platforms/android/androidjniaccessibility.cpp
+++ b/src/plugins/platforms/android/androidjniaccessibility.cpp
@@ -50,6 +50,7 @@
#include <QtCore/private/qjnihelpers_p.h>
#include <QtCore/private/qjni_p.h>
#include <QtGui/private/qhighdpiscaling_p.h>
+#include <QtCore/QObject>
#include "qdebug.h"
@@ -75,6 +76,28 @@ namespace QtAndroidAccessibility
static bool m_accessibilityActivated = false;
+ // This object is needed to schedule the execution of the code that
+ // deals with accessibility instances to the Qt main thread.
+ // Because of that almost every method here is split into two parts.
+ // The _helper part is executed in the context of m_accessibilityContext
+ // on the main thread. The other part is executed in Java thread.
+ static QObject *m_accessibilityContext = nullptr;
+
+ // This method is called from the Qt main thread, and normally a
+ // QGuiApplication instance will be used as a parent.
+ void createAccessibilityContextObject(QObject *parent)
+ {
+ if (m_accessibilityContext)
+ m_accessibilityContext->deleteLater();
+ m_accessibilityContext = new QObject(parent);
+ }
+
+ template <typename Func, typename Ret>
+ void runInObjectContext(QObject *context, Func &&func, Ret *retVal)
+ {
+ QMetaObject::invokeMethod(context, func, Qt::BlockingQueuedConnection, retVal);
+ }
+
void initialize()
{
QJNIObjectPrivate::callStaticMethod<void>(QtAndroid::applicationClass(),
@@ -115,9 +138,12 @@ namespace QtAndroidAccessibility
QtAndroid::notifyAccessibilityLocationChange();
}
+ static int parentId_helper(int objectId); // forward declaration
+
void notifyObjectHide(uint accessibilityObjectId)
{
- QtAndroid::notifyObjectHide(accessibilityObjectId);
+ const auto parentObjectId = parentId_helper(accessibilityObjectId);
+ QtAndroid::notifyObjectHide(accessibilityObjectId, parentObjectId);
}
void notifyObjectFocus(uint accessibilityObjectId)
@@ -125,7 +151,15 @@ namespace QtAndroidAccessibility
QtAndroid::notifyObjectFocus(accessibilityObjectId);
}
- static jintArray childIdListForAccessibleObject(JNIEnv *env, jobject /*thiz*/, jint objectId)
+ static jstring jvalueForAccessibleObject(int objectId); // forward declaration
+
+ void notifyValueChanged(uint accessibilityObjectId)
+ {
+ jstring value = jvalueForAccessibleObject(accessibilityObjectId);
+ QtAndroid::notifyValueChanged(accessibilityObjectId, value);
+ }
+
+ static QVarLengthArray<int, 8> childIdListForAccessibleObject_helper(int objectId)
{
QAccessibleInterface *iface = interfaceFromId(objectId);
if (iface && iface->isValid()) {
@@ -137,6 +171,18 @@ namespace QtAndroidAccessibility
if (child && child->isValid())
ifaceIdArray.append(QAccessible::uniqueId(child));
}
+ return ifaceIdArray;
+ }
+ return {};
+ }
+
+ static jintArray childIdListForAccessibleObject(JNIEnv *env, jobject /*thiz*/, jint objectId)
+ {
+ if (m_accessibilityContext) {
+ QVarLengthArray<jint, 8> ifaceIdArray;
+ runInObjectContext(m_accessibilityContext, [objectId]() {
+ return childIdListForAccessibleObject_helper(objectId);
+ }, &ifaceIdArray);
jintArray jArray = env->NewIntArray(jsize(ifaceIdArray.count()));
env->SetIntArrayRegion(jArray, 0, ifaceIdArray.count(), ifaceIdArray.data());
return jArray;
@@ -145,7 +191,7 @@ namespace QtAndroidAccessibility
return env->NewIntArray(jsize(0));
}
- static jint parentId(JNIEnv */*env*/, jobject /*thiz*/, jint objectId)
+ static int parentId_helper(int objectId)
{
QAccessibleInterface *iface = interfaceFromId(objectId);
if (iface && iface->isValid()) {
@@ -159,7 +205,18 @@ namespace QtAndroidAccessibility
return -1;
}
- static jobject screenRect(JNIEnv *env, jobject /*thiz*/, jint objectId)
+ static jint parentId(JNIEnv */*env*/, jobject /*thiz*/, jint objectId)
+ {
+ jint result = -1;
+ if (m_accessibilityContext) {
+ runInObjectContext(m_accessibilityContext, [objectId]() {
+ return parentId_helper(objectId);
+ }, &result);
+ }
+ return result;
+ }
+
+ static QRect screenRect_helper(int objectId)
{
QRect rect;
QAccessibleInterface *iface = interfaceFromId(objectId);
@@ -171,14 +228,24 @@ namespace QtAndroidAccessibility
const auto parentRect = QHighDpi::toNativePixels(iface->parent()->rect(), iface->parent()->window());
rect = rect.intersected(parentRect);
}
+ return rect;
+ }
+ static jobject screenRect(JNIEnv *env, jobject /*thiz*/, jint objectId)
+ {
+ QRect rect;
+ if (m_accessibilityContext) {
+ runInObjectContext(m_accessibilityContext, [objectId]() {
+ return screenRect_helper(objectId);
+ }, &rect);
+ }
jclass rectClass = env->FindClass("android/graphics/Rect");
jmethodID ctor = env->GetMethodID(rectClass, "<init>", "(IIII)V");
jobject jrect = env->NewObject(rectClass, ctor, rect.left(), rect.top(), rect.right(), rect.bottom());
return jrect;
}
- static jint hitTest(JNIEnv */*env*/, jobject /*thiz*/, jfloat x, jfloat y)
+ static int hitTest_helper(float x, float y)
{
QAccessibleInterface *root = interfaceFromId(-1);
if (root && root->isValid()) {
@@ -196,17 +263,29 @@ namespace QtAndroidAccessibility
return -1;
}
+ static jint hitTest(JNIEnv */*env*/, jobject /*thiz*/, jfloat x, jfloat y)
+ {
+ jint result = -1;
+ if (m_accessibilityContext) {
+ runInObjectContext(m_accessibilityContext, [x, y]() {
+ return hitTest_helper(x, y);
+ }, &result);
+ }
+ return result;
+ }
+
static void invokeActionOnInterfaceInMainThread(QAccessibleActionInterface* actionInterface,
const QString& action)
{
+ // Queue the action and return back to Java thread, so that we do not
+ // block it for too long
QMetaObject::invokeMethod(qApp, [actionInterface, action]() {
actionInterface->doAction(action);
- });
+ }, Qt::QueuedConnection);
}
- static jboolean clickAction(JNIEnv */*env*/, jobject /*thiz*/, jint objectId)
+ static bool clickAction_helper(int objectId)
{
-// qDebug() << "A11Y: CLICK: " << objectId;
QAccessibleInterface *iface = interfaceFromId(objectId);
if (!iface || !iface->isValid() || !iface->actionInterface())
return false;
@@ -225,20 +304,45 @@ namespace QtAndroidAccessibility
return true;
}
- static jboolean scrollForward(JNIEnv */*env*/, jobject /*thiz*/, jint objectId)
+ static jboolean clickAction(JNIEnv */*env*/, jobject /*thiz*/, jint objectId)
+ {
+ bool result = false;
+ if (m_accessibilityContext) {
+ runInObjectContext(m_accessibilityContext, [objectId]() {
+ return clickAction_helper(objectId);
+ }, &result);
+ }
+ return result;
+ }
+
+ static bool scroll_helper(int objectId, const QString &actionName)
{
QAccessibleInterface *iface = interfaceFromId(objectId);
if (iface && iface->isValid())
- return QAccessibleBridgeUtils::performEffectiveAction(iface, QAccessibleActionInterface::increaseAction());
+ return QAccessibleBridgeUtils::performEffectiveAction(iface, actionName);
return false;
}
+ static jboolean scrollForward(JNIEnv */*env*/, jobject /*thiz*/, jint objectId)
+ {
+ bool result = false;
+ if (m_accessibilityContext) {
+ runInObjectContext(m_accessibilityContext, [objectId]() {
+ return scroll_helper(objectId, QAccessibleActionInterface::increaseAction());
+ }, &result);
+ }
+ return result;
+ }
+
static jboolean scrollBackward(JNIEnv */*env*/, jobject /*thiz*/, jint objectId)
{
- QAccessibleInterface *iface = interfaceFromId(objectId);
- if (iface && iface->isValid())
- return QAccessibleBridgeUtils::performEffectiveAction(iface, QAccessibleActionInterface::decreaseAction());
- return false;
+ bool result = false;
+ if (m_accessibilityContext) {
+ runInObjectContext(m_accessibilityContext, [objectId]() {
+ return scroll_helper(objectId, QAccessibleActionInterface::decreaseAction());
+ }, &result);
+ }
+ return result;
}
@@ -251,66 +355,173 @@ if (!clazz) { \
//__android_log_print(ANDROID_LOG_FATAL, m_qtTag, m_methodErrorMsg, METHOD_NAME, METHOD_SIGNATURE);
+ static QString textFromValue(QAccessibleInterface *iface)
+ {
+ QString valueStr;
+ QAccessibleValueInterface *valueIface = iface->valueInterface();
+ if (valueIface) {
+ const QVariant valueVar = valueIface->currentValue();
+ const auto type = static_cast<QMetaType::Type>(valueVar.type());
+ if (type == QMetaType::Double || type == QMetaType::Float) {
+ // QVariant's toString() formats floating-point values with
+ // FloatingPointShortest, which is not an accessible
+ // representation; nor, in many cases, is it suitable to the UI
+ // element whose value we're looking at. So roll our own
+ // A11Y-friendly conversion to string.
+ const double val = valueVar.toDouble();
+ // Try to use minimumStepSize() to determine precision
+ bool stepIsValid = false;
+ const double step = qAbs(valueIface->minimumStepSize().toDouble(&stepIsValid));
+ if (!stepIsValid || qFuzzyIsNull(step)) {
+ // Ignore step, use default precision
+ valueStr = qFuzzyIsNull(val) ? QStringLiteral("0") : QString::number(val, 'f');
+ } else {
+ const int precision = [](double s) {
+ int count = 0;
+ while (s < 1. && !qFuzzyCompare(s, 1.)) {
+ ++count;
+ s *= 10;
+ }
+ // If s is now 1.25, we want to show some more digits,
+ // but don't want to get silly with a step like 1./7;
+ // so only include a few extra digits.
+ const int stop = count + 3;
+ const auto fractional = [](double v) {
+ double whole = 0.0;
+ std::modf(v + 0.5, &whole);
+ return qAbs(v - whole);
+ };
+ s = fractional(s);
+ while (count < stop && !qFuzzyIsNull(s)) {
+ ++count;
+ s = fractional(s * 10);
+ }
+ return count;
+ }(step);
+ valueStr = qFuzzyIsNull(val / step) ? QStringLiteral("0")
+ : QString::number(val, 'f', precision);
+ }
+ } else {
+ valueStr = valueVar.toString();
+ }
+ }
+ return valueStr;
+ }
+ static jstring jvalueForAccessibleObject(int objectId)
+ {
+ QAccessibleInterface *iface = interfaceFromId(objectId);
+ const QString value = textFromValue(iface);
+ QJNIEnvironmentPrivate env;
+ jstring jstr = env->NewString((jchar*)value.constData(), (jsize)value.size());
+#ifdef QT_DEBUG
+ env->ExceptionDescribe();
+#endif // QT_DEBUG
+ env->ExceptionClear();
+ return jstr;
+ }
- static jstring descriptionForAccessibleObject_helper(JNIEnv *env, QAccessibleInterface *iface)
+ static QString descriptionForInterface(QAccessibleInterface *iface)
{
QString desc;
if (iface && iface->isValid()) {
+ bool hasValue = false;
desc = iface->text(QAccessible::Name);
if (desc.isEmpty())
desc = iface->text(QAccessible::Description);
if (desc.isEmpty()) {
desc = iface->text(QAccessible::Value);
- if (desc.isEmpty()) {
- if (QAccessibleValueInterface *valueIface = iface->valueInterface()) {
- desc= valueIface->currentValue().toString();
- }
- }
+ hasValue = !desc.isEmpty();
+ }
+ if (!hasValue) {
+ if (!desc.isEmpty())
+ desc.append(QChar(QChar::Space));
+ desc.append(textFromValue(iface));
}
}
- return env->NewString((jchar*) desc.constData(), (jsize) desc.size());
+ return desc;
}
- static jstring descriptionForAccessibleObject(JNIEnv *env, jobject /*thiz*/, jint objectId)
+ static QString descriptionForAccessibleObject_helper(int objectId)
{
QAccessibleInterface *iface = interfaceFromId(objectId);
- return descriptionForAccessibleObject_helper(env, iface);
+ return descriptionForInterface(iface);
}
- static bool populateNode(JNIEnv *env, jobject /*thiz*/, jint objectId, jobject node)
+ static jstring descriptionForAccessibleObject(JNIEnv *env, jobject /*thiz*/, jint objectId)
{
+ QString desc;
+ if (m_accessibilityContext) {
+ runInObjectContext(m_accessibilityContext, [objectId]() {
+ return descriptionForAccessibleObject_helper(objectId);
+ }, &desc);
+ }
+ return env->NewString((jchar*) desc.constData(), (jsize) desc.size());
+ }
+
+
+ struct NodeInfo
+ {
+ bool valid = false;
+ QAccessible::State state;
+ QStringList actions;
+ QString description;
+ bool hasTextSelection = false;
+ int selectionStart = 0;
+ int selectionEnd = 0;
+ };
+
+ static NodeInfo populateNode_helper(int objectId)
+ {
+ NodeInfo info;
QAccessibleInterface *iface = interfaceFromId(objectId);
- if (!iface || !iface->isValid()) {
+ if (iface && iface->isValid()) {
+ info.valid = true;
+ info.state = iface->state();
+ info.actions = QAccessibleBridgeUtils::effectiveActionNames(iface);
+ info.description = descriptionForInterface(iface);
+ QAccessibleTextInterface *textIface = iface->textInterface();
+ if (textIface && (textIface->selectionCount() > 0)) {
+ info.hasTextSelection = true;
+ textIface->selection(0, &info.selectionStart, &info.selectionEnd);
+ }
+ }
+ return info;
+ }
+
+ static jboolean populateNode(JNIEnv *env, jobject /*thiz*/, jint objectId, jobject node)
+ {
+ NodeInfo info;
+ if (m_accessibilityContext) {
+ runInObjectContext(m_accessibilityContext, [objectId]() {
+ return populateNode_helper(objectId);
+ }, &info);
+ }
+ if (!info.valid) {
__android_log_print(ANDROID_LOG_WARN, m_qtTag, "Accessibility: populateNode for Invalid ID");
return false;
}
- QAccessible::State state = iface->state();
- const QStringList actions = QAccessibleBridgeUtils::effectiveActionNames(iface);
- const bool hasClickableAction = actions.contains(QAccessibleActionInterface::pressAction())
- || actions.contains(QAccessibleActionInterface::toggleAction());
- const bool hasIncreaseAction = actions.contains(QAccessibleActionInterface::increaseAction());
- const bool hasDecreaseAction = actions.contains(QAccessibleActionInterface::decreaseAction());
- // try to fill in the text property, this is what the screen reader reads
- jstring jdesc = descriptionForAccessibleObject_helper(env, iface);
-
- if (QAccessibleTextInterface *textIface = iface->textInterface()) {
- if (m_setTextSelectionMethodID && textIface->selectionCount() > 0) {
- int startSelection;
- int endSelection;
- textIface->selection(0, &startSelection, &endSelection);
- env->CallVoidMethod(node, m_setTextSelectionMethodID, startSelection, endSelection);
- }
+ const bool hasClickableAction =
+ info.actions.contains(QAccessibleActionInterface::pressAction()) ||
+ info.actions.contains(QAccessibleActionInterface::toggleAction());
+ const bool hasIncreaseAction =
+ info.actions.contains(QAccessibleActionInterface::increaseAction());
+ const bool hasDecreaseAction =
+ info.actions.contains(QAccessibleActionInterface::decreaseAction());
+
+ if (info.hasTextSelection && m_setTextSelectionMethodID) {
+ env->CallVoidMethod(node, m_setTextSelectionMethodID, info.selectionStart,
+ info.selectionEnd);
}
- env->CallVoidMethod(node, m_setCheckableMethodID, (bool)state.checkable);
- env->CallVoidMethod(node, m_setCheckedMethodID, (bool)state.checked);
- env->CallVoidMethod(node, m_setEditableMethodID, state.editable);
- env->CallVoidMethod(node, m_setEnabledMethodID, !state.disabled);
- env->CallVoidMethod(node, m_setFocusableMethodID, (bool)state.focusable);
- env->CallVoidMethod(node, m_setFocusedMethodID, (bool)state.focused);
- env->CallVoidMethod(node, m_setVisibleToUserMethodID, !state.invisible);
+ env->CallVoidMethod(node, m_setCheckableMethodID, (bool)info.state.checkable);
+ env->CallVoidMethod(node, m_setCheckedMethodID, (bool)info.state.checked);
+ env->CallVoidMethod(node, m_setEditableMethodID, info.state.editable);
+ env->CallVoidMethod(node, m_setEnabledMethodID, !info.state.disabled);
+ env->CallVoidMethod(node, m_setFocusableMethodID, (bool)info.state.focusable);
+ env->CallVoidMethod(node, m_setFocusedMethodID, (bool)info.state.focused);
+ env->CallVoidMethod(node, m_setVisibleToUserMethodID, !info.state.invisible);
env->CallVoidMethod(node, m_setScrollableMethodID, hasIncreaseAction || hasDecreaseAction);
env->CallVoidMethod(node, m_setClickableMethodID, hasClickableAction);
@@ -326,7 +537,9 @@ if (!clazz) { \
if (hasDecreaseAction)
env->CallVoidMethod(node, m_addActionMethodID, (int)0x00002000); // ACTION_SCROLL_BACKWARD defined in AccessibilityNodeInfo
-
+ // try to fill in the text property, this is what the screen reader reads
+ jstring jdesc = env->NewString((jchar*)info.description.constData(),
+ (jsize)info.description.size());
//CALL_METHOD(node, "setText", "(Ljava/lang/CharSequence;)V", jdesc)
env->CallVoidMethod(node, m_setContentDescriptionMethodID, jdesc);
diff --git a/src/plugins/platforms/android/androidjniaccessibility.h b/src/plugins/platforms/android/androidjniaccessibility.h
index de9d32a099..a6e2edee5e 100644
--- a/src/plugins/platforms/android/androidjniaccessibility.h
+++ b/src/plugins/platforms/android/androidjniaccessibility.h
@@ -44,6 +44,8 @@
QT_BEGIN_NAMESPACE
+class QObject;
+
namespace QtAndroidAccessibility
{
void initialize();
@@ -52,6 +54,8 @@ namespace QtAndroidAccessibility
void notifyLocationChange();
void notifyObjectHide(uint accessibilityObjectId);
void notifyObjectFocus(uint accessibilityObjectId);
+ void notifyValueChanged(uint accessibilityObjectId);
+ void createAccessibilityContextObject(QObject *parent);
}
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp
index 05516929bf..1abd23485e 100644
--- a/src/plugins/platforms/android/androidjniinput.cpp
+++ b/src/plugins/platforms/android/androidjniinput.cpp
@@ -263,18 +263,14 @@ namespace QtAndroidInput
}
}
- static void touchEnd(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint /*action*/)
+ static QTouchDevice *getTouchDevice()
{
- if (m_touchPoints.isEmpty())
- return;
-
- QMutexLocker lock(QtAndroid::platformInterfaceMutex());
QAndroidPlatformIntegration *platformIntegration = QtAndroid::androidPlatformIntegration();
if (!platformIntegration)
- return;
+ return nullptr;
QTouchDevice *touchDevice = platformIntegration->touchDevice();
- if (touchDevice == 0) {
+ if (!touchDevice) {
touchDevice = new QTouchDevice;
touchDevice->setType(QTouchDevice::TouchScreen);
touchDevice->setCapabilities(QTouchDevice::Position
@@ -285,10 +281,37 @@ namespace QtAndroidInput
platformIntegration->setTouchDevice(touchDevice);
}
+ return touchDevice;
+ }
+
+ static void touchEnd(JNIEnv * /*env*/, jobject /*thiz*/, jint /*winId*/, jint /*action*/)
+ {
+ if (m_touchPoints.isEmpty())
+ return;
+
+ QMutexLocker lock(QtAndroid::platformInterfaceMutex());
+ QTouchDevice *touchDevice = getTouchDevice();
+ if (!touchDevice)
+ return;
+
QWindow *window = QtAndroid::topLevelWindowAt(m_touchPoints.at(0).area.center().toPoint());
QWindowSystemInterface::handleTouchEvent(window, touchDevice, m_touchPoints);
}
+ static void touchCancel(JNIEnv * /*env*/, jobject /*thiz*/, jint /*winId*/)
+ {
+ if (m_touchPoints.isEmpty())
+ return;
+
+ QMutexLocker lock(QtAndroid::platformInterfaceMutex());
+ QTouchDevice *touchDevice = getTouchDevice();
+ if (!touchDevice)
+ return;
+
+ QWindow *window = QtAndroid::topLevelWindowAt(m_touchPoints.at(0).area.center().toPoint());
+ QWindowSystemInterface::handleTouchCancelEvent(window, touchDevice);
+ }
+
static bool isTabletEventSupported(JNIEnv */*env*/, jobject /*thiz*/)
{
#if QT_CONFIG(tabletevent)
@@ -840,6 +863,7 @@ namespace QtAndroidInput
{"touchBegin","(I)V",(void*)touchBegin},
{"touchAdd","(IIIZIIFFFF)V",(void*)touchAdd},
{"touchEnd","(II)V",(void*)touchEnd},
+ {"touchCancel", "(I)V", (void *)touchCancel},
{"mouseDown", "(III)V", (void *)mouseDown},
{"mouseUp", "(III)V", (void *)mouseUp},
{"mouseMove", "(III)V", (void *)mouseMove},
diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp
index 8c6d9d9be3..9796a4c9c6 100644
--- a/src/plugins/platforms/android/androidjnimain.cpp
+++ b/src/plugins/platforms/android/androidjnimain.cpp
@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2014 BogDan Vatra <bogdan@kde.org>
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the plugins of the Qt Toolkit.
@@ -107,7 +107,6 @@ static sem_t m_exitSemaphore, m_terminateSemaphore;
QHash<int, AndroidSurfaceClient *> m_surfaces;
static QBasicMutex m_surfacesMutex;
-static int m_surfaceId = 1;
static QAndroidPlatformIntegration *m_androidPlatformIntegration = nullptr;
@@ -231,9 +230,10 @@ namespace QtAndroid
QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "notifyAccessibilityLocationChange");
}
- void notifyObjectHide(uint accessibilityObjectId)
+ void notifyObjectHide(uint accessibilityObjectId, uint parentObjectId)
{
- QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "notifyObjectHide","(I)V", accessibilityObjectId);
+ QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "notifyObjectHide", "(II)V",
+ accessibilityObjectId, parentObjectId);
}
void notifyObjectFocus(uint accessibilityObjectId)
@@ -241,6 +241,13 @@ namespace QtAndroid
QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "notifyObjectFocus","(I)V", accessibilityObjectId);
}
+ void notifyValueChanged(uint accessibilityObjectId, jstring value)
+ {
+ QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "notifyValueChanged",
+ "(ILjava/lang/String;)V", accessibilityObjectId,
+ value);
+ }
+
void notifyQtAndroidPluginRunning(bool running)
{
QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "notifyQtAndroidPluginRunning","(Z)V", running);
@@ -340,6 +347,12 @@ namespace QtAndroid
return manufacturer + QLatin1Char(' ') + model;
}
+ jint generateViewId()
+ {
+ return QJNIObjectPrivate::callStaticMethod<jint>("android/view/View","generateViewId",
+ "()I");
+ }
+
int createSurface(AndroidSurfaceClient *client, const QRect &geometry, bool onTop, int imageDepth)
{
QJNIEnvironmentPrivate env;
@@ -347,7 +360,7 @@ namespace QtAndroid
return -1;
m_surfacesMutex.lock();
- int surfaceId = m_surfaceId++;
+ jint surfaceId = generateViewId();
m_surfaces[surfaceId] = client;
m_surfacesMutex.unlock();
@@ -370,7 +383,7 @@ namespace QtAndroid
int insertNativeView(jobject view, const QRect &geometry)
{
m_surfacesMutex.lock();
- const int surfaceId = m_surfaceId++;
+ jint surfaceId = generateViewId();
m_surfaces[surfaceId] = nullptr; // dummy
m_surfacesMutex.unlock();
@@ -554,16 +567,21 @@ static void startQtApplication(JNIEnv */*env*/, jclass /*clazz*/)
vm->AttachCurrentThread(&env, &args);
}
+ // Register type for invokeMethod() calls.
+ qRegisterMetaType<Qt::ScreenOrientation>("Qt::ScreenOrientation");
+
// Register resources if they are available
if (QFile{QStringLiteral("assets:/android_rcc_bundle.rcc")}.exists())
QResource::registerResource(QStringLiteral("assets:/android_rcc_bundle.rcc"));
- QVarLengthArray<const char *> params(m_applicationParams.size());
- for (int i = 0; i < m_applicationParams.size(); i++)
- params[i] = static_cast<const char *>(m_applicationParams[i].constData());
+ const int argc = m_applicationParams.size();
+ QVarLengthArray<char *> argv(argc + 1);
+ for (int i = 0; i < argc; i++)
+ argv[i] = m_applicationParams[i].data();
+ argv[argc] = nullptr;
startQtAndroidPluginCalled.fetchAndAddRelease(1);
- int ret = m_main(m_applicationParams.length(), const_cast<char **>(params.data()));
+ int ret = m_main(argc, argv.data());
if (m_mainLibraryHnd) {
int res = dlclose(m_mainLibraryHnd);
@@ -655,12 +673,11 @@ static void setDisplayMetrics(JNIEnv */*env*/, jclass /*clazz*/,
jint widthPixels, jint heightPixels,
jint desktopWidthPixels, jint desktopHeightPixels,
jdouble xdpi, jdouble ydpi,
- jdouble scaledDensity, jdouble density, bool forceUpdate)
+ jdouble scaledDensity, jdouble density, jfloat refreshRate)
{
// Android does not give us the correct screen size for immersive mode, but
// the surface does have the right size
- bool updateDesktopSize = m_desktopWidthPixels != desktopWidthPixels;
widthPixels = qMax(widthPixels, desktopWidthPixels);
heightPixels = qMax(heightPixels, desktopHeightPixels);
@@ -678,12 +695,13 @@ static void setDisplayMetrics(JNIEnv */*env*/, jclass /*clazz*/,
widthPixels,
heightPixels);
} else {
- m_androidPlatformIntegration->setDisplayMetrics(qRound(double(widthPixels) / xdpi * 25.4),
- qRound(double(heightPixels) / ydpi * 25.4));
- m_androidPlatformIntegration->setScreenSize(widthPixels, heightPixels);
- if (updateDesktopSize || forceUpdate) {
- m_androidPlatformIntegration->setDesktopSize(desktopWidthPixels, desktopHeightPixels);
- }
+ const QSize physicalSize(qRound(double(widthPixels) / xdpi * 25.4),
+ qRound(double(heightPixels) / ydpi * 25.4));
+ const QSize screenSize(widthPixels, heightPixels);
+ const QRect availableGeometry(0, 0, desktopWidthPixels, desktopHeightPixels);
+ m_androidPlatformIntegration->setScreenSizeParameters(physicalSize, screenSize,
+ availableGeometry);
+ m_androidPlatformIntegration->setRefreshRate(refreshRate);
}
}
@@ -778,12 +796,22 @@ static void handleOrientationChanged(JNIEnv */*env*/, jobject /*thiz*/, jint new
QAndroidPlatformIntegration::setScreenOrientation(screenOrientation, native);
QMutexLocker lock(&m_platformMutex);
if (m_androidPlatformIntegration) {
- QPlatformScreen *screen = m_androidPlatformIntegration->screen();
- QWindowSystemInterface::handleScreenOrientationChange(screen->screen(),
- screenOrientation);
+ QAndroidPlatformScreen *screen = m_androidPlatformIntegration->screen();
+ // Use invokeMethod to keep the certain order of the "geometry change"
+ // and "orientation change" event handling.
+ if (screen) {
+ QMetaObject::invokeMethod(screen, "setOrientation", Qt::AutoConnection,
+ Q_ARG(Qt::ScreenOrientation, screenOrientation));
+ }
}
}
+static void handleRefreshRateChanged(JNIEnv */*env*/, jclass /*cls*/, jfloat refreshRate)
+{
+ if (m_androidPlatformIntegration)
+ m_androidPlatformIntegration->setRefreshRate(refreshRate);
+}
+
static void onActivityResult(JNIEnv */*env*/, jclass /*cls*/,
jint requestCode,
jint resultCode,
@@ -809,14 +837,15 @@ static JNINativeMethod methods[] = {
{"quitQtCoreApplication", "()V", (void *)quitQtCoreApplication},
{"terminateQt", "()V", (void *)terminateQt},
{"waitForServiceSetup", "()V", (void *)waitForServiceSetup},
- {"setDisplayMetrics", "(IIIIDDDDZ)V", (void *)setDisplayMetrics},
+ {"setDisplayMetrics", "(IIIIDDDDF)V", (void *)setDisplayMetrics},
{"setSurface", "(ILjava/lang/Object;II)V", (void *)setSurface},
{"updateWindow", "()V", (void *)updateWindow},
{"updateApplicationState", "(I)V", (void *)updateApplicationState},
{"handleOrientationChanged", "(II)V", (void *)handleOrientationChanged},
{"onActivityResult", "(IILandroid/content/Intent;)V", (void *)onActivityResult},
{"onNewIntent", "(Landroid/content/Intent;)V", (void *)onNewIntent},
- {"onBind", "(Landroid/content/Intent;)Landroid/os/IBinder;", (void *)onBind}
+ {"onBind", "(Landroid/content/Intent;)Landroid/os/IBinder;", (void *)onBind},
+ {"handleRefreshRateChanged", "(F)V", (void *)handleRefreshRateChanged}
};
#define FIND_AND_CHECK_CLASS(CLASS_NAME) \
diff --git a/src/plugins/platforms/android/androidjnimain.h b/src/plugins/platforms/android/androidjnimain.h
index 641b2dbdb4..240a0b83f9 100644
--- a/src/plugins/platforms/android/androidjnimain.h
+++ b/src/plugins/platforms/android/androidjnimain.h
@@ -96,8 +96,9 @@ namespace QtAndroid
jobject createBitmapDrawable(jobject bitmap, JNIEnv *env = 0);
void notifyAccessibilityLocationChange();
- void notifyObjectHide(uint accessibilityObjectId);
+ void notifyObjectHide(uint accessibilityObjectId, uint parentObjectId);
void notifyObjectFocus(uint accessibilityObjectId);
+ void notifyValueChanged(uint accessibilityObjectId, jstring value);
void notifyQtAndroidPluginRunning(bool running);
const char *classErrorMsgFmt();
diff --git a/src/plugins/platforms/android/qandroidplatformaccessibility.cpp b/src/plugins/platforms/android/qandroidplatformaccessibility.cpp
index cc05dad749..706d1bb4fa 100644
--- a/src/plugins/platforms/android/qandroidplatformaccessibility.cpp
+++ b/src/plugins/platforms/android/qandroidplatformaccessibility.cpp
@@ -66,7 +66,15 @@ void QAndroidPlatformAccessibility::notifyAccessibilityUpdate(QAccessibleEvent *
QtAndroidAccessibility::notifyObjectHide(event->uniqueId());
} else if (event->type() == QAccessible::Focus) {
QtAndroidAccessibility::notifyObjectFocus(event->uniqueId());
+ } else if (event->type() == QAccessible::ValueChanged) {
+ QtAndroidAccessibility::notifyValueChanged(event->uniqueId());
}
}
+void QAndroidPlatformAccessibility::setRootObject(QObject *obj)
+{
+ QPlatformAccessibility::setRootObject(obj);
+ QtAndroidAccessibility::createAccessibilityContextObject(obj);
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidplatformaccessibility.h b/src/plugins/platforms/android/qandroidplatformaccessibility.h
index 8216c05fa6..df3fe43a04 100644
--- a/src/plugins/platforms/android/qandroidplatformaccessibility.h
+++ b/src/plugins/platforms/android/qandroidplatformaccessibility.h
@@ -52,6 +52,7 @@ public:
~QAndroidPlatformAccessibility();
void notifyAccessibilityUpdate(QAccessibleEvent *event) override;
+ void setRootObject(QObject *obj) override;
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp
index 3074dee26f..6fe0caba2e 100644
--- a/src/plugins/platforms/android/qandroidplatformintegration.cpp
+++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp
@@ -188,9 +188,10 @@ QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList &para
m_primaryScreen = new QAndroidPlatformScreen();
QWindowSystemInterface::handleScreenAdded(m_primaryScreen);
- m_primaryScreen->setPhysicalSize(QSize(m_defaultPhysicalSizeWidth, m_defaultPhysicalSizeHeight));
- m_primaryScreen->setSize(QSize(m_defaultScreenWidth, m_defaultScreenHeight));
- m_primaryScreen->setAvailableGeometry(QRect(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight));
+ const QSize physicalSize(m_defaultPhysicalSizeWidth, m_defaultPhysicalSizeHeight);
+ const QSize screenSize(m_defaultScreenWidth, m_defaultScreenHeight);
+ const QRect geometry(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight);
+ m_primaryScreen->setSizeParameters(physicalSize, screenSize, geometry);
m_mainThread = QThread::currentThread();
@@ -463,10 +464,10 @@ void QAndroidPlatformIntegration::setScreenOrientation(Qt::ScreenOrientation cur
void QAndroidPlatformIntegration::flushPendingUpdates()
{
- m_primaryScreen->setPhysicalSize(QSize(m_defaultPhysicalSizeWidth,
- m_defaultPhysicalSizeHeight));
- m_primaryScreen->setSize(QSize(m_defaultScreenWidth, m_defaultScreenHeight));
- m_primaryScreen->setAvailableGeometry(QRect(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight));
+ const QSize physicalSize(m_defaultPhysicalSizeWidth, m_defaultPhysicalSizeHeight);
+ const QSize screenSize(m_defaultScreenWidth, m_defaultScreenHeight);
+ const QRect geometry(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight);
+ m_primaryScreen->setSizeParameters(physicalSize, screenSize, geometry);
}
#ifndef QT_NO_ACCESSIBILITY
@@ -494,6 +495,23 @@ void QAndroidPlatformIntegration::setScreenSize(int width, int height)
QMetaObject::invokeMethod(m_primaryScreen, "setSize", Qt::AutoConnection, Q_ARG(QSize, QSize(width, height)));
}
+void QAndroidPlatformIntegration::setScreenSizeParameters(const QSize &physicalSize,
+ const QSize &screenSize,
+ const QRect &availableGeometry)
+{
+ if (m_primaryScreen) {
+ QMetaObject::invokeMethod(m_primaryScreen, "setSizeParameters", Qt::AutoConnection,
+ Q_ARG(QSize, physicalSize), Q_ARG(QSize, screenSize),
+ Q_ARG(QRect, availableGeometry));
+ }
+}
+
+void QAndroidPlatformIntegration::setRefreshRate(qreal refreshRate)
+{
+ if (m_primaryScreen)
+ QMetaObject::invokeMethod(m_primaryScreen, "setRefreshRate", Qt::AutoConnection,
+ Q_ARG(qreal, refreshRate));
+}
#if QT_CONFIG(vulkan)
QPlatformVulkanInstance *QAndroidPlatformIntegration::createPlatformVulkanInstance(QVulkanInstance *instance) const
diff --git a/src/plugins/platforms/android/qandroidplatformintegration.h b/src/plugins/platforms/android/qandroidplatformintegration.h
index ecbde4f951..f34972b81e 100644
--- a/src/plugins/platforms/android/qandroidplatformintegration.h
+++ b/src/plugins/platforms/android/qandroidplatformintegration.h
@@ -96,6 +96,13 @@ public:
virtual void setDesktopSize(int width, int height);
virtual void setDisplayMetrics(int width, int height);
void setScreenSize(int width, int height);
+ // The 3 methods above were replaced by a new one, so that we could have
+ // a better control over "geometry changed" event handling. Technically
+ // they are no longer used and can be removed. Not doing it now, because
+ // I'm not sure if it might be helpful to have them or not.
+ void setScreenSizeParameters(const QSize &physicalSize, const QSize &screenSize,
+ const QRect &availableGeometry);
+ void setRefreshRate(qreal refreshRate);
bool isVirtualDesktop() { return true; }
QPlatformFontDatabase *fontDatabase() const override;
diff --git a/src/plugins/platforms/android/qandroidplatformscreen.cpp b/src/plugins/platforms/android/qandroidplatformscreen.cpp
index 7e036868fc..0f60202eb9 100644
--- a/src/plugins/platforms/android/qandroidplatformscreen.cpp
+++ b/src/plugins/platforms/android/qandroidplatformscreen.cpp
@@ -55,6 +55,7 @@
#include <android/native_window_jni.h>
#include <qguiapplication.h>
+#include <QtCore/private/qjnihelpers_p.h>
#include <QtGui/QGuiApplication>
#include <QtGui/QWindow>
#include <QtGui/private/qwindow_p.h>
@@ -104,6 +105,42 @@ QAndroidPlatformScreen::QAndroidPlatformScreen()
m_physicalSize.setHeight(QAndroidPlatformIntegration::m_defaultPhysicalSizeHeight);
m_physicalSize.setWidth(QAndroidPlatformIntegration::m_defaultPhysicalSizeWidth);
connect(qGuiApp, &QGuiApplication::applicationStateChanged, this, &QAndroidPlatformScreen::applicationStateChanged);
+
+ QJNIObjectPrivate activity(QtAndroid::activity());
+ if (!activity.isValid())
+ return;
+ QJNIObjectPrivate display;
+ if (QtAndroidPrivate::androidSdkVersion() < 30) {
+ display = activity.callObjectMethod("getWindowManager", "()Landroid/view/WindowManager;")
+ .callObjectMethod("getDefaultDisplay", "()Landroid/view/Display;");
+ } else {
+ display = activity.callObjectMethod("getDisplay", "()Landroid/view/Display;");
+ }
+ if (!display.isValid())
+ return;
+ m_name = display.callObjectMethod("getName", "()Ljava/lang/String;").toString();
+ m_refreshRate = display.callMethod<jfloat>("getRefreshRate");
+ if (QtAndroidPrivate::androidSdkVersion() < 23) {
+ m_modes << Mode { .size = m_physicalSize.toSize(), .refreshRate = m_refreshRate };
+ return;
+ }
+ QJNIEnvironmentPrivate env;
+ const jint currentMode = display.callObjectMethod("getMode", "()Landroid/view/Display$Mode;")
+ .callMethod<jint>("getModeId");
+ const auto modes = display.callObjectMethod("getSupportedModes",
+ "()[Landroid/view/Display$Mode;");
+ const auto modesArray = jobjectArray(modes.object());
+ const auto sz = env->GetArrayLength(modesArray);
+ for (jsize i = 0; i < sz; ++i) {
+ auto mode = QJNIObjectPrivate::fromLocalRef(env->GetObjectArrayElement(modesArray, i));
+ if (currentMode == mode.callMethod<jint>("getModeId"))
+ m_currentMode = m_modes.size();
+ m_modes << Mode { .size = QSize { mode.callMethod<jint>("getPhysicalHeight"),
+ mode.callMethod<jint>("getPhysicalWidth") },
+ .refreshRate = mode.callMethod<jfloat>("getRefreshRate") };
+ }
+ if (m_modes.isEmpty())
+ m_modes << Mode { .size = m_physicalSize.toSize(), .refreshRate = m_refreshRate };
}
QAndroidPlatformScreen::~QAndroidPlatformScreen()
@@ -243,6 +280,37 @@ void QAndroidPlatformScreen::setSize(const QSize &size)
QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), geometry(), availableGeometry());
}
+void QAndroidPlatformScreen::setSizeParameters(const QSize &physicalSize, const QSize &size,
+ const QRect &availableGeometry)
+{
+ // The goal of this method is to set all geometry-related parameters
+ // at the same time and generate only one screen geometry change event.
+ m_physicalSize = physicalSize;
+ m_size = size;
+ // If available geometry has changed, the event will be handled in
+ // setAvailableGeometry. Otherwise we need to explicitly handle it to
+ // retain the behavior, because setSize() does the handling unconditionally.
+ if (m_availableGeometry != availableGeometry) {
+ setAvailableGeometry(availableGeometry);
+ } else {
+ QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), geometry(),
+ this->availableGeometry());
+ }
+}
+
+void QAndroidPlatformScreen::setRefreshRate(qreal refreshRate)
+{
+ if (refreshRate == m_refreshRate)
+ return;
+ m_refreshRate = refreshRate;
+ QWindowSystemInterface::handleScreenRefreshRateChange(QPlatformScreen::screen(), refreshRate);
+}
+
+void QAndroidPlatformScreen::setOrientation(Qt::ScreenOrientation orientation)
+{
+ QWindowSystemInterface::handleScreenOrientationChange(QPlatformScreen::screen(), orientation);
+}
+
void QAndroidPlatformScreen::setAvailableGeometry(const QRect &rect)
{
QMutexLocker lock(&m_surfaceMutex);
diff --git a/src/plugins/platforms/android/qandroidplatformscreen.h b/src/plugins/platforms/android/qandroidplatformscreen.h
index 54b3c5b8a8..e73ea31a86 100644
--- a/src/plugins/platforms/android/qandroidplatformscreen.h
+++ b/src/plugins/platforms/android/qandroidplatformscreen.h
@@ -69,6 +69,12 @@ public:
QImage::Format format() const override { return m_format; }
QSizeF physicalSize() const override { return m_physicalSize; }
+ QString name() const override { return m_name; }
+ QVector<Mode> modes() const override { return m_modes; }
+ int currentMode() const override { return m_currentMode; }
+ int preferredMode() const override { return m_currentMode; }
+ qreal refreshRate() const override { return m_refreshRate; }
+
inline QWindow *topWindow() const;
QWindow *topLevelAt(const QPoint & p) const override;
@@ -87,6 +93,10 @@ public slots:
void setPhysicalSize(const QSize &size);
void setAvailableGeometry(const QRect &rect);
void setSize(const QSize &size);
+ void setSizeParameters(const QSize &physicalSize, const QSize &size,
+ const QRect &availableGeometry);
+ void setRefreshRate(qreal refreshRate);
+ void setOrientation(Qt::ScreenOrientation orientation);
protected:
bool event(QEvent *event) override;
@@ -100,6 +110,10 @@ protected:
int m_depth;
QImage::Format m_format;
QSizeF m_physicalSize;
+ qreal m_refreshRate;
+ QString m_name;
+ QVector<Mode> m_modes;
+ int m_currentMode = 0;
private:
QDpi logicalDpi() const override;
diff --git a/src/plugins/platforms/cocoa/qcocoacursor.mm b/src/plugins/platforms/cocoa/qcocoacursor.mm
index 8ca72ec619..c963ff937c 100644
--- a/src/plugins/platforms/cocoa/qcocoacursor.mm
+++ b/src/plugins/platforms/cocoa/qcocoacursor.mm
@@ -45,6 +45,15 @@
#include <QtGui/QBitmap>
+#if !defined(QT_APPLE_NO_PRIVATE_APIS)
+@interface NSCursor()
++ (id)_windowResizeNorthWestSouthEastCursor;
++ (id)_windowResizeNorthEastSouthWestCursor;
++ (id)_windowResizeNorthSouthCursor;
++ (id)_windowResizeEastWestCursor;
+@end
+#endif // QT_APPLE_NO_PRIVATE_APIS
+
QT_BEGIN_NAMESPACE
QCocoaCursor::QCocoaCursor()
@@ -116,7 +125,7 @@ NSCursor *QCocoaCursor::convertCursor(QCursor *cursor)
return nil;
const Qt::CursorShape newShape = cursor->shape();
- NSCursor *cocoaCursor;
+ NSCursor *cocoaCursor = nil;
// Check for a suitable built-in NSCursor first:
switch (newShape) {
@@ -157,7 +166,29 @@ NSCursor *QCocoaCursor::convertCursor(QCursor *cursor)
case Qt::DragLinkCursor:
cocoaCursor = [NSCursor dragLinkCursor];
break;
- default : {
+#if !defined(QT_APPLE_NO_PRIVATE_APIS)
+ case Qt::SizeVerCursor:
+ if ([NSCursor respondsToSelector:@selector(_windowResizeNorthSouthCursor)])
+ cocoaCursor = [NSCursor _windowResizeNorthSouthCursor];
+ break;
+ case Qt::SizeHorCursor:
+ if ([NSCursor respondsToSelector:@selector(_windowResizeEastWestCursor)])
+ cocoaCursor = [NSCursor _windowResizeEastWestCursor];
+ break;
+ case Qt::SizeBDiagCursor:
+ if ([NSCursor respondsToSelector:@selector(_windowResizeNorthEastSouthWestCursor)])
+ cocoaCursor = [NSCursor _windowResizeNorthEastSouthWestCursor];
+ break;
+ case Qt::SizeFDiagCursor:
+ if ([NSCursor respondsToSelector:@selector(_windowResizeNorthWestSouthEastCursor)])
+ cocoaCursor = [NSCursor _windowResizeNorthWestSouthEastCursor];
+ break;
+#endif // QT_APPLE_NO_PRIVATE_APIS
+ default:
+ break;
+ }
+
+ if (!cocoaCursor) {
// No suitable OS cursor exist, use cursors provided
// by Qt for the rest. Check for a cached cursor:
cocoaCursor = m_cursors.value(newShape);
@@ -172,8 +203,6 @@ NSCursor *QCocoaCursor::convertCursor(QCursor *cursor)
m_cursors.insert(newShape, cocoaCursor);
}
-
- break; }
}
return cocoaCursor;
}
diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
index 5dac9b9a91..7c3f69b408 100644
--- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
+++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
@@ -292,7 +292,12 @@ static QString strippedText(QString s)
}
}
- QString qtFileName = QFileInfo(QString::fromNSString(filename)).fileName();
+ // Treat symbolic links and aliases to directories like directories
+ QFileInfo fileInfo(QString::fromNSString(filename));
+ if (fileInfo.isSymLink() && QFileInfo(fileInfo.symLinkTarget()).isDir())
+ return YES;
+
+ QString qtFileName = fileInfo.fileName();
// No filter means accept everything
bool nameMatches = mSelectedNameFilter->isEmpty();
// Check if the current file name filter accepts the file:
diff --git a/src/plugins/platforms/cocoa/qcocoascreen.mm b/src/plugins/platforms/cocoa/qcocoascreen.mm
index 581ea01fcc..c03c191376 100644
--- a/src/plugins/platforms/cocoa/qcocoascreen.mm
+++ b/src/plugins/platforms/cocoa/qcocoascreen.mm
@@ -230,13 +230,13 @@ static QString displayName(CGDirectDisplayID displayID)
NSDictionary *info = [(__bridge NSDictionary*)IODisplayCreateInfoDictionary(
display, kIODisplayOnlyPreferredName) autorelease];
- if ([[info objectForKey:@kDisplayVendorID] longValue] != CGDisplayVendorNumber(displayID))
+ if ([[info objectForKey:@kDisplayVendorID] unsignedIntValue] != CGDisplayVendorNumber(displayID))
continue;
- if ([[info objectForKey:@kDisplayProductID] longValue] != CGDisplayModelNumber(displayID))
+ if ([[info objectForKey:@kDisplayProductID] unsignedIntValue] != CGDisplayModelNumber(displayID))
continue;
- if ([[info objectForKey:@kDisplaySerialNumber] longValue] != CGDisplaySerialNumber(displayID))
+ if ([[info objectForKey:@kDisplaySerialNumber] unsignedIntValue] != CGDisplaySerialNumber(displayID))
continue;
NSDictionary *localizedNames = [info objectForKey:@kDisplayProductName];
diff --git a/src/plugins/platforms/cocoa/qnsview_mouse.mm b/src/plugins/platforms/cocoa/qnsview_mouse.mm
index ef80a47e0f..73995639aa 100644
--- a/src/plugins/platforms/cocoa/qnsview_mouse.mm
+++ b/src/plugins/platforms/cocoa/qnsview_mouse.mm
@@ -678,7 +678,11 @@
}
} else if (theEvent.momentumPhase == NSEventPhaseBegan) {
Q_ASSERT(!pixelDelta.isNull() && !angleDelta.isNull());
- phase = Qt::ScrollUpdate; // Send as update, it has a delta
+ // If we missed finding a momentum NSEventPhaseBegan when the non-momentum
+ // phase ended we need to treat this as a scroll begin, to not confuse client
+ // code. Otherwise we treat it as a continuation of the existing scroll.
+ phase = m_scrolling ? Qt::ScrollUpdate : Qt::ScrollBegin;
+ m_scrolling = true;
} else if (theEvent.momentumPhase == NSEventPhaseChanged) {
phase = Qt::ScrollMomentum;
} else if (theEvent.phase == NSEventPhaseCancelled
@@ -690,6 +694,16 @@
Q_ASSERT(theEvent.momentumPhase != NSEventPhaseStationary);
}
+ // Sanitize deltas for events that should not result in scrolling.
+ // On macOS 12.1 this phase has been observed to report deltas.
+ if (theEvent.phase == NSEventPhaseCancelled) {
+ if (!pixelDelta.isNull() || !angleDelta.isNull()) {
+ qCInfo(lcQpaMouse) << "Ignoring unexpected delta for" << theEvent;
+ pixelDelta = QPoint();
+ angleDelta = QPoint();
+ }
+ }
+
// Prevent keyboard modifier state from changing during scroll event streams.
// A two-finger trackpad flick generates a stream of scroll events. We want
// the keyboard modifier state to be the state at the beginning of the
diff --git a/src/plugins/platforms/cocoa/qnsview_tablet.mm b/src/plugins/platforms/cocoa/qnsview_tablet.mm
index ba1fa55892..f365403502 100644
--- a/src/plugins/platforms/cocoa/qnsview_tablet.mm
+++ b/src/plugins/platforms/cocoa/qnsview_tablet.mm
@@ -148,9 +148,6 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
device = QTabletEvent::Stylus;
} else {
switch (bits & 0x0F06) {
- case 0x0802:
- device = QTabletEvent::Stylus;
- break;
case 0x0902:
device = QTabletEvent::Airbrush;
break;
@@ -163,8 +160,8 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
case 0x0804:
device = QTabletEvent::RotationStylus;
break;
- default:
- device = QTabletEvent::NoDevice;
+ default: // usually 0x0802, but 0 on iPad sidecar with Apple Pencil
+ device = QTabletEvent::Stylus;
}
}
return device;
diff --git a/src/plugins/platforms/ios/qiosdocumentpickercontroller.h b/src/plugins/platforms/ios/qiosdocumentpickercontroller.h
index dba6f24fc5..2fe3c9e382 100644
--- a/src/plugins/platforms/ios/qiosdocumentpickercontroller.h
+++ b/src/plugins/platforms/ios/qiosdocumentpickercontroller.h
@@ -41,6 +41,8 @@
#include "qiosfiledialog.h"
-@interface QIOSDocumentPickerController : UIDocumentPickerViewController <UIDocumentPickerDelegate, UINavigationControllerDelegate>
+@interface QIOSDocumentPickerController : UIDocumentPickerViewController <UIDocumentPickerDelegate,
+ UINavigationControllerDelegate,
+ UIAdaptivePresentationControllerDelegate>
- (instancetype)initWithQIOSFileDialog:(QIOSFileDialog *)fileDialog;
@end
diff --git a/src/plugins/platforms/ios/qiosdocumentpickercontroller.mm b/src/plugins/platforms/ios/qiosdocumentpickercontroller.mm
index c1b641e839..da78d41115 100644
--- a/src/plugins/platforms/ios/qiosdocumentpickercontroller.mm
+++ b/src/plugins/platforms/ios/qiosdocumentpickercontroller.mm
@@ -72,6 +72,7 @@
m_fileDialog = fileDialog;
self.modalPresentationStyle = UIModalPresentationFormSheet;
self.delegate = self;
+ self.presentationController.delegate = self;
if (m_fileDialog->options()->fileMode() == QFileDialogOptions::ExistingFiles)
self.allowsMultipleSelection = YES;
@@ -100,4 +101,18 @@
emit m_fileDialog->reject();
}
+- (void)presentationControllerDidDismiss:(UIPresentationController *)presentationController
+{
+ Q_UNUSED(presentationController);
+
+ // "Called on the delegate when the user has taken action to dismiss the
+ // presentation successfully, after all animations are finished.
+ // This is not called if the presentation is dismissed programatically."
+
+ // So if document picker's view was dismissed, for example by swiping it away,
+ // we got this method called. But not if the dialog was cancelled or a file
+ // was selected.
+ emit m_fileDialog->reject();
+}
+
@end
diff --git a/src/plugins/platforms/windows/qwindowsglcontext.cpp b/src/plugins/platforms/windows/qwindowsglcontext.cpp
index 6fa5a8a2b3..1f49f0aefd 100644
--- a/src/plugins/platforms/windows/qwindowsglcontext.cpp
+++ b/src/plugins/platforms/windows/qwindowsglcontext.cpp
@@ -48,6 +48,7 @@
#include <qpa/qplatformnativeinterface.h>
#include <QtPlatformHeaders/qwglnativecontext.h>
+#include <private/qsystemlibrary_p.h>
#include <algorithm>
#include <wingdi.h>
@@ -162,19 +163,25 @@ QFunctionPointer QWindowsOpengl32DLL::resolve(const char *name)
bool QWindowsOpengl32DLL::init(bool softwareRendering)
{
- const QByteArray opengl32 = QByteArrayLiteral("opengl32.dll");
- const QByteArray swopengl = QByteArrayLiteral("opengl32sw.dll");
+ const QByteArray opengl32 = QByteArrayLiteral("opengl32");
+ const QByteArray swopengl = QByteArrayLiteral("opengl32sw");
+ bool useSystemLib = false;
QByteArray openglDll = qgetenv("QT_OPENGL_DLL");
- if (openglDll.isEmpty())
+ if (openglDll.isEmpty()) {
openglDll = softwareRendering ? swopengl : opengl32;
+ useSystemLib = !softwareRendering;
+ }
openglDll = openglDll.toLower();
m_nonOpengl32 = openglDll != opengl32;
qCDebug(lcQpaGl) << "Qt: Using WGL and OpenGL from" << openglDll;
- m_lib = ::LoadLibraryA(openglDll.constData());
+ if (useSystemLib)
+ m_lib = QSystemLibrary::load((wchar_t*)(QString::fromLatin1(openglDll).utf16()));
+ else
+ m_lib = LoadLibraryA(openglDll.constData());
if (!m_lib) {
qErrnoWarning(::GetLastError(), "Failed to load %s", openglDll.constData());
return false;
@@ -184,7 +191,7 @@ bool QWindowsOpengl32DLL::init(bool softwareRendering)
// Load opengl32.dll always. GDI functions like ChoosePixelFormat do
// GetModuleHandle for opengl32.dll and behave differently (and call back into
// opengl32) when the module is present. This is fine for dummy contexts and windows.
- ::LoadLibraryA("opengl32.dll");
+ QSystemLibrary::load(L"opengl32");
}
wglCreateContext = reinterpret_cast<HGLRC (WINAPI *)(HDC)>(resolve("wglCreateContext"));
diff --git a/src/plugins/platforms/windows/qwindowsopengltester.cpp b/src/plugins/platforms/windows/qwindowsopengltester.cpp
index d7d186e804..9eb4011bf2 100644
--- a/src/plugins/platforms/windows/qwindowsopengltester.cpp
+++ b/src/plugins/platforms/windows/qwindowsopengltester.cpp
@@ -49,6 +49,7 @@
#include <QtCore/qstandardpaths.h>
#include <QtCore/qlibraryinfo.h>
#include <QtCore/qhash.h>
+#include <private/qsystemlibrary_p.h>
#ifndef QT_NO_OPENGL
#include <private/qopengl_p.h>
@@ -396,7 +397,7 @@ bool QWindowsOpenGLTester::testDesktopGL()
// Test #1: Load opengl32.dll and try to resolve an OpenGL 2 function.
// This will typically fail on systems that do not have a real OpenGL driver.
- lib = LoadLibraryA("opengl32.dll");
+ lib = QSystemLibrary::load(L"opengl32");
if (lib) {
CreateContext = reinterpret_cast<CreateContextType>(
reinterpret_cast<QFunctionPointer>(::GetProcAddress(lib, "wglCreateContext")));
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index 3f7f925877..9820d1ec2c 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -2683,32 +2683,30 @@ void QWindowsWindow::getSizeHints(MINMAXINFO *mmi) const
// This block fixes QTBUG-8361, QTBUG-4362: Frameless/title-less windows shouldn't cover the
// taskbar when maximized
- if ((testFlag(WithinMaximize) || window()->windowStates().testFlag(Qt::WindowMinimized))
- && (m_data.flags.testFlag(Qt::FramelessWindowHint)
- || (m_data.flags.testFlag(Qt::CustomizeWindowHint) && !m_data.flags.testFlag(Qt::WindowTitleHint)))) {
- const QScreen *screen = window()->screen();
-
- // Documentation of MINMAXINFO states that it will only work for the primary screen
- if (screen && screen == QGuiApplication::primaryScreen()) {
- const QRect availableGeometry = QHighDpi::toNativePixels(screen->availableGeometry(), screen);
+ if (m_data.flags.testFlag(Qt::FramelessWindowHint)
+ || (m_data.flags.testFlag(Qt::CustomizeWindowHint) && !m_data.flags.testFlag(Qt::WindowTitleHint))) {
+ if (QPlatformScreen *currentScreen = screen()) {
+ const QRect geometry = currentScreen->geometry();
+ const QRect availableGeometry = currentScreen->availableGeometry();
mmi->ptMaxSize.y = availableGeometry.height();
// Width, because you can have the taskbar on the sides too.
mmi->ptMaxSize.x = availableGeometry.width();
// If you have the taskbar on top, or on the left you don't want it at (0,0):
- mmi->ptMaxPosition.x = availableGeometry.x();
- mmi->ptMaxPosition.y = availableGeometry.y();
+ QPoint availablePositionDiff = geometry.topLeft() - availableGeometry.topLeft();
+ mmi->ptMaxPosition.x = availablePositionDiff.x();
+ mmi->ptMaxPosition.y = availablePositionDiff.y();
if (!m_data.flags.testFlag(Qt::FramelessWindowHint)) {
- const int borderWidth = getBorderWidth(screen->handle());
+ const int borderWidth = getBorderWidth(currentScreen);
mmi->ptMaxSize.x += borderWidth * 2;
mmi->ptMaxSize.y += borderWidth * 2;
mmi->ptMaxTrackSize = mmi->ptMaxSize;
mmi->ptMaxPosition.x -= borderWidth;
mmi->ptMaxPosition.y -= borderWidth;
}
- } else if (!screen){
- qWarning("window()->screen() returned a null screen");
+ } else {
+ qWarning("screen() returned a null screen");
}
}
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp
index 5e406017ca..e8c9c27ba8 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp
@@ -58,7 +58,7 @@ const xcb_visualtype_t *QXcbGlxWindow::createVisual()
{
QXcbScreen *scr = xcbScreen();
if (!scr)
- return nullptr;
+ return QXcbWindow::createVisual();
qCDebug(lcQpaGl) << "Requested format before FBConfig/Visual selection:" << m_format;
@@ -71,10 +71,13 @@ const xcb_visualtype_t *QXcbGlxWindow::createVisual()
flags |= QGLX_SUPPORTS_SRGB;
}
+ const auto formatBackup = m_format;
XVisualInfo *visualInfo = qglx_findVisualInfo(dpy, scr->screenNumber(), &m_format, GLX_WINDOW_BIT, flags);
if (!visualInfo) {
- qWarning() << "No XVisualInfo for format" << m_format;
- return nullptr;
+ qCDebug(lcQpaGl) << "No XVisualInfo for format" << m_format;
+ // restore initial format before requesting it again
+ m_format = formatBackup;
+ return QXcbWindow::createVisual();
}
const xcb_visualtype_t *xcb_visualtype = scr->visualForId(visualInfo->visualid);
XFree(visualInfo);
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
index 27a2526df1..5a36cfa0d3 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -645,7 +645,7 @@ void QXcbConnection::xi2ProcessTouch(void *xiDevEvent, QXcbWindow *platformWindo
continue;
if (Q_UNLIKELY(lcQpaXInputEvents().isDebugEnabled()))
qCDebug(lcQpaXInputEvents, " valuator %20s value %lf from range %lf -> %lf",
- atomName(vci.label).constData(), value, vci.min, vci.max);
+ atomName(atom(vci.label)).constData(), value, vci.min, vci.max);
if (value > vci.max)
value = vci.max;
if (value < vci.min)
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
index ffda7b6a57..dfc9c7d7a3 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
@@ -1639,7 +1639,7 @@ void QXcbWindow::setWmWindowType(QXcbWindowFunctions::WmWindowTypes types, Qt::W
break;
}
- if ((flags & Qt::FramelessWindowHint) && !(type & QXcbWindowFunctions::KdeOverride)) {
+ if ((flags & Qt::FramelessWindowHint) && !(types & QXcbWindowFunctions::KdeOverride)) {
// override netwm type - quick and easy for KDE noborder
atoms.append(atom(QXcbAtom::_KDE_NET_WM_WINDOW_TYPE_OVERRIDE));
}
diff --git a/src/plugins/printsupport/cups/qcupsprintengine.cpp b/src/plugins/printsupport/cups/qcupsprintengine.cpp
index 43d5e119ad..1f9cbc4565 100644
--- a/src/plugins/printsupport/cups/qcupsprintengine.cpp
+++ b/src/plugins/printsupport/cups/qcupsprintengine.cpp
@@ -89,8 +89,10 @@ void QCupsPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &v
break;
case PPK_Duplex: {
QPrint::DuplexMode mode = QPrint::DuplexMode(value.toInt());
- if (mode != d->duplex && d->m_printDevice.supportedDuplexModes().contains(mode))
+ if (d->m_printDevice.supportedDuplexModes().contains(mode)) {
d->duplex = mode;
+ d->duplexRequestedExplicitly = true;
+ }
break;
}
case PPK_PrinterName:
@@ -277,9 +279,12 @@ void QCupsPrintEnginePrivate::changePrinter(const QString &newPrinter)
m_printDevice.swap(printDevice);
printerName = m_printDevice.id();
- // Check if new printer supports current settings, otherwise us defaults
- if (duplex != QPrint::DuplexAuto && !m_printDevice.supportedDuplexModes().contains(duplex))
+ // in case a duplex value was explicitly set, check if new printer supports current value,
+ // otherwise use device default
+ if (!duplexRequestedExplicitly || !m_printDevice.supportedDuplexModes().contains(duplex)) {
duplex = m_printDevice.defaultDuplexMode();
+ duplexRequestedExplicitly = false;
+ }
QPrint::ColorMode colorMode = grayscale ? QPrint::GrayScale : QPrint::Color;
if (!m_printDevice.supportedColorModes().contains(colorMode))
grayscale = m_printDevice.defaultColorMode() == QPrint::GrayScale;
diff --git a/src/plugins/printsupport/cups/qcupsprintengine_p.h b/src/plugins/printsupport/cups/qcupsprintengine_p.h
index c021b0c643..8f81fe478d 100644
--- a/src/plugins/printsupport/cups/qcupsprintengine_p.h
+++ b/src/plugins/printsupport/cups/qcupsprintengine_p.h
@@ -100,6 +100,7 @@ private:
QStringList cupsOptions;
QString cupsTempFile;
QPrint::DuplexMode duplex;
+ bool duplexRequestedExplicitly = false;
};
QT_END_NAMESPACE
diff --git a/src/plugins/styles/mac/qmacstyle_mac.mm b/src/plugins/styles/mac/qmacstyle_mac.mm
index 2a37a951f4..adbeec8da7 100644
--- a/src/plugins/styles/mac/qmacstyle_mac.mm
+++ b/src/plugins/styles/mac/qmacstyle_mac.mm
@@ -1680,8 +1680,8 @@ bool QMacStylePrivate::CocoaControl::getCocoaButtonTypeAndBezelStyle(NSButtonTyp
*bezelStyle = NSShadowlessSquareBezelStyle;
break;
case Button_PushButton:
- *buttonType = NSPushOnPushOffButton;
- *bezelStyle = NSRoundedBezelStyle;
+ *buttonType = NSButtonTypeMomentaryPushIn;
+ *bezelStyle = NSBezelStyleRounded;
break;
default:
return false;
@@ -3725,8 +3725,15 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
pb.frame = frameRect.toCGRect();
pb.enabled = isEnabled;
+
+ // With the 'momentary push in' type this gives an impression of a
+ // button in a 'pressed' state (the 'momentary push in' does
+ // not show its state otherwise):
[pb highlight:isPressed];
- pb.state = isHighlighted && !isPressed ? NSOnState : NSOffState;
+ // For default/checked button this will give the required
+ // button accent color:
+ pb.keyEquivalent = isHighlighted ? @"\r" : @"";
+
d->drawNSViewInRect(pb, frameRect, p, ^(CGContextRef, const CGRect &r) {
[pb.cell drawBezelWithFrame:r inView:pb.superview];
});
@@ -3768,16 +3775,22 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
const bool hasText = !btn.text.isEmpty();
const bool isActive = btn.state & State_Active;
const bool isPressed = btn.state & State_Sunken;
+ const bool isDefault = (btn.features & QStyleOptionButton::DefaultButton && !d->autoDefaultButton)
+ || d->autoDefaultButton == btn.styleObject;
const auto ct = cocoaControlType(&btn, w);
if (!hasMenu && ct != QMacStylePrivate::Button_SquareButton) {
- if (isPressed
- || (isActive && isEnabled
- && ((btn.state & State_On)
- || ((btn.features & QStyleOptionButton::DefaultButton) && !d->autoDefaultButton)
- || d->autoDefaultButton == btn.styleObject)))
- btn.palette.setColor(QPalette::ButtonText, Qt::white);
+ if (isPressed || (isActive && isEnabled && ((btn.state & State_On) || isDefault)))
+ btn.palette.setColor(QPalette::ButtonText, Qt::white);
+ }
+
+ if (!isDarkMode() && QOperatingSystemVersion::current() > QOperatingSystemVersion::MacOSBigSur) {
+ if (!isDefault && !(btn.state & State_On)) {
+ // On macOS 12 it's a gray button, white text color (if set in the
+ // previous statement) would be almost invisible.
+ btn.palette.setColor(QPalette::ButtonText, Qt::black);
+ }
}
if ((!hasIcon && !hasMenu) || (hasIcon && !hasText)) {
@@ -3955,6 +3968,13 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
}
pb.frame = frameRect.toCGRect();
+ if (!isPopupButton) {
+ // Note: these days we use 'momentary push in' for Button_PushButton,
+ // but tabs are also rendered using NSButton/ButtonPushButton, and
+ // here we need 'push on/off' to make it work (tab highlight colors).
+ pb.buttonType = NSButtonTypePushOnPushOff;
+ }
+
pb.enabled = isEnabled;
[pb highlight:isPressed];
// Set off state when inactive. See needsInactiveHack for when it's selected
diff --git a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
index 78e5b8d1ef..2a28516719 100644
--- a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
+++ b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
@@ -532,6 +532,7 @@ void QPageSetupWidget::updateWidget()
void QPageSetupWidget::setupPrinter() const
{
m_printer->setPageLayout(m_pageLayout);
+ m_printer->setPageOrientation(m_pageLayout.orientation());
#if QT_CONFIG(cups)
QCUPSSupport::PagesPerSheet pagesPerSheet = qvariant_cast<QCUPSSupport::PagesPerSheet>(m_ui.pagesPerSheetCombo->currentData()
);
diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp
index c5b845f4ec..236e9b4980 100644
--- a/src/printsupport/dialogs/qprintdialog_unix.cpp
+++ b/src/printsupport/dialogs/qprintdialog_unix.cpp
@@ -702,13 +702,14 @@ void QPrintDialogPrivate::selectPrinter(const QPrinter::OutputFormat outputForma
else
options.grayscale->setChecked(true);
- // keep duplex value explicitly set by user, if any, and selected printer supports it;
- // use device default otherwise
+ // duplex priorities to be as follows:
+ // 1) a user-selected duplex value in the dialog has highest prority
+ // 2) duplex value set in the QPrinter
QPrint::DuplexMode duplex;
if (explicitDuplexMode != QPrint::DuplexAuto && supportedDuplexMode.contains(explicitDuplexMode))
duplex = explicitDuplexMode;
else
- duplex = top->d->m_currentPrintDevice.defaultDuplexMode();
+ duplex = static_cast<QPrint::DuplexMode>(p->duplex());
switch (duplex) {
case QPrint::DuplexNone:
options.noDuplex->setChecked(true); break;
diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp
index 32c6166c79..60afef10c3 100644
--- a/src/sql/kernel/qsqlquery.cpp
+++ b/src/sql/kernel/qsqlquery.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtSql module of the Qt Toolkit.
@@ -377,6 +377,10 @@ bool QSqlQuery::exec(const QString& query)
QElapsedTimer t;
t.start();
#endif
+ if (!driver()) {
+ qWarning("QSqlQuery::exec: called before driver has been set up");
+ return false;
+ }
if (d->ref.loadRelaxed() != 1) {
bool fo = isForwardOnly();
*this = QSqlQuery(driver()->createResult());
diff --git a/src/testlib/qplaintestlogger.cpp b/src/testlib/qplaintestlogger.cpp
index 5d9283d8e5..851a284678 100644
--- a/src/testlib/qplaintestlogger.cpp
+++ b/src/testlib/qplaintestlogger.cpp
@@ -225,7 +225,8 @@ void QPlainTestLogger::outputMessage(const char *str)
outputString(str);
}
-void QPlainTestLogger::printMessage(const char *type, const char *msg, const char *file, int line)
+void QPlainTestLogger::printMessage(MessageSource source, const char *type, const char *msg,
+ const char *file, int line)
{
QTEST_ASSERT(type);
QTEST_ASSERT(msg);
@@ -233,13 +234,23 @@ void QPlainTestLogger::printMessage(const char *type, const char *msg, const cha
QTestCharBuffer messagePrefix;
QTestCharBuffer failureLocation;
- if (file) {
#ifdef Q_OS_WIN
-#define FAILURE_LOCATION_STR "\n%s(%d) : failure location"
+ constexpr const char *INCIDENT_LOCATION_STR = "\n%s(%d) : failure location";
+ constexpr const char *OTHER_LOCATION_STR = "\n%s(%d) : message location";
#else
-#define FAILURE_LOCATION_STR "\n Loc: [%s(%d)]"
+ constexpr const char *INCIDENT_LOCATION_STR = "\n Loc: [%s(%d)]";
+ constexpr const char *OTHER_LOCATION_STR = INCIDENT_LOCATION_STR;
#endif
- QTest::qt_asprintf(&failureLocation, FAILURE_LOCATION_STR, file, line);
+
+ if (file) {
+ switch (source) {
+ case MessageSource::Incident:
+ QTest::qt_asprintf(&failureLocation, INCIDENT_LOCATION_STR, file, line);
+ break;
+ case MessageSource::Other:
+ QTest::qt_asprintf(&failureLocation, OTHER_LOCATION_STR, file, line);
+ break;
+ }
}
const char *msgFiller = msg[0] ? " " : "";
@@ -360,7 +371,7 @@ void QPlainTestLogger::stopLogging()
void QPlainTestLogger::enterTestFunction(const char * /*function*/)
{
if (QTestLog::verboseLevel() >= 1)
- printMessage(QTest::messageType2String(Info), "entering");
+ printMessage(MessageSource::Other, QTest::messageType2String(Info), "entering");
}
void QPlainTestLogger::leaveTestFunction()
@@ -375,7 +386,7 @@ void QPlainTestLogger::addIncident(IncidentTypes type, const char *description,
&& QTestLog::verboseLevel() < 0)
return;
- printMessage(QTest::incidentType2String(type), description, file, line);
+ printMessage(MessageSource::Incident, QTest::incidentType2String(type), description, file, line);
}
void QPlainTestLogger::addBenchmarkResult(const QBenchmarkResult &result)
@@ -399,7 +410,7 @@ void QPlainTestLogger::addMessage(MessageTypes type, const QString &message,
if (type != QAbstractTestLogger::QFatal && QTestLog::verboseLevel() < 0)
return;
- printMessage(QTest::messageType2String(type), qPrintable(message), file, line);
+ printMessage(MessageSource::Other, QTest::messageType2String(type), qPrintable(message), file, line);
}
QT_END_NAMESPACE
diff --git a/src/testlib/qplaintestlogger_p.h b/src/testlib/qplaintestlogger_p.h
index 80ef4864c1..1a19b99442 100644
--- a/src/testlib/qplaintestlogger_p.h
+++ b/src/testlib/qplaintestlogger_p.h
@@ -78,7 +78,12 @@ public:
const char *file = nullptr, int line = 0) override;
private:
- void printMessage(const char *type, const char *msg, const char *file = nullptr, int line = 0);
+ enum class MessageSource {
+ Incident,
+ Other,
+ };
+ void printMessage(MessageSource source, const char *type, const char *msg,
+ const char *file = nullptr, int line = 0);
void outputMessage(const char *str);
void printBenchmarkResult(const QBenchmarkResult &result);
};
diff --git a/src/testlib/qtestdata.h b/src/testlib/qtestdata.h
index cf10fed8f3..ed81a9de6e 100644
--- a/src/testlib/qtestdata.h
+++ b/src/testlib/qtestdata.h
@@ -85,6 +85,14 @@ inline QTestData &operator<<(QTestData &data, const char * value)
return data;
}
+#ifdef __cpp_char8_t
+Q_WEAK_OVERLOAD
+inline QTestData &operator<<(QTestData &data, const char8_t *value)
+{
+ return data << reinterpret_cast<const char *>(value);
+}
+#endif
+
#ifdef QT_USE_QSTRINGBUILDER
template<typename A, typename B>
inline QTestData &operator<<(QTestData &data, const QStringBuilder<A, B> &value)
diff --git a/src/testlib/qtestutil_macos.mm b/src/testlib/qtestutil_macos.mm
index 880cd0f91f..e6638e5cb8 100644
--- a/src/testlib/qtestutil_macos.mm
+++ b/src/testlib/qtestutil_macos.mm
@@ -53,8 +53,11 @@ namespace QTestPrivate {
to start with a clean slate and prevents the "previous restore failed"
dialog from showing if there was a test crash.
*/
- void disableWindowRestore() {
- [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ApplePersistenceIgnoreState"];
+ void disableWindowRestore()
+ {
+ [NSUserDefaults.standardUserDefaults registerDefaults:@{
+ @"ApplePersistenceIgnoreState" : @YES
+ }];
}
bool macCrashReporterWillShowDialog()
diff --git a/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp b/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp
index 768594efb4..1d7fa1f783 100644
--- a/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp
+++ b/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp
@@ -61,7 +61,7 @@ static const char docTypeHeader[] =
#define PROGRAMNAME "qdbuscpp2xml"
#define PROGRAMVERSION "0.2"
-#define PROGRAMCOPYRIGHT "Copyright (C) 2020 The Qt Company Ltd."
+#define PROGRAMCOPYRIGHT "Copyright (C) 2022 The Qt Company Ltd."
static QString outputFile;
static int flags;
diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
index 9825596f3d..f2d606101c 100644
--- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
+++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
@@ -46,7 +46,7 @@
#define PROGRAMNAME "qdbusxml2cpp"
#define PROGRAMVERSION "0.8"
-#define PROGRAMCOPYRIGHT "Copyright (C) 2020 The Qt Company Ltd."
+#define PROGRAMCOPYRIGHT "Copyright (C) 2022 The Qt Company Ltd."
#define ANNOTATION_NO_WAIT "org.freedesktop.DBus.Method.NoReply"
diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp
index be6b4a2398..8aaab72239 100644
--- a/src/widgets/dialogs/qmessagebox.cpp
+++ b/src/widgets/dialogs/qmessagebox.cpp
@@ -1894,7 +1894,7 @@ void QMessageBox::aboutQt(QWidget *parent, const QString &title)
"<p>Qt and the Qt logo are trademarks of The Qt Company Ltd.</p>"
"<p>Qt is The Qt Company Ltd product developed as an open source "
"project. See <a href=\"http://%3/\">%3</a> for more information.</p>"
- ).arg(QStringLiteral("2020"),
+ ).arg(QStringLiteral("2022"),
QStringLiteral("qt.io/licensing"),
QStringLiteral("qt.io"));
QMessageBox *msgBox = new QMessageBox(parent);
diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp
index 00c5d5d426..d1639de232 100644
--- a/src/widgets/dialogs/qwizard.cpp
+++ b/src/widgets/dialogs/qwizard.cpp
@@ -256,11 +256,11 @@ public:
bool extension = false;
bool sideWidget = false;
- bool operator==(const QWizardLayoutInfo &other);
- inline bool operator!=(const QWizardLayoutInfo &other) { return !operator==(other); }
+ bool operator==(const QWizardLayoutInfo &other) const;
+ inline bool operator!=(const QWizardLayoutInfo &other) const { return !operator==(other); }
};
-bool QWizardLayoutInfo::operator==(const QWizardLayoutInfo &other)
+bool QWizardLayoutInfo::operator==(const QWizardLayoutInfo &other) const
{
return topLevelMarginLeft == other.topLevelMarginLeft
&& topLevelMarginRight == other.topLevelMarginRight
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp
index 5e65c59796..b45a7bf704 100644
--- a/src/widgets/itemviews/qabstractitemview.cpp
+++ b/src/widgets/itemviews/qabstractitemview.cpp
@@ -1169,12 +1169,21 @@ QModelIndex QAbstractItemView::rootIndex() const
void QAbstractItemView::selectAll()
{
Q_D(QAbstractItemView);
- SelectionMode mode = d->selectionMode;
- if (mode == MultiSelection || mode == ExtendedSelection)
+ const SelectionMode mode = d->selectionMode;
+ switch (mode) {
+ case MultiSelection:
+ case ExtendedSelection:
d->selectAll(QItemSelectionModel::ClearAndSelect
- |d->selectionBehaviorFlags());
- else if (mode != SingleSelection)
- d->selectAll(selectionCommand(d->model->index(0, 0, d->root)));
+ | d->selectionBehaviorFlags());
+ break;
+ case NoSelection:
+ case ContiguousSelection:
+ if (d->model->hasChildren(d->root))
+ d->selectAll(selectionCommand(d->model->index(0, 0, d->root)));
+ break;
+ case SingleSelection:
+ break;
+ }
}
/*!
@@ -3408,15 +3417,39 @@ void QAbstractItemView::rowsAboutToBeRemoved(const QModelIndex &parent, int star
} else {
int row = end + 1;
QModelIndex next;
- do { // find the next visible and enabled item
+ const int rowCount = d->model->rowCount(parent);
+ bool found = false;
+ // find the next visible and enabled item
+ while (row < rowCount && !found) {
next = d->model->index(row++, current.column(), current.parent());
- } while (next.isValid() && (isIndexHidden(next) || !d->isIndexEnabled(next)));
- if (row > d->model->rowCount(parent)) {
+#ifdef QT_DEBUG
+ if (!next.isValid()) {
+ qWarning("Model unexpectedly returned an invalid index");
+ break;
+ }
+#endif
+ if (!isIndexHidden(next) && d->isIndexEnabled(next)) {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
row = start - 1;
- do { // find the previous visible and enabled item
+ // find the previous visible and enabled item
+ while (row >= 0) {
next = d->model->index(row--, current.column(), current.parent());
- } while (next.isValid() && (isIndexHidden(next) || !d->isIndexEnabled(next)));
+#ifdef QT_DEBUG
+ if (!next.isValid()) {
+ qWarning("Model unexpectedly returned an invalid index");
+ break;
+ }
+#endif
+ if (!isIndexHidden(next) && d->isIndexEnabled(next))
+ break;
+ }
}
+
setCurrentIndex(next);
}
}
@@ -3494,9 +3527,19 @@ void QAbstractItemViewPrivate::_q_columnsAboutToBeRemoved(const QModelIndex &par
} else {
int column = end;
QModelIndex next;
- do { // find the next visible and enabled item
+ const int columnCount = model->columnCount(current.parent());
+ // find the next visible and enabled item
+ while (column < columnCount) {
next = model->index(current.row(), column++, current.parent());
- } while (next.isValid() && (q->isIndexHidden(next) || !isIndexEnabled(next)));
+#ifdef QT_DEBUG
+ if (!next.isValid()) {
+ qWarning("Model unexpectedly returned an invalid index");
+ break;
+ }
+#endif
+ if (!q->isIndexHidden(next) && isIndexEnabled(next))
+ break;
+ }
q->setCurrentIndex(next);
}
}
@@ -4498,6 +4541,8 @@ void QAbstractItemViewPrivate::selectAll(QItemSelectionModel::SelectionFlags com
{
if (!selectionModel)
return;
+ if (!model->hasChildren(root))
+ return;
QItemSelection selection;
QModelIndex tl = model->index(0, 0, root);
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index 685d2ccc09..4165232c47 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -634,7 +634,8 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event)
receiver = qt_button_down;
else if(popupChild)
receiver = popupChild;
- QContextMenuEvent e(QContextMenuEvent::Mouse, mapped, event->globalPos(), event->modifiers());
+ const QPoint localPos = receiver->mapFromGlobal(event->globalPos());
+ QContextMenuEvent e(QContextMenuEvent::Mouse, localPos, event->globalPos(), event->modifiers());
QApplication::forwardEvent(receiver, &e, event);
}
#else
diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp
index f4345d97c4..a225d4b563 100644
--- a/src/widgets/styles/qfusionstyle.cpp
+++ b/src/widgets/styles/qfusionstyle.cpp
@@ -2040,22 +2040,24 @@ void QFusionStyle::drawComplexControl(ComplexControl control, const QStyleOption
cachePainter.setPen(d->topShadow());
cachePainter.drawLine(QPoint(r.left() + 2, r.top() + 1), QPoint(r.right() - 2, r.top() + 1));
- // Draw button gradient
- QColor buttonColor = d->buttonColor(option->palette);
- QRect updownRect = upRect.adjusted(0, -2, 0, downRect.height() + 2);
- QLinearGradient gradient = qt_fusion_gradient(updownRect, (isEnabled && option->state & State_MouseOver ) ? buttonColor : buttonColor.darker(104));
+ if (!upRect.isNull()) {
+ // Draw button gradient
+ const QColor buttonColor = d->buttonColor(option->palette);
+ const QRect updownRect = upRect.adjusted(0, -2, 0, downRect.height() + 2);
+ const QLinearGradient gradient = qt_fusion_gradient(updownRect, (isEnabled && option->state & State_MouseOver )
+ ? buttonColor : buttonColor.darker(104));
- // Draw button gradient
- cachePainter.setPen(Qt::NoPen);
- cachePainter.setBrush(gradient);
+ cachePainter.setPen(Qt::NoPen);
+ cachePainter.setBrush(gradient);
- cachePainter.save();
- cachePainter.setClipRect(updownRect);
- cachePainter.drawRoundedRect(r.adjusted(0, 0, -1, -1), 2, 2);
- cachePainter.setPen(QPen(d->innerContrastLine()));
- cachePainter.setBrush(Qt::NoBrush);
- cachePainter.drawRoundedRect(r.adjusted(1, 1, -2, -2), 2, 2);
- cachePainter.restore();
+ cachePainter.save();
+ cachePainter.setClipRect(updownRect);
+ cachePainter.drawRoundedRect(r.adjusted(0, 0, -1, -1), 2, 2);
+ cachePainter.setPen(QPen(d->innerContrastLine()));
+ cachePainter.setBrush(Qt::NoBrush);
+ cachePainter.drawRoundedRect(r.adjusted(1, 1, -2, -2), 2, 2);
+ cachePainter.restore();
+ }
if ((spinBox->stepEnabled & QAbstractSpinBox::StepUpEnabled) && upIsActive) {
if (sunken)
@@ -2083,12 +2085,14 @@ void QFusionStyle::drawComplexControl(ComplexControl control, const QStyleOption
cachePainter.restore();
}
- // outline the up/down buttons
- cachePainter.setPen(outline);
- if (spinBox->direction == Qt::RightToLeft) {
- cachePainter.drawLine(upRect.right(), upRect.top() - 1, upRect.right(), downRect.bottom() + 1);
- } else {
- cachePainter.drawLine(upRect.left(), upRect.top() - 1, upRect.left(), downRect.bottom() + 1);
+ if (spinBox->buttonSymbols != QAbstractSpinBox::NoButtons) {
+ // buttonSymbols == NoButtons results in 'null' rects
+ // and a tiny rect painted in the corner.
+ cachePainter.setPen(outline);
+ if (spinBox->direction == Qt::RightToLeft)
+ cachePainter.drawLine(upRect.right(), upRect.top() - 1, upRect.right(), downRect.bottom() + 1);
+ else
+ cachePainter.drawLine(upRect.left(), upRect.top() - 1, upRect.left(), downRect.bottom() + 1);
}
if (upIsActive && sunken) {
diff --git a/src/widgets/util/qcompleter.cpp b/src/widgets/util/qcompleter.cpp
index 18b24063d8..ef7207a8a3 100644
--- a/src/widgets/util/qcompleter.cpp
+++ b/src/widgets/util/qcompleter.cpp
@@ -1120,6 +1120,8 @@ void QCompleter::setModel(QAbstractItemModel *model)
{
Q_D(QCompleter);
QAbstractItemModel *oldModel = d->proxy->sourceModel();
+ if (oldModel == model)
+ return;
#if QT_CONFIG(filesystemmodel)
if (qobject_cast<const QFileSystemModel *>(oldModel))
setCompletionRole(Qt::EditRole); // QTBUG-54642, clear FileNameRole set by QFileSystemModel
diff --git a/src/widgets/widgets/qmainwindowlayout.cpp b/src/widgets/widgets/qmainwindowlayout.cpp
index d1571263eb..b90b5cdb80 100644
--- a/src/widgets/widgets/qmainwindowlayout.cpp
+++ b/src/widgets/widgets/qmainwindowlayout.cpp
@@ -2663,8 +2663,18 @@ void QMainWindowLayout::hover(QLayoutItem *widgetItem, const QPoint &mousePos)
if (QDockWidget *dw = qobject_cast<QDockWidget*>(widget))
allowed = dw->isAreaAllowed(toDockWidgetArea(path.at(1)));
- if (qobject_cast<QDockWidgetGroupWindow *>(widget))
- allowed = true;
+ // Read permissions from a DockWidgetGroupWindow depending on its DockWidget children
+ if (QDockWidgetGroupWindow* dwgw = qobject_cast<QDockWidgetGroupWindow *>(widget)) {
+ const QList<QDockWidget*> children = dwgw->findChildren<QDockWidget*>(QString(), Qt::FindDirectChildrenOnly);
+
+ if (children.count() == 1) {
+ // Group window has a single child => read its permissions
+ allowed = children.at(0)->isAreaAllowed(toDockWidgetArea(path.at(1)));
+ } else {
+ // Group window has more than one or no children => dock it anywhere
+ allowed = true;
+ }
+ }
#endif
#if QT_CONFIG(toolbar)
if (QToolBar *tb = qobject_cast<QToolBar*>(widget))
diff --git a/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
index a4eb2936b5..7bba0b710b 100644
--- a/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
+++ b/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
@@ -30,6 +30,8 @@
#include <QString>
#include <QtTest/QtTest>
+#include <atomic>
+
using namespace QtConcurrent;
class tst_QtConcurrentRun: public QObject
@@ -50,6 +52,8 @@ private slots:
#endif
void functor();
void lambda();
+ void nullThreadPool();
+ void nullThreadPoolNoLeak();
};
void light()
@@ -732,5 +736,38 @@ void tst_QtConcurrentRun::lambda()
}
}
+// QTBUG-98901
+void tst_QtConcurrentRun::nullThreadPool()
+{
+ QThreadPool *pool = nullptr;
+ std::atomic<bool> isInvoked(false);
+ auto future = run(pool, [&] { isInvoked = true; });
+ future.waitForFinished();
+ QVERIFY(future.isCanceled());
+ QVERIFY(!isInvoked);
+}
+
+struct LifetimeChecker
+{
+ LifetimeChecker() { ++count; }
+ LifetimeChecker(const LifetimeChecker &) { ++count; }
+ ~LifetimeChecker() { --count; }
+
+ void operator()() { }
+
+ static std::atomic<int> count;
+};
+std::atomic<int> LifetimeChecker::count{ 0 };
+
+void tst_QtConcurrentRun::nullThreadPoolNoLeak()
+{
+ {
+ QThreadPool *pool = nullptr;
+ auto future = run(pool, LifetimeChecker());
+ future.waitForFinished();
+ }
+ QCOMPARE(LifetimeChecker::count, 0);
+}
+
QTEST_MAIN(tst_QtConcurrentRun)
#include "tst_qtconcurrentrun.moc"
diff --git a/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp b/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp
index 2b7de50971..d72370d182 100644
--- a/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp
+++ b/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp
@@ -286,7 +286,8 @@ void tst_QAnimationGroup::setParentAutoAdd()
void tst_QAnimationGroup::beginNestedGroup()
{
- QAnimationGroup *parent = new QParallelAnimationGroup();
+ QParallelAnimationGroup group;
+ QAnimationGroup *parent = &group;
for (int i = 0; i < 10; ++i) {
if (i & 1) {
@@ -343,7 +344,8 @@ void tst_QAnimationGroup::addChildTwice()
void tst_QAnimationGroup::loopWithoutStartValue()
{
- QAnimationGroup *parent = new QSequentialAnimationGroup();
+ QSequentialAnimationGroup group;
+ QAnimationGroup *parent = &group;
QObject o;
o.setProperty("ole", 0);
QCOMPARE(o.property("ole").toInt(), 0);
diff --git a/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp b/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp
index 41a051a719..b3f72e3b49 100644
--- a/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp
+++ b/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp
@@ -286,16 +286,16 @@ void tst_QPropertyAnimation::statesAndSignals_data()
void tst_QPropertyAnimation::statesAndSignals()
{
QFETCH(bool, uncontrolled);
- QPropertyAnimation *anim;
+ std::unique_ptr<QPropertyAnimation> anim;
if (uncontrolled)
- anim = new UncontrolledAnimation;
+ anim.reset(new UncontrolledAnimation);
else
- anim = new DummyPropertyAnimation;
+ anim.reset(new DummyPropertyAnimation);
anim->setDuration(100);
- QSignalSpy finishedSpy(anim, &QPropertyAnimation::finished);
- QSignalSpy runningSpy(anim, &QPropertyAnimation::stateChanged);
- QSignalSpy currentLoopSpy(anim, &QPropertyAnimation::currentLoopChanged);
+ QSignalSpy finishedSpy(anim.get(), &QPropertyAnimation::finished);
+ QSignalSpy runningSpy(anim.get(), &QPropertyAnimation::stateChanged);
+ QSignalSpy currentLoopSpy(anim.get(), &QPropertyAnimation::currentLoopChanged);
QVERIFY(finishedSpy.isValid());
QVERIFY(runningSpy.isValid());
@@ -366,8 +366,6 @@ void tst_QPropertyAnimation::statesAndSignals()
QCOMPARE(runningSpy.count(), 1); // anim has stopped
QCOMPARE(finishedSpy.count(), 2);
QCOMPARE(anim->currentLoopTime(), 100);
-
- delete anim;
}
}
@@ -416,9 +414,10 @@ void tst_QPropertyAnimation::deletion1()
void tst_QPropertyAnimation::deletion2()
{
TestAnimationDriver timeDriver;
- //test that the animation get deleted if the object is deleted
+ // test that the animation does not get deleted if the object is deleted
QObject *object = new QWidget;
QPointer<QPropertyAnimation> anim = new QPropertyAnimation(object,"minimumWidth");
+ QVERIFY(anim->parent() != object);
anim->setStartValue(10);
anim->setEndValue(20);
anim->setDuration(200);
@@ -445,14 +444,18 @@ void tst_QPropertyAnimation::deletion2()
QTimer::singleShot(0, object, SLOT(deleteLater()));
timeDriver.wait(50);
+ QVERIFY(anim);
QVERIFY(!anim->targetObject());
+
+ delete anim;
}
void tst_QPropertyAnimation::deletion3()
{
//test that the stopped signal is emit when the animation is destroyed
TestAnimationDriver timeDriver;
- QObject *object = new QWidget;
+ QWidget w;
+ QObject *object = &w;
QPropertyAnimation *anim = new QPropertyAnimation(object,"minimumWidth");
anim->setStartValue(10);
anim->setEndValue(20);
@@ -1327,8 +1330,8 @@ void tst_QPropertyAnimation::totalDuration()
void tst_QPropertyAnimation::zeroLoopCount()
{
- DummyPropertyAnimation* anim;
- anim = new DummyPropertyAnimation;
+ DummyPropertyAnimation animation;
+ auto *anim = &animation;
anim->setStartValue(0);
anim->setDuration(20);
anim->setLoopCount(0);
diff --git a/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
index 62a8321844..f975b7300b 100644
--- a/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
+++ b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
@@ -2099,6 +2099,15 @@ void tst_QTextCodec::toLocal8Bit()
#if !QT_CONFIG(process)
QSKIP("No qprocess support", SkipAll);
#else
+ // Add the executable's directory to path so that we can find the test helper next to it
+ // in a cross-platform way. We must do this because the CWD is not pointing to this directory
+ // in debug-and-release builds.
+ QByteArray path = qgetenv("PATH");
+ qputenv("PATH",
+ path + QDir::listSeparator().toLatin1()
+ + QCoreApplication::applicationDirPath().toLocal8Bit());
+ auto restore = qScopeGuard([&] { qputenv("PATH", path); });
+
QProcess process;
process.start("echo_helper");
QString string(QChar(0x410));
diff --git a/tests/auto/corelib/global/qflags/tst_qflags.cpp b/tests/auto/corelib/global/qflags/tst_qflags.cpp
index c679fbd8e3..fdbd95c64c 100644
--- a/tests/auto/corelib/global/qflags/tst_qflags.cpp
+++ b/tests/auto/corelib/global/qflags/tst_qflags.cpp
@@ -31,6 +31,8 @@ class tst_QFlags: public QObject
{
Q_OBJECT
private slots:
+ void boolCasts() const;
+ void operators() const;
void testFlag() const;
void testFlagZeroFlag() const;
void testFlagMultiBits() const;
@@ -42,6 +44,73 @@ private slots:
void adl();
};
+void tst_QFlags::boolCasts() const
+{
+ // This tests that the operator overloading is sufficient so that common
+ // idioms involving flags -> bool casts work as expected:
+
+ const Qt::Alignment nonNull = Qt::AlignCenter;
+ const Qt::Alignment null = {};
+
+ // basic premiss:
+ QVERIFY(bool(nonNull));
+ QVERIFY(!bool(null));
+
+ // The rest is just checking that stuff compiles:
+
+ // QVERIFY should compile:
+ QVERIFY(nonNull);
+ QVERIFY(!null);
+
+ // ifs should compile:
+ if (null) QFAIL("Can't contextually convert QFlags to bool!");
+ if (!nonNull) QFAIL("Missing operator! on QFlags (shouldn't be necessary).");
+
+ // ternary should compile:
+ QVERIFY(nonNull ? true : false);
+ QVERIFY(!null ? true : false);
+
+ // logical operators should compile:
+ QVERIFY(nonNull && true);
+ QVERIFY(nonNull || false);
+ QVERIFY(!null && true);
+ QVERIFY(!null || false);
+
+ // ... in both directions:
+ QVERIFY(true && nonNull);
+ QVERIFY(false || nonNull);
+ QVERIFY(true && !null);
+ QVERIFY(false || !null);
+
+ // ... and mixed:
+ QVERIFY(null || nonNull);
+ QVERIFY(!(null && nonNull));
+}
+
+void tst_QFlags::operators() const
+{
+#define CHECK(op, LHS, RHS, RES) \
+ do { \
+ using LFlags = QFlags<decltype(LHS)>; \
+ using RFlags = QFlags<decltype(RHS)>; \
+ QCOMPARE((LHS op RHS), (RES)); \
+ QCOMPARE((LFlags(LHS) op RHS), (RES)); \
+ QCOMPARE((LHS op RFlags(RHS)), (RES)); \
+ QCOMPARE((LFlags(LHS) op RFlags(RHS)), (RES)); \
+ QCOMPARE((LFlags(LHS) op ## = RHS), (RES)); \
+ QCOMPARE((LFlags(LHS) op ## = RFlags(RHS)), (RES)); \
+ } while (false)
+
+ CHECK(|, Qt::AlignHCenter, Qt::AlignVCenter, Qt::AlignCenter);
+ CHECK(|, Qt::AlignHCenter, Qt::AlignHCenter, Qt::AlignHCenter);
+ CHECK(&, Qt::AlignHCenter, Qt::AlignVCenter, Qt::Alignment());
+ CHECK(&, Qt::AlignHCenter, Qt::AlignHCenter, Qt::AlignHCenter);
+ CHECK(^, Qt::AlignHCenter, Qt::AlignVCenter, Qt::AlignCenter);
+ CHECK(^, Qt::AlignHCenter, Qt::AlignHCenter, Qt::Alignment());
+
+#undef CHECK
+}
+
void tst_QFlags::testFlag() const
{
Qt::MouseButtons btn = Qt::LeftButton | Qt::RightButton;
diff --git a/tests/auto/corelib/global/qlogging/tst_qlogging.cpp b/tests/auto/corelib/global/qlogging/tst_qlogging.cpp
index 3af637d13a..0f27901f94 100644
--- a/tests/auto/corelib/global/qlogging/tst_qlogging.cpp
+++ b/tests/auto/corelib/global/qlogging/tst_qlogging.cpp
@@ -34,6 +34,8 @@
#endif
#include <QtTest/QTest>
+#include <QtCore/QScopeGuard>
+
class tst_qmessagehandler : public QObject
{
Q_OBJECT
@@ -819,7 +821,17 @@ void tst_qmessagehandler::qMessagePattern()
QFETCH(QList<QByteArray>, expected);
QProcess process;
-#ifndef Q_OS_ANDROID
+
+ // Add the executable's directory to path so that we can find the test helper next to it
+ // in a cross-platform way. We must do this because the CWD is not pointing to this directory
+ // in debug-and-release builds.
+ QByteArray path = qgetenv("PATH");
+ qputenv("PATH",
+ path + QDir::listSeparator().toLatin1()
+ + QCoreApplication::applicationDirPath().toLocal8Bit());
+ auto restore = qScopeGuard([&] { qputenv("PATH", path); });
+
+#if !defined(Q_OS_ANDROID)
const QString appExe(QLatin1String("helper"));
#else
const QString appExe(QCoreApplication::applicationDirPath() + QLatin1String("/libhelper.so"));
@@ -869,8 +881,12 @@ void tst_qmessagehandler::setMessagePattern()
//
QProcess process;
-#ifndef Q_OS_ANDROID
+#ifdef Q_OS_WIN
+ // On Windows the CWD is not the same directory as the helper, so we cannot use "./"
+ // Instead we rely on CreateProcess to find the executable.
const QString appExe(QLatin1String("helper"));
+#elif !defined(Q_OS_ANDROID)
+ const QString appExe(QLatin1String("./helper"));
#else
const QString appExe(QCoreApplication::applicationDirPath() + QLatin1String("/libhelper.so"));
#endif
diff --git a/tests/auto/corelib/io/qdataurl/tst_qdataurl.cpp b/tests/auto/corelib/io/qdataurl/tst_qdataurl.cpp
index 66720d28e0..011af527b4 100644
--- a/tests/auto/corelib/io/qdataurl/tst_qdataurl.cpp
+++ b/tests/auto/corelib/io/qdataurl/tst_qdataurl.cpp
@@ -35,43 +35,45 @@ class tst_QDataUrl : public QObject
Q_OBJECT
private slots:
- void nonData();
- void emptyData();
- void alreadyPercentageEncoded();
+ void decode_data();
+ void decode();
};
-void tst_QDataUrl::nonData()
+void tst_QDataUrl::decode_data()
{
- QLatin1String data("http://test.com");
- QUrl url(data);
- QString mimeType;
- QByteArray payload;
- bool result = qDecodeDataUrl(url, mimeType, payload);
- QVERIFY(!result);
-}
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<bool>("result");
+ QTest::addColumn<QString>("mimeType");
+ QTest::addColumn<QByteArray>("payload");
-void tst_QDataUrl::emptyData()
-{
- QLatin1String data("data:text/plain");
- QUrl url(data);
- QString mimeType;
- QByteArray payload;
- bool result = qDecodeDataUrl(url, mimeType, payload);
- QVERIFY(result);
- QCOMPARE(mimeType, QLatin1String("text/plain;charset=US-ASCII"));
- QVERIFY(payload.isNull());
+ auto row = [](const char *tag, const char *url, bool success, QString mimeType = {}, QByteArray payload = {}) {
+ QTest::newRow(tag) << url << success <<mimeType << payload;
+ };
+
+ row("nonData", "http://test.com", false);
+ row("emptyData", "data:text/plain", true,
+ QLatin1String("text/plain;charset=US-ASCII"));
+ row("alreadyPercentageEncoded", "data:text/plain,%E2%88%9A", true,
+ QLatin1String("text/plain"), QByteArray::fromPercentEncoding("%E2%88%9A"));
}
-void tst_QDataUrl::alreadyPercentageEncoded()
+void tst_QDataUrl::decode()
{
- QLatin1String data("data:text/plain,%E2%88%9A");
- QUrl url(data);
- QString mimeType;
- QByteArray payload;
- bool result = qDecodeDataUrl(url, mimeType, payload);
- QVERIFY(result);
- QCOMPARE(mimeType, QLatin1String("text/plain"));
- QCOMPARE(payload, QByteArray::fromPercentEncoding("%E2%88%9A"));
+ QFETCH(const QString, input);
+ QFETCH(const bool, result);
+ QFETCH(const QString, mimeType);
+ QFETCH(const QByteArray, payload);
+
+ QString actualMimeType;
+ QByteArray actualPayload;
+
+ QUrl url(input);
+ const bool actualResult = qDecodeDataUrl(url, actualMimeType, actualPayload);
+
+ QCOMPARE(actualResult, result);
+ QCOMPARE(actualMimeType, mimeType);
+ QCOMPARE(actualPayload, payload);
+ QCOMPARE(actualPayload.isNull(), payload.isNull()); // assume nullness is significant
}
QTEST_MAIN(tst_QDataUrl)
diff --git a/tests/auto/corelib/io/qfilesystemwatcher/BLACKLIST b/tests/auto/corelib/io/qfilesystemwatcher/BLACKLIST
index 457499591d..90b714758a 100644
--- a/tests/auto/corelib/io/qfilesystemwatcher/BLACKLIST
+++ b/tests/auto/corelib/io/qfilesystemwatcher/BLACKLIST
@@ -1,7 +1,6 @@
# QTBUG-33574 QTBUG-30943
[signalsEmittedAfterFileMoved]
-windows-7sp1
-windows-10
+windows
[watchFileAndItsDirectory:native backend-testfile]
osx
windows
diff --git a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
index da5327594c..4a04e0f7c6 100644
--- a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
+++ b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
@@ -561,7 +561,8 @@ protected:
qint64 readData(char *data, qint64 maxSize) override
{
maxSize = qMin(maxSize, qint64(buf->size() - offset));
- memcpy(data, buf->constData() + offset, maxSize);
+ if (maxSize > 0)
+ memcpy(data, buf->constData() + offset, maxSize);
offset += maxSize;
return maxSize;
}
@@ -604,13 +605,15 @@ protected:
qint64 readData(char *data, qint64 maxSize) override
{
maxSize = qMin(maxSize, qint64(buf.size() - pos()));
- memcpy(data, buf.constData() + pos(), maxSize);
+ if (maxSize > 0)
+ memcpy(data, buf.constData() + pos(), maxSize);
return maxSize;
}
qint64 writeData(const char *data, qint64 maxSize) override
{
maxSize = qMin(maxSize, qint64(buf.size() - pos()));
- memcpy(buf.data() + pos(), data, maxSize);
+ if (maxSize > 0)
+ memcpy(buf.data() + pos(), data, maxSize);
return maxSize;
}
diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
index db60bead64..ac3b998218 100644
--- a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
+++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
-** Copyright (C) 2020 Intel Corporation.
+** Copyright (C) 2022 Intel Corporation.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
@@ -150,6 +150,8 @@ private slots:
void startStopStartStopBuffers();
void processEventsInAReadyReadSlot_data();
void processEventsInAReadyReadSlot();
+ void startFromCurrentWorkingDir_data();
+ void startFromCurrentWorkingDir();
// keep these at the end, since they use lots of processes and sometimes
// caused obscure failures to occur in tests that followed them (esp. on the Mac)
@@ -2731,5 +2733,94 @@ void tst_QProcess::finishProcessBeforeReadingDone_deprecated()
#endif
+enum class ChdirMode {
+ None = 0,
+ InParent,
+ InChild
+};
+Q_DECLARE_METATYPE(ChdirMode)
+
+void tst_QProcess::startFromCurrentWorkingDir_data()
+{
+ qRegisterMetaType<ChdirMode>();
+ QTest::addColumn<QString>("programPrefix");
+ QTest::addColumn<ChdirMode>("chdirMode");
+ QTest::addColumn<bool>("success");
+
+ constexpr bool IsWindows = true
+#ifdef Q_OS_UNIX
+ && false
+#endif
+ ;
+
+ // baseline: trying to execute the directory, this can't possibly succeed!
+ QTest::newRow("plain-same-cwd") << QString() << ChdirMode::None << false;
+
+ // cross-platform behavior: neither OS searches the setWorkingDirectory()
+ // dir without "./"
+ QTest::newRow("plain-child-chdir") << QString() << ChdirMode::InChild << false;
+
+ // cross-platform behavior: both OSes search the parent's CWD with "./"
+ QTest::newRow("prefixed-parent-chdir") << "./" << ChdirMode::InParent << true;
+
+ // opposite behaviors: Windows searches the parent's CWD and Unix searches
+ // the child's with "./"
+ QTest::newRow("prefixed-child-chdir") << "./" << ChdirMode::InChild << !IsWindows;
+
+ // Windows searches the parent's CWD without "./"
+ QTest::newRow("plain-parent-chdir") << QString() << ChdirMode::InParent << IsWindows;
+}
+
+void tst_QProcess::startFromCurrentWorkingDir()
+{
+ QFETCH(QString, programPrefix);
+ QFETCH(ChdirMode, chdirMode);
+ QFETCH(bool, success);
+
+ QProcess process;
+ qRegisterMetaType<QProcess::ProcessError>();
+ QSignalSpy errorSpy(&process, &QProcess::errorOccurred);
+ QVERIFY(errorSpy.isValid());
+
+ // both the dir name and the executable name
+ const QString target = QStringLiteral("testProcessNormal");
+ process.setProgram(programPrefix + target);
+
+#ifdef Q_OS_UNIX
+ // Reset PATH, to be sure it doesn't contain . or the empty path.
+ // We can't do this on Windows because DLLs are searched in PATH
+ // and Windows always searches "." anyway.
+ auto restoreEnv = qScopeGuard([old = qgetenv("PATH")] {
+ qputenv("PATH", old);
+ });
+ qputenv("PATH", "/");
+#endif
+
+ switch (chdirMode) {
+ case ChdirMode::InParent: {
+ auto restoreCwd = qScopeGuard([old = QDir::currentPath()] {
+ QDir::setCurrent(old);
+ });
+ QVERIFY(QDir::setCurrent(target));
+ process.start();
+ break;
+ }
+ case ChdirMode::InChild:
+ process.setWorkingDirectory(target);
+ Q_FALLTHROUGH();
+ case ChdirMode::None:
+ process.start();
+ break;
+ }
+
+ QCOMPARE(process.waitForStarted(), success);
+ QCOMPARE(errorSpy.count(), int(!success));
+ if (success) {
+ QVERIFY(process.waitForFinished());
+ } else {
+ QCOMPARE(process.error(), QProcess::FailedToStart);
+ }
+}
+
QTEST_MAIN(tst_QProcess)
#include "tst_qprocess.moc"
diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp
index 5687a63314..780b6165c3 100644
--- a/tests/auto/corelib/io/qurl/tst_qurl.cpp
+++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp
@@ -3497,7 +3497,7 @@ void tst_QUrl::effectiveTLDs_data()
<< ".app.os.stg.fedoraproject.org";
QTest::newRow("development.run") << QUrl::fromEncoded("http://test.development.run") << ".development.run";
QTest::newRow("crafting.xyz") << QUrl::fromEncoded("http://test.crafting.xyz") << ".crafting.xyz";
- QTest::newRow("nym.ie") << QUrl::fromEncoded("http://shamus.nym.ie") << ".nym.ie";
+ QTest::newRow("nym.ie") << QUrl::fromEncoded("http://shamus.nym.ie") << ".ie";
QTest::newRow("vapor.cloud") << QUrl::fromEncoded("http://test.vapor.cloud") << ".vapor.cloud";
QTest::newRow("official.academy") << QUrl::fromEncoded("http://acredited.official.academy") << ".official.academy";
}
diff --git a/tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp b/tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp
index d61d45bc52..084cd68e0f 100644
--- a/tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp
+++ b/tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp
@@ -145,14 +145,14 @@ QAbstractItemModel *ModelsToTest::createModel(const QString &modelType)
if (modelType == "QSortFilterProxyModelEmpty") {
QSortFilterProxyModel *model = new QSortFilterProxyModel;
- QStandardItemModel *standardItemModel = new QStandardItemModel;
+ QStandardItemModel *standardItemModel = new QStandardItemModel(model);
model->setSourceModel(standardItemModel);
return model;
}
if (modelType == "QSortFilterProxyModelRegExp") {
QSortFilterProxyModel *model = new QSortFilterProxyModel;
- QStandardItemModel *standardItemModel = new QStandardItemModel;
+ QStandardItemModel *standardItemModel = new QStandardItemModel(model);
model->setSourceModel(standardItemModel);
populateTestArea(model);
model->setFilterRegularExpression(QRegularExpression("(^$|I.*)"));
@@ -161,7 +161,7 @@ QAbstractItemModel *ModelsToTest::createModel(const QString &modelType)
if (modelType == "QSortFilterProxyModel") {
QSortFilterProxyModel *model = new QSortFilterProxyModel;
- QStandardItemModel *standardItemModel = new QStandardItemModel;
+ QStandardItemModel *standardItemModel = new QStandardItemModel(model);
model->setSourceModel(standardItemModel);
populateTestArea(model);
return model;
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
index 9bd66c0835..25da013292 100644
--- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -3024,6 +3024,16 @@ void tst_QObject::recursiveSignalEmission()
QSKIP("No qprocess support", SkipAll);
#else
QProcess proc;
+
+ // Add the executable's directory to path so that we can find the test helper next to it
+ // in a cross-platform way. We must do this because the CWD is not pointing to this directory
+ // in debug-and-release builds.
+ QByteArray pathEnv = qgetenv("PATH");
+ qputenv("PATH",
+ pathEnv + QDir::listSeparator().toLatin1()
+ + QCoreApplication::applicationDirPath().toLocal8Bit());
+ auto restore = qScopeGuard([&] { qputenv("PATH", pathEnv); });
+
// signalbug helper app should always be next to this test binary
const QString path = QStringLiteral("signalbug_helper");
proc.start(path);
diff --git a/tests/auto/corelib/kernel/qsharedmemory/tst_qsharedmemory.cpp b/tests/auto/corelib/kernel/qsharedmemory/tst_qsharedmemory.cpp
index fa2d5e3723..6be2744f3e 100644
--- a/tests/auto/corelib/kernel/qsharedmemory/tst_qsharedmemory.cpp
+++ b/tests/auto/corelib/kernel/qsharedmemory/tst_qsharedmemory.cpp
@@ -35,6 +35,7 @@
#include <QTest>
#include <QThread>
#include <QElapsedTimer>
+#include <QScopeGuard>
#define EXISTING_SHARE "existing"
#define EXISTING_SIZE 1024
@@ -444,8 +445,20 @@ void tst_QSharedMemory::readOnly()
QSKIP("No qprocess support", SkipAll);
#elif defined(Q_OS_MACOS)
QSKIP("QTBUG-59936: Times out on macOS", SkipAll);
+#elif defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer)
+ QSKIP("ASan prevents the crash this test is looking for.", SkipAll);
#else
rememberKey("readonly_segfault");
+
+ // Add the executable's directory to path so that we can find the test helper next to it
+ // in a cross-platform way. We must do this because the CWD is not pointing to this directory
+ // in debug-and-release builds.
+ QByteArray path = qgetenv("PATH");
+ qputenv("PATH",
+ path + QDir::listSeparator().toLatin1()
+ + QCoreApplication::applicationDirPath().toLocal8Bit());
+ auto restore = qScopeGuard([&] { qputenv("PATH", path); });
+
// ### on windows disable the popup somehow
QProcess p;
p.start(m_helperBinary, QStringList("readonly_segfault"));
@@ -747,6 +760,15 @@ void tst_QSharedMemory::simpleProcessProducerConsumer()
rememberKey("market");
+ // Add the executable's directory to path so that we can find the test helper next to it
+ // in a cross-platform way. We must do this because the CWD is not pointing to this directory
+ // in debug-and-release builds.
+ QByteArray path = qgetenv("PATH");
+ qputenv("PATH",
+ path + QDir::listSeparator().toLatin1()
+ + QCoreApplication::applicationDirPath().toLocal8Bit());
+ auto restore = qScopeGuard([&] { qputenv("PATH", path); });
+
QProcess producer;
producer.start(m_helperBinary, QStringList("producer"));
QVERIFY2(producer.waitForStarted(), "Could not start helper binary");
diff --git a/tests/auto/corelib/kernel/qsystemsemaphore/tst_qsystemsemaphore.cpp b/tests/auto/corelib/kernel/qsystemsemaphore/tst_qsystemsemaphore.cpp
index 5f010ae3d1..a73d806067 100644
--- a/tests/auto/corelib/kernel/qsystemsemaphore/tst_qsystemsemaphore.cpp
+++ b/tests/auto/corelib/kernel/qsystemsemaphore/tst_qsystemsemaphore.cpp
@@ -70,7 +70,14 @@ private:
};
tst_QSystemSemaphore::tst_QSystemSemaphore()
- : m_helperBinary("acquirerelease_helper")
+ :
+#ifdef Q_OS_WIN
+ // On windows the CWD is not the same as the test binary, so we cannot use the ./ path.
+ m_helperBinary("acquirerelease_helper")
+#else
+ // But on Unix we *must*
+ m_helperBinary("./acquirerelease_helper")
+#endif
{
}
diff --git a/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp
index c47b25eadb..9f4e1773c8 100644
--- a/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp
+++ b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp
@@ -401,9 +401,9 @@ void tst_QTranslator::translationInThreadWhileInstallingTranslator()
thread.runningCondition.wait(&thread.startupLock);
- QTranslator *tor = new QTranslator;
- tor->load("hellotr_la");
- QCoreApplication::installTranslator(tor);
+ QTranslator tor;
+ tor.load("hellotr_la");
+ QCoreApplication::installTranslator(&tor);
++thread.terminate;
diff --git a/tests/auto/corelib/serialization/json/json.pro b/tests/auto/corelib/serialization/json/json.pro
index 8fa17c5c38..390a674f7a 100644
--- a/tests/auto/corelib/serialization/json/json.pro
+++ b/tests/auto/corelib/serialization/json/json.pro
@@ -1,6 +1,7 @@
TARGET = tst_json
QT = core-private testlib
CONFIG += testcase
+contains(QT_CONFIG, c++2a):CONFIG *= c++2a
!android:TESTDATA += bom.json test.json test.bjson test3.json test2.json
else:RESOURCES += json.qrc
diff --git a/tests/auto/corelib/serialization/json/tst_qtjson.cpp b/tests/auto/corelib/serialization/json/tst_qtjson.cpp
index 3e58dd03cc..3f242ba2a0 100644
--- a/tests/auto/corelib/serialization/json/tst_qtjson.cpp
+++ b/tests/auto/corelib/serialization/json/tst_qtjson.cpp
@@ -68,6 +68,7 @@ private Q_SLOTS:
void testObjectNestedEmpty();
void testValueRef();
+ void testValueRefComparison();
void testObjectIteration();
void testArrayIteration();
@@ -176,6 +177,8 @@ private Q_SLOTS:
void fromToVariantConversions_data();
void fromToVariantConversions();
+ void noLeakOnNameClash();
+
private:
QString testDataDir;
};
@@ -908,6 +911,57 @@ void tst_QtJson::testValueRef()
QCOMPARE(object.value(QLatin1String("key")), QJsonValue(42));
}
+void tst_QtJson::testValueRefComparison()
+{
+ QJsonValue a0 = 42.;
+ QJsonValue a1 = QStringLiteral("142");
+
+#define CHECK_IMPL(lhs, rhs, ineq) \
+ QCOMPARE(lhs, rhs); \
+ QVERIFY(!(lhs != rhs)); \
+ QVERIFY(lhs != ineq); \
+ QVERIFY(!(lhs == ineq)); \
+ QVERIFY(ineq != rhs); \
+ QVERIFY(!(ineq == rhs)); \
+ /* end */
+
+#define CHECK(lhs, rhs, ineq) \
+ do { \
+ CHECK_IMPL(lhs, rhs, ineq) \
+ CHECK_IMPL(qAsConst(lhs), rhs, ineq) \
+ CHECK_IMPL(lhs, qAsConst(rhs), ineq) \
+ CHECK_IMPL(qAsConst(lhs), qAsConst(rhs), ineq) \
+ } while (0)
+
+ // check that the (in)equality operators aren't ambiguous in C++20:
+ QJsonArray a = {a0, a1};
+
+ Q_STATIC_ASSERT((std::is_same<decltype(a[0]), QJsonValueRef>::value));
+
+ auto r0 = a.begin()[0];
+ auto r1 = a.begin()[1];
+ auto c0 = qAsConst(a).begin()[0];
+ // ref <> ref
+ CHECK(r0, r0, r1);
+ // cref <> ref
+ CHECK(c0, r0, r1);
+ // ref <> cref
+ CHECK(r0, c0, r1);
+ // ref <> val
+ CHECK(r0, a0, r1);
+ // cref <> val
+ CHECK(c0, a0, r1);
+ // val <> ref
+ CHECK(a0, r0, a1);
+ // val <> cref
+ CHECK(a0, c0, a1);
+ // val <> val
+ CHECK(a0, a0, a1);
+
+#undef CHECK
+#undef CHECK_IMPL
+}
+
void tst_QtJson::testObjectIteration()
{
QJsonObject object;
@@ -3685,5 +3739,23 @@ void tst_QtJson::fromToVariantConversions()
}
}
+void tst_QtJson::noLeakOnNameClash()
+{
+ QJsonDocument doc = QJsonDocument::fromJson("{\"\":{\"\":0},\"\":0}");
+ QVERIFY(!doc.isNull());
+ const QJsonObject obj = doc.object();
+
+ // Removed the duplicate key.
+ QCOMPARE(obj.length(), 1);
+
+ // Retained the last of the duplicates.
+ const QJsonValue val = obj.begin().value();
+ QVERIFY(val.isDouble());
+ QCOMPARE(val.toDouble(), 0.0);
+
+ // It should not leak.
+ // In particular it should not forget to deref the container for the inner object.
+}
+
QTEST_MAIN(tst_QtJson)
#include "tst_qtjson.moc"
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest.zip b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest.zip
new file mode 100644
index 0000000000..14ec3c5988
--- /dev/null
+++ b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest.zip
Binary files differ
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries
deleted file mode 100644
index 56dc3e5713..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Entries
+++ /dev/null
@@ -1,6 +0,0 @@
-/canonxml.html/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/readme.html/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/xmltest.xml/1.11/Wed Apr 13 19:30:48 2005//
-D/invalid////
-D/not-wf////
-D/valid////
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository
deleted file mode 100644
index e4b881877e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html
deleted file mode 100644
index 2ba0edf6c6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/canonxml.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<HTML>
-<TITLE>Canonical XML</TITLE>
-<BODY>
-<H1>Canonical XML</H1>
-<P>
-This document defines a subset of XML called canonical XML.
-The intended use of canonical XML is in testing XML processors,
-as a representation of the result of parsing an XML document.
-<P>
-Every well-formed XML document has a unique structurally equivalent
-canonical XML document. Two structurally equivalent XML
-documents have a byte-for-byte identical canonical XML document.
-Canonicalizing an XML document requires only information that an XML
-processor is required to make available to an application.
-<P>
-A canonical XML document conforms to the following grammar:
-<PRE>
-CanonXML ::= Pi* element Pi*
-element ::= Stag (Datachar | Pi | element)* Etag
-Stag ::= '&lt;' Name Atts '&gt;'
-Etag ::= '&lt;/' Name '&gt;'
-Pi ::= '&lt;?' Name ' ' (((Char - S) Char*)? - (Char* '?&gt;' Char*)) '?&gt;'
-Atts ::= (' ' Name '=' '"' Datachar* '"')*
-Datachar ::= '&amp;amp;' | '&amp;lt;' | '&amp;gt;' | '&amp;quot;'
- | '&amp;#9;'| '&amp;#10;'| '&amp;#13;'
- | (Char - ('&amp;' | '&lt;' | '&gt;' | '"' | #x9 | #xA | #xD))
-Name ::= (see XML spec)
-Char ::= (see XML spec)
-S ::= (see XML spec)
-</PRE>
-<P>
-Attributes are in lexicographical order (in Unicode bit order).
-<P>
-A canonical XML document is encoded in UTF-8.
-<P>
-Ignorable white space is considered significant and is treated equivalently
-to data.
-<P>
-<ADDRESS>
-<A HREF="mailto:jjc@jclark.com">James Clark</A>
-</ADDRESS>
-
-</BODY>
-</HTML> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent
deleted file mode 100644
index 4cb848b438..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ENTITY % e "(#PCDATA">
-<!ELEMENT doc %e;)>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml
deleted file mode 100644
index 5a3a96d1ab..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/002.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "002.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent
deleted file mode 100644
index 85e16474a6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ENTITY % e ">">
-<!ELEMENT doc (#PCDATA) %e;
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml
deleted file mode 100644
index 383553d24f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/005.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "005.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent
deleted file mode 100644
index 116ca79657..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ENTITY % e "(#PCDATA)>">
-<!ELEMENT doc %e;
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml
deleted file mode 100644
index 2f14e839e2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/006.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "006.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries
deleted file mode 100644
index 04159c511f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Entries
+++ /dev/null
@@ -1,7 +0,0 @@
-/002.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-D/not-sa////
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository
deleted file mode 100644
index 3df0ffe37c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/invalid
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent
deleted file mode 100644
index 26f2d8beb2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ENTITY % e "INCLUDE[">
-<!ELEMENT doc (#PCDATA)>
-<![ %e; <!ATTLIST doc a1 CDATA "v1"> ]]>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml
deleted file mode 100644
index b639f2551c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/022.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "022.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries
deleted file mode 100644
index 104a6d8a5a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Entries
+++ /dev/null
@@ -1,3 +0,0 @@
-/022.ent/1.1/Tue Feb 26 18:02:12 2002//
-/022.xml/1.1/Tue Feb 26 18:02:12 2002//
-D/out////
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository
deleted file mode 100644
index f86b20a1d9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/022.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries
deleted file mode 100644
index 9692ca4b59..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Entries
+++ /dev/null
@@ -1,2 +0,0 @@
-/022.xml/1.1/Tue Feb 26 18:03:20 2002//
-D
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository
deleted file mode 100644
index 54370965bc..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/invalid/not-sa/out/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries
deleted file mode 100644
index 1784810501..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries
+++ /dev/null
@@ -1 +0,0 @@
-D
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log
deleted file mode 100644
index 818f7c93e6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Entries.Log
+++ /dev/null
@@ -1,3 +0,0 @@
-A D/ext-sa////
-A D/not-sa////
-A D/sa////
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository
deleted file mode 100644
index 18854d8755..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/not-wf
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent
deleted file mode 100644
index 378a2074b7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.ent
+++ /dev/null
@@ -1 +0,0 @@
-&e; \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml
deleted file mode 100644
index aa624cbe71..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/001.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e SYSTEM "001.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent
deleted file mode 100644
index 2cd184a213..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-data
-
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml
deleted file mode 100644
index 9eaf91724f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/002.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e SYSTEM "002.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent
deleted file mode 100644
index ac292ee2f3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><?xml version="1.0" encoding="UTF-8"?>
-data
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml
deleted file mode 100644
index bb60b663ef..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/003.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e SYSTEM "003.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries
deleted file mode 100644
index 85dc74e395..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Entries
+++ /dev/null
@@ -1,7 +0,0 @@
-/001.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003.ent/1.2/Fri Feb 22 18:52:54 2002//
-/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-D
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository
deleted file mode 100644
index 702914cf3a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/ext-sa/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent
deleted file mode 100644
index 00096e572e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<![ INCLUDE [
-<!ELEMENT doc (#PCDATA)>
-]>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml
deleted file mode 100644
index 36188451ae..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/001.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "001.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml
deleted file mode 100644
index dd73174135..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/002.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e "<?xml version='1.0' encoding='UTF-8'?>">
-%e;
-]>
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent
deleted file mode 100644
index abf1b1a35e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<![ IGNORE [
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml
deleted file mode 100644
index dd01f41126..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/003.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "003.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent
deleted file mode 100644
index 552e4f520a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<![ INCLUDE [
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml
deleted file mode 100644
index 20cdf6d0e5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/004.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "004.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent
deleted file mode 100644
index 9a369cef12..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-%e;
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml
deleted file mode 100644
index 383553d24f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/005.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "005.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent
deleted file mode 100644
index 771daf1915..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<![INCLUDE
-<!ELEMENT doc (#PCDATA)>
-]]>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml
deleted file mode 100644
index 2f14e839e2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/006.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "006.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent
deleted file mode 100644
index 9e9866d2ad..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml
deleted file mode 100644
index 38897e34ea..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/007.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "007.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent
deleted file mode 100644
index f8b1cd3dad..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ELEMENT doc ANY>
-<!ENTITY e "100%">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml
deleted file mode 100644
index 54351009cd..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/008.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "008.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent
deleted file mode 100644
index f70eaea9c4..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ELEMENT doc EMPTY>
-<!ENTITY % e "<!--">
-%e; -->
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml
deleted file mode 100644
index 9aa72898c2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/009.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "009.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent
deleted file mode 100644
index 54f3c821b8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ENTITY % e "<!ELEMENT ">
-%e; doc (#PCDATA)>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml
deleted file mode 100644
index 963e4c2f75..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/010.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "010.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent
deleted file mode 100644
index aae4cc2929..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ENTITY % e1 "<!ELEMENT ">
-<!ENTITY % e2 ">">
-%e1; doc (#PCDATA) %e2;
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml
deleted file mode 100644
index dd40c958c3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/011.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "011.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries
deleted file mode 100644
index bfc0687397..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Entries
+++ /dev/null
@@ -1,22 +0,0 @@
-/001.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/007.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/008.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/009.ent/1.1/Mon Mar 25 18:59:43 2002//
-/009.xml/1.1/Mon Mar 25 18:59:17 2002//
-/010.ent/1.1/Mon Mar 25 18:34:47 2002//
-/010.xml/1.1/Mon Mar 25 18:33:57 2002//
-/011.ent/1.1/Mon Mar 25 19:08:52 2002//
-/011.xml/1.1/Mon Mar 25 19:08:40 2002//
-D
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository
deleted file mode 100644
index 031f3dedd2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/not-sa/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml
deleted file mode 100644
index d33ec68dcd..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/001.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<doc>
-<doc
-?
-<a</a>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml
deleted file mode 100644
index 0a64d52428..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/002.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<doc>
-<.doc></.doc>
-</doc>
-
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml
deleted file mode 100644
index e0b8bae4a4..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/003.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><? ?></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml
deleted file mode 100644
index e85bc96e56..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/004.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><?target some data></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml
deleted file mode 100644
index 7cd44ef10c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/005.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><?target some data?</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml
deleted file mode 100644
index 8594c35cc7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/006.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><!-- a comment -- another --></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml
deleted file mode 100644
index 286756fdd5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/007.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&amp no refc</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml
deleted file mode 100644
index 29ef40306b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/008.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&.entity;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml
deleted file mode 100644
index 8e3ff7de10..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/009.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&#RE;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml
deleted file mode 100644
index a6790846c9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/010.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>A & B</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml
deleted file mode 100644
index 57eaf9fc48..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/011.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml
deleted file mode 100644
index 1b2539ffa6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/012.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1=v1></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml
deleted file mode 100644
index 3540df9143..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/013.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1'></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml
deleted file mode 100644
index a613115609..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/014.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="<foo>"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml
deleted file mode 100644
index f2baf947b5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/015.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1=></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml
deleted file mode 100644
index 22d4b2e265..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/016.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1" "v2"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml
deleted file mode 100644
index a76f5929e9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/017.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><![CDATA[</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml
deleted file mode 100644
index 66e204acc4..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/018.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><![CDATA [ stuff]]></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml
deleted file mode 100644
index b835c2d752..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/019.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml
deleted file mode 100644
index b30cfcfc10..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/020.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="A & B"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml
deleted file mode 100644
index 1bfa84aa64..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/021.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="a&b"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml
deleted file mode 100644
index 44c803bf1b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/022.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="&#123:"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml
deleted file mode 100644
index b877ae2a6b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/023.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc 12="34"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml
deleted file mode 100644
index cf68f2c073..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/024.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<doc>
-<123></123>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml
deleted file mode 100644
index 6cba95cd78..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/025.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>]]></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml
deleted file mode 100644
index 347984fa73..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/026.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>]]]></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml
deleted file mode 100644
index cfafaf0d70..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/027.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<doc>
-<!-- abc
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml
deleted file mode 100644
index 522714993a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/028.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<doc>
-<?a pi that is not closed
-</doc>
-
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml
deleted file mode 100644
index 9a8008bc9f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/029.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>abc]]]>def</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml
deleted file mode 100644
index 25861fa19b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/030.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>A form feed ( ) is not legal in data</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml
deleted file mode 100644
index f946536f39..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/031.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><?pi a form feed ( ) is not allowed in a pi?></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml
deleted file mode 100644
index 75952017ca..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/032.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><!-- a form feed ( ) is not allowed in a comment --></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml
deleted file mode 100644
index afd2328402..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/033.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>abcdef</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml
deleted file mode 100644
index d74a77719b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/034.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc >A form-feed is not white space or a name character</doc >
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml
deleted file mode 100644
index e1fc920522..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/035.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>1 < 2 but not in XML</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml
deleted file mode 100644
index b8ecb21ba1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/036.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<doc></doc>
-Illegal data
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml
deleted file mode 100644
index 2e02662926..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/037.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<doc></doc>
-&#32;
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml
deleted file mode 100644
index 68b2803f82..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/038.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc x="foo" y="bar" x="baz"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml
deleted file mode 100644
index 80429e3e40..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/039.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><a></aa></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml
deleted file mode 100644
index dc8ba5a434..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/040.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<doc></doc>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml
deleted file mode 100644
index 30bcdd6bfe..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/041.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<doc/>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml
deleted file mode 100644
index 4ae50efc7b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/042.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc/></doc/>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml
deleted file mode 100644
index 41824eee4b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/043.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<doc/>
-Illegal data
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml
deleted file mode 100644
index 3fc232dc37..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/044.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc/><doc/>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml
deleted file mode 100644
index 00c10f00bf..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/045.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<doc>
-<a/
-</doc>
-
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml
deleted file mode 100644
index 265cb15301..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/046.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<doc>
-<a/</a>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml
deleted file mode 100644
index d18a4a4440..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/047.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<doc>
-<a / >
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml
deleted file mode 100644
index 67419c1ed5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/048.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<doc>
-</doc>
-<![CDATA[]]>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml
deleted file mode 100644
index 3cf0e79422..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/049.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<doc>
-<a><![CDATA[xyz]]]></a>
-<![CDATA[]]></a>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml
deleted file mode 100644
index e69de29bb2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/050.xml
+++ /dev/null
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml
deleted file mode 100644
index b52df12cc4..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/051.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<!-- a comment -->
-<![CDATA[]]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml
deleted file mode 100644
index 8283895990..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/052.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<!-- a comment -->
-&#32;
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml
deleted file mode 100644
index 9d7f36920f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/053.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></DOC>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml
deleted file mode 100644
index eda553c6d3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/054.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY foo PUBLIC "some public id">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml
deleted file mode 100644
index cbb3683a9d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/055.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc [
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml
deleted file mode 100644
index a681684c58..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/056.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc -- a comment -- []>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml
deleted file mode 100644
index 848d347120..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/057.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "whatever" -- a comment -->
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml
deleted file mode 100644
index daba266af2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/058.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 (foo,bar) #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml
deleted file mode 100644
index 316083dc25..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/059.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 NMTOKEN v1>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml
deleted file mode 100644
index 9a610fd38f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/060.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 NAME #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml
deleted file mode 100644
index 59181e706f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/061.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e PUBLIC "whatever""e.ent">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml
deleted file mode 100644
index e62e9cd370..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/062.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY foo"some text">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml
deleted file mode 100644
index 98675b9040..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/063.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<![INCLUDE[ ]]>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml
deleted file mode 100644
index 3888c46b8b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/064.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST e a1 CDATA"foo">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml
deleted file mode 100644
index da9cafd137..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/065.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1(foo|bar) #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml
deleted file mode 100644
index 9c09eb4e5d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/066.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 (foo|bar)#IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml
deleted file mode 100644
index 7e0809bd34..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/067.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 (foo)"foo">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml
deleted file mode 100644
index 53a80a83a8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/068.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 NOTATION(foo) #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml
deleted file mode 100644
index 6f891dd5e1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/069.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!NOTATION eps SYSTEM "eps.exe">
-<!-- missing space before NDATA -->
-<!ENTITY foo SYSTEM "foo.eps"NDATA eps>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml
deleted file mode 100644
index faf4b0ae4c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/070.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!-- a comment ending with three dashes --->
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml
deleted file mode 100644
index 5bd3908968..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/071.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e1 "&e2;">
-<!ENTITY e2 "&e3;">
-<!ENTITY e3 "&e1;">
-]>
-<doc>&e1;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml
deleted file mode 100644
index 743ba79429..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/072.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&foo;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml
deleted file mode 100644
index 2578af42ec..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/073.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "whatever">
-]>
-<doc>&f;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml
deleted file mode 100644
index f8abaeb22c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/074.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "</foo><foo>">
-]>
-<doc>
-<foo>&e;</foo>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml
deleted file mode 100644
index d3dbf50ed6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/075.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e1 "&e2;">
-<!ENTITY e2 "&e3;">
-<!ENTITY e3 "&e1;">
-]>
-<doc a="&e1;"></doc>
-
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml
deleted file mode 100644
index 60546720e7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/076.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="&foo;"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml
deleted file mode 100644
index f8ac23a5a2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/077.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY foo "&bar;">
-]>
-<doc a="&foo;"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml
deleted file mode 100644
index 446cd85ef9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/078.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA "&foo;">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml
deleted file mode 100644
index da016fd3b2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/079.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e1 "&e2;">
-<!ENTITY e2 "&e3;">
-<!ENTITY e3 "&e1;">
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA "&e1;">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml
deleted file mode 100644
index fa4b9e428d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/080.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e1 "&e2;">
-<!ENTITY e2 "&e3;">
-<!ENTITY e3 "&e1;">
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #FIXED "&e1;">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml
deleted file mode 100644
index d676100e8a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/081.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e SYSTEM "nul">
-]>
-<doc a="&e;"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml
deleted file mode 100644
index 3217d6f8b4..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/082.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e SYSTEM "nul">
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA "&e;">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml
deleted file mode 100644
index 469d43fd42..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/083.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e SYSTEM "nul" NDATA n>
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml
deleted file mode 100644
index abbbcdea69..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/084.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e SYSTEM "nul" NDATA n>
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA "&e;">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml
deleted file mode 100644
index ac0aeca3e4..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/085.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc PUBLIC "[" "null.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml
deleted file mode 100644
index df6adfd884..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/086.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY foo PUBLIC "[" "null.xml">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml
deleted file mode 100644
index ed49492a7a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/087.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!NOTATION foo PUBLIC "[" "null.ent">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml
deleted file mode 100644
index da0a68c401..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/088.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #IMPLIED>
-<!ENTITY e '"'>
-]>
-<doc a="&e;></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml
deleted file mode 100644
index 0c6cf404c2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/089.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY % foo SYSTEM "foo.xml" NDATA bar>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml
deleted file mode 100644
index 3fb72f3cc0..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/090.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "<foo a='&#60;'></foo>">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml
deleted file mode 100644
index a61d0914f8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/091.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!NOTATION n SYSTEM "n">
-<!ENTITY % foo SYSTEM "foo.xml" NDATA n>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml
deleted file mode 100644
index be5266dada..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/092.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "<foo a='&#38;'></foo>">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml
deleted file mode 100644
index 4af61bc645..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/093.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&#X58;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml
deleted file mode 100644
index bdec7a4660..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/094.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml VERSION="1.0"?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml
deleted file mode 100644
index 090b8b4eec..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/095.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml encoding="UTF-8" version="1.0"?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml
deleted file mode 100644
index d806c3b952..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/096.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"encoding="UTF-8" ?>
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml
deleted file mode 100644
index d4def544b0..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/097.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0' encoding="UTF-8" ?>
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml
deleted file mode 100644
index 9798496aa3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/098.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" version="1.0"?>
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml
deleted file mode 100644
index d5be08eff0..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/099.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" valid="no" ?>
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml
deleted file mode 100644
index 51e06231c2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/100.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" standalone="YES" ?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml
deleted file mode 100644
index afa5a455fc..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/101.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding=" UTF-8"?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml
deleted file mode 100644
index 8734adaa6e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/102.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0 " ?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml
deleted file mode 100644
index 6c4716798f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/103.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "&#60;foo>">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml
deleted file mode 100644
index dd57396239..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/104.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "<foo>">
-]>
-<doc>&e;</foo></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml
deleted file mode 100644
index 809e705870..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/105.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?pi stuff?>
-<![CDATA[]]>
-<doc>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml
deleted file mode 100644
index d32319ef09..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/106.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?pi data?>
-&#32;<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml
deleted file mode 100644
index 3dfd8200e2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/107.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<![CDATA[]]>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml
deleted file mode 100644
index af5cf50d48..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/108.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<doc>
-<![CDATA [ ]]>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml
deleted file mode 100644
index 5afc03e8db..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/109.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "<doc></doc>">
-]>
-&e;
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml
deleted file mode 100644
index cf54ebe5c0..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/110.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "">
-]>
-<doc></doc>
-&e;
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml
deleted file mode 100644
index 84a469f5d1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/111.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "foo='bar'">
-]>
-<doc &e;></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml
deleted file mode 100644
index 0c5c1a4341..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/112.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<doc>
-<![cdata[data]]>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml
deleted file mode 100644
index 04fc9d2318..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/113.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY % foo "&">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml
deleted file mode 100644
index 1261ee49e1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/114.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY foo "&">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml
deleted file mode 100644
index f111dbe153..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/115.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "&#38;">
-]>
-<doc a="&e;"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml
deleted file mode 100644
index 84bb762fdf..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/116.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "&#38;#9">
-]>
-<doc>&e;7;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml
deleted file mode 100644
index e4a5e572ef..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/117.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "&#38;">
-]>
-<doc>&e;#97;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml
deleted file mode 100644
index 494d53d208..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/118.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "#">
-]>
-<doc>&&e;97;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml
deleted file mode 100644
index aefaa44a1c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/119.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "&#38;">
-]>
-<doc>
-&e;#38;
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml
deleted file mode 100644
index b7d6ff9ce9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/120.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "&#38;">
-]>
-<doc>
-&e;
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml
deleted file mode 100644
index 2b4adcc6b4..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/121.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY #DEFAULT "default">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml
deleted file mode 100644
index ef0b057cee..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/122.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (a, (b) | c)?>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml
deleted file mode 100644
index 06d65f045b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/123.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc ((doc?)))>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml
deleted file mode 100644
index 3bbe0f91a6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/124.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (doc|#PCDATA)*>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml
deleted file mode 100644
index 5f9c22c0c6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/125.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc ((#PCDATA))>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml
deleted file mode 100644
index 13e74d6d5e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/126.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)+>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml
deleted file mode 100644
index a379b9e539..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/127.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)?>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml
deleted file mode 100644
index dd706bb21f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/128.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc CDATA>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml
deleted file mode 100644
index d4e4461a6d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/129.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc - - (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml
deleted file mode 100644
index fa7be641f1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/130.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (doc?) +(foo)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml
deleted file mode 100644
index f34ed453b5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/131.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (doc?) -(foo)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml
deleted file mode 100644
index ab6cc416e9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/132.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (a, (b, c), (d, (e, f) | g))?>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml
deleted file mode 100644
index d2aa604e9f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/133.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (a *)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml
deleted file mode 100644
index c8919c5ef8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/134.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (a) *>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml
deleted file mode 100644
index e639e8b6ea..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/135.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (a & b)?>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml
deleted file mode 100644
index 499e68bcea..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/136.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc O O (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml
deleted file mode 100644
index 723b77f776..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/137.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc(#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml
deleted file mode 100644
index 16934cc88e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/138.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (doc*?)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml
deleted file mode 100644
index 34df52ed93..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/139.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc ()>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml
deleted file mode 100644
index 467d5ed301..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/140.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "<&#x309a;></&#x309a;>">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml
deleted file mode 100644
index 409d0a7568..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/141.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "<X&#xe5c;></X&#xe5c;>">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml
deleted file mode 100644
index 20e88f88b3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/142.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#0;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml
deleted file mode 100644
index 0ee1c614f8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/143.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#31;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml
deleted file mode 100644
index 437548c0ba..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/144.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#xFFFF;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml
deleted file mode 100644
index 71b187a933..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/145.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#xD800;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml
deleted file mode 100644
index d0bfbca723..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/146.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#x110000;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml
deleted file mode 100644
index 3b6145615f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/147.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-<?xml version="1.0"?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml
deleted file mode 100644
index 774dce18fd..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/148.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<!-- -->
-<?xml version="1.0"?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml
deleted file mode 100644
index 725eea0dec..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/149.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<?xml version="1.0"?>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml
deleted file mode 100644
index 44f6b6df92..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/150.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<doc>
-<?xml version="1.0"?>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml
deleted file mode 100644
index fecc4f24e3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/151.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<doc>
-</doc>
-<?xml version="1.0"?>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml
deleted file mode 100644
index b5c5cb26ae..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/152.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml encoding="UTF-8"?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml
deleted file mode 100644
index 5e2973707e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/153.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e "<?xml encoding='UTF-8'?>">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml
deleted file mode 100644
index 96e01d63f5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/154.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?XML version="1.0"?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml
deleted file mode 100644
index 4f16d0f163..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/155.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xmL version="1.0"?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml
deleted file mode 100644
index c6d93fd312..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/156.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<doc>
-<?xMl version="1.0"?>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml
deleted file mode 100644
index 2f058dac3e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/157.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<doc>
-<?xmL?>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml
deleted file mode 100644
index 32b90b722d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/158.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!NOTATION gif PUBLIC "image/gif" "">
-<!ATTLIST #NOTATION gif a1 CDATA #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml
deleted file mode 100644
index 066244cb91..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/159.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e "<![CDATA[Tim & Michael]]>">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml
deleted file mode 100644
index 85424acb1b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/160.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e "">
-<!ENTITY foo "%e;">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml
deleted file mode 100644
index 4f8a5b7b6b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/161.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY % e "#PCDATA">
-<!ELEMENT doc (%e;)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml
deleted file mode 100644
index efae4b190e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/162.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e1 "">
-<!ENTITY % e2 "%e1;">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml
deleted file mode 100644
index e14fb76c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/163.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e "">
-]>
-%e;
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml
deleted file mode 100644
index 98dd267c21..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/164.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e "">
-] %e; >
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml
deleted file mode 100644
index 36c04618ef..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/165.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY% e "">
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml
deleted file mode 100644
index ee2ce28630..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/166.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>ï¿¿</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml
deleted file mode 100644
index 9bdc6c1278..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/167.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>￾</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml
deleted file mode 100644
index f83221a3ad..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/168.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>í €</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml
deleted file mode 100644
index 310029b976..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/169.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>í°€</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml
deleted file mode 100644
index cfa0aee155..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/170.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>÷€€€</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml
deleted file mode 100644
index 48b5c7d3bc..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/171.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!-- ï¿¿ -->
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml
deleted file mode 100644
index 6651d4d299..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/172.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?pi ï¿¿?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml
deleted file mode 100644
index f9f9f42023..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/173.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="ï¿¿"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml
deleted file mode 100644
index 42bef861c6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/174.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><![CDATA[ï¿¿]]></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml
deleted file mode 100644
index 69912f36d2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/175.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e "ï¿¿">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml
deleted file mode 100644
index 9c8e2e47d1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/176.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml
deleted file mode 100644
index 6bc8228879..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/177.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>Aï¿¿</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml
deleted file mode 100644
index e8f2d18eed..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/178.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #IMPLIED>
-]>
-<doc a="&#34;></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml
deleted file mode 100644
index e8f1f419db..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/179.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "&#34;>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml
deleted file mode 100644
index 569d553a8c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/180.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA "&e;">
-<!ENTITY e "v">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml
deleted file mode 100644
index 4341d99ee2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/181.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "&#60;![CDATA[">
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&e;]]></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml
deleted file mode 100644
index 920f431666..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/182.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "&#60;!--">
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&e;--></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml
deleted file mode 100644
index 7a5677de54..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/183.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA | foo*)* >
-<!ELEMENT foo EMPTY>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml
deleted file mode 100644
index 103384a06e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/184.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA | (foo))* >
-<!ELEMENT foo EMPTY>
-]>
-<doc></doc>
-
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent
deleted file mode 100644
index e557426454..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.ent
+++ /dev/null
@@ -1 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml
deleted file mode 100644
index 81d5ef4bcd..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/185.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<!DOCTYPE doc SYSTEM "185.ent">
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml
deleted file mode 100644
index 85b26ec0a2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/186.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE a [
-<!ELEMENT a EMPTY>
-<!ATTLIST a b CDATA #IMPLIED d CDATA #IMPLIED>
-]>
-<a b="c"d="e"/>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries
deleted file mode 100644
index aef1bd67df..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Entries
+++ /dev/null
@@ -1,189 +0,0 @@
-/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/015.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/016.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/017.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/018.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/019.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/020.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/021.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/022.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/023.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/024.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/025.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/026.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/027.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/028.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/029.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/030.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/031.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/032.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/033.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/034.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/035.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/036.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/037.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/038.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/039.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/040.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/041.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/042.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/043.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/044.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/045.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/046.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/047.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/048.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/049.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/050.xml/1.1/Mon Feb 11 18:42:19 2002//
-/051.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/052.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/053.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/054.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/055.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/056.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/057.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/058.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/059.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/060.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/061.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/062.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/063.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/064.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/065.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/066.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/067.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/068.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/069.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/070.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/071.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/072.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/073.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/074.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/075.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/076.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/077.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/078.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/079.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/080.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/081.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/082.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/083.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/084.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/085.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/086.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/087.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/088.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/089.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/090.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/091.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/092.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/093.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/094.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/095.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/096.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/097.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/098.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/099.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/100.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/101.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/102.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/103.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/104.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/105.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/106.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/107.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/108.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/109.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/110.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/111.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/112.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/113.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/114.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/115.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/116.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/117.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/118.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/119.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/120.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/121.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/122.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/123.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/124.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/125.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/126.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/127.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/128.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/129.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/130.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/131.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/132.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/133.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/134.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/135.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/136.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/137.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/138.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/139.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/140.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/141.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/142.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/143.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/144.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/145.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/146.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/147.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/148.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/149.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/150.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/151.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/152.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/153.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/154.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/155.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/156.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/157.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/158.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/159.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/160.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/161.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/162.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/163.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/164.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/165.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/166.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/167.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/168.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/169.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/170.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/171.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/172.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/173.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/174.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/175.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/176.xml/1.2/Mon Apr 22 13:20:31 2002//
-/177.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/178.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/179.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/180.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/181.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/182.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/183.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/184.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/185.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/185.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/186.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/null.ent/1.1/Mon Feb 11 18:43:34 2002//
-D
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository
deleted file mode 100644
index ede48b429c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/not-wf/sa
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent
deleted file mode 100644
index e69de29bb2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/not-wf/sa/null.ent
+++ /dev/null
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html
deleted file mode 100644
index fc7310c68e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/readme.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<HTML>
-<TITLE>XML Test Cases</TITLE>
-<BODY>
-<H1>XML Test Cases version 1998-11-18</H1>
-<P>
-Copyright (C) 1998 James Clark. All rights reserved. Permission is
-granted to copy and modify this collection in any way for internal use
-within a company or organization. Permission is granted to
-redistribute the file <code>xmltest.zip</code> containing this
-collection to third parties provided that no modifications of any kind
-are made to this file. Note that permission to distribute the
-collection in any other form is not granted.
-<P>
-The collection is structured into three directories:
-<DL>
-<DT><CODE>not-wf</CODE>
-<DD>this contains cases that are not well-formed XML documents
-<DT><CODE>valid</CODE>
-<DD>this contains cases that are valid XML documents
-<DT><CODE>invalid</CODE>
-<DD>this contains cases that are well-formed XML documents
-but are not valid XML documents
-</DL>
-<P>
-The <CODE>not-wf</CODE> and <CODE>valid</CODE> directories each have
-three subdirectories:
-<DL>
-<DT>
-<CODE>sa</CODE>
-<DD>
-this contains cases that are standalone (as defined in XML) and do not
-have references to external general entities
-<DT>
-<CODE>ext-sa</CODE>
-<DD>
-this contains case that are standalone and have references to external
-general entities
-<DT>
-<CODE>not-sa</CODE>
-<DD>
-this contains cases that are not standalone
-</DL>
-<P>
-In each directory, files with a <CODE>.xml</CODE> extension are the
-XML document test cases, and files with a <CODE>.ent</CODE> extension
-are external entities referenced by the test cases.
-<P>
-Within the <CODE>valid</CODE> directory, each of these three
-subdirectories has an <CODE>out</CODE> subdirectory which contains an
-equivalent <A HREF="canonxml.html">canonical XML</A> document for each
-of the cases.
-<P>
-<P>
-Bug reports and contributions of new test cases are welcome.
-<P>
-<ADDRESS>
-<A HREF="mailto:jjc@jclark.com">James Clark</A>
-</ADDRESS>
-</BODY>
-</HTML>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries
deleted file mode 100644
index 1784810501..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries
+++ /dev/null
@@ -1 +0,0 @@
-D
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log
deleted file mode 100644
index 818f7c93e6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Entries.Log
+++ /dev/null
@@ -1,3 +0,0 @@
-A D/ext-sa////
-A D/not-sa////
-A D/sa////
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository
deleted file mode 100644
index 48324028e6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/valid
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent
deleted file mode 100644
index 1cff3fd44f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.ent
+++ /dev/null
@@ -1 +0,0 @@
-Data
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml
deleted file mode 100644
index 147d70d2d1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/001.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e SYSTEM "001.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent
deleted file mode 100644
index 45f6d8e74e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.ent
+++ /dev/null
@@ -1 +0,0 @@
-Data \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml
deleted file mode 100644
index 9eaf91724f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/002.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e SYSTEM "002.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent
deleted file mode 100644
index e69de29bb2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.ent
+++ /dev/null
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml
deleted file mode 100644
index bb60b663ef..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/003.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e SYSTEM "003.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent
deleted file mode 100644
index 3436f20001..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.ent
+++ /dev/null
@@ -1 +0,0 @@
-Data \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml
deleted file mode 100644
index 074498ce19..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/004.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e SYSTEM "004.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent
deleted file mode 100644
index c6e97f821f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.ent
+++ /dev/null
@@ -1 +0,0 @@
-<e/><e/><e/> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml
deleted file mode 100644
index 82a6228205..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/005.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (e*)>
-<!ELEMENT e EMPTY>
-<!ENTITY e SYSTEM "005.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent
deleted file mode 100644
index 4df2f0c2ac..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.ent
+++ /dev/null
@@ -1,4 +0,0 @@
-Data
-<e/>
-More data
-<e/>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml
deleted file mode 100644
index 0b326cad4c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/006.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA|e)*>
-<!ELEMENT e EMPTY>
-<!ENTITY e SYSTEM "006.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent
deleted file mode 100644
index ab1d696dd7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.ent
+++ /dev/null
Binary files differ
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml
deleted file mode 100644
index 825e3b286a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/007.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e SYSTEM "007.ent">
-]>
-<doc>X&e;Z</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent
deleted file mode 100644
index c6ca61f9c8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.ent
+++ /dev/null
Binary files differ
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml
deleted file mode 100644
index 3c001b6cb3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/008.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e SYSTEM "008.ent">
-]>
-<doc>X&e;Z</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent
deleted file mode 100644
index 67c3297611..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.ent
+++ /dev/null
@@ -1 +0,0 @@
- \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml
deleted file mode 100644
index a5866e5a77..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/009.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e SYSTEM "009.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent
deleted file mode 100644
index e69de29bb2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.ent
+++ /dev/null
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml
deleted file mode 100644
index 418e9b0141..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/010.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e SYSTEM "010.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent
deleted file mode 100644
index b19be3a497..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.ent
+++ /dev/null
@@ -1 +0,0 @@
-xyzzy
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml
deleted file mode 100644
index 2ceefa1d21..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/011.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e PUBLIC "a not very interesting file" "011.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent
deleted file mode 100644
index 8eb1fb9c41..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.ent
+++ /dev/null
@@ -1 +0,0 @@
-&e4; \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml
deleted file mode 100644
index 5a8f009b4a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/012.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e1 "&e2;">
-<!ENTITY e2 "&e3;">
-<!ENTITY e3 SYSTEM "012.ent">
-<!ENTITY e4 "&e5;">
-<!ENTITY e5 "(e5)">
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&e1;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent
deleted file mode 100644
index 7f25c502dd..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.ent
+++ /dev/null
@@ -1 +0,0 @@
-<e/> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml
deleted file mode 100644
index 7717c97afe..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/013.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (e)>
-<!ELEMENT e (#PCDATA)>
-<!ATTLIST e
- a1 CDATA "a1 default"
- a2 NMTOKENS "a2 default"
->
-<!ENTITY x SYSTEM "013.ent">
-]>
-<doc>&x;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent
deleted file mode 100644
index 470fd6fe44..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.ent
+++ /dev/null
Binary files differ
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml
deleted file mode 100644
index 816fd1e796..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/014.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e SYSTEM "014.ent">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries
deleted file mode 100644
index 33a4a0da95..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Entries
+++ /dev/null
@@ -1,29 +0,0 @@
-/001.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/007.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/008.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/009.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/010.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/011.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/012.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/013.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/014.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-D/out////
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository
deleted file mode 100644
index 3753e3a5c9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml
deleted file mode 100644
index 0a7acf8ebe..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/001.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>Data&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml
deleted file mode 100644
index d4a445e555..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/002.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>Data</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/003.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml
deleted file mode 100644
index 0a7acf8ebe..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/004.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>Data&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml
deleted file mode 100644
index 6e293aa70e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/005.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><e></e><e></e><e></e></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml
deleted file mode 100644
index 04b6fc82ee..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/006.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>Data&#10;<e></e>&#10;More data&#10;<e></e>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml
deleted file mode 100644
index ab2a74c9d1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/007.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>XYZ</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml
deleted file mode 100644
index ab2a74c9d1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/008.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>XYZ</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml
deleted file mode 100644
index a79dff65fd..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/009.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/010.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml
deleted file mode 100644
index bf275adb2b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/011.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>xyzzy&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml
deleted file mode 100644
index 81a251cb4b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/012.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>(e5)</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml
deleted file mode 100644
index 524d94ee6b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/013.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><e a1="a1 default" a2="a2 default"></e></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml
deleted file mode 100644
index 71c6dc3e8e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/014.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>data</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries
deleted file mode 100644
index 577936756f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Entries
+++ /dev/null
@@ -1,15 +0,0 @@
-/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-D
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository
deleted file mode 100644
index 889051e1ae..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/ext-sa/out/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent
deleted file mode 100644
index e69de29bb2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.ent
+++ /dev/null
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml
deleted file mode 100644
index 2d6f41a137..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/001.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc SYSTEM "001.ent" [
-<!ELEMENT doc EMPTY>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent
deleted file mode 100644
index 67c3297611..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.ent
+++ /dev/null
@@ -1 +0,0 @@
- \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml
deleted file mode 100644
index 023fce8499..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/002.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc SYSTEM "002.ent" [
-<!ELEMENT doc EMPTY>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent
deleted file mode 100644
index 931f3ad6d8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-1.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ELEMENT doc EMPTY>
-<!ENTITY % e SYSTEM "003-2.ent">
-<!ATTLIST doc a1 CDATA %e; "v1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent
deleted file mode 100644
index e69de29bb2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003-2.ent
+++ /dev/null
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml
deleted file mode 100644
index 63a5e8bdfc..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/003.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "003-1.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent
deleted file mode 100644
index 40f7ff58a2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-1.ent
+++ /dev/null
@@ -1,4 +0,0 @@
-<!ELEMENT doc EMPTY>
-<!ENTITY % e1 SYSTEM "004-2.ent">
-<!ENTITY % e2 "%e1;">
-%e1;
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent
deleted file mode 100644
index 61def75cb7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004-2.ent
+++ /dev/null
@@ -1 +0,0 @@
-<!ATTLIST doc a1 CDATA "value">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml
deleted file mode 100644
index adc9201496..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/004.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "004-1.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent
deleted file mode 100644
index ade9599032..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-1.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ELEMENT doc EMPTY>
-<!ENTITY % e SYSTEM "005-2.ent">
-%e;
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent
deleted file mode 100644
index bef50b1f38..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005-2.ent
+++ /dev/null
@@ -1 +0,0 @@
-<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml
deleted file mode 100644
index 6bd44cfee0..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/005.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "005-1.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent
deleted file mode 100644
index 8f305a82bd..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ELEMENT doc EMPTY>
-<!ATTLIST doc a1 CDATA "w1" a2 CDATA "w2">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml
deleted file mode 100644
index eb80bb7409..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/006.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc SYSTEM "006.ent" [
-<!ATTLIST doc a1 CDATA "v1">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent
deleted file mode 100644
index fbf4ca4947..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml
deleted file mode 100644
index 38897e34ea..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/007.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "007.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent
deleted file mode 100644
index fbf4ca4947..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml
deleted file mode 100644
index bf777a7ff2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/008.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc PUBLIC "whatever" "008.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent
deleted file mode 100644
index fbf4ca4947..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml
deleted file mode 100644
index c17562fe68..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/009.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc PUBLIC "whatever" "009.ent" [
-<!ATTLIST doc a2 CDATA "v2">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent
deleted file mode 100644
index 52a28f5deb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA "v2">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml
deleted file mode 100644
index 2786b328f3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/010.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc SYSTEM "010.ent" [
-<!ATTLIST doc a1 CDATA "v1">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent
deleted file mode 100644
index fbf4ca4947..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml
deleted file mode 100644
index 03b482bbb6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/011.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY % e SYSTEM "011.ent">
-%e;
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent
deleted file mode 100644
index 7e372e65e9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml
deleted file mode 100644
index 1967edbba7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/012.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY % e SYSTEM "012.ent">
-%e;
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent
deleted file mode 100644
index a3691d9f08..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.ent
+++ /dev/null
@@ -1,4 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<![ INCLUDE [
-<!ATTLIST doc a1 CDATA "v1">
-]]>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml
deleted file mode 100644
index cf44f2600a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/013.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "013.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent
deleted file mode 100644
index 6eaf779329..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.ent
+++ /dev/null
@@ -1,4 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<![ %e; [
-<!ATTLIST doc a1 CDATA "v1">
-]]>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml
deleted file mode 100644
index bd08502489..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/014.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc SYSTEM "014.ent" [
-<!ENTITY % e "INCLUDE">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent
deleted file mode 100644
index 00d2f30e1d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.ent
+++ /dev/null
@@ -1,5 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<![ %e; [
-<!ATTLIST doc a1 CDATA "v1">
-]]>
-<!ATTLIST doc a2 CDATA "v2">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml
deleted file mode 100644
index e04e75ffca..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/015.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc SYSTEM "015.ent" [
-<!ENTITY % e "IGNORE">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent
deleted file mode 100644
index bf77ef8336..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.ent
+++ /dev/null
@@ -1,4 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<![%e;[
-<!ATTLIST doc a1 CDATA "v1">
-]]>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml
deleted file mode 100644
index 4ccf4af350..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/016.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc SYSTEM "016.ent" [
-<!ENTITY % e "INCLUDE">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent
deleted file mode 100644
index ffd9adde61..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e "<!ATTLIST doc a1 CDATA 'v1'>">
-%e;
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml
deleted file mode 100644
index 7fe18f4c7a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/017.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "017.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent
deleted file mode 100644
index 2d46f76fc3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e "'v1'">
-<!ATTLIST doc a1 CDATA %e;>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml
deleted file mode 100644
index 31e90f2405..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/018.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "018.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent
deleted file mode 100644
index d18201a98b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e "'v1'">
-<!ATTLIST doc a1 CDATA%e;>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml
deleted file mode 100644
index b7a18faba0..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/019.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "019.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent
deleted file mode 100644
index 815291c6d2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ENTITY % e "doc">
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST%e;a1 CDATA "v1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml
deleted file mode 100644
index d70892f7ad..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/020.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "020.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent
deleted file mode 100644
index 9f8f2afd2b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ENTITY % e "doc a1 CDATA">
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST %e; "v1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml
deleted file mode 100644
index 70c28730db..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/021.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "021.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent
deleted file mode 100644
index e3268819f7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.ent
+++ /dev/null
@@ -1,5 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e1 "do">
-<!ENTITY % e2 "c">
-<!ENTITY % e3 "%e1;%e2;">
-<!ATTLIST %e3; a1 CDATA "v1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml
deleted file mode 100644
index 1c2484b70b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/023.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "023.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent
deleted file mode 100644
index aa6d0eccac..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.ent
+++ /dev/null
@@ -1,4 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e1 "'v1'">
-<!ENTITY % e2 'a1 CDATA %e1;'>
-<!ATTLIST doc %e2;>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml
deleted file mode 100644
index 96e1ecb61b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/024.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "024.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent
deleted file mode 100644
index 389d259eb1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.ent
+++ /dev/null
@@ -1,5 +0,0 @@
-<!ELEMENT doc EMPTY>
-<!ENTITY % e "x">
-<!ENTITY % e "y">
-<!ENTITY % v "'%e;'">
-<!ATTLIST doc a1 CDATA %v;>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml
deleted file mode 100644
index 8fdbc14c47..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/025.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "025.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent
deleted file mode 100644
index bdc93af639..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.ent
+++ /dev/null
@@ -1 +0,0 @@
-<!ATTLIST doc a1 CDATA "w1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml
deleted file mode 100644
index 7b109c0913..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/026.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc ANY>
-<!ENTITY % e SYSTEM "026.ent">
-%e;
-<!ATTLIST doc a1 CDATA "x1" a2 CDATA "x2">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent
deleted file mode 100644
index 712cce3700..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ENTITY % e "">
-<!ELEMENT doc (#PCDATA %e;)>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml
deleted file mode 100644
index d0c8c7abb5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/027.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "027.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent
deleted file mode 100644
index ac249d7b2c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.ent
+++ /dev/null
@@ -1,2 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<![INCLUDE[<!ATTLIST doc a1 CDATA "v1">]]>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml
deleted file mode 100644
index 50e5248cbf..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/028.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "028.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent
deleted file mode 100644
index df94df5560..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<![IGNORE[<!ATTLIST doc a1 CDATA "v1">]]>
-<!ATTLIST doc a1 CDATA "v2">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml
deleted file mode 100644
index 07e226c1d7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/029.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "029.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent
deleted file mode 100644
index e3864460df..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<![IGNORE[]]>
-<![INCLUDE[]]>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml
deleted file mode 100644
index 01fc2be4ca..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/030.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "030.ent">
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent
deleted file mode 100644
index f7f94ab152..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-1.ent
+++ /dev/null
@@ -1,3 +0,0 @@
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e SYSTEM "031-2.ent">
-<!ENTITY e "<![CDATA[%e;]]>">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent
deleted file mode 100644
index bef50b1f38..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031-2.ent
+++ /dev/null
@@ -1 +0,0 @@
-<!ATTLIST doc a1 CDATA "v1">
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml
deleted file mode 100644
index c3fe5fca71..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/031.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE doc SYSTEM "031-1.ent">
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries
deleted file mode 100644
index 65ee741d6c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Entries
+++ /dev/null
@@ -1,65 +0,0 @@
-/001.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003-1.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003-2.ent/1.1/Mon Feb 11 18:45:43 2002//
-/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004-1.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004-2.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005-1.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005-2.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/007.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/008.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/009.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/010.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/011.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/012.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/013.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/014.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/015.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/015.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/016.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/016.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/017.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/017.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/018.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/018.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/019.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/019.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/020.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/020.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/021.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/021.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/023.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/023.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/024.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/024.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/025.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/025.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/026.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/026.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/027.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/027.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/028.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/028.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/029.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/029.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/030.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/030.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/031-1.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/031-2.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/031.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-D/out////
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository
deleted file mode 100644
index b16565a893..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/valid/not-sa
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/001.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/002.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/003.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml
deleted file mode 100644
index bdc39e2224..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/004.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="value"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/005.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml
deleted file mode 100644
index d07627d7a3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/006.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1" a2="w2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/007.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/008.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml
deleted file mode 100644
index 7293fb63dc..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/009.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1" a2="v2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/010.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/011.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/012.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/013.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/014.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml
deleted file mode 100644
index 131a32fe69..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/015.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a2="v2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/016.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/017.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/018.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/019.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/020.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/021.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/022.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/023.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/024.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml
deleted file mode 100644
index eb3f9674e8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/025.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="x"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml
deleted file mode 100644
index 71c02026e4..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/026.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="w1" a2="x2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/027.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/028.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml
deleted file mode 100644
index 7ac8b2b89d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/029.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/030.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml
deleted file mode 100644
index 03a6c3f9cd..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/031.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&lt;!ATTLIST doc a1 CDATA &quot;v1&quot;&gt;&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries
deleted file mode 100644
index 5c3b4ac876..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Entries
+++ /dev/null
@@ -1,32 +0,0 @@
-/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/015.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/016.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/017.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/018.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/019.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/020.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/021.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/022.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/023.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/024.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/025.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/026.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/027.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/028.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/029.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/030.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/031.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-D
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository
deleted file mode 100644
index 221d7aeedf..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/not-sa/out/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml
deleted file mode 100644
index 7fbef49502..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/001.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml
deleted file mode 100644
index 2e3f1d81dd..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/002.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc ></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml
deleted file mode 100644
index c841b81784..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/003.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc >
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml
deleted file mode 100644
index a9c5756933..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/004.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA #IMPLIED>
-]>
-<doc a1="v1"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml
deleted file mode 100644
index b069efe727..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/005.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA #IMPLIED>
-]>
-<doc a1 = "v1"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml
deleted file mode 100644
index 39a346342f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/006.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA #IMPLIED>
-]>
-<doc a1='v1'></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml
deleted file mode 100644
index cc3dc53166..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/007.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#32;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml
deleted file mode 100644
index b3370eb1cc..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/008.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&amp;&lt;&gt;&quot;&apos;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml
deleted file mode 100644
index 0fa183eccf..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/009.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#x20;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml
deleted file mode 100644
index eb64d18590..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/010.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA #IMPLIED>
-]>
-<doc a1="v1" ></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml
deleted file mode 100644
index 4cac44b4e4..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/011.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA #IMPLIED a2 CDATA #IMPLIED>
-]>
-<doc a1="v1" a2="v2"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml
deleted file mode 100644
index 6ce2a3eae2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/012.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc : CDATA #IMPLIED>
-]>
-<doc :="v1"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml
deleted file mode 100644
index 2f4aae4e28..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/013.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc _.-0123456789 CDATA #IMPLIED>
-]>
-<doc _.-0123456789="v1"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml
deleted file mode 100644
index 47f1f723e3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/014.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc abcdefghijklmnopqrstuvwxyz CDATA #IMPLIED>
-]>
-<doc abcdefghijklmnopqrstuvwxyz="v1"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml
deleted file mode 100644
index 861df8a610..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/015.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc ABCDEFGHIJKLMNOPQRSTUVWXYZ CDATA #IMPLIED>
-]>
-<doc ABCDEFGHIJKLMNOPQRSTUVWXYZ="v1"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml
deleted file mode 100644
index 66b1973c5d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/016.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc><?pi?></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml
deleted file mode 100644
index 827ba963bf..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/017.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc><?pi some data ? > <??></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml
deleted file mode 100644
index 4570903fee..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/018.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc><![CDATA[<foo>]]></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml
deleted file mode 100644
index 3e6b74cbf2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/019.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc><![CDATA[<&]]></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml
deleted file mode 100644
index f749551a1b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/020.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc><![CDATA[<&]>]]]></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml
deleted file mode 100644
index 13dda8c8a5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/021.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc><!-- a comment --></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml
deleted file mode 100644
index 41d300e950..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/022.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc><!-- a comment ->--></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml
deleted file mode 100644
index 3837b831ad..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/023.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e "">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml
deleted file mode 100644
index b0655c634c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/024.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (foo)>
-<!ELEMENT foo (#PCDATA)>
-<!ENTITY e "&#60;foo></foo>">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml
deleted file mode 100644
index ed01f36d89..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/025.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (foo*)>
-<!ELEMENT foo (#PCDATA)>
-]>
-<doc><foo/><foo></foo></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml
deleted file mode 100644
index 1ba033c1a7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/026.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (foo*)>
-<!ELEMENT foo EMPTY>
-]>
-<doc><foo/><foo></foo></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml
deleted file mode 100644
index ee02439051..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/027.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (foo*)>
-<!ELEMENT foo ANY>
-]>
-<doc><foo/><foo></foo></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml
deleted file mode 100644
index 3d95747913..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/028.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml
deleted file mode 100644
index 909f6ff712..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/029.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml
deleted file mode 100644
index 3a7ddaa716..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/030.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version = "1.0"?>
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml
deleted file mode 100644
index a58e05867f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/031.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version='1.0' encoding="UTF-8"?>
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml
deleted file mode 100644
index be55c8d721..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/032.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version='1.0' standalone='yes'?>
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml
deleted file mode 100644
index a3f9053868..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/033.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version='1.0' encoding="UTF-8" standalone='yes'?>
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml
deleted file mode 100644
index 7d52f31c0e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/034.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc/>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml
deleted file mode 100644
index f109a8b782..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/035.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc />
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml
deleted file mode 100644
index 8ab2b3fb16..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/036.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
-<?pi data?>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml
deleted file mode 100644
index f9b2113940..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/037.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
-<!-- comment -->
-
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml
deleted file mode 100644
index d14f41bfe2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/038.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!-- comment -->
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
-
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml
deleted file mode 100644
index 0897316e46..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/039.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?pi data?>
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml
deleted file mode 100644
index 12c419b65b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/040.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA #IMPLIED>
-]>
-<doc a1="&quot;&lt;&amp;&gt;&apos;"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml
deleted file mode 100644
index a59f536277..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/041.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA #IMPLIED>
-]>
-<doc a1="&#65;"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml
deleted file mode 100644
index 5d7c650944..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/042.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#00000000000000000000000000000000065;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml
deleted file mode 100644
index a8095dfe28..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/043.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ATTLIST doc a1 CDATA #IMPLIED>
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc a1="foo
-bar"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml
deleted file mode 100644
index bee1d23e1a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/044.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (e*)>
-<!ELEMENT e EMPTY>
-<!ATTLIST e a1 CDATA "v1" a2 CDATA "v2" a3 CDATA #IMPLIED>
-]>
-<doc>
-<e a3="v3"/>
-<e a1="w1"/>
-<e a2="w2" a3="v3"/>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml
deleted file mode 100644
index e2567f532d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/045.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA "v1">
-<!ATTLIST doc a1 CDATA "z1">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml
deleted file mode 100644
index c50a2846f9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/046.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA "v1">
-<!ATTLIST doc a2 CDATA "v2">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml
deleted file mode 100644
index a4c688cf1a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/047.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>X
-Y</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml
deleted file mode 100644
index c6b2dedbba..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/048.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>]</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml
deleted file mode 100644
index c3cc797b59..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/049.xml
+++ /dev/null
Binary files differ
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml
deleted file mode 100644
index 12303b1af2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/050.xml
+++ /dev/null
Binary files differ
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml
deleted file mode 100644
index 7ae8f6c73a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/051.xml
+++ /dev/null
Binary files differ
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml
deleted file mode 100644
index 3f33a4c760..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/052.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>ð€€ô¿½</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml
deleted file mode 100644
index 0d88f28718..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/053.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "<e/>">
-<!ELEMENT doc (e)>
-<!ELEMENT e EMPTY>
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml
deleted file mode 100644
index 5d1c88b946..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/054.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-
-
-<doc
-></doc
->
-
-
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml
deleted file mode 100644
index da0292c5bc..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/055.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<?pi data?>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml
deleted file mode 100644
index 144871b2a3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/056.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#x0000000000000000000000000000000000000041;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml
deleted file mode 100644
index c1ac849ed1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/057.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (a*)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml
deleted file mode 100644
index 2ff23b233f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/058.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ATTLIST doc a1 NMTOKENS #IMPLIED>
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc a1=" 1 2 "></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml
deleted file mode 100644
index 2171480ecf..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/059.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (e*)>
-<!ELEMENT e EMPTY>
-<!ATTLIST e a1 CDATA #IMPLIED a2 CDATA #IMPLIED a3 CDATA #IMPLIED>
-]>
-<doc>
-<e a1="v1" a2="v2" a3="v3"/>
-<e a1="w1" a2="v2"/>
-<e a1="v1" a2="w2" a3="v3"/>
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml
deleted file mode 100644
index 6cd6b4386b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/060.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>X&#10;Y</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml
deleted file mode 100644
index bbdc152492..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/061.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#163;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml
deleted file mode 100644
index f4ba53090a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/062.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#xe40;&#xe08;&#xe21;ส์</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml
deleted file mode 100644
index 9668f2da73..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/063.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE เจมส์ [
-<!ELEMENT เจมส์ (#PCDATA)>
-]>
-<เจมส์></เจมส์>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml
deleted file mode 100644
index 74a97aa431..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/064.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#x10000;&#x10FFFD;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml
deleted file mode 100644
index f708f2bc17..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/065.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "&#60;">
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml
deleted file mode 100644
index a27340b9a7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/066.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA #IMPLIED>
-<!-- 34 is double quote -->
-<!ENTITY e1 "&#34;">
-]>
-<doc a1="&e1;"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml
deleted file mode 100644
index a0ccf772a5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/067.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#13;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml
deleted file mode 100644
index 8ed806b9a3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/068.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e "&#13;">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml
deleted file mode 100644
index 2437f60530..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/069.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!NOTATION n PUBLIC "whatever">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml
deleted file mode 100644
index eef097df76..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/070.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY % e "<!ELEMENT doc (#PCDATA)>">
-%e;
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml
deleted file mode 100644
index ebfba230a4..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/071.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a ID #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml
deleted file mode 100644
index 6ef39dc49e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/072.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a IDREF #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml
deleted file mode 100644
index 217476d9a9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/073.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a IDREFS #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml
deleted file mode 100644
index 8b2354ff73..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/074.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a ENTITY #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml
deleted file mode 100644
index 33c012441a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/075.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a ENTITIES #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml
deleted file mode 100644
index 65b731cf6d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/076.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a NOTATION (n1|n2) #IMPLIED>
-<!NOTATION n1 SYSTEM "http://www.w3.org/">
-<!NOTATION n2 SYSTEM "http://www.w3.org/">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml
deleted file mode 100644
index e5f301eac8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/077.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a (1|2) #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml
deleted file mode 100644
index b31f40f94e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/078.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #REQUIRED>
-]>
-<doc a="v"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml
deleted file mode 100644
index a3290d6cbb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/079.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #FIXED "v">
-]>
-<doc a="v"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml
deleted file mode 100644
index 3208fa9aa5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/080.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #FIXED "v">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml
deleted file mode 100644
index 51ee1a375c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/081.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (a, b, c)>
-<!ELEMENT a (a?)>
-<!ELEMENT b (b*)>
-<!ELEMENT c (a | b)+>
-]>
-<doc><a/><b/><c><a/></c></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml
deleted file mode 100644
index d5245ac51a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/082.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY % e SYSTEM "e.dtd">
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml
deleted file mode 100644
index 937cfc0bdd..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/083.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY % e PUBLIC 'whatever' "e.dtd">
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml
deleted file mode 100644
index 82760767aa..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/084.xml
+++ /dev/null
@@ -1 +0,0 @@
-<!DOCTYPE doc [<!ELEMENT doc (#PCDATA)>]><doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml
deleted file mode 100644
index cf5834f2a5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/085.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e "<foo>">
-<!ENTITY e "">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml
deleted file mode 100644
index bbc3080db6..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/086.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e "">
-<!ENTITY e "<foo>">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml
deleted file mode 100644
index 34797a67d7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/087.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "<foo/&#62;">
-<!ELEMENT doc (foo)>
-<!ELEMENT foo EMPTY>
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml
deleted file mode 100644
index f97d96848d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/088.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e "&lt;foo>">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml
deleted file mode 100644
index 42ffcb6782..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e "&#x10000;&#x10FFFD;">
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml
deleted file mode 100644
index c392c96084..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/090.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE doc [
-<!ATTLIST e a NOTATION (n) #IMPLIED>
-<!ELEMENT doc (e)*>
-<!ELEMENT e (#PCDATA)>
-<!NOTATION n PUBLIC "whatever">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml
deleted file mode 100644
index 7343d0f795..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/091.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE doc [
-<!NOTATION n SYSTEM "http://www.w3.org/">
-<!ENTITY e SYSTEM "http://www.w3.org/" NDATA n>
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a ENTITY "e">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml
deleted file mode 100644
index 627b74ecdf..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/092.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (a)*>
-<!ELEMENT a EMPTY>
-]>
-<doc>
-<a/>
- <a/> <a/>
-
-
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml
deleted file mode 100644
index 300578eb5c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/093.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>
-
-
-</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml
deleted file mode 100644
index 5726e7db6f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/094.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY % e "foo">
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a1 CDATA "%e;">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml
deleted file mode 100644
index 1fe69596da..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/095.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ATTLIST doc a1 CDATA #IMPLIED>
-<!ATTLIST doc a1 NMTOKENS #IMPLIED>
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc a1="1 2"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml
deleted file mode 100644
index a6f8f43620..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/096.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ATTLIST doc a1 NMTOKENS " 1 2 ">
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent
deleted file mode 100644
index e06554ace2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.ent
+++ /dev/null
@@ -1 +0,0 @@
-<!ATTLIST doc a2 CDATA #IMPLIED>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml
deleted file mode 100644
index c606afa97f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/097.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY % e SYSTEM "097.ent">
-<!ATTLIST doc a1 CDATA "v1">
-%e;
-<!ATTLIST doc a2 CDATA "v2">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml
deleted file mode 100644
index 33a64ce5ae..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/098.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc><?pi x
-y?></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml
deleted file mode 100644
index 1b7214a137..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/099.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml
deleted file mode 100644
index 5b839e76bc..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/100.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ENTITY e PUBLIC ";!*#@$_%" "100.xml">
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml
deleted file mode 100644
index f464484bf5..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/101.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e "&#34;">
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml
deleted file mode 100644
index f239ff5fee..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/102.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #IMPLIED>
-]>
-<doc a="&#34;"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml
deleted file mode 100644
index 1dbbd5bb7c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/103.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc>&#60;doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml
deleted file mode 100644
index 666f43de0f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/104.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #IMPLIED>
-]>
-<doc a="x y"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml
deleted file mode 100644
index 6b3af2b847..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/105.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #IMPLIED>
-]>
-<doc a="x&#9;y"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml
deleted file mode 100644
index 8757c0a5ae..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/106.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #IMPLIED>
-]>
-<doc a="x&#10;y"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml
deleted file mode 100644
index 3d2c2566a7..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/107.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #IMPLIED>
-]>
-<doc a="x&#13;y"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml
deleted file mode 100644
index e919bf229a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/108.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e "
-">
-<!ATTLIST doc a CDATA #IMPLIED>
-]>
-<doc a="x&e;y"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml
deleted file mode 100644
index 33fa38e13b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/109.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a CDATA #IMPLIED>
-]>
-<doc a=""></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml
deleted file mode 100644
index 0c61c65119..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/110.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e "&#13;&#10;">
-<!ATTLIST doc a CDATA #IMPLIED>
-]>
-<doc a="x&e;y"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml
deleted file mode 100644
index cb56f264b0..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/111.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST doc a NMTOKENS #IMPLIED>
-]>
-<doc a="&#32;x&#32;&#32;y&#32;"></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml
deleted file mode 100644
index 27b6a4c793..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/112.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (a | b)>
-<!ELEMENT a (#PCDATA)>
-]>
-<doc><a></a></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml
deleted file mode 100644
index d2edd0f01d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/113.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ATTLIST e a CDATA #IMPLIED>
-]>
-<doc></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml
deleted file mode 100644
index 52e207096d..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/114.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e "<![CDATA[&foo;]]>">
-]>
-<doc>&e;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml
deleted file mode 100644
index d939a67010..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/115.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY e1 "&e2;">
-<!ENTITY e2 "v">
-]>
-<doc>&e1;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml
deleted file mode 100644
index 55ab49620b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/116.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-]>
-<doc><![CDATA[
-]]></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml
deleted file mode 100644
index e4f02b14c8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/117.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY rsqb "]">
-]>
-<doc>&rsqb;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml
deleted file mode 100644
index fba6c44668..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/118.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc (#PCDATA)>
-<!ENTITY rsqb "]]">
-]>
-<doc>&rsqb;</doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml
deleted file mode 100644
index 876e74730c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/119.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE doc [
-<!ELEMENT doc ANY>
-]>
-<doc><!-- -á --></doc>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries
deleted file mode 100644
index 5d10c3447a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Entries
+++ /dev/null
@@ -1,121 +0,0 @@
-/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/015.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/016.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/017.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/018.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/019.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/020.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/021.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/022.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/023.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/024.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/025.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/026.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/027.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/028.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/029.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/030.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/031.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/032.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/033.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/034.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/035.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/036.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/037.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/038.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/039.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/040.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/041.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/042.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/043.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/044.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/045.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/046.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/047.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/048.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/049.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/050.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/051.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/052.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/053.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/054.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/055.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/056.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/057.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/058.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/059.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/060.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/061.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/062.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/063.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/064.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/065.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/066.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/067.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/068.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/069.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/070.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/071.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/072.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/073.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/074.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/075.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/076.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/077.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/078.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/079.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/080.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/081.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/082.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/083.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/084.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/085.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/086.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/087.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/088.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/089.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/090.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/091.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/092.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/093.xml/1.2/Mon Apr 22 13:27:36 2002//
-/094.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/095.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/096.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/097.ent/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/097.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/098.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/099.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/100.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/101.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/102.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/103.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/104.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/105.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/106.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/107.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/108.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/109.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/110.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/111.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/112.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/113.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/114.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/115.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/116.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/117.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/118.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/119.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-D/out////
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository
deleted file mode 100644
index 7dcbee54f2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/valid/sa
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/001.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/002.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/003.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/004.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/005.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/006.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml
deleted file mode 100644
index 97cf3e3b86..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/007.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc> </doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml
deleted file mode 100644
index 3ea232c21a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/008.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&amp;&lt;&gt;&quot;'</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml
deleted file mode 100644
index 97cf3e3b86..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/009.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc> </doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/010.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml
deleted file mode 100644
index 7293fb63dc..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/011.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1" a2="v2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml
deleted file mode 100644
index 5a0c9831ae..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/012.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc :="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml
deleted file mode 100644
index c9c7ec5da8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/013.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc _.-0123456789="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml
deleted file mode 100644
index ac6b28f97a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/014.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc abcdefghijklmnopqrstuvwxyz="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml
deleted file mode 100644
index 8e216eb99b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/015.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc ABCDEFGHIJKLMNOPQRSTUVWXYZ="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml
deleted file mode 100644
index 4fc76928b2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/016.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><?pi ?></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml
deleted file mode 100644
index 3b9a2f8d4e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/017.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><?pi some data ? > <??></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml
deleted file mode 100644
index a5471011df..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/018.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&lt;foo&gt;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml
deleted file mode 100644
index 05d4e2fcf9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/019.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&lt;&amp;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml
deleted file mode 100644
index 95ae08a12e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/020.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&lt;&amp;]&gt;]</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/021.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/022.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/023.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml
deleted file mode 100644
index a9aa2074ff..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/024.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><foo></foo></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml
deleted file mode 100644
index de0f566020..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/025.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><foo></foo><foo></foo></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml
deleted file mode 100644
index de0f566020..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/026.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><foo></foo><foo></foo></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml
deleted file mode 100644
index de0f566020..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/027.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><foo></foo><foo></foo></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/028.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/029.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/030.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/031.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/032.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/033.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/034.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/035.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml
deleted file mode 100644
index 2bcfb06cf1..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/036.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc><?pi data?> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/037.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/038.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml
deleted file mode 100644
index 82d117d492..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/039.xml
+++ /dev/null
@@ -1 +0,0 @@
-<?pi data?><doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml
deleted file mode 100644
index d79cfe1493..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/040.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="&quot;&lt;&amp;&gt;'"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml
deleted file mode 100644
index 6f2cd5832e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/041.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="A"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml
deleted file mode 100644
index f683039a80..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/042.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>A</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml
deleted file mode 100644
index e162b76504..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/043.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="foo bar"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml
deleted file mode 100644
index 78028b704b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/044.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&#10;<e a1="v1" a2="v2" a3="v3"></e>&#10;<e a1="w1" a2="v2"></e>&#10;<e a1="v1" a2="w2" a3="v3"></e>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/045.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml
deleted file mode 100644
index 7293fb63dc..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/046.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1" a2="v2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml
deleted file mode 100644
index b327ebd67f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/047.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>X&#10;Y</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml
deleted file mode 100644
index ced7d02719..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/048.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>]</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml
deleted file mode 100644
index 7cc53f9ea0..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/049.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>£</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml
deleted file mode 100644
index 33703c7925..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/050.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>เจมส์</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml
deleted file mode 100644
index cfeb5a5366..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/051.xml
+++ /dev/null
@@ -1 +0,0 @@
-<เจมส์></เจมส์> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml
deleted file mode 100644
index f5a0484791..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/052.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>ð€€ô¿½</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml
deleted file mode 100644
index c4083843d9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/053.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><e></e></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/054.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml
deleted file mode 100644
index 82d117d492..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/055.xml
+++ /dev/null
@@ -1 +0,0 @@
-<?pi data?><doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml
deleted file mode 100644
index f683039a80..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/056.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>A</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/057.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml
deleted file mode 100644
index f898cc8c98..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/058.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="1 2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml
deleted file mode 100644
index 78028b704b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/059.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&#10;<e a1="v1" a2="v2" a3="v3"></e>&#10;<e a1="w1" a2="v2"></e>&#10;<e a1="v1" a2="w2" a3="v3"></e>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml
deleted file mode 100644
index b327ebd67f..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/060.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>X&#10;Y</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml
deleted file mode 100644
index 7cc53f9ea0..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/061.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>£</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml
deleted file mode 100644
index 33703c7925..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/062.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>เจมส์</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml
deleted file mode 100644
index cfeb5a5366..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/063.xml
+++ /dev/null
@@ -1 +0,0 @@
-<เจมส์></เจมส์> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml
deleted file mode 100644
index f5a0484791..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/064.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>ð€€ô¿½</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/065.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml
deleted file mode 100644
index 7597d31bf9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/066.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="&quot;"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml
deleted file mode 100644
index 4bbdad45ed..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/067.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&#13;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml
deleted file mode 100644
index 4bbdad45ed..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/068.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&#13;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/070.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/071.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/072.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/073.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/074.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/075.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/077.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml
deleted file mode 100644
index fcab0cd7ff..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/078.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="v"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml
deleted file mode 100644
index fcab0cd7ff..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/079.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="v"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml
deleted file mode 100644
index fcab0cd7ff..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/080.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="v"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml
deleted file mode 100644
index e356e7e4db..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/081.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><a></a><b></b><c><a></a></c></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/082.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/083.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/084.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/085.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/086.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml
deleted file mode 100644
index a9aa2074ff..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/087.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><foo></foo></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml
deleted file mode 100644
index a5471011df..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/088.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&lt;foo&gt;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml
deleted file mode 100644
index f5a0484791..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>ð€€ô¿½</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml
deleted file mode 100644
index 87269f79d9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/092.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&#10;<a></a>&#10; <a></a>&#9;<a></a>&#10;&#10;&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml
deleted file mode 100644
index 631bfde91e..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/093.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&#10;&#10;&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml
deleted file mode 100644
index 636ab4729a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/094.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="%e;"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml
deleted file mode 100644
index a20706ee01..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/095.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="1 2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml
deleted file mode 100644
index f898cc8c98..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/096.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="1 2"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml
deleted file mode 100644
index e05cfe6c31..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/097.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a1="v1"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml
deleted file mode 100644
index f6408de9b8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/098.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<doc><?pi x
-y?></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/099.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/100.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/101.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml
deleted file mode 100644
index 6e66b8da21..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/102.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="&quot;"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml
deleted file mode 100644
index 96495d45c3..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/103.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&lt;doc&gt;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml
deleted file mode 100644
index cc3def3336..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/104.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="x y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml
deleted file mode 100644
index 5aed3d613b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/105.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="x&#9;y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml
deleted file mode 100644
index 1197d2ff9c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/106.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="x&#10;y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml
deleted file mode 100644
index 288f23cdf2..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/107.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="x&#13;y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml
deleted file mode 100644
index cc3def3336..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/108.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="x y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml
deleted file mode 100644
index c43bdf9b9c..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/109.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a=""></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml
deleted file mode 100644
index a92237b4ec..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/110.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="x y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml
deleted file mode 100644
index cc3def3336..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/111.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc a="x y"></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml
deleted file mode 100644
index c82f47bca8..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/112.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc><a></a></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/113.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml
deleted file mode 100644
index 8e0722abad..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/114.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&amp;foo;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml
deleted file mode 100644
index 682b8140ec..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/115.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>v</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml
deleted file mode 100644
index a79dff65fd..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/116.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>&#10;</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml
deleted file mode 100644
index ced7d02719..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/117.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>]</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml
deleted file mode 100644
index 31e37a9398..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/118.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc>]]</doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml
deleted file mode 100644
index 7e8f183484..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/119.xml
+++ /dev/null
@@ -1 +0,0 @@
-<doc></doc> \ No newline at end of file
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries
deleted file mode 100644
index 06b9ee385a..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Entries
+++ /dev/null
@@ -1,120 +0,0 @@
-/001.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/002.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/003.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/004.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/005.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/006.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/007.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/008.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/009.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/010.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/011.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/012.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/013.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/014.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/015.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/016.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/017.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/018.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/019.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/020.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/021.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/022.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/023.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/024.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/025.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/026.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/027.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/028.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/029.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/030.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/031.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/032.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/033.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/034.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/035.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/036.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/037.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/038.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/039.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/040.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/041.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/042.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/043.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/044.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/045.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/046.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/047.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/048.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/049.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/050.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/051.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/052.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/053.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/054.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/055.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/056.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/057.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/058.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/059.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/060.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/061.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/062.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/063.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/064.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/065.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/066.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/067.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/068.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/069.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/070.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/071.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/072.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/073.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/074.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/075.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/076.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/077.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/078.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/079.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/080.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/081.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/082.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/083.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/084.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/085.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/086.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/087.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/088.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/089.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/090.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/091.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/092.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/093.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/094.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/095.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/096.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/097.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/098.xml/1.2/Thu Feb 7 19:44:42 2002//
-/099.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/100.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/101.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/102.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/103.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/104.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/105.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/106.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/107.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/108.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/109.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/110.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/111.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/112.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/113.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/114.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/115.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/116.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/117.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/118.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-/119.xml/1.1.1.1/Wed Oct 17 09:52:58 2001//
-D
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository
deleted file mode 100644
index 1e172d2e1b..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Repository
+++ /dev/null
@@ -1 +0,0 @@
-2001/XML-Test-Suite/xmlconf/xmltest/valid/sa/out
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root
deleted file mode 100644
index 3c7177e4bb..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/CVS/Root
+++ /dev/null
@@ -1 +0,0 @@
-:pserver:anonymous@dev.w3.org:/sources/public
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml
deleted file mode 100644
index bf81c88eb9..0000000000
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/xmltest.xml
+++ /dev/null
@@ -1,1433 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- @(#)xmltest.xml 1.12 99/02/12
- Copyright 1998-1999 by Sun Microsystems, Inc.
- All Rights Reserved.
--->
-
-<TESTCASES PROFILE="James Clark XMLTEST cases, 18-Nov-1998">
-
-<!-- Start: not-wf/sa -->
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-001"
- URI="not-wf/sa/001.xml" SECTIONS="3.1 [41]">
- Attribute values must start with attribute names, not "?". </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-002"
- URI="not-wf/sa/002.xml" SECTIONS="2.3 [4]">
- Names may not start with "."; it's not a Letter. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-003"
- URI="not-wf/sa/003.xml" SECTIONS="2.6 [16]">
- Processing Instruction target name is required.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-004"
- URI="not-wf/sa/004.xml" SECTIONS="2.6 [16]">
- SGML-ism: processing instructions end in '?&gt;' not '&gt;'. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-005"
- URI="not-wf/sa/005.xml" SECTIONS="2.6 [16]">
- Processing instructions end in '?&gt;' not '?'. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-006"
- URI="not-wf/sa/006.xml" SECTIONS="2.5 [16]">
- XML comments may not contain "--" </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-007"
- URI="not-wf/sa/007.xml" SECTIONS="4.1 [68]">
- General entity references have no whitespace after the
- entity name and before the semicolon. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-008"
- URI="not-wf/sa/008.xml" SECTIONS="2.3 [5]">
- Entity references must include names, which don't begin
- with '.' (it's not a Letter or other name start character). </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-009"
- URI="not-wf/sa/009.xml" SECTIONS="4.1 [66]">
- Character references may have only decimal or numeric strings.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-010"
- URI="not-wf/sa/010.xml" SECTIONS="4.1 [68]">
- Ampersand may only appear as part of a general entity reference.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-011"
- URI="not-wf/sa/011.xml" SECTIONS="3.1 [41]">
- SGML-ism: attribute values must be explicitly assigned a
- value, it can't act as a boolean toggle. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-012"
- URI="not-wf/sa/012.xml" SECTIONS="2.3 [10]">
- SGML-ism: attribute values must be quoted in all cases. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-013"
- URI="not-wf/sa/013.xml" SECTIONS="2.3 [10]">
- The quotes on both ends of an attribute value must match. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-014"
- URI="not-wf/sa/014.xml" SECTIONS="2.3 [10]">
- Attribute values may not contain literal '&lt;' characters. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-015"
- URI="not-wf/sa/015.xml" SECTIONS="3.1 [41]">
- Attribute values need a value, not just an equals sign. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-016"
- URI="not-wf/sa/016.xml" SECTIONS="3.1 [41]">
- Attribute values need an associated name.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-017"
- URI="not-wf/sa/017.xml" SECTIONS="2.7 [18]">
- CDATA sections need a terminating ']]&gt;'. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-018"
- URI="not-wf/sa/018.xml" SECTIONS="2.7 [19]">
- CDATA sections begin with a literal '&lt;![CDATA[', no space.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-019"
- URI="not-wf/sa/019.xml" SECTIONS="3.1 [42]">
- End tags may not be abbreviated as '&lt;/&gt;'.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-020"
- URI="not-wf/sa/020.xml" SECTIONS="2.3 [10]">
- Attribute values may not contain literal '&amp;'
- characters except as part of an entity reference. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-021"
- URI="not-wf/sa/021.xml" SECTIONS="2.3 [10]">
- Attribute values may not contain literal '&amp;'
- characters except as part of an entity reference. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-022"
- URI="not-wf/sa/022.xml" SECTIONS="4.1 [66]">
- Character references end with semicolons, always!</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-023"
- URI="not-wf/sa/023.xml" SECTIONS="2.3 [5]">
- Digits are not valid name start characters. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-024"
- URI="not-wf/sa/024.xml" SECTIONS="2.3 [5]">
- Digits are not valid name start characters. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-025"
- URI="not-wf/sa/025.xml" SECTIONS="2.4 [14]">
- Text may not contain a literal ']]&gt;' sequence. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-026"
- URI="not-wf/sa/026.xml" SECTIONS="2.4 [14]">
- Text may not contain a literal ']]&gt;' sequence. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-027"
- URI="not-wf/sa/027.xml" SECTIONS="2.5 [15]">
- Comments must be terminated with "--&gt;".</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-028"
- URI="not-wf/sa/028.xml" SECTIONS="2.6 [16]">
- Processing instructions must end with '?&gt;'. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-029"
- URI="not-wf/sa/029.xml" SECTIONS="2.4 [14]">
- Text may not contain a literal ']]&gt;' sequence. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-030"
- URI="not-wf/sa/030.xml" SECTIONS="2.2 [2]">
- A form feed is not a legal XML character. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-031"
- URI="not-wf/sa/031.xml" SECTIONS="2.2 [2]">
- A form feed is not a legal XML character. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-032"
- URI="not-wf/sa/032.xml" SECTIONS="2.2 [2]">
- A form feed is not a legal XML character. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-033"
- URI="not-wf/sa/033.xml" SECTIONS="2.2 [2]">
- An ESC (octal 033) is not a legal XML character. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-034"
- URI="not-wf/sa/034.xml" SECTIONS="2.2 [2]">
- A form feed is not a legal XML character. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-035"
- URI="not-wf/sa/035.xml" SECTIONS="3.1 [43]">
- The '&lt;' character is a markup delimiter and must
- start an element, CDATA section, PI, or comment. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-036"
- URI="not-wf/sa/036.xml" SECTIONS="2.8 [27]">
- Text may not appear after the root element. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-037"
- URI="not-wf/sa/037.xml" SECTIONS="2.8 [27]">
- Character references may not appear after the root element. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-038"
- URI="not-wf/sa/038.xml" SECTIONS="3.1">
- Tests the "Unique Att Spec" WF constraint by providing
- multiple values for an attribute.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-039"
- URI="not-wf/sa/039.xml" SECTIONS="3">
- Tests the Element Type Match WFC - end tag name must
- match start tag name.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-040"
- URI="not-wf/sa/040.xml" SECTIONS="2.8 [27]">
- Provides two document elements.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-041"
- URI="not-wf/sa/041.xml" SECTIONS="2.8 [27]">
- Provides two document elements.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-042"
- URI="not-wf/sa/042.xml" SECTIONS="3.1 [42]">
- Invalid End Tag </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-043"
- URI="not-wf/sa/043.xml" SECTIONS="2.8 [27]">
- Provides #PCDATA text after the document element. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-044"
- URI="not-wf/sa/044.xml" SECTIONS="2.8 [27]">
- Provides two document elements.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-045"
- URI="not-wf/sa/045.xml" SECTIONS="3.1 [44]">
- Invalid Empty Element Tag </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-046"
- URI="not-wf/sa/046.xml" SECTIONS="3.1 [40]">
- This start (or empty element) tag was not terminated correctly. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-047"
- URI="not-wf/sa/047.xml" SECTIONS="3.1 [44]">
- Invalid empty element tag invalid whitespace </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-048"
- URI="not-wf/sa/048.xml" SECTIONS="2.8 [27]">
- Provides a CDATA section after the root element.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-049"
- URI="not-wf/sa/049.xml" SECTIONS="3.1 [40]">
- Missing start tag </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-050"
- URI="not-wf/sa/050.xml" SECTIONS="2.1 [1]">
- Empty document, with no root element. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-051"
- URI="not-wf/sa/051.xml" SECTIONS="2.7 [18]">
- CDATA is invalid at top level of document.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-052"
- URI="not-wf/sa/052.xml" SECTIONS="4.1 [66]">
- Invalid character reference. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-053"
- URI="not-wf/sa/053.xml" SECTIONS="3.1 [42]">
- End tag does not match start tag. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-054"
- URI="not-wf/sa/054.xml" SECTIONS="4.2.2 [75]">
- PUBLIC requires two literals.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-055"
- URI="not-wf/sa/055.xml" SECTIONS="2.8 [28]">
- Invalid Document Type Definition format. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-056"
- URI="not-wf/sa/056.xml" SECTIONS="2.8 [28]">
- Invalid Document Type Definition format - misplaced comment. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-057"
- URI="not-wf/sa/057.xml" SECTIONS="3.2 [45]">
- This isn't SGML; comments can't exist in declarations. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-058"
- URI="not-wf/sa/058.xml" SECTIONS="3.3.1 [54]">
- Invalid character , in ATTLIST enumeration </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-059"
- URI="not-wf/sa/059.xml" SECTIONS="3.3.1 [59]">
- String literal must be in quotes. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-060"
- URI="not-wf/sa/060.xml" SECTIONS="3.3.1 [56]">
- Invalid type NAME defined in ATTLIST.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-061"
- URI="not-wf/sa/061.xml" SECTIONS="4.2.2 [75]">
- External entity declarations require whitespace between public
- and system IDs.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-062"
- URI="not-wf/sa/062.xml" SECTIONS="4.2 [71]">
- Entity declarations need space after the entity name. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-063"
- URI="not-wf/sa/063.xml" SECTIONS="2.8 [29]">
- Conditional sections may only appear in the external
- DTD subset. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-064"
- URI="not-wf/sa/064.xml" SECTIONS="3.3 [53]">
- Space is required between attribute type and default values
- in &lt;!ATTLIST...&gt; declarations. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-065"
- URI="not-wf/sa/065.xml" SECTIONS="3.3 [53]">
- Space is required between attribute name and type
- in &lt;!ATTLIST...&gt; declarations. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-066"
- URI="not-wf/sa/066.xml" SECTIONS="3.3 [52]">
- Required whitespace is missing. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-067"
- URI="not-wf/sa/067.xml" SECTIONS="3.3 [53]">
- Space is required between attribute type and default values
- in &lt;!ATTLIST...&gt; declarations. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-068"
- URI="not-wf/sa/068.xml" SECTIONS="3.3.1 [58]">
- Space is required between NOTATION keyword and list of
- enumerated choices in &lt;!ATTLIST...&gt; declarations. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-069"
- URI="not-wf/sa/069.xml" SECTIONS="4.2.2 [76]">
- Space is required before an NDATA entity annotation.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-070"
- URI="not-wf/sa/070.xml" SECTIONS="2.5 [16]">
- XML comments may not contain "--" </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-071"
- URI="not-wf/sa/071.xml" SECTIONS="4.1 [68]">
- ENTITY can't reference itself directly or indirectly.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-072"
- URI="not-wf/sa/072.xml" SECTIONS="4.1 [68]">
- Undefined ENTITY foo. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-073"
- URI="not-wf/sa/073.xml" SECTIONS="4.1 [68]">
- Undefined ENTITY f. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-074"
- URI="not-wf/sa/074.xml" SECTIONS="4.3.2">
- Internal general parsed entities are only well formed if
- they match the "content" production. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-075"
- URI="not-wf/sa/075.xml" SECTIONS="4.1 [68]">
- ENTITY can't reference itself directly or indirectly. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-076"
- URI="not-wf/sa/076.xml" SECTIONS="4.1 [68]">
- Undefined ENTITY foo. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-077"
- URI="not-wf/sa/077.xml" SECTIONS="41. [68]">
- Undefined ENTITY bar. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-078"
- URI="not-wf/sa/078.xml" SECTIONS="4.1 [68]">
- Undefined ENTITY foo. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-079"
- URI="not-wf/sa/079.xml" SECTIONS="4.1 [68]">
- ENTITY can't reference itself directly or indirectly. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-080"
- URI="not-wf/sa/080.xml" SECTIONS="4.1 [68]">
- ENTITY can't reference itself directly or indirectly. </TEST>
-<TEST TYPE="not-wf" ENTITIES="general" ID="not-wf-sa-081"
- URI="not-wf/sa/081.xml" SECTIONS="3.1">
- This tests the <EM>No External Entity References</EM> WFC,
- since the entity is referred to within an attribute. </TEST>
-<TEST TYPE="not-wf" ENTITIES="general" ID="not-wf-sa-082"
- URI="not-wf/sa/082.xml" SECTIONS="3.1">
- This tests the <EM>No External Entity References</EM> WFC,
- since the entity is referred to within an attribute. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-083"
- URI="not-wf/sa/083.xml" SECTIONS="4.2.2 [76]">
- Undefined NOTATION n. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-084"
- URI="not-wf/sa/084.xml" SECTIONS="4.1">
- Tests the <EM>Parsed Entity</EM> WFC by referring to an
- unparsed entity. (This precedes the error of not declaring
- that entity's notation, which may be detected any time before
- the DTD parsing is completed.) </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-085"
- URI="not-wf/sa/085.xml" SECTIONS="2.3 [13]">
- Public IDs may not contain "[". </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-086"
- URI="not-wf/sa/086.xml" SECTIONS="2.3 [13]">
- Public IDs may not contain "[". </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-087"
- URI="not-wf/sa/087.xml" SECTIONS="2.3 [13]">
- Public IDs may not contain "[". </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-088"
- URI="not-wf/sa/088.xml" SECTIONS="2.3 [10]">
- Attribute values are terminated by literal quote characters,
- and any entity expansion is done afterwards. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-089"
- URI="not-wf/sa/089.xml" SECTIONS="4.2 [74]">
- Parameter entities "are" always parsed; NDATA annotations
- are not permitted.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-090"
- URI="not-wf/sa/090.xml" SECTIONS="2.3 [10]">
- Attributes may not contain a literal "&lt;" character;
- this one has one because of reference expansion. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-091"
- URI="not-wf/sa/091.xml" SECTIONS="4.2 [74]">
- Parameter entities "are" always parsed; NDATA annotations
- are not permitted.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-092"
- URI="not-wf/sa/092.xml" SECTIONS="4.5">
- The replacement text of this entity has an illegal reference,
- because the character reference is expanded immediately. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-093"
- URI="not-wf/sa/093.xml" SECTIONS="4.1 [66]">
- Hexadecimal character references may not use the uppercase 'X'.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-094"
- URI="not-wf/sa/094.xml" SECTIONS="2.8 [24]">
- Prolog VERSION must be lowercase. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-095"
- URI="not-wf/sa/095.xml" SECTIONS="2.8 [23]">
- VersionInfo must come before EncodingDecl. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-096"
- URI="not-wf/sa/096.xml" SECTIONS="2.9 [32]">
- Space is required before the standalone declaration. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-097"
- URI="not-wf/sa/097.xml" SECTIONS="2.8 [24]">
- Both quotes surrounding VersionNum must be the same. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-098"
- URI="not-wf/sa/098.xml" SECTIONS="2.8 [23]">
- Only one "version=..." string may appear in an XML declaration.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-099"
- URI="not-wf/sa/099.xml" SECTIONS="2.8 [23]">
- Only three pseudo-attributes are in the XML declaration,
- and "valid=..." is not one of them. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-100"
- URI="not-wf/sa/100.xml" SECTIONS="2.9 [32]">
- Only "yes" and "no" are permitted as values of "standalone". </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-101"
- URI="not-wf/sa/101.xml" SECTIONS="4.3.3 [81]">
- Space is not permitted in an encoding name. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-102"
- URI="not-wf/sa/102.xml" SECTIONS="2.8 [26]">
- Provides an illegal XML version number; spaces are illegal.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-103"
- URI="not-wf/sa/103.xml" SECTIONS="4.3.2">
- End-tag required for element foo. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-104"
- URI="not-wf/sa/104.xml" SECTIONS="4.3.2">
- Internal general parsed entities are only well formed if
- they match the "content" production. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-105"
- URI="not-wf/sa/105.xml" SECTIONS="2.7 ">
- Invalid placement of CDATA section. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-106"
- URI="not-wf/sa/106.xml" SECTIONS="4.2">
- Invalid placement of entity declaration. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-107"
- URI="not-wf/sa/107.xml" SECTIONS="2.8 [28]">
- Invalid document type declaration. CDATA alone is invalid.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-108"
- URI="not-wf/sa/108.xml" SECTIONS="2.7 [19]">
- No space in '&lt;![CDATA['.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-109"
- URI="not-wf/sa/109.xml" SECTIONS="4.2 [70]">
- Tags invalid within EntityDecl. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-110"
- URI="not-wf/sa/110.xml" SECTIONS="4.1 [68]">
- Entity reference must be in content of element. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-111"
- URI="not-wf/sa/111.xml" SECTIONS="3.1 [43]">
- Entiry reference must be in content of element not Start-tag. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-112"
- URI="not-wf/sa/112.xml" SECTIONS="2.7 [19]">
- CDATA sections start '&lt;![CDATA[', not '&lt;!cdata['.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-113"
- URI="not-wf/sa/113.xml" SECTIONS="2.3 [9]">
- Parameter entity values must use valid reference syntax;
- this reference is malformed.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-114"
- URI="not-wf/sa/114.xml" SECTIONS="2.3 [9]">
- General entity values must use valid reference syntax;
- this reference is malformed.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-115"
- URI="not-wf/sa/115.xml" SECTIONS="4.5">
- The replacement text of this entity is an illegal character
- reference, which must be rejected when it is parsed in the
- context of an attribute value.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-116"
- URI="not-wf/sa/116.xml" SECTIONS="4.3.2">
- Internal general parsed entities are only well formed if
- they match the "content" production. This is a partial
- character reference, not a full one. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-117"
- URI="not-wf/sa/117.xml" SECTIONS="4.3.2">
- Internal general parsed entities are only well formed if
- they match the "content" production. This is a partial
- character reference, not a full one. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-118"
- URI="not-wf/sa/118.xml" SECTIONS="4.1 [68]">
- Entity reference expansion is not recursive.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-119"
- URI="not-wf/sa/119.xml" SECTIONS="4.3.2">
- Internal general parsed entities are only well formed if
- they match the "content" production. This is a partial
- character reference, not a full one. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-120"
- URI="not-wf/sa/120.xml" SECTIONS="4.5">
- Character references are expanded in the replacement text of
- an internal entity, which is then parsed as usual. Accordingly,
- &amp; must be doubly quoted - encoded either as <EM>&amp;amp;</EM>
- or as <EM>&amp;#38;#38;</EM>. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-121"
- URI="not-wf/sa/121.xml" SECTIONS="4.1 [68]">
- A name of an ENTITY was started with an invalid character. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-122"
- URI="not-wf/sa/122.xml" SECTIONS="3.2.1 [47]">
- Invalid syntax mixed connectors are used. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-123"
- URI="not-wf/sa/123.xml" SECTIONS="3.2.1 [48]">
- Invalid syntax mismatched parenthesis. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-124"
- URI="not-wf/sa/124.xml" SECTIONS="3.2.2 [51]">
- Invalid format of Mixed-content declaration. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-125"
- URI="not-wf/sa/125.xml" SECTIONS="3.2.2 [51]">
- Invalid syntax extra set of parenthesis not necessary. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-126"
- URI="not-wf/sa/126.xml" SECTIONS="3.2.2 [51]">
- Invalid syntax Mixed-content must be defined as zero or more. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-127"
- URI="not-wf/sa/127.xml" SECTIONS="3.2.2 [51]">
- Invalid syntax Mixed-content must be defined as zero or more. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-128"
- URI="not-wf/sa/128.xml" SECTIONS="2.7 [18]">
- Invalid CDATA syntax. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-129"
- URI="not-wf/sa/129.xml" SECTIONS="3.2 [45]">
- Invalid syntax for Element Type Declaration. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-130"
- URI="not-wf/sa/130.xml" SECTIONS="3.2 [45]">
- Invalid syntax for Element Type Declaration. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-131"
- URI="not-wf/sa/131.xml" SECTIONS="3.2 [45]">
- Invalid syntax for Element Type Declaration. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-132"
- URI="not-wf/sa/132.xml" SECTIONS="3.2.1 [50]">
- Invalid syntax mixed connectors used. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-133"
- URI="not-wf/sa/133.xml" SECTIONS="3.2.1">
- Illegal whitespace before optional character causes syntax error. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-134"
- URI="not-wf/sa/134.xml" SECTIONS="3.2.1">
- Illegal whitespace before optional character causes syntax error. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-135"
- URI="not-wf/sa/135.xml" SECTIONS="3.2.1 [47]">
- Invalid character used as connector. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-136"
- URI="not-wf/sa/136.xml" SECTIONS="3.2 [45]">
- Tag omission is invalid in XML. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-137"
- URI="not-wf/sa/137.xml" SECTIONS="3.2 [45]">
- Space is required before a content model. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-138"
- URI="not-wf/sa/138.xml" SECTIONS="3.2.1 [48]">
- Invalid syntax for content particle. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-139"
- URI="not-wf/sa/139.xml" SECTIONS="3.2.1 [46]">
- The element-content model should not be empty. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-140"
- URI="not-wf/sa/140.xml" SECTIONS="2.3 [4]">
- Character '&amp;#x309a;' is a CombiningChar, not a
- Letter, and so may not begin a name.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-141"
- URI="not-wf/sa/141.xml" SECTIONS="2.3 [5]">
- Character #x0E5C is not legal in XML names. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-142"
- URI="not-wf/sa/142.xml" SECTIONS="2.2 [2]">
- Character #x0000 is not legal anywhere in an XML document. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-143"
- URI="not-wf/sa/143.xml" SECTIONS="2.2 [2]">
- Character #x001F is not legal anywhere in an XML document. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-144"
- URI="not-wf/sa/144.xml" SECTIONS="2.2 [2]">
- Character #xFFFF is not legal anywhere in an XML document. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-145"
- URI="not-wf/sa/145.xml" SECTIONS="2.2 [2]">
- Character #xD800 is not legal anywhere in an XML document. (If it
- appeared in a UTF-16 surrogate pair, it'd represent half of a UCS-4
- character and so wouldn't really be in the document.) </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-146"
- URI="not-wf/sa/146.xml" SECTIONS="2.2 [2]">
- Character references must also refer to legal XML characters;
- #x00110000 is one more than the largest legal character.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-147"
- URI="not-wf/sa/147.xml" SECTIONS="2.8 [22]">
- XML Declaration may not be preceded by whitespace.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-148"
- URI="not-wf/sa/148.xml" SECTIONS="2.8 [22]">
- XML Declaration may not be preceded by comments or whitespace.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-149"
- URI="not-wf/sa/149.xml" SECTIONS="2.8 [28]">
- XML Declaration may not be within a DTD.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-150"
- URI="not-wf/sa/150.xml" SECTIONS="3.1 [43]">
- XML declarations may not be within element content. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-151"
- URI="not-wf/sa/151.xml" SECTIONS="2.8 [27]">
- XML declarations may not follow document content.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-152"
- URI="not-wf/sa/152.xml" SECTIONS="2.8 [22]">
- XML declarations must include the "version=..." string.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-153"
- URI="not-wf/sa/153.xml" SECTIONS="4.3.2">
- Text declarations may not begin internal parsed entities;
- they may only appear at the beginning of external parsed
- (parameter or general) entities. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-154"
- URI="not-wf/sa/154.xml" SECTIONS="2.8 2.6 [23, 17]">
- '&lt;?XML ...?&gt;' is neither an XML declaration
- nor a legal processing instruction target name. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-155"
- URI="not-wf/sa/155.xml" SECTIONS="2.8 2.6 [23, 17]">
- '&lt;?xmL ...?&gt;' is neither an XML declaration
- nor a legal processing instruction target name. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-156"
- URI="not-wf/sa/156.xml" SECTIONS="2.8 2.6 [23, 17]">
- '&lt;?xMl ...?&gt;' is neither an XML declaration
- nor a legal processing instruction target name. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-157"
- URI="not-wf/sa/157.xml" SECTIONS="2.6 [17]">
- '&lt;?xmL ...?&gt;' is not a legal processing instruction
- target name. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-158"
- URI="not-wf/sa/158.xml" SECTIONS="3.3 [52]">
- SGML-ism: "#NOTATION gif" can't have attributes. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-159"
- URI="not-wf/sa/159.xml" SECTIONS="2.3 [9]">
- Uses '&amp;' unquoted in an entity declaration,
- which is illegal syntax for an entity reference.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-160"
- URI="not-wf/sa/160.xml" SECTIONS="2.8">
- Violates the <EM>PEs in Internal Subset</EM> WFC
- by using a PE reference within a declaration. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-161"
- URI="not-wf/sa/161.xml" SECTIONS="2.8">
- Violates the <EM>PEs in Internal Subset</EM> WFC
- by using a PE reference within a declaration. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-162"
- URI="not-wf/sa/162.xml" SECTIONS="2.8">
- Violates the <EM>PEs in Internal Subset</EM> WFC
- by using a PE reference within a declaration. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-163"
- URI="not-wf/sa/163.xml" SECTIONS="4.1 [69]">
- Invalid placement of Parameter entity reference. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-164"
- URI="not-wf/sa/164.xml" SECTIONS="4.1 [69]">
- Invalid placement of Parameter entity reference. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-165"
- URI="not-wf/sa/165.xml" SECTIONS="4.2 [72]">
- Parameter entity declarations must have a space before
- the '%'. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-166"
- URI="not-wf/sa/166.xml" SECTIONS="2.2 [2]">
- Character FFFF is not legal anywhere in an XML document. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-167"
- URI="not-wf/sa/167.xml" SECTIONS="2.2 [2]">
- Character FFFE is not legal anywhere in an XML document. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-168"
- URI="not-wf/sa/168.xml" SECTIONS="2.2 [2]">
- An unpaired surrogate (D800) is not legal anywhere
- in an XML document.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-169"
- URI="not-wf/sa/169.xml" SECTIONS="2.2 [2]">
- An unpaired surrogate (DC00) is not legal anywhere
- in an XML document.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-170"
- URI="not-wf/sa/170.xml" SECTIONS="2.2 [2]">
- Four byte UTF-8 encodings can encode UCS-4 characters
- which are beyond the range of legal XML characters
- (and can't be expressed in Unicode surrogate pairs).
- This document holds such a character. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-171"
- URI="not-wf/sa/171.xml" SECTIONS="2.2 [2]">
- Character FFFF is not legal anywhere in an XML document. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-172"
- URI="not-wf/sa/172.xml" SECTIONS="2.2 [2]">
- Character FFFF is not legal anywhere in an XML document. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-173"
- URI="not-wf/sa/173.xml" SECTIONS="2.2 [2]">
- Character FFFF is not legal anywhere in an XML document. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-174"
- URI="not-wf/sa/174.xml" SECTIONS="2.2 [2]">
- Character FFFF is not legal anywhere in an XML document. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-175"
- URI="not-wf/sa/175.xml" SECTIONS="2.2 [2]">
- Character FFFF is not legal anywhere in an XML document. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-176"
- URI="not-wf/sa/176.xml" SECTIONS="3 [39]">
- Start tags must have matching end tags.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-177"
- URI="not-wf/sa/177.xml" SECTIONS="2.2 [2]">
- Character FFFF is not legal anywhere in an XML document. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-178"
- URI="not-wf/sa/178.xml" SECTIONS="3.1 [41]">
- Invalid syntax matching double quote is missing. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-179"
- URI="not-wf/sa/179.xml" SECTIONS="4.1 [66]">
- Invalid syntax matching double quote is missing. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-180"
- URI="not-wf/sa/180.xml" SECTIONS="4.1">
- The <EM>Entity Declared</EM> WFC requires entities to be declared
- before they are used in an attribute list declaration. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-181"
- URI="not-wf/sa/181.xml" SECTIONS="4.3.2">
- Internal parsed entities must match the <EM>content</EM>
- production to be well formed. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-182"
- URI="not-wf/sa/182.xml" SECTIONS="4.3.2">
- Internal parsed entities must match the <EM>content</EM>
- production to be well formed. </TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-183"
- URI="not-wf/sa/183.xml" SECTIONS="3.2.2 [51]">
- Mixed content declarations may not include content particles.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-184"
- URI="not-wf/sa/184.xml" SECTIONS="3.2.2 [51]">
- In mixed content models, element names must not be
- parenthesized. </TEST>
-<TEST TYPE="not-wf" ENTITIES="parameter" ID="not-wf-sa-185"
- URI="not-wf/sa/185.xml" SECTIONS="4.1">
- Tests the <EM>Entity Declared</EM> WFC.
- <EM>Note:</EM> a nonvalidating parser is permitted not to report
- this WFC violation, since it would need to read an external
- parameter entity to distinguish it from a violation of
- the <EM>Standalone Declaration</EM> VC.</TEST>
-<TEST TYPE="not-wf" ENTITIES="none" ID="not-wf-sa-186"
- URI="not-wf/sa/186.xml" SECTIONS="3.1 [44]">
- Whitespace is required between attribute/value pairs. </TEST>
-
-<!-- Start: not-wf/not-sa -->
-<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-001"
- URI="not-wf/not-sa/001.xml" SECTIONS="3.4 [62]">
- Conditional sections must be properly terminated ("]&gt;" used
- instead of "]]&gt;"). </TEST>
-<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-002"
- URI="not-wf/not-sa/002.xml" SECTIONS="2.6 [17]">
- Processing instruction target names may not be "XML"
- in any combination of cases. </TEST>
-<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-003"
- URI="not-wf/not-sa/003.xml" SECTIONS="3.4 [62]">
- Conditional sections must be properly terminated ("]]&gt;" omitted). </TEST>
-<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-004"
- URI="not-wf/not-sa/004.xml" SECTIONS="3.4 [62]">
- Conditional sections must be properly terminated ("]]&gt;" omitted). </TEST>
-<TEST TYPE="error" ENTITIES="both" ID="not-wf-not-sa-005"
- URI="not-wf/not-sa/005.xml" SECTIONS="4.1">
- Tests the <EM>Entity Declared</EM> VC by referring to an
- undefined parameter entity within an external entity.</TEST>
-<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-006"
- URI="not-wf/not-sa/006.xml" SECTIONS="3.4 [62]">
- Conditional sections need a '[' after the INCLUDE or IGNORE. </TEST>
-<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-007"
- URI="not-wf/not-sa/007.xml" SECTIONS="4.3.2 [79]">
- A &lt;!DOCTYPE ...&gt; declaration may not begin any external
- entity; it's only found once, in the document entity.</TEST>
-<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-008"
- URI="not-wf/not-sa/008.xml" SECTIONS="4.1 [69]">
- In DTDs, the '%' character must be part of a parameter
- entity reference.</TEST>
-<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-not-sa-009"
- URI="not-wf/not-sa/009.xml" SECTIONS="2.8">
- This test violates WFC:PE Between Declarations in Production 28a.
- The last character of a markup declaration is not contained in the same
- parameter-entity text replacement.</TEST>
-<!-- Start: not-wf/ext-sa -->
-<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-ext-sa-001"
- URI="not-wf/ext-sa/001.xml" SECTIONS="4.1">
- Tests the <EM>No Recursion</EM> WFC by having an external general
- entity be self-recursive.</TEST>
-<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-ext-sa-002"
- URI="not-wf/ext-sa/002.xml" SECTIONS="4.3.1 4.3.2 [77, 78]">
- External entities have "text declarations", which do
- not permit the "standalone=..." attribute that's allowed
- in XML declarations.</TEST>
-<TEST TYPE="not-wf" ENTITIES="both" ID="not-wf-ext-sa-003"
- URI="not-wf/ext-sa/003.xml" SECTIONS="2.6 [17]">
- Only one text declaration is permitted; a second one
- looks like an illegal processing instruction (target names
- of "xml" in any case are not allowed). </TEST>
-
-
-<!-- Start: invalid/ -->
-
-<TEST TYPE="invalid" ENTITIES="both" ID="invalid--002"
- URI="invalid/002.xml" SECTIONS="3.2.1">
- Tests the "Proper Group/PE Nesting" validity constraint by
- fragmenting a content model between two parameter entities.</TEST>
-<TEST TYPE="invalid" ENTITIES="both" ID="invalid--005"
- URI="invalid/005.xml" SECTIONS="2.8">
- Tests the "Proper Declaration/PE Nesting" validity constraint by
- fragmenting an element declaration between two parameter entities.</TEST>
-<TEST TYPE="invalid" ENTITIES="both" ID="invalid--006"
- URI="invalid/006.xml" SECTIONS="2.8">
- Tests the "Proper Declaration/PE Nesting" validity constraint by
- fragmenting an element declaration between two parameter entities.</TEST>
-<TEST TYPE="invalid" ENTITIES="both" ID="invalid-not-sa-022"
- URI="invalid/not-sa/022.xml" SECTIONS="3.4 [62]"
- OUTPUT="invalid/not-sa/out/022.xml">
- Test the "Proper Conditional Section/ PE Nesting" validity constraint. </TEST>
-
-<!-- Start: valid/sa -->
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-001"
- URI="valid/sa/001.xml" SECTIONS="3.2.2 [51]"
- OUTPUT="valid/sa/out/001.xml">
- Test demonstrates an Element Type Declaration with Mixed Content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-002"
- URI="valid/sa/002.xml" SECTIONS="3.1 [40]"
- OUTPUT="valid/sa/out/002.xml">
- Test demonstrates that whitespace is permitted after the tag name in a Start-tag. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-003"
- URI="valid/sa/003.xml" SECTIONS="3.1 [42]"
- OUTPUT="valid/sa/out/003.xml">
- Test demonstrates that whitespace is permitted after the tag name in an End-tag.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-004"
- URI="valid/sa/004.xml" SECTIONS="3.1 [41]"
- OUTPUT="valid/sa/out/004.xml">
- Test demonstrates a valid attribute specification within a Start-tag. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-005"
- URI="valid/sa/005.xml" SECTIONS="3.1 [40]"
- OUTPUT="valid/sa/out/005.xml">
- Test demonstrates a valid attribute specification within a Start-tag that
-contains whitespace on both sides of the equal sign. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-006"
- URI="valid/sa/006.xml" SECTIONS="3.1 [41]"
- OUTPUT="valid/sa/out/006.xml">
- Test demonstrates that the AttValue within a Start-tag can use a single quote as a delimter. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-007"
- URI="valid/sa/007.xml" SECTIONS="3.1 4.6 [43]"
- OUTPUT="valid/sa/out/007.xml">
- Test demonstrates numeric character references can be used for element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-008"
- URI="valid/sa/008.xml" SECTIONS="2.4 3.1 [43]"
- OUTPUT="valid/sa/out/008.xml">
- Test demonstrates character references can be used for element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-009"
- URI="valid/sa/009.xml" SECTIONS="2.3 3.1 [43]"
- OUTPUT="valid/sa/out/009.xml">
- Test demonstrates that PubidChar can be used for element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-010"
- URI="valid/sa/010.xml" SECTIONS="3.1 [40]"
- OUTPUT="valid/sa/out/010.xml">
- Test demonstrates that whitespace is valid after the Attribute in a Start-tag. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-011"
- URI="valid/sa/011.xml" SECTIONS="3.1 [40]"
- OUTPUT="valid/sa/out/011.xml">
- Test demonstrates mutliple Attibutes within the Start-tag. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-012"
- URI="valid/sa/012.xml" SECTIONS="2.3 [4]"
- OUTPUT="valid/sa/out/012.xml" NAMESPACE="no">
- Uses a legal XML 1.0 name consisting of a single colon
- character (disallowed by the latest XML Namespaces draft).</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-013"
- URI="valid/sa/013.xml" SECTIONS="2.3 3.1 [13] [40]"
- OUTPUT="valid/sa/out/013.xml">
- Test demonstrates that the Attribute in a Start-tag can consist of numerals along with special characters. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-014"
- URI="valid/sa/014.xml" SECTIONS="2.3 3.1 [13] [40]"
- OUTPUT="valid/sa/out/014.xml">
- Test demonstrates that all lower case letters are valid for the Attribute in a Start-tag. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-015"
- URI="valid/sa/015.xml" SECTIONS="2.3 3.1 [13] [40]"
- OUTPUT="valid/sa/out/015.xml">
- Test demonstrates that all upper case letters are valid for the Attribute in a Start-tag. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-016"
- URI="valid/sa/016.xml" SECTIONS="2.6 3.1 [16] [43]"
- OUTPUT="valid/sa/out/016.xml">
- Test demonstrates that Processing Instructions are valid element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-017"
- URI="valid/sa/017.xml" SECTIONS="2.6 3.1 [16] [43]"
- OUTPUT="valid/sa/out/017.xml">
- Test demonstrates that Processing Instructions are valid element content and there can be more than one. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-018"
- URI="valid/sa/018.xml" SECTIONS="2.7 3.1 [18] [43]"
- OUTPUT="valid/sa/out/018.xml">
- Test demonstrates that CDATA sections are valid element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-019"
- URI="valid/sa/019.xml" SECTIONS="2.7 3.1 [18] [43]"
- OUTPUT="valid/sa/out/019.xml">
- Test demonstrates that CDATA sections are valid element content and that
-ampersands may occur in their literal form. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-020"
- URI="valid/sa/020.xml" SECTIONS="2.7 3.1 [18] [43]"
- OUTPUT="valid/sa/out/020.xml">
- Test demonstractes that CDATA sections are valid element content and that
-everyting between the CDStart and CDEnd is recognized as character data not markup. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-021"
- URI="valid/sa/021.xml" SECTIONS="2.5 3.1 [15] [43]"
- OUTPUT="valid/sa/out/021.xml">
- Test demonstrates that comments are valid element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-022"
- URI="valid/sa/022.xml" SECTIONS="2.5 3.1 [15] [43]"
- OUTPUT="valid/sa/out/022.xml">
- Test demonstrates that comments are valid element content and that all characters before the double-hypen right angle combination are considered part of thecomment. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-023"
- URI="valid/sa/023.xml" SECTIONS="3.1 [43]"
- OUTPUT="valid/sa/out/023.xml">
- Test demonstrates that Entity References are valid element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-024"
- URI="valid/sa/024.xml" SECTIONS="3.1 4.1 [43] [66]"
- OUTPUT="valid/sa/out/024.xml">
- Test demonstrates that Entity References are valid element content and also demonstrates a valid Entity Declaration. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-025"
- URI="valid/sa/025.xml" SECTIONS="3.2 [46]"
- OUTPUT="valid/sa/out/025.xml">
- Test demonstrates an Element Type Declaration and that the contentspec can be of mixed content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-026"
- URI="valid/sa/026.xml" SECTIONS="3.2 [46]"
- OUTPUT="valid/sa/out/026.xml">
- Test demonstrates an Element Type Declaration and that EMPTY is a valid contentspec. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-027"
- URI="valid/sa/027.xml" SECTIONS="3.2 [46]"
- OUTPUT="valid/sa/out/027.xml">
- Test demonstrates an Element Type Declaration and that ANY is a valid contenspec. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-028"
- URI="valid/sa/028.xml" SECTIONS="2.8 [24]"
- OUTPUT="valid/sa/out/028.xml">
- Test demonstrates a valid prolog that uses double quotes as delimeters around the VersionNum. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-029"
- URI="valid/sa/029.xml" SECTIONS="2.8 [24]"
- OUTPUT="valid/sa/out/029.xml">
- Test demonstrates a valid prolog that uses single quotes as delimters around the VersionNum. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-030"
- URI="valid/sa/030.xml" SECTIONS="2.8 [25]"
- OUTPUT="valid/sa/out/030.xml">
- Test demonstrates a valid prolog that contains whitespace on both sides of the equal sign in the VersionInfo. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-031"
- URI="valid/sa/031.xml" SECTIONS="4.3.3 [80]"
- OUTPUT="valid/sa/out/031.xml">
- Test demonstrates a valid EncodingDecl within the prolog. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-032"
- URI="valid/sa/032.xml" SECTIONS="2.9 [32]"
- OUTPUT="valid/sa/out/032.xml">
- Test demonstrates a valid SDDecl within the prolog. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-033"
- URI="valid/sa/033.xml" SECTIONS="2.8 [23]"
- OUTPUT="valid/sa/out/033.xml">
- Test demonstrates that both a EncodingDecl and SDDecl are valid within the prolog. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-034"
- URI="valid/sa/034.xml" SECTIONS="3.1 [44]"
- OUTPUT="valid/sa/out/034.xml">
- Test demonstrates the correct syntax for an Empty element tag. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-035"
- URI="valid/sa/035.xml" SECTIONS="3.1 [44]"
- OUTPUT="valid/sa/out/035.xml">
- Test demonstrates that whitespace is permissible after the name in an Empty element tag. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-036"
- URI="valid/sa/036.xml" SECTIONS="2.6 [16]"
- OUTPUT="valid/sa/out/036.xml">
- Test demonstrates a valid processing instruction. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-037"
- URI="valid/sa/037.xml" SECTIONS="2.6 [15]"
- OUTPUT="valid/sa/out/037.xml">
- Test demonstrates a valid comment and that it may appear anywhere in the document including at the end. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-038"
- URI="valid/sa/038.xml" SECTIONS="2.6 [15]"
- OUTPUT="valid/sa/out/038.xml">
- Test demonstrates a valid comment and that it may appear anywhere in the document including the beginning. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-039"
- URI="valid/sa/039.xml" SECTIONS="2.6 [16]"
- OUTPUT="valid/sa/out/039.xml">
- Test demonstrates a valid processing instruction and that it may appear at the beginning of the document. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-040"
- URI="valid/sa/040.xml" SECTIONS="3.3 3.3.1 [52] [54]"
- OUTPUT="valid/sa/out/040.xml">
- Test demonstrates an Attribute List declaration that uses a StringType as the AttType. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-041"
- URI="valid/sa/041.xml" SECTIONS="3.3.1 4.1 [54] [66]"
- OUTPUT="valid/sa/out/041.xml">
- Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-042"
- URI="valid/sa/042.xml" SECTIONS="3.3.1 4.1 [54] [66]"
- OUTPUT="valid/sa/out/042.xml">
- Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-043"
- URI="valid/sa/043.xml" SECTIONS="3.3"
- OUTPUT="valid/sa/out/043.xml">
- An element's attributes may be declared before its content
- model; and attribute values may contain newlines. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-044"
- URI="valid/sa/044.xml" SECTIONS="3.1 [44]"
- OUTPUT="valid/sa/out/044.xml">
- Test demonstrates that the empty-element tag must be use for an elements that are declared EMPTY. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-045"
- URI="valid/sa/045.xml" SECTIONS="3.3 [52]"
- OUTPUT="valid/sa/out/045.xml">
- Tests whether more than one definition can be provided for the same attribute of a given element type with the first declaration being binding. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-046"
- URI="valid/sa/046.xml" SECTIONS="3.3 [52]"
- OUTPUT="valid/sa/out/046.xml">
- Test demonstrates that when more than one AttlistDecl is provided for a given element type, the contents of all those provided are merged. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-047"
- URI="valid/sa/047.xml" SECTIONS="3.1 [43]"
- OUTPUT="valid/sa/out/047.xml">
- Test demonstrates that extra whitespace is normalized into single space character. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-048"
- URI="valid/sa/048.xml" SECTIONS="2.4 3.1 [14] [43]"
- OUTPUT="valid/sa/out/048.xml">
- Test demonstrates that character data is valid element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-049"
- URI="valid/sa/049.xml" SECTIONS="2.2 [2]"
- OUTPUT="valid/sa/out/049.xml">
- Test demonstrates that characters outside of normal ascii range can be used as element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-050"
- URI="valid/sa/050.xml" SECTIONS="2.2 [2]"
- OUTPUT="valid/sa/out/050.xml">
- Test demonstrates that characters outside of normal ascii range can be used as element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-051"
- URI="valid/sa/051.xml" SECTIONS="2.2 [2]"
- OUTPUT="valid/sa/out/051.xml">
- The document is encoded in UTF-16 and uses some name
- characters well outside of the normal ASCII range.
- </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-052"
- URI="valid/sa/052.xml" SECTIONS="2.2 [2]"
- OUTPUT="valid/sa/out/052.xml">
- The document is encoded in UTF-8 and the text inside the
- root element uses two non-ASCII characters, encoded in UTF-8
- and each of which expands to a Unicode surrogate pair.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-053"
- URI="valid/sa/053.xml" SECTIONS="4.4.2"
- OUTPUT="valid/sa/out/053.xml">
- Tests inclusion of a well-formed internal entity, which
- holds an element required by the content model.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-054"
- URI="valid/sa/054.xml" SECTIONS="3.1 [40] [42]"
- OUTPUT="valid/sa/out/054.xml">
- Test demonstrates that extra whitespace within Start-tags and End-tags are nomalized into single spaces. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-055"
- URI="valid/sa/055.xml" SECTIONS="2.6 2.10 [16]"
- OUTPUT="valid/sa/out/055.xml">
- Test demonstrates that extra whitespace within a processing instruction willnormalized into s single space character. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-056"
- URI="valid/sa/056.xml" SECTIONS="3.3.1 4.1 [54] [66]"
- OUTPUT="valid/sa/out/056.xml">
- Test demonstrates an Attribute List declaration that uses a StringType as the AttType and also expands the CDATA attribute with a character reference. The test also shows that the leading zeros in the character reference are ignored. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-057"
- URI="valid/sa/057.xml" SECTIONS="3.2.1 [47]"
- OUTPUT="valid/sa/out/057.xml">
- Test demonstrates an element content model whose element can occur zero or more times. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-058"
- URI="valid/sa/058.xml" SECTIONS="3.3.3"
- OUTPUT="valid/sa/out/058.xml">
- Test demonstrates that extra whitespace be normalized into a single space character in an attribute of type NMTOKENS. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-059"
- URI="valid/sa/059.xml" SECTIONS="3.2 3.3 [46] [53]"
- OUTPUT="valid/sa/out/059.xml">
- Test demonstrates an Element Type Declaration that uses the contentspec of EMPTY. The element cannot have any contents and must always appear as an empty element in the document. The test also shows an Attribute-list declaration with multiple AttDef's. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-060"
- URI="valid/sa/060.xml" SECTIONS="4.1 [66]"
- OUTPUT="valid/sa/out/060.xml">
- Test demonstrates the use of decimal Character References within element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-061"
- URI="valid/sa/061.xml" SECTIONS="4.1 [66]"
- OUTPUT="valid/sa/out/061.xml">
- Test demonstrates the use of decimal Character References within element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-062"
- URI="valid/sa/062.xml" SECTIONS="4.1 [66]"
- OUTPUT="valid/sa/out/062.xml">
- Test demonstrates the use of hexadecimal Character References within element. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-063"
- URI="valid/sa/063.xml" SECTIONS="2.3 [5]"
- OUTPUT="valid/sa/out/063.xml">
- The document is encoded in UTF-8 and the name of the
- root element type uses non-ASCII characters. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-064"
- URI="valid/sa/064.xml" SECTIONS="4.1 [66]"
- OUTPUT="valid/sa/out/064.xml">
- Tests in-line handling of two legal character references, which
- each expand to a Unicode surrogate pair.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-065"
- URI="valid/sa/065.xml" SECTIONS="4.5"
- OUTPUT="valid/sa/out/065.xml">
- Tests ability to define an internal entity which can't
- legally be expanded (contains an unquoted <B>&lt;</B>).</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-066"
- URI="valid/sa/066.xml" SECTIONS="4.1 [66]"
- OUTPUT="valid/sa/out/066.xml">
- Expands a CDATA attribute with a character reference.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-067"
- URI="valid/sa/067.xml" SECTIONS="4.1 [66]"
- OUTPUT="valid/sa/out/067.xml">
- Test demonstrates the use of decimal character references within element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-068"
- URI="valid/sa/068.xml" SECTIONS="2.11, 4.5"
- OUTPUT="valid/sa/out/068.xml">
- Tests definition of an internal entity holding a carriage return character
- reference, which must not be normalized before reporting to the application. Line
- break normalization only occurs when parsing external parsed entities.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-069"
- URI="valid/sa/069.xml" SECTIONS="4.7"
- OUTPUT="valid/sa/out/069.xml">
- Verifies that an XML parser will parse a NOTATION
- declaration; the output phase of this test ensures that
- it's reported to the application. </TEST>
-<TEST TYPE="valid" ENTITIES="parameter" ID="valid-sa-070"
- URI="valid/sa/070.xml" SECTIONS="4.4.8"
- OUTPUT="valid/sa/out/070.xml">
- Verifies that internal parameter entities are correctly
- expanded within the internal subset.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-071"
- URI="valid/sa/071.xml" SECTIONS="3.3 3.3.1 [52] [56]"
- OUTPUT="valid/sa/out/071.xml">
- Test demonstrates that an AttlistDecl can use ID as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-072"
- URI="valid/sa/072.xml" SECTIONS="3.3 3.3.1 [52] [56]"
- OUTPUT="valid/sa/out/072.xml">
- Test demonstrates that an AttlistDecl can use IDREF as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-073"
- URI="valid/sa/073.xml" SECTIONS="3.3 3.3.1 [52] [56]"
- OUTPUT="valid/sa/out/073.xml">
- Test demonstrates that an AttlistDecl can use IDREFS as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-074"
- URI="valid/sa/074.xml" SECTIONS="3.3 3.3.1 [52] [56]"
- OUTPUT="valid/sa/out/074.xml">
- Test demonstrates that an AttlistDecl can use ENTITY as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-075"
- URI="valid/sa/075.xml" SECTIONS="3.3 3.3.1 [52] [56]"
- OUTPUT="valid/sa/out/075.xml">
- Test demonstrates that an AttlistDecl can use ENTITIES as the TokenizedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-076"
- URI="valid/sa/076.xml" SECTIONS="3.3.1"
- OUTPUT="valid/sa/out/076.xml">
- Verifies that an XML parser will parse a NOTATION
- attribute; the output phase of this test ensures that
- both notations are reported to the application. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-077"
- URI="valid/sa/077.xml" SECTIONS="3.3 3.3.1 [52] [54]"
- OUTPUT="valid/sa/out/077.xml">
- Test demonstrates that an AttlistDecl can use an EnumeratedType within the Attribute type. The test also shows that IMPLIED is a valid DefaultDecl. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-078"
- URI="valid/sa/078.xml" SECTIONS="3.3 3.3.1 [52] [54]"
- OUTPUT="valid/sa/out/078.xml">
- Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that REQUIRED is a valid DefaultDecl. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-079"
- URI="valid/sa/079.xml" SECTIONS="3.3 3.3.2 [52] [60]"
- OUTPUT="valid/sa/out/079.xml">
- Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that a value can be given to the attribute in the Start-tag as well as the AttListDecl. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-080"
- URI="valid/sa/080.xml" SECTIONS="3.3 3.3.2 [52] [60]"
- OUTPUT="valid/sa/out/080.xml">
- Test demonstrates that an AttlistDecl can use an StringType of CDATA within the Attribute type. The test also shows that FIXED is a valid DefaultDecl and that an value can be given to the attribute. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-081"
- URI="valid/sa/081.xml" SECTIONS="3.2.1 [50]"
- OUTPUT="valid/sa/out/081.xml">
- Test demonstrates the use of the optional character following a name or list to govern the number of times an element or content particles in the list occur. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-082"
- URI="valid/sa/082.xml" SECTIONS="4.2 [72]"
- OUTPUT="valid/sa/out/082.xml">
- Tests that an external PE may be defined (but not referenced).</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-083"
- URI="valid/sa/083.xml" SECTIONS="4.2 [72]"
- OUTPUT="valid/sa/out/083.xml">
- Tests that an external PE may be defined (but not referenced).</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-084"
- URI="valid/sa/084.xml" SECTIONS="2.10"
- OUTPUT="valid/sa/out/084.xml">
- Test demonstrates that although whitespace can be used to set apart markup for greater readability it is not necessary. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-085"
- URI="valid/sa/085.xml" SECTIONS="4"
- OUTPUT="valid/sa/out/085.xml">
- Parameter and General entities use different namespaces,
- so there can be an entity of each type with a given name.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-086"
- URI="valid/sa/086.xml" SECTIONS="4.2"
- OUTPUT="valid/sa/out/086.xml">
- Tests whether entities may be declared more than once,
- with the first declaration being the binding one. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-087"
- URI="valid/sa/087.xml" SECTIONS="4.5"
- OUTPUT="valid/sa/out/087.xml">
- Tests whether character references in internal entities are
- expanded early enough, by relying on correct handling to
- make the entity be well formed.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-088"
- URI="valid/sa/088.xml" SECTIONS="4.5"
- OUTPUT="valid/sa/out/088.xml">
- Tests whether entity references in internal entities are
- expanded late enough, by relying on correct handling to
- make the expanded text be valid. (If it's expanded too
- early, the entity will parse as an element that's not
- valid in that context.)</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-089"
- URI="valid/sa/089.xml" SECTIONS="4.1 [66]"
- OUTPUT="valid/sa/out/089.xml">
- Tests entity expansion of three legal character references,
- which each expand to a Unicode surrogate pair.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-090"
- URI="valid/sa/090.xml" SECTIONS="3.3.1"
- OUTPUT="valid/sa/out/090.xml">
- Verifies that an XML parser will parse a NOTATION
- attribute; the output phase of this test ensures that
- the notation is reported to the application. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-091"
- URI="valid/sa/091.xml" SECTIONS="3.3.1"
- OUTPUT="valid/sa/out/091.xml">
- Verifies that an XML parser will parse an ENTITY
- attribute; the output phase of this test ensures that
- the notation is reported to the application, and for
- validating parsers it further tests that the entity
- is so reported.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-092"
- URI="valid/sa/092.xml" SECTIONS="2.3 2.10"
- OUTPUT="valid/sa/out/092.xml">
- Test demostrates that extra whitespace is normalized into a single space character. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-093"
- URI="valid/sa/093.xml" SECTIONS="2.10"
- OUTPUT="valid/sa/out/093.xml">
- Test demonstrates that extra whitespace is not intended for inclusion in the delivered version of the document. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-094"
- OUTPUT="valid/sa/out/094.xml"
- URI="valid/sa/094.xml" SECTIONS="2.8">
- Attribute defaults with a DTD have special parsing rules, different
- from other strings. That means that characters found there may look
- like an undefined parameter entity reference "within a markup
- declaration", but they aren't ... so they can't be violating
- the <EM>PEs in Internal Subset</EM> WFC.
- </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-095"
- URI="valid/sa/095.xml" SECTIONS="3.3.3"
- OUTPUT="valid/sa/out/095.xml">
- Basically an output test, this requires extra whitespace
- to be normalized into a single space character in an
- attribute of type NMTOKENS.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-096"
- URI="valid/sa/096.xml" SECTIONS="3.3.3"
- OUTPUT="valid/sa/out/096.xml">
- Test demonstrates that extra whitespace is normalized into a single space character in an attribute of type NMTOKENS. </TEST>
-<TEST TYPE="valid" ENTITIES="parameter" ID="valid-sa-097"
- URI="valid/sa/097.xml" SECTIONS="3.3"
- OUTPUT="valid/sa/out/097.xml">
- Basically an output test, this tests whether an externally
- defined attribute declaration (with a default) takes proper
- precedence over a subsequent internal declaration.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-098"
- URI="valid/sa/098.xml" SECTIONS="2.6 2.10 [16]"
- OUTPUT="valid/sa/out/098.xml">
- Test demonstrates that extra whitespace within a processing instruction is converted into a single space character.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-099"
- URI="valid/sa/099.xml" SECTIONS="4.3.3 [81]"
- OUTPUT="valid/sa/out/099.xml">
- Test demonstrates the name of the encoding can be composed of lowercase characters. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-100"
- URI="valid/sa/100.xml" SECTIONS="2.3 [12]"
- OUTPUT="valid/sa/out/100.xml">
- Makes sure that PUBLIC identifiers may have some strange
- characters. <EM>NOTE: The XML editors have said that the XML
- specification errata will specify that parameter entity expansion
- does not occur in PUBLIC identifiers, so that the '%' character
- will not flag a malformed parameter entity reference.</EM></TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-101"
- URI="valid/sa/101.xml" SECTIONS="4.5"
- OUTPUT="valid/sa/out/101.xml">
- This tests whether entity expansion is (incorrectly) done
- while processing entity declarations; if it is, the entity
- value literal will terminate prematurely.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-102"
- URI="valid/sa/102.xml" SECTIONS="3.3.3"
- OUTPUT="valid/sa/out/102.xml">
- Test demonstrates that a CDATA attribute can pass a double quote as its value. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-103"
- URI="valid/sa/103.xml" SECTIONS="3.3.3"
- OUTPUT="valid/sa/out/103.xml">
- Test demonstrates that an attribute can pass a less than sign as its value. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-104"
- URI="valid/sa/104.xml" SECTIONS="3.1 [40]"
- OUTPUT="valid/sa/out/104.xml">
- Test demonstrates that extra whitespace within an Attribute of a Start-tag is normalized to a single space character. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-105"
- URI="valid/sa/105.xml" SECTIONS="3.3.3"
- OUTPUT="valid/sa/out/105.xml">
- Basically an output test, this requires a CDATA attribute
- with a tab character to be passed through as one space.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-106"
- URI="valid/sa/106.xml" SECTIONS="3.3.3"
- OUTPUT="valid/sa/out/106.xml">
- Basically an output test, this requires a CDATA attribute
- with a newline character to be passed through as one space.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-107"
- URI="valid/sa/107.xml" SECTIONS="3.3.3"
- OUTPUT="valid/sa/out/107.xml">
- Basically an output test, this requires a CDATA attribute
- with a return character to be passed through as one space.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-108"
- URI="valid/sa/108.xml" SECTIONS="2.11, 3.3.3"
- OUTPUT="valid/sa/out/108.xml">
- This tests normalization of end-of-line characters (CRLF)
- within entities to LF, primarily as an output test. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-109"
- URI="valid/sa/109.xml" SECTIONS="2.3 3.1 [10][40][41]"
- OUTPUT="valid/sa/out/109.xml">
- Test demonstrates that an attribute can have a null value. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-110"
- URI="valid/sa/110.xml" SECTIONS="3.3.3"
- OUTPUT="valid/sa/out/110.xml">
- Basically an output test, this requires that a CDATA
- attribute with a CRLF be normalized to one space.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-111"
- URI="valid/sa/111.xml" SECTIONS="3.3.3"
- OUTPUT="valid/sa/out/111.xml">
- Character references expanding to spaces doesn't affect
- treatment of attributes. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-112"
- URI="valid/sa/112.xml" SECTIONS="3.2.1 [48][49]"
- OUTPUT="valid/sa/out/112.xml">
- Test demonstrates shows the use of content particles within the element content. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-113"
- URI="valid/sa/113.xml" SECTIONS="3.3 [52][53]"
- OUTPUT="valid/sa/out/113.xml">
- Test demonstrates that it is not an error to have attributes declared for an element not itself declared.</TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-114"
- URI="valid/sa/114.xml" SECTIONS="2.7 [20]"
- OUTPUT="valid/sa/out/114.xml">
- Test demonstrates that all text within a valid CDATA section is considered text and not recognized as markup. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-115"
- URI="valid/sa/115.xml" SECTIONS="3.3.3"
- OUTPUT="valid/sa/out/115.xml">
- Test demonstrates that an entity reference is processed by recursively processing the replacement text of the entity. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-116"
- URI="valid/sa/116.xml" SECTIONS="2.11"
- OUTPUT="valid/sa/out/116.xml">
- Test demonstrates that a line break within CDATA will be normalized. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-117"
- URI="valid/sa/117.xml" SECTIONS="4.5"
- OUTPUT="valid/sa/out/117.xml">
- Test demonstrates that entity expansion is done while processing entity declarations. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-118"
- URI="valid/sa/118.xml" SECTIONS="4.5"
- OUTPUT="valid/sa/out/118.xml">
- Test demonstrates that entity expansion is done while processing entity declarations. </TEST>
-<TEST TYPE="valid" ENTITIES="none" ID="valid-sa-119"
- URI="valid/sa/119.xml" SECTIONS="2.5"
- OUTPUT="valid/sa/out/119.xml">
- Comments may contain any legal XML characters;
- only the string "--" is disallowed.</TEST>
-
-
-<!-- Start: valid/not-sa -->
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-001"
- URI="valid/not-sa/001.xml" SECTIONS="4.2.2 [75]"
- OUTPUT="valid/not-sa/out/001.xml">
- Test demonstrates the use of an ExternalID within a document type definition. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-002"
- URI="valid/not-sa/002.xml" SECTIONS="4.2.2 [75]"
- OUTPUT="valid/not-sa/out/002.xml">
- Test demonstrates the use of an ExternalID within a document type definition. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-003"
- URI="valid/not-sa/003.xml" SECTIONS="4.1 [69]"
- OUTPUT="valid/not-sa/out/003.xml">
- Test demonstrates the expansion of an external parameter entity that declares an attribute. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-004"
- URI="valid/not-sa/004.xml" SECTIONS="4.1 [69]"
- OUTPUT="valid/not-sa/out/004.xml">
- Expands an external parameter entity in two different ways,
- with one of them declaring an attribute.</TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-005"
- URI="valid/not-sa/005.xml" SECTIONS="4.1 [69]"
- OUTPUT="valid/not-sa/out/005.xml">
- Test demonstrates the expansion of an external parameter entity that declares an attribute. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-006"
- URI="valid/not-sa/006.xml" SECTIONS="3.3 [52]"
- OUTPUT="valid/not-sa/out/006.xml">
- Test demonstrates that when more than one definition is provided for the same attribute of a given element type only the first declaration is binding. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-007"
- URI="valid/not-sa/007.xml" SECTIONS="3.3 [52]"
- OUTPUT="valid/not-sa/out/007.xml">
- Test demonstrates the use of an Attribute list declaration within an external entity. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-008"
- URI="valid/not-sa/008.xml" SECTIONS="4.2.2 [75]"
- OUTPUT="valid/not-sa/out/008.xml">
- Test demonstrates that an external identifier may include a public identifier. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-009"
- URI="valid/not-sa/009.xml" SECTIONS="4.2.2 [75]"
- OUTPUT="valid/not-sa/out/009.xml">
- Test demonstrates that an external identifier may include a public identifier. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-010"
- URI="valid/not-sa/010.xml" SECTIONS="3.3 [52]"
- OUTPUT="valid/not-sa/out/010.xml">
- Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-011"
- URI="valid/not-sa/011.xml" SECTIONS="4.2 4.2.1 [72] [75]"
- OUTPUT="valid/not-sa/out/011.xml">
- Test demonstrates a parameter entity declaration whose parameter entity definition is an ExternalID. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-012"
- URI="valid/not-sa/012.xml" SECTIONS="4.3.1 [77]"
- OUTPUT="valid/not-sa/out/012.xml">
- Test demonstrates an enternal parsed entity that begins with a text declaration. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-013"
- URI="valid/not-sa/013.xml" SECTIONS="3.4 [62]"
- OUTPUT="valid/not-sa/out/013.xml">
- Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-014"
- URI="valid/not-sa/014.xml" SECTIONS="3.4 [62]"
- OUTPUT="valid/not-sa/out/014.xml">
- Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-015"
- URI="valid/not-sa/015.xml" SECTIONS="3.4 [63]"
- OUTPUT="valid/not-sa/out/015.xml">
- Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being part of the DTD. The keyword is a parameter-entity reference. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-016"
- URI="valid/not-sa/016.xml" SECTIONS="3.4 [62]"
- OUTPUT="valid/not-sa/out/016.xml">
- Test demonstrates the use of the conditional section INCLUDE that will include its contents as part of the DTD. The keyword is a parameter-entity reference.</TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-017"
- URI="valid/not-sa/017.xml" SECTIONS="4.2 [72]"
- OUTPUT="valid/not-sa/out/017.xml">
- Test demonstrates a parameter entity declaration that contains an attribute list declaration. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-018"
- URI="valid/not-sa/018.xml" SECTIONS="4.2.2 [75]"
- OUTPUT="valid/not-sa/out/018.xml">
- Test demonstrates an EnternalID whose contents contain an parameter entity declaration and a attribute list definition. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-019"
- URI="valid/not-sa/019.xml" SECTIONS="4.4.8"
- OUTPUT="valid/not-sa/out/019.xml">
- Test demonstrates that a parameter entity will be expanded with spaces on either side. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-020"
- URI="valid/not-sa/020.xml" SECTIONS="4.4.8"
- OUTPUT="valid/not-sa/out/020.xml">
- Parameter entities expand with spaces on either side.</TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-021"
- URI="valid/not-sa/021.xml" SECTIONS="4.2 [72]"
- OUTPUT="valid/not-sa/out/021.xml">
- Test demonstrates a parameter entity declaration that contains a partial attribute list declaration. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-023"
- URI="valid/not-sa/023.xml" SECTIONS="2.3 4.1 [10] [69]"
- OUTPUT="valid/not-sa/out/023.xml">
- Test demonstrates the use of a parameter entity reference within an attribute list declaration.
-</TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-024"
- URI="valid/not-sa/024.xml" SECTIONS="2.8, 4.1 [69]"
- OUTPUT="valid/not-sa/out/024.xml">
- Constructs an &lt;!ATTLIST...&gt; declaration from several PEs.</TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-025"
- URI="valid/not-sa/025.xml" SECTIONS="4.2"
- OUTPUT="valid/not-sa/out/025.xml">
- Test demonstrates that when more that one definition is provided for the same entity only the first declaration is binding. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-026"
- URI="valid/not-sa/026.xml" SECTIONS="3.3 [52]"
- OUTPUT="valid/not-sa/out/026.xml">
- Test demonstrates that when more that one definition is provided for the same attribute of a given element type only the first declaration is binding. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-027"
- URI="valid/not-sa/027.xml" SECTIONS="4.1 [69]"
- OUTPUT="valid/not-sa/out/027.xml">
- Test demonstrates a parameter entity reference whose value is NULL. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-028"
- URI="valid/not-sa/028.xml" SECTIONS="3.4 [62]"
- OUTPUT="valid/not-sa/out/028.xml">
- Test demonstrates the use of the conditional section INCLUDE that will include its contents. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-029"
- URI="valid/not-sa/029.xml" SECTIONS="3.4 [62]"
- OUTPUT="valid/not-sa/out/029.xml">
- Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-030"
- URI="valid/not-sa/030.xml" SECTIONS="3.4 [62]"
- OUTPUT="valid/not-sa/out/030.xml">
- Test demonstrates the use of the conditonal section IGNORE the will ignore its content from being used. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-not-sa-031"
- URI="valid/not-sa/031.xml" SECTIONS="2.7"
- OUTPUT="valid/not-sa/out/031.xml">
- Expands a general entity which contains a CDATA section with
- what looks like a markup declaration (but is just text since
- it's in a CDATA section).</TEST>
-
-
-<!-- Start: valid/ext-sa -->
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-001"
- URI="valid/ext-sa/001.xml" SECTIONS="2.11"
- OUTPUT="valid/ext-sa/out/001.xml">
- A combination of carriage return line feed in an external entity must
- be normalized to a single newline. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-002"
- URI="valid/ext-sa/002.xml" SECTIONS="2.11"
- OUTPUT="valid/ext-sa/out/002.xml">
- A carriage return (also CRLF) in an external entity must
- be normalized to a single newline. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-003"
- URI="valid/ext-sa/003.xml" SECTIONS="3.1 4.1 [43] [68]"
- OUTPUT="valid/ext-sa/out/003.xml">
- Test demonstrates that the content of an element can be empty. In this case the external entity is an empty file. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-004"
- URI="valid/ext-sa/004.xml" SECTIONS="2.11"
- OUTPUT="valid/ext-sa/out/004.xml">
- A carriage return (also CRLF) in an external entity must
- be normalized to a single newline. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-005"
- URI="valid/ext-sa/005.xml" SECTIONS="3.2.1 4.2.2 [48] [75]"
- OUTPUT="valid/ext-sa/out/005.xml">
- Test demonstrates the use of optional character and content particles within an element content. The test also show the use of external entity. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-006"
- URI="valid/ext-sa/006.xml" SECTIONS="2.11 3.2.1 3.2.2 4.2.2 [48] [51] [75]"
- OUTPUT="valid/ext-sa/out/006.xml">
- Test demonstrates the use of optional character and content particles within mixed element content. The test also shows the use of an external entity and that a carriage control line feed in an external entity must be normalized to a single newline. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-007"
- URI="valid/ext-sa/007.xml" SECTIONS="4.2.2 4.4.3 [75]"
- OUTPUT="valid/ext-sa/out/007.xml">
- Test demonstrates the use of external entity and how replacement
-text is retrieved and processed. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-008"
- URI="valid/ext-sa/008.xml" SECTIONS="4.2.2 4.3.3. 4.4.3 [75] [80]"
- OUTPUT="valid/ext-sa/out/008.xml"> Test demonstrates the use of external
-entity and how replacement text is retrieved and processed. Also tests the use of an
-EncodingDecl of UTF-16.</TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-009"
- URI="valid/ext-sa/009.xml" SECTIONS="2.11"
- OUTPUT="valid/ext-sa/out/009.xml">
- A carriage return (also CRLF) in an external entity must
- be normalized to a single newline. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-011"
- URI="valid/ext-sa/011.xml" SECTIONS="2.11 4.2.2 [75]"
- OUTPUT="valid/ext-sa/out/011.xml">
- Test demonstrates the use of a public identifier with and external entity.
-The test also show that a carriage control line feed combination in an external
-entity must be normalized to a single newline. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-012"
- URI="valid/ext-sa/012.xml" SECTIONS="4.2.1 4.2.2"
- OUTPUT="valid/ext-sa/out/012.xml">
- Test demonstrates both internal and external entities and that processing of entity references may be required to produce the correct replacement text.</TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-013"
- URI="valid/ext-sa/013.xml" SECTIONS="3.3.3"
- OUTPUT="valid/ext-sa/out/013.xml">
- Test demonstrates that whitespace is handled by adding a single whitespace to the normalized value in the attribute list. </TEST>
-<TEST TYPE="valid" ENTITIES="both" ID="valid-ext-sa-014"
- URI="valid/ext-sa/014.xml" SECTIONS="4.1 4.4.3 [68]"
- OUTPUT="valid/ext-sa/out/014.xml">
- Test demonstrates use of characters outside of normal ASCII range.</TEST>
-</TESTCASES>
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/069.xml
index 41eed46727..41eed46727 100644
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/069.xml
+++ b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/069.xml
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/076.xml
index b07019e90f..b07019e90f 100644
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/076.xml
+++ b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/076.xml
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/090.xml
index 41eed46727..41eed46727 100644
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/090.xml
+++ b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/090.xml
diff --git a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/091.xml
index c55a698bbb..c55a698bbb 100644
--- a/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/091.xml
+++ b/tests/auto/corelib/serialization/qxmlstream/XML-Test-Suite/xmlconf/xmltest_updates/091.xml
diff --git a/tests/auto/corelib/serialization/qxmlstream/qxmlstream.pro b/tests/auto/corelib/serialization/qxmlstream/qxmlstream.pro
index 0a739f0a0e..f8043367d1 100644
--- a/tests/auto/corelib/serialization/qxmlstream/qxmlstream.pro
+++ b/tests/auto/corelib/serialization/qxmlstream/qxmlstream.pro
@@ -1,6 +1,6 @@
CONFIG += testcase
TARGET = tst_qxmlstream
-QT = core xml network testlib
+QT = core xml network gui-private testlib
SOURCES = tst_qxmlstream.cpp
TESTDATA += data XML-Test-Suite
diff --git a/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp b/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp
index 28922574b8..533fcd96f5 100644
--- a/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp
+++ b/tests/auto/corelib/serialization/qxmlstream/tst_qxmlstream.cpp
@@ -36,6 +36,9 @@
#include <QUrl>
#include <QXmlDefaultHandler>
#include <QXmlStreamReader>
+#include <QBuffer>
+#include <QStack>
+#include <QtGui/private/qzipreader_p.h>
#include "qc14n.h"
@@ -44,6 +47,10 @@ Q_DECLARE_METATYPE(QXmlStreamReader::ReadElementTextBehaviour)
static const char *const catalogFile = "XML-Test-Suite/xmlconf/finalCatalog.xml";
static const int expectedRunCount = 1646;
static const int expectedSkipCount = 532;
+static const char *const xmlconfDir = "XML-Test-Suite/xmlconf/";
+static const char *const xmlDatasetName = "xmltest";
+static const char *const updateFilesDir = "xmltest_updates";
+static const char *const destinationFolder = "/valid/sa/out/";
static inline int best(int a, int b)
{
@@ -591,6 +598,27 @@ private:
void tst_QXmlStream::initTestCase()
{
+#ifdef Q_OS_WINRT
+ QSKIP("Skipping the tests because we cannot unzip the data archive from WinRT app");
+#endif
+ // Due to license restrictions, we need to distribute part of the test
+ // suit as a zip archive. So we need to unzip it before running the tests,
+ // and also update some files there.
+ // We also need to remove the unzipped data during cleanup.
+ const QString filesDir(QFINDTESTDATA(xmlconfDir));
+ QZipReader reader(filesDir + xmlDatasetName + ".zip");
+ QVERIFY(reader.isReadable());
+ QVERIFY(reader.extractAll(filesDir));
+ // update files
+ const auto files =
+ QDir(filesDir + updateFilesDir).entryInfoList(QDir::Files | QDir::NoDotAndDotDot);
+ for (const auto &fileInfo : files) {
+ const QString destinationPath =
+ filesDir + xmlDatasetName + destinationFolder + fileInfo.fileName();
+ QFile::remove(destinationPath); // copy will fail if file exists
+ QVERIFY(QFile::copy(fileInfo.filePath(), destinationPath));
+ }
+
QFile file(QFINDTESTDATA(catalogFile));
QVERIFY2(file.open(QIODevice::ReadOnly),
qPrintable(QString::fromLatin1("Failed to open the test suite catalog; %1").arg(file.fileName())));
@@ -600,6 +628,8 @@ void tst_QXmlStream::initTestCase()
void tst_QXmlStream::cleanupTestCase()
{
+ QDir d(QFINDTESTDATA(xmlconfDir) + xmlDatasetName);
+ d.removeRecursively();
QFile::remove(QLatin1String("test.xml"));
}
diff --git a/tests/auto/corelib/text/qstring/tst_qstring.cpp b/tests/auto/corelib/text/qstring/tst_qstring.cpp
index 696b8159ac..878988d425 100644
--- a/tests/auto/corelib/text/qstring/tst_qstring.cpp
+++ b/tests/auto/corelib/text/qstring/tst_qstring.cpp
@@ -1301,6 +1301,9 @@ void tst_QString::asprintfS()
QCOMPARE(QString::asprintf("%-10.10s", "Hello" ), QLatin1String("Hello "));
QCOMPARE(QString::asprintf("%-10.3s", "Hello" ), QLatin1String("Hel "));
QCOMPARE(QString::asprintf("%-5.5s", "Hello" ), QLatin1String("Hello"));
+ QCOMPARE(QString::asprintf("%*s", 4, "Hello"), QLatin1String("Hello"));
+ QCOMPARE(QString::asprintf("%*s", 10, "Hello"), QLatin1String(" Hello"));
+ QCOMPARE(QString::asprintf("%-*s", 10, "Hello"), QLatin1String("Hello "));
// Check utf8 conversion for %s
QCOMPARE(QString::asprintf("%s", "\303\266\303\244\303\274\303\226\303\204\303\234\303\270\303\246\303\245\303\230\303\206\303\205"), QString::fromLatin1("\366\344\374\326\304\334\370\346\345\330\306\305"));
@@ -1320,6 +1323,9 @@ void tst_QString::asprintfS()
QCOMPARE(QString::asprintf("%-10.10ls", qUtf16Printable("Hello")), QLatin1String("Hello "));
QCOMPARE(QString::asprintf("%-10.3ls", qUtf16Printable("Hello")), QLatin1String("Hel "));
QCOMPARE(QString::asprintf("%-5.5ls", qUtf16Printable("Hello")), QLatin1String("Hello"));
+ QCOMPARE(QString::asprintf("%*ls", 4, qUtf16Printable("Hello")), QLatin1String("Hello"));
+ QCOMPARE(QString::asprintf("%*ls", 10, qUtf16Printable("Hello")), QLatin1String(" Hello"));
+ QCOMPARE(QString::asprintf("%-*ls", 10, qUtf16Printable("Hello")), QLatin1String("Hello "));
// Check utf16 is preserved for %ls
QCOMPARE(QString::asprintf("%ls",
diff --git a/tests/auto/corelib/text/qstringlist/tst_qstringlist.cpp b/tests/auto/corelib/text/qstringlist/tst_qstringlist.cpp
index 66d4744454..a2dfbed93d 100644
--- a/tests/auto/corelib/text/qstringlist/tst_qstringlist.cpp
+++ b/tests/auto/corelib/text/qstringlist/tst_qstringlist.cpp
@@ -523,6 +523,11 @@ void tst_QStringList::joinChar_data() const
<< QLatin1String("c"))
<< QChar(QLatin1Char(' '))
<< QString("a b c");
+
+ QTest::newRow("null separator")
+ << QStringList{QStringLiteral("a"), QStringLiteral("b"), QStringLiteral("c")}
+ << QChar(u'\0')
+ << QStringLiteral("a\0b\0c");
}
void tst_QStringList::joinEmptiness() const
diff --git a/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
index 3538d90803..c9120d7576 100644
--- a/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
+++ b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
@@ -309,7 +309,18 @@ void tst_QThreadStorage::crashOnExit()
QSKIP("No qprocess support", SkipAll);
#else
QString errorMessage;
- QVERIFY2(runCrashOnExit("crashOnExit_helper", &errorMessage),
+
+ // Add the executable's directory to path so that we can find the test helper next to it
+ // in a cross-platform way. We must do this because the CWD is not pointing to this directory
+ // in debug-and-release builds.
+ QByteArray path = qgetenv("PATH");
+ qputenv("PATH",
+ path + QDir::listSeparator().toLatin1()
+ + QCoreApplication::applicationDirPath().toLocal8Bit());
+ auto restore = qScopeGuard([&] { qputenv("PATH", path); });
+
+ QString binary = QStringLiteral("crashOnExit_helper");
+ QVERIFY2(runCrashOnExit(binary, &errorMessage),
qPrintable(errorMessage));
#endif
}
diff --git a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp
index d3afee96cd..b60d67fd89 100644
--- a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp
@@ -1098,6 +1098,18 @@ void tst_QDateTime::addDays()
QCOMPARE(dt2.timeSpec(), Qt::OffsetFromUTC);
QCOMPARE(dt2.offsetFromUtc(), 60 * 60);
+#if QT_CONFIG(timezone)
+ const QTimeZone cet("Europe/Oslo");
+ if (cet.isValid()) {
+ dt1 = QDate(2022, 1, 10).startOfDay(cet);
+ dt2 = dt1.addDays(2); // QTBUG-99668: should not assert
+ QCOMPARE(dt2.date(), QDate(2022, 1, 12));
+ QCOMPARE(dt2.time(), QTime(0, 0));
+ QCOMPARE(dt2.timeSpec(), Qt::TimeZone);
+ QCOMPARE(dt2.timeZone(), cet);
+ }
+#endif
+
// ### test invalid QDateTime()
}
diff --git a/tests/auto/dbus/qdbusconnection/BLACKLIST b/tests/auto/dbus/qdbusconnection/BLACKLIST
new file mode 100644
index 0000000000..19d302d025
--- /dev/null
+++ b/tests/auto/dbus/qdbusconnection/BLACKLIST
@@ -0,0 +1,4 @@
+# See qtbase/src/testlib/qtestblacklist.cpp for format
+#QTBUG-101636
+[registerObjectPeer2]
+ubuntu-20
diff --git a/tests/auto/gui/kernel/qbackingstore/tst_qbackingstore.cpp b/tests/auto/gui/kernel/qbackingstore/tst_qbackingstore.cpp
index fb4f80f085..ac3123814c 100644
--- a/tests/auto/gui/kernel/qbackingstore/tst_qbackingstore.cpp
+++ b/tests/auto/gui/kernel/qbackingstore/tst_qbackingstore.cpp
@@ -43,8 +43,47 @@ class tst_QBackingStore : public QObject
private slots:
void flush();
+
+ void scrollRectInImage_data();
+ void scrollRectInImage();
};
+void tst_QBackingStore::scrollRectInImage_data()
+{
+ QTest::addColumn<QRect>("rect");
+ QTest::addColumn<QPoint>("offset");
+
+ QTest::newRow("empty rect") << QRect() << QPoint();
+ QTest::newRow("rect outside image") << QRect(-100, -100, 1000, 1000) << QPoint(10, 10);
+ QTest::newRow("scroll outside positive") << QRect(10, 10, 10, 10) << QPoint(1000, 1000);
+ QTest::newRow("scroll outside negative") << QRect(10, 10, 10, 10) << QPoint(-1000, -1000);
+
+ QTest::newRow("sub-rect positive scroll") << QRect(100, 100, 50, 50) << QPoint(10, 10);
+ QTest::newRow("sub-rect negative scroll") << QRect(100, 100, 50, 50) << QPoint(-10, -10);
+
+ QTest::newRow("positive vertical only") << QRect(100, 100, 50, 50) << QPoint(0, 10);
+ QTest::newRow("negative vertical only") << QRect(100, 100, 50, 50) << QPoint(0, -10);
+ QTest::newRow("positive horizontal only") << QRect(100, 100, 50, 50) << QPoint(10, 0);
+ QTest::newRow("negative horizontal only") << QRect(100, 100, 50, 50) << QPoint(-10, 0);
+
+ QTest::newRow("whole rect positive") << QRect(0, 0, 250, 250) << QPoint(10, 10);
+ QTest::newRow("whole rect negative") << QRect(0, 0, 250, 250) << QPoint(-10, -10);
+}
+
+QT_BEGIN_NAMESPACE
+Q_GUI_EXPORT void qt_scrollRectInImage(QImage &, const QRect &, const QPoint &);
+QT_END_NAMESPACE
+
+void tst_QBackingStore::scrollRectInImage()
+{
+ QImage test(250, 250, QImage::Format_ARGB32_Premultiplied);
+
+ QFETCH(QRect, rect);
+ QFETCH(QPoint, offset);
+
+ qt_scrollRectInImage(test, rect, offset);
+}
+
class Window : public QWindow
{
public:
diff --git a/tests/auto/gui/qvulkan/tst_qvulkan.cpp b/tests/auto/gui/qvulkan/tst_qvulkan.cpp
index c80c3fed97..3315ae5225 100644
--- a/tests/auto/gui/qvulkan/tst_qvulkan.cpp
+++ b/tests/auto/gui/qvulkan/tst_qvulkan.cpp
@@ -153,8 +153,15 @@ void tst_QVulkan::vulkanVersionRequest()
inst.destroy();
inst.setApiVersion(QVersionNumber(10, 0, 0));
- QVERIFY(!inst.create());
- QCOMPARE(inst.errorCode(), VK_ERROR_INCOMPATIBLE_DRIVER);
+
+ bool result = inst.create();
+
+ // Starting with Vulkan 1.1 the spec does not allow the implementation to
+ // fail the instance creation. So check for the 1.0 behavior only when
+ // create() failed, skip this verification with 1.1+ (where create() will
+ // succeed for any bogus api version).
+ if (!result)
+ QCOMPARE(inst.errorCode(), VK_ERROR_INCOMPATIBLE_DRIVER);
}
static void waitForUnexposed(QWindow *w)
diff --git a/tests/auto/gui/text/qfont/BLACKLIST b/tests/auto/gui/text/qfont/BLACKLIST
new file mode 100644
index 0000000000..55a810c78a
--- /dev/null
+++ b/tests/auto/gui/text/qfont/BLACKLIST
@@ -0,0 +1,6 @@
+[defaultFamily:cursive]
+rhel-8.4
+ubuntu-20.04
+[defaultFamily:fantasy]
+rhel-8.4
+ubuntu-20.04
diff --git a/tests/auto/gui/text/qglyphrun/BLACKLIST b/tests/auto/gui/text/qglyphrun/BLACKLIST
index 57f32c683d..bc10b395a9 100644
--- a/tests/auto/gui/text/qglyphrun/BLACKLIST
+++ b/tests/auto/gui/text/qglyphrun/BLACKLIST
@@ -1,3 +1,4 @@
[mixedScripts]
ubuntu-18.04
+ubuntu-20.04
b2qt
diff --git a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
index a61824b51c..de12862383 100644
--- a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
+++ b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
@@ -200,6 +200,9 @@ private slots:
void contentsChangeIndices_data();
void contentsChangeIndices();
+ void insertHtmlWithComments_data();
+ void insertHtmlWithComments();
+
private:
void backgroundImage_checkExpectedHtml(const QTextDocument &doc);
void buildRegExpData();
@@ -3775,6 +3778,44 @@ void tst_QTextDocument::contentsChangeIndices()
QCOMPARE(changeAdded - changeRemoved, 1);
}
+void tst_QTextDocument::insertHtmlWithComments_data()
+{
+ QTest::addColumn<QString>("html");
+ QTest::addColumn<QStringList>("expectedBlocks");
+
+ QTest::newRow("commentless") << "<p>first</p><p>second</p><p>third</p>"
+ << QStringList { "first", "second", "third" };
+ QTest::newRow("normal") << "<p>first</p><!--<p>second</p>--><p>third</p>"
+ << QStringList { "first", "third" };
+ QTest::newRow("nonClosing") << "<p>first</p><!--<p>second</p><p>third</p>"
+ << QStringList { "first" };
+ QTest::newRow("immediatelyClosing") << "<p>first</p><!----><p>second</p><p>third</p>"
+ << QStringList { "first", "second", "third" };
+ QTest::newRow("fake") << "<p>first</p><!-<p>second</p><p>third</p>"
+ << QStringList { "first", "second", "third" };
+ QTest::newRow("endingNonExistant") << "<p>first</p>--><p>second</p><p>third</p>"
+ << QStringList { "first", "-->", "second", "third" };
+}
+
+void tst_QTextDocument::insertHtmlWithComments()
+{
+ QFETCH(QString, html);
+ QFETCH(QStringList, expectedBlocks);
+
+ QTextDocument doc;
+ doc.setHtml(html);
+
+ QCOMPARE(doc.blockCount(), expectedBlocks.count());
+
+ QStringList blockContent;
+ auto currentBlock = doc.begin();
+ while (currentBlock != doc.end()) {
+ blockContent.append(currentBlock.text());
+ currentBlock = currentBlock.next();
+ }
+
+ QCOMPARE(blockContent, expectedBlocks);
+}
QTEST_MAIN(tst_QTextDocument)
#include "tst_qtextdocument.moc"
diff --git a/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp b/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp
index 78cc1da36e..ba09b863ec 100644
--- a/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp
+++ b/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp
@@ -73,6 +73,7 @@ public:
Mono = 0x08,
Link = 0x10
};
+ Q_ENUM(CharFormat)
Q_DECLARE_FLAGS(CharFormats, CharFormat)
};
@@ -324,12 +325,14 @@ void tst_QTextMarkdownImporter::nestedSpans()
<< "weight" << fmt.fontWeight() << "italic" << fmt.fontItalic()
<< "strikeout" << fmt.fontStrikeOut() << "anchor" << fmt.isAnchor()
<< "monospace" << QFontInfo(fmt.font()).fixedPitch() // depends on installed fonts (QTBUG-75649)
- << fmt.fontFixedPitch() // returns false even when font family is "monospace"
- << fmt.hasProperty(QTextFormat::FontFixedPitch); // works
- QCOMPARE(fmt.fontWeight() > 50, expectedFormat.testFlag(Bold));
+ << fmt.fontFixedPitch()
+ << fmt.hasProperty(QTextFormat::FontFixedPitch)
+ << "expected" << expectedFormat;
+ QCOMPARE(fmt.fontWeight() > QFont::Normal, expectedFormat.testFlag(Bold));
QCOMPARE(fmt.fontItalic(), expectedFormat.testFlag(Italic));
QCOMPARE(fmt.fontStrikeOut(), expectedFormat.testFlag(Strikeout));
QCOMPARE(fmt.isAnchor(), expectedFormat.testFlag(Link));
+ QCOMPARE(fmt.fontFixedPitch(), expectedFormat.testFlag(Mono));
QCOMPARE(fmt.hasProperty(QTextFormat::FontFixedPitch), expectedFormat.testFlag(Mono));
++iterator;
}
diff --git a/tests/auto/gui/text/qtextmarkdownwriter/tst_qtextmarkdownwriter.cpp b/tests/auto/gui/text/qtextmarkdownwriter/tst_qtextmarkdownwriter.cpp
index 13449299cb..b60b07ea30 100644
--- a/tests/auto/gui/text/qtextmarkdownwriter/tst_qtextmarkdownwriter.cpp
+++ b/tests/auto/gui/text/qtextmarkdownwriter/tst_qtextmarkdownwriter.cpp
@@ -51,6 +51,7 @@ private slots:
void testWriteParagraph();
void testWriteList();
void testWriteEmptyList();
+ void testWriteCheckboxListItemEndingWithCode();
void testWriteNestedBulletLists_data();
void testWriteNestedBulletLists();
void testWriteNestedNumericLists();
@@ -133,6 +134,34 @@ void tst_QTextMarkdownWriter::testWriteEmptyList()
QCOMPARE(documentToUnixMarkdown(), QString::fromLatin1("- \n"));
}
+void tst_QTextMarkdownWriter::testWriteCheckboxListItemEndingWithCode()
+{
+ QTextCursor cursor(document);
+ QTextList *list = cursor.createList(QTextListFormat::ListDisc);
+ cursor.insertText("Image.originalSize property (not necessary; PdfDocument.pagePointSize() substitutes)");
+ list->add(cursor.block());
+ {
+ auto fmt = cursor.block().blockFormat();
+ fmt.setMarker(QTextBlockFormat::MarkerType::Unchecked);
+ cursor.setBlockFormat(fmt);
+ }
+ cursor.movePosition(QTextCursor::PreviousWord, QTextCursor::MoveAnchor, 2);
+ cursor.movePosition(QTextCursor::Left, QTextCursor::MoveAnchor);
+ cursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor, 4);
+ QCOMPARE(cursor.selectedText(), QString::fromLatin1("PdfDocument.pagePointSize()"));
+ auto fmt = cursor.charFormat();
+ fmt.setFontFixedPitch(true);
+ cursor.setCharFormat(fmt);
+ cursor.movePosition(QTextCursor::PreviousWord, QTextCursor::MoveAnchor, 5);
+ cursor.movePosition(QTextCursor::Left, QTextCursor::MoveAnchor);
+ cursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor, 4);
+ QCOMPARE(cursor.selectedText(), QString::fromLatin1("Image.originalSize"));
+ cursor.setCharFormat(fmt);
+
+ QCOMPARE(documentToUnixMarkdown(), QString::fromLatin1(
+ "- [ ] `Image.originalSize` property (not necessary; `PdfDocument.pagePointSize()`\n substitutes)\n"));
+}
+
void tst_QTextMarkdownWriter::testWriteNestedBulletLists_data()
{
QTest::addColumn<bool>("checkbox");
diff --git a/tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp b/tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp
index 4d95345de9..a53524e956 100644
--- a/tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp
+++ b/tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp
@@ -69,6 +69,10 @@ public slots:
}
};
+#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
+# define CAN_IMPLICITLY_UNSET
+#endif
+
void tst_qdesktopservices::handlers()
{
MyUrlHandler fooHandler;
@@ -76,6 +80,12 @@ void tst_qdesktopservices::handlers()
QDesktopServices::setUrlHandler(QString("foo"), &fooHandler, "handle");
QDesktopServices::setUrlHandler(QString("bar"), &barHandler, "handle");
+#ifndef CAN_IMPLICITLY_UNSET
+ const auto unsetHandlers = qScopeGuard([] {
+ QDesktopServices::unsetUrlHandler(u"bar"_qs);
+ QDesktopServices::unsetUrlHandler(u"foo"_qs);
+ });
+#endif
QUrl fooUrl("foo://blub/meh");
QUrl barUrl("bar://hmm/hmmmm");
@@ -85,6 +95,15 @@ void tst_qdesktopservices::handlers()
QCOMPARE(fooHandler.lastHandledUrl.toString(), fooUrl.toString());
QCOMPARE(barHandler.lastHandledUrl.toString(), barUrl.toString());
+
+#ifdef CAN_IMPLICITLY_UNSET
+ for (int i = 0; i < 2; ++i)
+ QTest::ignoreMessage(QtWarningMsg,
+ "Please call QDesktopServices::unsetUrlHandler() before destroying a "
+ "registered URL handler object.\n"
+ "Support for destroying a registered URL handler object is deprecated, "
+ "and will be removed in Qt 6.6.");
+#endif
}
#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
diff --git a/tests/auto/network/access/http2/http2srv.cpp b/tests/auto/network/access/http2/http2srv.cpp
index e2f039e2f7..ab760dd2b0 100644
--- a/tests/auto/network/access/http2/http2srv.cpp
+++ b/tests/auto/network/access/http2/http2srv.cpp
@@ -125,6 +125,12 @@ void Http2Server::setAuthenticationHeader(const QByteArray &authentication)
authenticationHeader = authentication;
}
+void Http2Server::setRedirect(const QByteArray &url, int count)
+{
+ redirectUrl = url;
+ redirectCount = count;
+}
+
void Http2Server::emulateGOAWAY(int timeout)
{
Q_ASSERT(timeout >= 0);
@@ -855,7 +861,10 @@ void Http2Server::sendResponse(quint32 streamID, bool emptyBody)
const QString url("%1://localhost:%2/");
header.push_back({"location", url.arg(isClearText() ? QStringLiteral("http") : QStringLiteral("https"),
QString::number(targetPort)).toLatin1()});
-
+ } else if (redirectCount > 0) { // Not redirecting while reading, unlike above
+ --redirectCount;
+ header.push_back({":status", "308"});
+ header.push_back({"location", redirectUrl});
} else if (!authenticationHeader.isEmpty() && !hasAuth) {
header.push_back({ ":status", "401" });
header.push_back(HPack::HeaderField("www-authenticate", authenticationHeader));
diff --git a/tests/auto/network/access/http2/http2srv.h b/tests/auto/network/access/http2/http2srv.h
index 013af86cc8..5f8c5aa77e 100644
--- a/tests/auto/network/access/http2/http2srv.h
+++ b/tests/auto/network/access/http2/http2srv.h
@@ -88,6 +88,9 @@ public:
void setResponseBody(const QByteArray &body);
// No authentication data is generated for the method, the full header value must be set
void setAuthenticationHeader(const QByteArray &authentication);
+ // Set the redirect URL and count. The server will return a redirect response with the url
+ // 'count' amount of times
+ void setRedirect(const QByteArray &redirectUrl, int count);
void emulateGOAWAY(int timeout);
void redirectOpenStream(quint16 targetPort);
@@ -219,6 +222,9 @@ private:
QAtomicInt interrupted;
QByteArray authenticationHeader;
+
+ QByteArray redirectUrl;
+ int redirectCount = 0;
protected slots:
void ignoreErrorSlot();
};
diff --git a/tests/auto/network/access/http2/tst_http2.cpp b/tests/auto/network/access/http2/tst_http2.cpp
index 0610d0a301..bf8c779909 100644
--- a/tests/auto/network/access/http2/tst_http2.cpp
+++ b/tests/auto/network/access/http2/tst_http2.cpp
@@ -115,6 +115,9 @@ private slots:
void authenticationRequired_data();
void authenticationRequired();
+ void redirect_data();
+ void redirect();
+
protected slots:
// Slots to listen to our in-process server:
void serverStarted(quint16 port);
@@ -955,6 +958,72 @@ void tst_Http2::authenticationRequired()
QTRY_VERIFY(serverGotSettingsACK);
}
+void tst_Http2::redirect_data()
+{
+ QTest::addColumn<int>("maxRedirects");
+ QTest::addColumn<int>("redirectCount");
+ QTest::addColumn<bool>("success");
+
+ QTest::addRow("1-redirects-none-allowed-failure") << 0 << 1 << false;
+ QTest::addRow("1-redirects-success") << 1 << 1 << true;
+ QTest::addRow("2-redirects-1-allowed-failure") << 1 << 2 << false;
+}
+
+void tst_Http2::redirect()
+{
+ QFETCH(const int, maxRedirects);
+ QFETCH(const int, redirectCount);
+ QFETCH(const bool, success);
+ const QByteArray redirectUrl = "/b.html";
+
+ clearHTTP2State();
+ serverPort = 0;
+
+ ServerPtr targetServer(newServer(defaultServerSettings, defaultConnectionType()));
+ targetServer->setRedirect(redirectUrl, redirectCount);
+
+ QMetaObject::invokeMethod(targetServer.data(), "startServer", Qt::QueuedConnection);
+ runEventLoop();
+
+ QVERIFY(serverPort != 0);
+
+ nRequests = 1 + maxRedirects;
+
+ auto originalUrl = requestUrl(defaultConnectionType());
+ auto url = originalUrl;
+ url.setPath("/index.html");
+ QNetworkRequest request(url);
+ request.setAttribute(QNetworkRequest::Http2AllowedAttribute, QVariant(true));
+ request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy);
+ request.setMaximumRedirectsAllowed(maxRedirects);
+
+ QScopedPointer<QNetworkReply> reply;
+ reply.reset(manager->get(request));
+
+ if (success) {
+ connect(reply.get(), &QNetworkReply::finished, this, &tst_Http2::replyFinished);
+ } else {
+ connect(reply.get(), &QNetworkReply::errorOccurred, this,
+ &tst_Http2::replyFinishedWithError);
+ }
+
+ // Since we're using self-signed certificates,
+ // ignore SSL errors:
+ reply->ignoreSslErrors();
+
+ runEventLoop();
+ STOP_ON_FAILURE
+
+ if (success) {
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->url().toString(),
+ originalUrl.resolved(QString::fromLatin1(redirectUrl)).toString());
+ } else if (maxRedirects < redirectCount) {
+ QCOMPARE(reply->error(), QNetworkReply::TooManyRedirectsError);
+ }
+ QTRY_VERIFY(serverGotSettingsACK);
+}
+
void tst_Http2::serverStarted(quint16 port)
{
serverPort = port;
diff --git a/tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp b/tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp
index 6637be0174..654dc159ad 100644
--- a/tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp
+++ b/tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
@@ -26,9 +26,11 @@
**
****************************************************************************/
-
-#include <QtTest/QtTest>
+#include <QTest>
#include <QtCore/QUrl>
+#if QT_CONFIG(timezone)
+# include <QtCore/QTimeZone>
+#endif
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkCookie>
@@ -236,12 +238,28 @@ void tst_QNetworkRequest::setHeader_data()
<< QVariant(QDate(2007, 11, 01))
<< true << "Last-Modified"
<< "Thu, 01 Nov 2007 00:00:00 GMT";
- QTest::newRow("Last-Modified-DateTime") << QNetworkRequest::LastModifiedHeader
- << QVariant(QDateTime(QDate(2007, 11, 01),
- QTime(18, 8, 30),
- Qt::UTC))
- << true << "Last-Modified"
- << "Thu, 01 Nov 2007 18:08:30 GMT";
+ QTest::newRow("Last-Modified-DateTime-UTC")
+ << QNetworkRequest::LastModifiedHeader
+ << QVariant(QDateTime(QDate(2007, 11, 1), QTime(18, 8, 30), Qt::UTC))
+ << true << "Last-Modified" << "Thu, 01 Nov 2007 18:08:30 GMT";
+ // QTBUG-80666: format dates correctly (as GMT) even if the date passed in isn't in UTC:
+ QTest::newRow("Last-Modified-DateTime-Local")
+ << QNetworkRequest::LastModifiedHeader
+ << QVariant(QDateTime(QDate(2007, 11, 1), QTime(18, 8, 30), Qt::UTC).toLocalTime())
+ << true << "Last-Modified" << "Thu, 01 Nov 2007 18:08:30 GMT";
+ QTest::newRow("Last-Modified-DateTime-Offset")
+ << QNetworkRequest::LastModifiedHeader
+ << QVariant(QDateTime(QDate(2007, 11, 1), QTime(18, 8, 30), Qt::UTC).toOffsetFromUtc(3600))
+ << true << "Last-Modified" << "Thu, 01 Nov 2007 18:08:30 GMT";
+#if QT_CONFIG(timezone)
+ QTimeZone cet("Europe/Oslo");
+ if (cet.isValid()) {
+ QTest::newRow("Last-Modified-DateTime-CET")
+ << QNetworkRequest::LastModifiedHeader
+ << QVariant(QDateTime(QDate(2007, 11, 1), QTime(18, 8, 30), Qt::UTC).toTimeZone(cet))
+ << true << "Last-Modified" << "Thu, 01 Nov 2007 18:08:30 GMT";
+ }
+#endif
QTest::newRow("If-Modified-Since-Date") << QNetworkRequest::IfModifiedSinceHeader
<< QVariant(QDate(2017, 7, 01))
diff --git a/tests/auto/other/gestures/BLACKLIST b/tests/auto/other/gestures/BLACKLIST
index 480b5a3ad1..0e35fb374b 100644
--- a/tests/auto/other/gestures/BLACKLIST
+++ b/tests/auto/other/gestures/BLACKLIST
@@ -3,6 +3,7 @@ rhel-7.4
rhel-7.6
ubuntu-18.04
sles-15
+rhel-8.4
[customGesture]
opensuse-leap
# QTBUG-67254
@@ -12,6 +13,7 @@ ubuntu-18.04
rhel-7.4
rhel-7.6
sles-15
+rhel-8.4
[graphicsItemTreeGesture]
ubuntu-18.04
[graphicsView]
@@ -19,14 +21,17 @@ ubuntu-18.04
rhel-7.4
rhel-7.6
sles-15
+rhel-8.4
[explicitGraphicsObjectTarget]
ubuntu-18.04
rhel-7.4
rhel-7.6
sles-15
+rhel-8.4
[autoCancelGestures2]
ubuntu-18.04
rhel-7.4
rhel-7.6
sles-15
+rhel-8.4
diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
index 76df61c892..6d6d65b791 100644
--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
@@ -68,6 +68,8 @@ private slots:
void query_exec();
void execErrorRecovery_data() { generic_data(); }
void execErrorRecovery();
+ void prematureExec_data() { generic_data(); }
+ void prematureExec();
void first_data() { generic_data(); }
void first();
void next_data() { generic_data(); }
@@ -2770,6 +2772,35 @@ void tst_QSqlQuery::execErrorRecovery()
QVERIFY_SQL( q, exec() );
}
+void tst_QSqlQuery::prematureExec()
+{
+ QFETCH(QString, dbName);
+ // We only want the engine name, for addDatabase():
+ int cut = dbName.indexOf(QChar('@'));
+ if (cut < 0)
+ QSKIP("Failed to parse database type out of name");
+ dbName.truncate(cut);
+ cut = dbName.indexOf(QChar('_'));
+ if (cut >= 0)
+ dbName = dbName.mid(cut + 1);
+
+ auto db = QSqlDatabase::addDatabase(dbName);
+ QSqlQuery q(db);
+
+ QTest::ignoreMessage(QtWarningMsg,
+ "QSqlDatabasePrivate::removeDatabase: connection "
+ "'qt_sql_default_connection' is still in use, all "
+ "queries will cease to work.");
+ QTest::ignoreMessage(QtWarningMsg,
+ "QSqlDatabasePrivate::addDatabase: duplicate connection name "
+ "'qt_sql_default_connection', old connection removed.");
+ auto otherDb = QSqlDatabase::addDatabase(dbName);
+
+ QTest::ignoreMessage(QtWarningMsg, "QSqlQuery::exec: called before driver has been set up");
+ // QTBUG-100037: shouldn't crash !
+ QVERIFY(!q.exec("select stuff from TheVoid"));
+}
+
void tst_QSqlQuery::lastInsertId()
{
QFETCH( QString, dbName );
diff --git a/tests/auto/testlib/selftests/expected_float.junitxml b/tests/auto/testlib/selftests/expected_float.junitxml
deleted file mode 100644
index 51a711efb7..0000000000
--- a/tests/auto/testlib/selftests/expected_float.junitxml
+++ /dev/null
@@ -1,307 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<testsuite errors="0" failures="96" tests="6" name="tst_float">
- <properties>
- <property value="@INSERT_QT_VERSION_HERE@" name="QTestVersion"/>
- <property value="@INSERT_QT_VERSION_HERE@" name="QtVersion"/>
- <property value="" name="QtBuild"/>
- </properties>
- <testcase result="pass" name="initTestCase"/>
- <testcase result="fail" name="doubleComparisons">
- <failure tag="should FAIL 1" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): 3" result="fail"/>
- <failure tag="should FAIL 2" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1e&#x002D;07
- Expected (operandRight): 3e&#x002D;07" result="fail"/>
- <failure tag="should FAIL 3" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 999999999999
- Expected (operandRight): 999999999998" result="fail"/>
- <failure tag="should FAIL 4" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1e&#x002D;12
- Expected (operandRight): 9.99999999999e&#x002D;13" result="fail"/>
- <failure tag="should FAIL 5" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 9.99999999999e+306
- Expected (operandRight): 9.99999999997e+306" result="fail"/>
- <failure tag="should FAIL: NaN != 0" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 0" result="fail"/>
- <failure tag="should FAIL: 0 != NaN" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: NaN != 1" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 1" result="fail"/>
- <failure tag="should FAIL: 1 != NaN" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: inf != &#x002D;inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: inf != nan" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: nan != inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != nan" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: nan != &#x002D;inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: inf != 0" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 0" result="fail"/>
- <failure tag="should FAIL: 0 != inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != 0" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): 0" result="fail"/>
- <failure tag="should FAIL: 0 != &#x002D;inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: inf != 1" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1" result="fail"/>
- <failure tag="should FAIL: 1 != inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != 1" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): 1" result="fail"/>
- <failure tag="should FAIL: 1 != &#x002D;inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: inf != max" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1.79769313486e+308" result="fail"/>
- <failure tag="should FAIL: inf != &#x002D;max" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): &#x002D;1.79769313486e+308" result="fail"/>
- <failure tag="should FAIL: max != inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1.79769313486e+308
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;max != inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;1.79769313486e+308
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != max" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): 1.79769313486e+308" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != &#x002D;max" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): &#x002D;1.79769313486e+308" result="fail"/>
- <failure tag="should FAIL: max != &#x002D;inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1.79769313486e+308
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;max != &#x002D;inf" message="Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;1.79769313486e+308
- Expected (operandRight): &#x002D;inf" result="fail"/>
- </testcase>
- <testcase result="fail" name="floatComparisons">
- <failure tag="should FAIL 1" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): 3" result="fail"/>
- <failure tag="should FAIL 2" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1e&#x002D;05
- Expected (operandRight): 3e&#x002D;05" result="fail"/>
- <failure tag="should FAIL 3" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 99999
- Expected (operandRight): 99998" result="fail"/>
- <failure tag="should FAIL 4" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1.00001e&#x002D;05
- Expected (operandRight): 9.9999e&#x002D;06" result="fail"/>
- <failure tag="should FAIL 5" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 9.9999e+37
- Expected (operandRight): 9.9997e+37" result="fail"/>
- <failure tag="should FAIL: NaN != 0" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 0" result="fail"/>
- <failure tag="should FAIL: 0 != NaN" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: NaN != 1" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 1" result="fail"/>
- <failure tag="should FAIL: 1 != NaN" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: inf != &#x002D;inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: inf != nan" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: nan != inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != nan" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: nan != &#x002D;inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: inf != 0" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 0" result="fail"/>
- <failure tag="should FAIL: 0 != inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != 0" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): 0" result="fail"/>
- <failure tag="should FAIL: 0 != &#x002D;inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: inf != 1" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1" result="fail"/>
- <failure tag="should FAIL: 1 != inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != 1" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): 1" result="fail"/>
- <failure tag="should FAIL: 1 != &#x002D;inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: inf != max" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 3.40282e+38" result="fail"/>
- <failure tag="should FAIL: inf != &#x002D;max" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): &#x002D;3.40282e+38" result="fail"/>
- <failure tag="should FAIL: max != inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 3.40282e+38
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;max != inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;3.40282e+38
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != max" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): 3.40282e+38" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != &#x002D;max" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): &#x002D;3.40282e+38" result="fail"/>
- <failure tag="should FAIL: max != &#x002D;inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 3.40282e+38
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;max != &#x002D;inf" message="Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;3.40282e+38
- Expected (operandRight): &#x002D;inf" result="fail"/>
- </testcase>
- <testcase result="fail" name="float16Comparisons">
- <failure tag="should FAIL 1" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): 3" result="fail"/>
- <failure tag="should FAIL 2" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0.000999
- Expected (operandRight): 0.003" result="fail"/>
- <failure tag="should FAIL 3" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 98
- Expected (operandRight): 99" result="fail"/>
- <failure tag="should FAIL 4" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0.00101
- Expected (operandRight): 0.00099" result="fail"/>
- <failure tag="should FAIL 5" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 5.94e+04
- Expected (operandRight): 5.88e+04" result="fail"/>
- <failure tag="should FAIL: NaN != 0" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 0" result="fail"/>
- <failure tag="should FAIL: 0 != NaN" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: NaN != 1" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 1" result="fail"/>
- <failure tag="should FAIL: 1 != NaN" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: inf != &#x002D;inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: inf != nan" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: nan != inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != nan" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): nan" result="fail"/>
- <failure tag="should FAIL: nan != &#x002D;inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: inf != 0" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 0" result="fail"/>
- <failure tag="should FAIL: 0 != inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != 0" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): 0" result="fail"/>
- <failure tag="should FAIL: 0 != &#x002D;inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: inf != 1" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1" result="fail"/>
- <failure tag="should FAIL: 1 != inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != 1" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): 1" result="fail"/>
- <failure tag="should FAIL: 1 != &#x002D;inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: inf != max" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 6.55e+04" result="fail"/>
- <failure tag="should FAIL: inf != &#x002D;max" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): &#x002D;6.55e+04" result="fail"/>
- <failure tag="should FAIL: max != inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 6.55e+04
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;max != inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;6.55e+04
- Expected (operandRight): inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != max" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): 6.55e+04" result="fail"/>
- <failure tag="should FAIL: &#x002D;inf != &#x002D;max" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;inf
- Expected (operandRight): &#x002D;6.55e+04" result="fail"/>
- <failure tag="should FAIL: max != &#x002D;inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 6.55e+04
- Expected (operandRight): &#x002D;inf" result="fail"/>
- <failure tag="should FAIL: &#x002D;max != &#x002D;inf" message="Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : &#x002D;6.55e+04
- Expected (operandRight): &#x002D;inf" result="fail"/>
- </testcase>
- <testcase result="fail" name="compareFloatTests">
- <failure tag="1e0" message="Compared floats are not the same (fuzzy compare)
- Actual (t1): 1
- Expected (t3): 3" result="fail"/>
- <failure tag="1e&#x002D;5" message="Compared floats are not the same (fuzzy compare)
- Actual (t1): 1e&#x002D;05
- Expected (t3): 3e&#x002D;05" result="fail"/>
- <failure tag="1e+7" message="Compared floats are not the same (fuzzy compare)
- Actual (t1): 1e+07
- Expected (t3): 3e+07" result="fail"/>
- </testcase>
- <testcase result="pass" name="cleanupTestCase"/>
- <system-err/>
-</testsuite>
diff --git a/tests/auto/testlib/selftests/expected_float.lightxml b/tests/auto/testlib/selftests/expected_float.lightxml
deleted file mode 100644
index cf82929fd0..0000000000
--- a/tests/auto/testlib/selftests/expected_float.lightxml
+++ /dev/null
@@ -1,665 +0,0 @@
-<Environment>
- <QtVersion>@INSERT_QT_VERSION_HERE@</QtVersion>
- <QtBuild/>
- <QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
-</Environment>
-<TestFunction name="initTestCase">
-<Incident type="pass" file="" line="0" />
- <Duration msecs="0"/>
-</TestFunction>
-<TestFunction name="doubleComparisons">
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 1]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): 3]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 1]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 2]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1e-07
- Expected (operandRight): 3e-07]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 2]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 3]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 999999999999
- Expected (operandRight): 999999999998]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 3]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 4]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1e-12
- Expected (operandRight): 9.99999999999e-13]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 4]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 5]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 9.99999999999e+306
- Expected (operandRight): 9.99999999997e+306]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: NaN == NaN]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 0]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != NaN]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 1]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != NaN]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: inf == inf]]></DataTag>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: -inf == -inf]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != nan]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != nan]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 0]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 0]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 1]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 1]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != max]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1.79769313486e+308]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -max]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -1.79769313486e+308]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1.79769313486e+308
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -1.79769313486e+308
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != max]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 1.79769313486e+308]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != -max]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): -1.79769313486e+308]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1.79769313486e+308
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -1.79769313486e+308
- Expected (operandRight): -inf]]></Description>
-</Incident>
- <Duration msecs="0"/>
-</TestFunction>
-<TestFunction name="floatComparisons">
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 1]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): 3]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 1]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 2]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1e-05
- Expected (operandRight): 3e-05]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 2]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 3]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 99999
- Expected (operandRight): 99998]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 3]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 4]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1.00001e-05
- Expected (operandRight): 9.9999e-06]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 4]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 5]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 9.9999e+37
- Expected (operandRight): 9.9997e+37]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: NaN == NaN]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 0]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != NaN]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 1]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != NaN]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: inf == inf]]></DataTag>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: -inf == -inf]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != nan]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != nan]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 0]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 0]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 1]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 1]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != max]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 3.40282e+38]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -max]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -3.40282e+38]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 3.40282e+38
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -3.40282e+38
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != max]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 3.40282e+38]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != -max]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): -3.40282e+38]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 3.40282e+38
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -3.40282e+38
- Expected (operandRight): -inf]]></Description>
-</Incident>
- <Duration msecs="0"/>
-</TestFunction>
-<TestFunction name="float16Comparisons">
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 1]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): 3]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 1]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 2]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0.000999
- Expected (operandRight): 0.003]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 2]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 3]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 98
- Expected (operandRight): 99]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 3]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 4]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0.00101
- Expected (operandRight): 0.00099]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 4]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 5]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 5.94e+04
- Expected (operandRight): 5.88e+04]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: NaN == NaN]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 0]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != NaN]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 1]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != NaN]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: inf == inf]]></DataTag>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: -inf == -inf]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != nan]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != nan]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 0]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 0]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 1]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 1]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != max]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 6.55e+04]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -max]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -6.55e+04]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 6.55e+04
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -6.55e+04
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != max]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 6.55e+04]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != -max]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): -6.55e+04]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 6.55e+04
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -6.55e+04
- Expected (operandRight): -inf]]></Description>
-</Incident>
- <Duration msecs="0"/>
-</TestFunction>
-<TestFunction name="compareFloatTests">
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[1e0]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (t1): 1
- Expected (t3): 3]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[1e-5]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (t1): 1e-05
- Expected (t3): 3e-05]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[1e+7]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (t1): 1e+07
- Expected (t3): 3e+07]]></Description>
-</Incident>
- <Duration msecs="0"/>
-</TestFunction>
-<TestFunction name="cleanupTestCase">
-<Incident type="pass" file="" line="0" />
- <Duration msecs="0"/>
-</TestFunction>
-<Duration msecs="0"/>
diff --git a/tests/auto/testlib/selftests/expected_float.tap b/tests/auto/testlib/selftests/expected_float.tap
deleted file mode 100644
index f5249b8b4e..0000000000
--- a/tests/auto/testlib/selftests/expected_float.tap
+++ /dev/null
@@ -1,1181 +0,0 @@
-TAP version 13
-# tst_float
-ok 1 - initTestCase()
-not ok 2 - doubleComparisons(should FAIL 1)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 3 (operandRight)
- found: 1 (operandLeft)
- expected: 3 (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-ok 3 - doubleComparisons(should PASS 1)
-not ok 4 - doubleComparisons(should FAIL 2)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 3e-07 (operandRight)
- found: 1e-07 (operandLeft)
- expected: 3e-07 (operandRight)
- actual: 1e-07 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-ok 5 - doubleComparisons(should PASS 2)
-not ok 6 - doubleComparisons(should FAIL 3)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 999999999998 (operandRight)
- found: 999999999999 (operandLeft)
- expected: 999999999998 (operandRight)
- actual: 999999999999 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-ok 7 - doubleComparisons(should PASS 3)
-not ok 8 - doubleComparisons(should FAIL 4)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 9.99999999999e-13 (operandRight)
- found: 1e-12 (operandLeft)
- expected: 9.99999999999e-13 (operandRight)
- actual: 1e-12 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-ok 9 - doubleComparisons(should PASS 4)
-not ok 10 - doubleComparisons(should FAIL 5)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 9.99999999997e+306 (operandRight)
- found: 9.99999999999e+306 (operandLeft)
- expected: 9.99999999997e+306 (operandRight)
- actual: 9.99999999999e+306 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-ok 11 - doubleComparisons(should PASS: NaN == NaN)
-not ok 12 - doubleComparisons(should FAIL: NaN != 0)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 0 (operandRight)
- found: nan (operandLeft)
- expected: 0 (operandRight)
- actual: nan (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 13 - doubleComparisons(should FAIL: 0 != NaN)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: 0 (operandLeft)
- expected: nan (operandRight)
- actual: 0 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 14 - doubleComparisons(should FAIL: NaN != 1)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 1 (operandRight)
- found: nan (operandLeft)
- expected: 1 (operandRight)
- actual: nan (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 15 - doubleComparisons(should FAIL: 1 != NaN)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: 1 (operandLeft)
- expected: nan (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-ok 16 - doubleComparisons(should PASS: inf == inf)
-ok 17 - doubleComparisons(should PASS: -inf == -inf)
-not ok 18 - doubleComparisons(should FAIL: inf != -inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: inf (operandLeft)
- expected: -inf (operandRight)
- actual: inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 19 - doubleComparisons(should FAIL: -inf != inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: -inf (operandLeft)
- expected: inf (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 20 - doubleComparisons(should FAIL: inf != nan)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: inf (operandLeft)
- expected: nan (operandRight)
- actual: inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 21 - doubleComparisons(should FAIL: nan != inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: nan (operandLeft)
- expected: inf (operandRight)
- actual: nan (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 22 - doubleComparisons(should FAIL: -inf != nan)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: -inf (operandLeft)
- expected: nan (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 23 - doubleComparisons(should FAIL: nan != -inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: nan (operandLeft)
- expected: -inf (operandRight)
- actual: nan (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 24 - doubleComparisons(should FAIL: inf != 0)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 0 (operandRight)
- found: inf (operandLeft)
- expected: 0 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 25 - doubleComparisons(should FAIL: 0 != inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: 0 (operandLeft)
- expected: inf (operandRight)
- actual: 0 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 26 - doubleComparisons(should FAIL: -inf != 0)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 0 (operandRight)
- found: -inf (operandLeft)
- expected: 0 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 27 - doubleComparisons(should FAIL: 0 != -inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: 0 (operandLeft)
- expected: -inf (operandRight)
- actual: 0 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 28 - doubleComparisons(should FAIL: inf != 1)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 1 (operandRight)
- found: inf (operandLeft)
- expected: 1 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 29 - doubleComparisons(should FAIL: 1 != inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: 1 (operandLeft)
- expected: inf (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 30 - doubleComparisons(should FAIL: -inf != 1)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 1 (operandRight)
- found: -inf (operandLeft)
- expected: 1 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 31 - doubleComparisons(should FAIL: 1 != -inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: 1 (operandLeft)
- expected: -inf (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 32 - doubleComparisons(should FAIL: inf != max)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 1.79769313486e+308 (operandRight)
- found: inf (operandLeft)
- expected: 1.79769313486e+308 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 33 - doubleComparisons(should FAIL: inf != -max)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: -1.79769313486e+308 (operandRight)
- found: inf (operandLeft)
- expected: -1.79769313486e+308 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 34 - doubleComparisons(should FAIL: max != inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: 1.79769313486e+308 (operandLeft)
- expected: inf (operandRight)
- actual: 1.79769313486e+308 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 35 - doubleComparisons(should FAIL: -max != inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: -1.79769313486e+308 (operandLeft)
- expected: inf (operandRight)
- actual: -1.79769313486e+308 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 36 - doubleComparisons(should FAIL: -inf != max)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: 1.79769313486e+308 (operandRight)
- found: -inf (operandLeft)
- expected: 1.79769313486e+308 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 37 - doubleComparisons(should FAIL: -inf != -max)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: -1.79769313486e+308 (operandRight)
- found: -inf (operandLeft)
- expected: -1.79769313486e+308 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 38 - doubleComparisons(should FAIL: max != -inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: 1.79769313486e+308 (operandLeft)
- expected: -inf (operandRight)
- actual: 1.79769313486e+308 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 39 - doubleComparisons(should FAIL: -max != -inf)
- ---
- type: QCOMPARE
- message: Compared doubles are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: -1.79769313486e+308 (operandLeft)
- expected: -inf (operandRight)
- actual: -1.79769313486e+308 (operandLeft)
- at: tst_float::doubleComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:103)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 103
- ...
-not ok 40 - floatComparisons(should FAIL 1)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 3 (operandRight)
- found: 1 (operandLeft)
- expected: 3 (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-ok 41 - floatComparisons(should PASS 1)
-not ok 42 - floatComparisons(should FAIL 2)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 3e-05 (operandRight)
- found: 1e-05 (operandLeft)
- expected: 3e-05 (operandRight)
- actual: 1e-05 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-ok 43 - floatComparisons(should PASS 2)
-not ok 44 - floatComparisons(should FAIL 3)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 99998 (operandRight)
- found: 99999 (operandLeft)
- expected: 99998 (operandRight)
- actual: 99999 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-ok 45 - floatComparisons(should PASS 3)
-not ok 46 - floatComparisons(should FAIL 4)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 9.9999e-06 (operandRight)
- found: 1.00001e-05 (operandLeft)
- expected: 9.9999e-06 (operandRight)
- actual: 1.00001e-05 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-ok 47 - floatComparisons(should PASS 4)
-not ok 48 - floatComparisons(should FAIL 5)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 9.9997e+37 (operandRight)
- found: 9.9999e+37 (operandLeft)
- expected: 9.9997e+37 (operandRight)
- actual: 9.9999e+37 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-ok 49 - floatComparisons(should PASS: NaN == NaN)
-not ok 50 - floatComparisons(should FAIL: NaN != 0)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 0 (operandRight)
- found: nan (operandLeft)
- expected: 0 (operandRight)
- actual: nan (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 51 - floatComparisons(should FAIL: 0 != NaN)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: 0 (operandLeft)
- expected: nan (operandRight)
- actual: 0 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 52 - floatComparisons(should FAIL: NaN != 1)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 1 (operandRight)
- found: nan (operandLeft)
- expected: 1 (operandRight)
- actual: nan (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 53 - floatComparisons(should FAIL: 1 != NaN)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: 1 (operandLeft)
- expected: nan (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-ok 54 - floatComparisons(should PASS: inf == inf)
-ok 55 - floatComparisons(should PASS: -inf == -inf)
-not ok 56 - floatComparisons(should FAIL: inf != -inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: inf (operandLeft)
- expected: -inf (operandRight)
- actual: inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 57 - floatComparisons(should FAIL: -inf != inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: -inf (operandLeft)
- expected: inf (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 58 - floatComparisons(should FAIL: inf != nan)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: inf (operandLeft)
- expected: nan (operandRight)
- actual: inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 59 - floatComparisons(should FAIL: nan != inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: nan (operandLeft)
- expected: inf (operandRight)
- actual: nan (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 60 - floatComparisons(should FAIL: -inf != nan)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: -inf (operandLeft)
- expected: nan (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 61 - floatComparisons(should FAIL: nan != -inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: nan (operandLeft)
- expected: -inf (operandRight)
- actual: nan (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 62 - floatComparisons(should FAIL: inf != 0)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 0 (operandRight)
- found: inf (operandLeft)
- expected: 0 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 63 - floatComparisons(should FAIL: 0 != inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: 0 (operandLeft)
- expected: inf (operandRight)
- actual: 0 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 64 - floatComparisons(should FAIL: -inf != 0)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 0 (operandRight)
- found: -inf (operandLeft)
- expected: 0 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 65 - floatComparisons(should FAIL: 0 != -inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: 0 (operandLeft)
- expected: -inf (operandRight)
- actual: 0 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 66 - floatComparisons(should FAIL: inf != 1)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 1 (operandRight)
- found: inf (operandLeft)
- expected: 1 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 67 - floatComparisons(should FAIL: 1 != inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: 1 (operandLeft)
- expected: inf (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 68 - floatComparisons(should FAIL: -inf != 1)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 1 (operandRight)
- found: -inf (operandLeft)
- expected: 1 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 69 - floatComparisons(should FAIL: 1 != -inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: 1 (operandLeft)
- expected: -inf (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 70 - floatComparisons(should FAIL: inf != max)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 3.40282e+38 (operandRight)
- found: inf (operandLeft)
- expected: 3.40282e+38 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 71 - floatComparisons(should FAIL: inf != -max)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: -3.40282e+38 (operandRight)
- found: inf (operandLeft)
- expected: -3.40282e+38 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 72 - floatComparisons(should FAIL: max != inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: 3.40282e+38 (operandLeft)
- expected: inf (operandRight)
- actual: 3.40282e+38 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 73 - floatComparisons(should FAIL: -max != inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: -3.40282e+38 (operandLeft)
- expected: inf (operandRight)
- actual: -3.40282e+38 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 74 - floatComparisons(should FAIL: -inf != max)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 3.40282e+38 (operandRight)
- found: -inf (operandLeft)
- expected: 3.40282e+38 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 75 - floatComparisons(should FAIL: -inf != -max)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: -3.40282e+38 (operandRight)
- found: -inf (operandLeft)
- expected: -3.40282e+38 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 76 - floatComparisons(should FAIL: max != -inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: 3.40282e+38 (operandLeft)
- expected: -inf (operandRight)
- actual: 3.40282e+38 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 77 - floatComparisons(should FAIL: -max != -inf)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: -3.40282e+38 (operandLeft)
- expected: -inf (operandRight)
- actual: -3.40282e+38 (operandLeft)
- at: tst_float::floatComparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:139)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 139
- ...
-not ok 78 - float16Comparisons(should FAIL 1)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 3 (operandRight)
- found: 1 (operandLeft)
- expected: 3 (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-ok 79 - float16Comparisons(should PASS 1)
-not ok 80 - float16Comparisons(should FAIL 2)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 0.003 (operandRight)
- found: 0.000999 (operandLeft)
- expected: 0.003 (operandRight)
- actual: 0.000999 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-ok 81 - float16Comparisons(should PASS 2)
-not ok 82 - float16Comparisons(should FAIL 3)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 99 (operandRight)
- found: 98 (operandLeft)
- expected: 99 (operandRight)
- actual: 98 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-ok 83 - float16Comparisons(should PASS 3)
-not ok 84 - float16Comparisons(should FAIL 4)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 0.00099 (operandRight)
- found: 0.00101 (operandLeft)
- expected: 0.00099 (operandRight)
- actual: 0.00101 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-ok 85 - float16Comparisons(should PASS 4)
-not ok 86 - float16Comparisons(should FAIL 5)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 5.88e+04 (operandRight)
- found: 5.94e+04 (operandLeft)
- expected: 5.88e+04 (operandRight)
- actual: 5.94e+04 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-ok 87 - float16Comparisons(should PASS: NaN == NaN)
-not ok 88 - float16Comparisons(should FAIL: NaN != 0)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 0 (operandRight)
- found: nan (operandLeft)
- expected: 0 (operandRight)
- actual: nan (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 89 - float16Comparisons(should FAIL: 0 != NaN)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: 0 (operandLeft)
- expected: nan (operandRight)
- actual: 0 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 90 - float16Comparisons(should FAIL: NaN != 1)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 1 (operandRight)
- found: nan (operandLeft)
- expected: 1 (operandRight)
- actual: nan (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 91 - float16Comparisons(should FAIL: 1 != NaN)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: 1 (operandLeft)
- expected: nan (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-ok 92 - float16Comparisons(should PASS: inf == inf)
-ok 93 - float16Comparisons(should PASS: -inf == -inf)
-not ok 94 - float16Comparisons(should FAIL: inf != -inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: inf (operandLeft)
- expected: -inf (operandRight)
- actual: inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 95 - float16Comparisons(should FAIL: -inf != inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: -inf (operandLeft)
- expected: inf (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 96 - float16Comparisons(should FAIL: inf != nan)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: inf (operandLeft)
- expected: nan (operandRight)
- actual: inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 97 - float16Comparisons(should FAIL: nan != inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: nan (operandLeft)
- expected: inf (operandRight)
- actual: nan (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 98 - float16Comparisons(should FAIL: -inf != nan)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: nan (operandRight)
- found: -inf (operandLeft)
- expected: nan (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 99 - float16Comparisons(should FAIL: nan != -inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: nan (operandLeft)
- expected: -inf (operandRight)
- actual: nan (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 100 - float16Comparisons(should FAIL: inf != 0)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 0 (operandRight)
- found: inf (operandLeft)
- expected: 0 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 101 - float16Comparisons(should FAIL: 0 != inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: 0 (operandLeft)
- expected: inf (operandRight)
- actual: 0 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 102 - float16Comparisons(should FAIL: -inf != 0)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 0 (operandRight)
- found: -inf (operandLeft)
- expected: 0 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 103 - float16Comparisons(should FAIL: 0 != -inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: 0 (operandLeft)
- expected: -inf (operandRight)
- actual: 0 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 104 - float16Comparisons(should FAIL: inf != 1)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 1 (operandRight)
- found: inf (operandLeft)
- expected: 1 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 105 - float16Comparisons(should FAIL: 1 != inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: 1 (operandLeft)
- expected: inf (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 106 - float16Comparisons(should FAIL: -inf != 1)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 1 (operandRight)
- found: -inf (operandLeft)
- expected: 1 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 107 - float16Comparisons(should FAIL: 1 != -inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: 1 (operandLeft)
- expected: -inf (operandRight)
- actual: 1 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 108 - float16Comparisons(should FAIL: inf != max)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 6.55e+04 (operandRight)
- found: inf (operandLeft)
- expected: 6.55e+04 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 109 - float16Comparisons(should FAIL: inf != -max)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: -6.55e+04 (operandRight)
- found: inf (operandLeft)
- expected: -6.55e+04 (operandRight)
- actual: inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 110 - float16Comparisons(should FAIL: max != inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: 6.55e+04 (operandLeft)
- expected: inf (operandRight)
- actual: 6.55e+04 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 111 - float16Comparisons(should FAIL: -max != inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: inf (operandRight)
- found: -6.55e+04 (operandLeft)
- expected: inf (operandRight)
- actual: -6.55e+04 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 112 - float16Comparisons(should FAIL: -inf != max)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: 6.55e+04 (operandRight)
- found: -inf (operandLeft)
- expected: 6.55e+04 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 113 - float16Comparisons(should FAIL: -inf != -max)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: -6.55e+04 (operandRight)
- found: -inf (operandLeft)
- expected: -6.55e+04 (operandRight)
- actual: -inf (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 114 - float16Comparisons(should FAIL: max != -inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: 6.55e+04 (operandLeft)
- expected: -inf (operandRight)
- actual: 6.55e+04 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 115 - float16Comparisons(should FAIL: -max != -inf)
- ---
- type: QCOMPARE
- message: Compared qfloat16s are not the same (fuzzy compare)
- wanted: -inf (operandRight)
- found: -6.55e+04 (operandLeft)
- expected: -inf (operandRight)
- actual: -6.55e+04 (operandLeft)
- at: tst_float::float16Comparisons() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:174)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 174
- ...
-not ok 116 - compareFloatTests(1e0)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 3 (t3)
- found: 1 (t1)
- expected: 3 (t3)
- actual: 1 (t1)
- at: tst_float::compareFloatTests() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:215)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 215
- ...
-not ok 117 - compareFloatTests(1e-5)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 3e-05 (t3)
- found: 1e-05 (t1)
- expected: 3e-05 (t3)
- actual: 1e-05 (t1)
- at: tst_float::compareFloatTests() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:215)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 215
- ...
-not ok 118 - compareFloatTests(1e+7)
- ---
- type: QCOMPARE
- message: Compared floats are not the same (fuzzy compare)
- wanted: 3e+07 (t3)
- found: 1e+07 (t1)
- expected: 3e+07 (t3)
- actual: 1e+07 (t1)
- at: tst_float::compareFloatTests() (qtbase/tests/auto/testlib/selftests/float/tst_float.cpp:215)
- file: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp
- line: 215
- ...
-ok 119 - cleanupTestCase()
-1..119
-# tests 119
-# pass 23
-# fail 96
diff --git a/tests/auto/testlib/selftests/expected_float.teamcity b/tests/auto/testlib/selftests/expected_float.teamcity
deleted file mode 100644
index f8d65a71c7..0000000000
--- a/tests/auto/testlib/selftests/expected_float.teamcity
+++ /dev/null
@@ -1,336 +0,0 @@
-##teamcity[testSuiteStarted name='tst_float' flowId='tst_float']
-##teamcity[testStarted name='initTestCase()' flowId='tst_float']
-##teamcity[testFinished name='initTestCase()' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL 1)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): 3' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL 1)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should PASS 1)' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should PASS 1)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL 2)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL 2)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 1e-07|n Expected (operandRight): 3e-07' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL 2)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should PASS 2)' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should PASS 2)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL 3)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL 3)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 999999999999|n Expected (operandRight): 999999999998' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL 3)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should PASS 3)' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should PASS 3)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL 4)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL 4)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 1e-12|n Expected (operandRight): 9.99999999999e-13' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL 4)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should PASS 4)' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should PASS 4)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL 5)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL 5)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 9.99999999999e+306|n Expected (operandRight): 9.99999999997e+306' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL 5)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should PASS: NaN == NaN)' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should PASS: NaN == NaN)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: NaN != 0)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: NaN != 0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): 0' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: NaN != 0)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: 0 != NaN)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: 0 != NaN)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 0|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: 0 != NaN)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: NaN != 1)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: NaN != 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): 1' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: NaN != 1)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: 1 != NaN)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: 1 != NaN)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: 1 != NaN)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should PASS: inf == inf)' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should PASS: inf == inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should PASS: -inf == -inf)' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should PASS: -inf == -inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: inf != -inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: inf != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: inf != -inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: -inf != inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: -inf != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: -inf != inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: inf != nan)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: inf != nan)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: inf != nan)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: nan != inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: nan != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: nan != inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: -inf != nan)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: -inf != nan)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: -inf != nan)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: nan != -inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: nan != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: nan != -inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: inf != 0)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: inf != 0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): 0' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: inf != 0)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: 0 != inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: 0 != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 0|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: 0 != inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: -inf != 0)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: -inf != 0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): 0' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: -inf != 0)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: 0 != -inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: 0 != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 0|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: 0 != -inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: inf != 1)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: inf != 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): 1' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: inf != 1)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: 1 != inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: 1 != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: 1 != inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: -inf != 1)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: -inf != 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): 1' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: -inf != 1)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: 1 != -inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: 1 != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: 1 != -inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: inf != max)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: inf != max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): 1.79769313486e+308' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: inf != max)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: inf != -max)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: inf != -max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): -1.79769313486e+308' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: inf != -max)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: max != inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: max != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 1.79769313486e+308|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: max != inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: -max != inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: -max != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : -1.79769313486e+308|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: -max != inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: -inf != max)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: -inf != max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): 1.79769313486e+308' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: -inf != max)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: -inf != -max)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: -inf != -max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): -1.79769313486e+308' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: -inf != -max)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: max != -inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: max != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : 1.79769313486e+308|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: max != -inf)' flowId='tst_float']
-##teamcity[testStarted name='doubleComparisons(should FAIL: -max != -inf)' flowId='tst_float']
-##teamcity[testFailed name='doubleComparisons(should FAIL: -max != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared doubles are not the same (fuzzy compare)|n Actual (operandLeft) : -1.79769313486e+308|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='doubleComparisons(should FAIL: -max != -inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL 1)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): 3' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL 1)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should PASS 1)' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should PASS 1)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL 2)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL 2)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 1e-05|n Expected (operandRight): 3e-05' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL 2)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should PASS 2)' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should PASS 2)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL 3)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL 3)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 99999|n Expected (operandRight): 99998' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL 3)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should PASS 3)' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should PASS 3)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL 4)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL 4)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 1.00001e-05|n Expected (operandRight): 9.9999e-06' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL 4)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should PASS 4)' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should PASS 4)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL 5)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL 5)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 9.9999e+37|n Expected (operandRight): 9.9997e+37' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL 5)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should PASS: NaN == NaN)' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should PASS: NaN == NaN)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: NaN != 0)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: NaN != 0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): 0' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: NaN != 0)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: 0 != NaN)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: 0 != NaN)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 0|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: 0 != NaN)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: NaN != 1)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: NaN != 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): 1' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: NaN != 1)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: 1 != NaN)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: 1 != NaN)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: 1 != NaN)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should PASS: inf == inf)' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should PASS: inf == inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should PASS: -inf == -inf)' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should PASS: -inf == -inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: inf != -inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: inf != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: inf != -inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: -inf != inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: -inf != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: -inf != inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: inf != nan)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: inf != nan)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: inf != nan)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: nan != inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: nan != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: nan != inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: -inf != nan)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: -inf != nan)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: -inf != nan)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: nan != -inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: nan != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: nan != -inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: inf != 0)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: inf != 0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): 0' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: inf != 0)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: 0 != inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: 0 != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 0|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: 0 != inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: -inf != 0)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: -inf != 0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): 0' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: -inf != 0)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: 0 != -inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: 0 != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 0|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: 0 != -inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: inf != 1)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: inf != 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): 1' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: inf != 1)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: 1 != inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: 1 != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: 1 != inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: -inf != 1)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: -inf != 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): 1' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: -inf != 1)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: 1 != -inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: 1 != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: 1 != -inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: inf != max)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: inf != max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): 3.40282e+38' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: inf != max)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: inf != -max)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: inf != -max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): -3.40282e+38' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: inf != -max)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: max != inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: max != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 3.40282e+38|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: max != inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: -max != inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: -max != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : -3.40282e+38|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: -max != inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: -inf != max)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: -inf != max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): 3.40282e+38' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: -inf != max)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: -inf != -max)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: -inf != -max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): -3.40282e+38' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: -inf != -max)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: max != -inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: max != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : 3.40282e+38|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: max != -inf)' flowId='tst_float']
-##teamcity[testStarted name='floatComparisons(should FAIL: -max != -inf)' flowId='tst_float']
-##teamcity[testFailed name='floatComparisons(should FAIL: -max != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (operandLeft) : -3.40282e+38|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='floatComparisons(should FAIL: -max != -inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL 1)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): 3' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL 1)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should PASS 1)' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should PASS 1)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL 2)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL 2)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 0.000999|n Expected (operandRight): 0.003' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL 2)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should PASS 2)' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should PASS 2)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL 3)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL 3)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 98|n Expected (operandRight): 99' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL 3)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should PASS 3)' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should PASS 3)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL 4)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL 4)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 0.00101|n Expected (operandRight): 0.00099' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL 4)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should PASS 4)' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should PASS 4)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL 5)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL 5)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 5.94e+04|n Expected (operandRight): 5.88e+04' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL 5)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should PASS: NaN == NaN)' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should PASS: NaN == NaN)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: NaN != 0)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: NaN != 0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): 0' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: NaN != 0)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: 0 != NaN)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: 0 != NaN)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 0|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: 0 != NaN)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: NaN != 1)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: NaN != 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): 1' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: NaN != 1)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: 1 != NaN)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: 1 != NaN)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: 1 != NaN)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should PASS: inf == inf)' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should PASS: inf == inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should PASS: -inf == -inf)' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should PASS: -inf == -inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: inf != -inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: inf != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: inf != -inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: -inf != inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: -inf != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: -inf != inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: inf != nan)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: inf != nan)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: inf != nan)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: nan != inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: nan != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: nan != inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: -inf != nan)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: -inf != nan)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): nan' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: -inf != nan)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: nan != -inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: nan != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : nan|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: nan != -inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: inf != 0)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: inf != 0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): 0' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: inf != 0)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: 0 != inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: 0 != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 0|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: 0 != inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: -inf != 0)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: -inf != 0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): 0' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: -inf != 0)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: 0 != -inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: 0 != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 0|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: 0 != -inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: inf != 1)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: inf != 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): 1' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: inf != 1)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: 1 != inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: 1 != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: 1 != inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: -inf != 1)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: -inf != 1)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): 1' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: -inf != 1)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: 1 != -inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: 1 != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 1|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: 1 != -inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: inf != max)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: inf != max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): 6.55e+04' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: inf != max)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: inf != -max)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: inf != -max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : inf|n Expected (operandRight): -6.55e+04' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: inf != -max)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: max != inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: max != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 6.55e+04|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: max != inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: -max != inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: -max != inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : -6.55e+04|n Expected (operandRight): inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: -max != inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: -inf != max)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: -inf != max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): 6.55e+04' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: -inf != max)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: -inf != -max)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: -inf != -max)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : -inf|n Expected (operandRight): -6.55e+04' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: -inf != -max)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: max != -inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: max != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : 6.55e+04|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: max != -inf)' flowId='tst_float']
-##teamcity[testStarted name='float16Comparisons(should FAIL: -max != -inf)' flowId='tst_float']
-##teamcity[testFailed name='float16Comparisons(should FAIL: -max != -inf)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared qfloat16s are not the same (fuzzy compare)|n Actual (operandLeft) : -6.55e+04|n Expected (operandRight): -inf' flowId='tst_float']
-##teamcity[testFinished name='float16Comparisons(should FAIL: -max != -inf)' flowId='tst_float']
-##teamcity[testStarted name='compareFloatTests(1e0)' flowId='tst_float']
-##teamcity[testFailed name='compareFloatTests(1e0)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (t1): 1|n Expected (t3): 3' flowId='tst_float']
-##teamcity[testFinished name='compareFloatTests(1e0)' flowId='tst_float']
-##teamcity[testStarted name='compareFloatTests(1e-5)' flowId='tst_float']
-##teamcity[testFailed name='compareFloatTests(1e-5)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (t1): 1e-05|n Expected (t3): 3e-05' flowId='tst_float']
-##teamcity[testFinished name='compareFloatTests(1e-5)' flowId='tst_float']
-##teamcity[testStarted name='compareFloatTests(1e+7)' flowId='tst_float']
-##teamcity[testFailed name='compareFloatTests(1e+7)' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)|]' details='Compared floats are not the same (fuzzy compare)|n Actual (t1): 1e+07|n Expected (t3): 3e+07' flowId='tst_float']
-##teamcity[testFinished name='compareFloatTests(1e+7)' flowId='tst_float']
-##teamcity[testStarted name='cleanupTestCase()' flowId='tst_float']
-##teamcity[testFinished name='cleanupTestCase()' flowId='tst_float']
-##teamcity[testSuiteFinished name='tst_float' flowId='tst_float']
diff --git a/tests/auto/testlib/selftests/expected_float.txt b/tests/auto/testlib/selftests/expected_float.txt
index 25c8c6b6de..a0a2d1846b 100644
--- a/tests/auto/testlib/selftests/expected_float.txt
+++ b/tests/auto/testlib/selftests/expected_float.txt
@@ -269,7 +269,7 @@ FAIL! : tst_float::float16Comparisons(should FAIL 1) Compared qfloat16s are not
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
PASS : tst_float::float16Comparisons(should PASS 1)
FAIL! : tst_float::float16Comparisons(should FAIL 2) Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0.000999
+ Actual (operandLeft) : 0.00781
Expected (operandRight): 0.003
Loc: [qtbase/tests/auto/testlib/selftests/float/tst_float.cpp(0)]
PASS : tst_float::float16Comparisons(should PASS 2)
diff --git a/tests/auto/testlib/selftests/expected_float.xml b/tests/auto/testlib/selftests/expected_float.xml
deleted file mode 100644
index 8ddc72a917..0000000000
--- a/tests/auto/testlib/selftests/expected_float.xml
+++ /dev/null
@@ -1,668 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<TestCase name="tst_float">
-<Environment>
- <QtVersion>@INSERT_QT_VERSION_HERE@</QtVersion>
- <QtBuild/>
- <QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
-</Environment>
-<TestFunction name="initTestCase">
-<Incident type="pass" file="" line="0" />
- <Duration msecs="0"/>
-</TestFunction>
-<TestFunction name="doubleComparisons">
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 1]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): 3]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 1]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 2]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1e-07
- Expected (operandRight): 3e-07]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 2]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 3]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 999999999999
- Expected (operandRight): 999999999998]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 3]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 4]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1e-12
- Expected (operandRight): 9.99999999999e-13]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 4]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 5]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 9.99999999999e+306
- Expected (operandRight): 9.99999999997e+306]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: NaN == NaN]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 0]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != NaN]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 1]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != NaN]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: inf == inf]]></DataTag>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: -inf == -inf]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != nan]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != nan]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 0]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 0]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 1]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 1]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != max]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1.79769313486e+308]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -max]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -1.79769313486e+308]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1.79769313486e+308
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -1.79769313486e+308
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != max]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 1.79769313486e+308]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != -max]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): -1.79769313486e+308]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : 1.79769313486e+308
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != -inf]]></DataTag>
- <Description><![CDATA[Compared doubles are not the same (fuzzy compare)
- Actual (operandLeft) : -1.79769313486e+308
- Expected (operandRight): -inf]]></Description>
-</Incident>
- <Duration msecs="0"/>
-</TestFunction>
-<TestFunction name="floatComparisons">
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 1]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): 3]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 1]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 2]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1e-05
- Expected (operandRight): 3e-05]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 2]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 3]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 99999
- Expected (operandRight): 99998]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 3]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 4]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1.00001e-05
- Expected (operandRight): 9.9999e-06]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 4]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 5]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 9.9999e+37
- Expected (operandRight): 9.9997e+37]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: NaN == NaN]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 0]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != NaN]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 1]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != NaN]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: inf == inf]]></DataTag>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: -inf == -inf]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != nan]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != nan]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 0]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 0]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 1]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 1]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != max]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 3.40282e+38]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -max]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -3.40282e+38]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 3.40282e+38
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -3.40282e+38
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != max]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 3.40282e+38]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != -max]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): -3.40282e+38]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : 3.40282e+38
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != -inf]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (operandLeft) : -3.40282e+38
- Expected (operandRight): -inf]]></Description>
-</Incident>
- <Duration msecs="0"/>
-</TestFunction>
-<TestFunction name="float16Comparisons">
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 1]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): 3]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 1]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 2]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0.000999
- Expected (operandRight): 0.003]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 2]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 3]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 98
- Expected (operandRight): 99]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 3]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 4]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0.00101
- Expected (operandRight): 0.00099]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS 4]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL 5]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 5.94e+04
- Expected (operandRight): 5.88e+04]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: NaN == NaN]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 0]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != NaN]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: NaN != 1]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != NaN]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: inf == inf]]></DataTag>
-</Incident>
-<Incident type="pass" file="" line="0">
- <DataTag><![CDATA[should PASS: -inf == -inf]]></DataTag>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != nan]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != nan]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): nan]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: nan != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : nan
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 0]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 0]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 0]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 0 != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 0
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != 1]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != 1]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 1]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: 1 != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 1
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != max]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): 6.55e+04]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: inf != -max]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : inf
- Expected (operandRight): -6.55e+04]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 6.55e+04
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -6.55e+04
- Expected (operandRight): inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != max]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): 6.55e+04]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -inf != -max]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -inf
- Expected (operandRight): -6.55e+04]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: max != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : 6.55e+04
- Expected (operandRight): -inf]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[should FAIL: -max != -inf]]></DataTag>
- <Description><![CDATA[Compared qfloat16s are not the same (fuzzy compare)
- Actual (operandLeft) : -6.55e+04
- Expected (operandRight): -inf]]></Description>
-</Incident>
- <Duration msecs="0"/>
-</TestFunction>
-<TestFunction name="compareFloatTests">
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[1e0]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (t1): 1
- Expected (t3): 3]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[1e-5]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (t1): 1e-05
- Expected (t3): 3e-05]]></Description>
-</Incident>
-<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/float/tst_float.cpp" line="0">
- <DataTag><![CDATA[1e+7]]></DataTag>
- <Description><![CDATA[Compared floats are not the same (fuzzy compare)
- Actual (t1): 1e+07
- Expected (t3): 3e+07]]></Description>
-</Incident>
- <Duration msecs="0"/>
-</TestFunction>
-<TestFunction name="cleanupTestCase">
-<Incident type="pass" file="" line="0" />
- <Duration msecs="0"/>
-</TestFunction>
-<Duration msecs="0"/>
-</TestCase>
diff --git a/tests/auto/testlib/selftests/float/tst_float.cpp b/tests/auto/testlib/selftests/float/tst_float.cpp
index 823495f863..bc9ea00172 100644
--- a/tests/auto/testlib/selftests/float/tst_float.cpp
+++ b/tests/auto/testlib/selftests/float/tst_float.cpp
@@ -31,8 +31,6 @@
#include <QtTest/QtTest>
#include <QDebug>
-#include "emulationdetector.h"
-
// Test proper handling of floating-point types
class tst_float: public QObject
{
@@ -182,11 +180,11 @@ void tst_float::float16Comparisons_data() const
QTest::addColumn<qfloat16>("operandLeft");
QTest::addColumn<qfloat16>("operandRight");
const qfloat16 zero(0), one(1);
- const qfloat16 tiny(EmulationDetector::isRunningArmOnX86() ? 0.00099f : 0.001f);
+ const qfloat16 tiny(0.00099f);
QTest::newRow("should FAIL 1") << one << qfloat16(3);
QTest::newRow("should PASS 1") << zero << zero;
- QTest::newRow("should FAIL 2") << qfloat16(1e-3f) << qfloat16(3e-3f);
+ QTest::newRow("should FAIL 2") << qfloat16(1.f/128.f) << qfloat16(3e-3f);
// QCOMPARE for uses qFuzzyCompare(), which ignores differences of one part
// in 102.5 and considers any two qFuzzyIsNull() values, i.e. values smaller
diff --git a/tests/auto/testlib/selftests/generate_expected_output.py b/tests/auto/testlib/selftests/generate_expected_output.py
index 96fab44408..e4a0217686 100755
--- a/tests/auto/testlib/selftests/generate_expected_output.py
+++ b/tests/auto/testlib/selftests/generate_expected_output.py
@@ -308,6 +308,13 @@ def generateTestData(testname, clean,
print("Warning: directory", testname, "contains no test executable")
return
+ # See TestLogger::shouldIgnoreTest() in tst_selftest.cpp for these
+ # single-format tests:
+ if testname == 'junit':
+ formats = ( 'junitxml', ) if 'junitxml' in formats else ()
+ elif testname == 'float':
+ formats = ( 'txt', ) if 'txt' in formats else ()
+
# Prepare environment in which to run tests:
env = testEnv(testname)
diff --git a/tests/auto/testlib/selftests/tst_selftests.cpp b/tests/auto/testlib/selftests/tst_selftests.cpp
index 829a79c0e6..66e7ca5b99 100644
--- a/tests/auto/testlib/selftests/tst_selftests.cpp
+++ b/tests/auto/testlib/selftests/tst_selftests.cpp
@@ -822,6 +822,8 @@ bool tst_Selftests::compareOutput(const QString &logger, const QString &subdir,
continue;
if (actualLineBA.endsWith(" : failure location"))
continue;
+ if (actualLineBA.endsWith(" : message location"))
+ continue;
if (actualLineBA.startsWith("Config: Using QtTest library") // Text build string
|| actualLineBA.startsWith(" <QtBuild") // XML, Light XML build string
diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
index eaa00d9173..f1efeebd91 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
@@ -3541,10 +3541,10 @@ void tst_QGraphicsView::embeddedViewsWithFocus()
void focusOutEvent(QFocusEvent *) override { --focusCount; }
};
- QGraphicsScene *innerScene = new QGraphicsScene;
+ QGraphicsScene innerScene;
FocusWidget *innerWidget = new FocusWidget;
- innerScene->addWidget(innerWidget);
- QGraphicsView *innerView = new QGraphicsView(innerScene);
+ innerScene.addWidget(innerWidget);
+ QGraphicsView *innerView = new QGraphicsView(&innerScene);
QGraphicsScene outerScene;
FocusWidget *outerWidget = new FocusWidget;
@@ -3562,7 +3562,7 @@ void tst_QGraphicsView::embeddedViewsWithFocus()
QCOMPARE(outerView.itemAt(outerCenter), outerProxy);
QCOMPARE(outerView.itemAt(innerCenter), nestedProxy);
QVERIFY(outerScene.isActive());
- QVERIFY(innerScene->isActive());
+ QVERIFY(innerScene.isActive());
QCOMPARE(outerWidget->focusCount, 0);
QCOMPARE(innerWidget->focusCount, 0);
diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
index c355ee9665..88c09de8e0 100644
--- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
+++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
@@ -251,6 +251,7 @@ private slots:
void testResetCachedSizeHint();
void statusTips();
void testRemovingColumnsViaLayoutChanged();
+ void testModelMovingColumns();
protected:
void setupTestData(bool use_reset_model = false);
@@ -360,6 +361,12 @@ public:
endRemoveColumns();
}
+ void moveColumn(int from, int to)
+ {
+ beginMoveColumns(QModelIndex(), from, from, QModelIndex(), to);
+ endMoveColumns();
+ }
+
void cleanup()
{
emit layoutAboutToBeChanged();
@@ -3627,5 +3634,18 @@ void tst_QHeaderView::testRemovingColumnsViaLayoutChanged()
// The main point of this test is that the section-size restoring code didn't go out of bounds.
}
+void tst_QHeaderView::testModelMovingColumns()
+{
+ QtTestModel model(10, 10);
+ QHeaderView hv(Qt::Horizontal);
+ hv.setModel(&model);
+ hv.resizeSections(QHeaderView::ResizeToContents);
+ hv.show();
+
+ QPersistentModelIndex index3 = model.index(0, 3);
+ model.moveColumn(3, 1);
+ QCOMPARE(index3.column(), 1);
+}
+
QTEST_MAIN(tst_QHeaderView)
#include "tst_qheaderview.moc"
diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
index a3b8ef78d8..60259f6beb 100644
--- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
+++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
@@ -1498,6 +1498,17 @@ void tst_QApplication::desktopSettingsAware()
environment += QLatin1String("QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM=1");
testProcess.setEnvironment(environment);
#endif
+ // Add the executable's directory to path so that we can find the test helper next to it
+ // in a cross-platform way. We must do this because the CWD is not pointing to this directory
+ // in debug-and-release builds.
+ int argc = 0;
+ QApplication app(argc, nullptr);
+ QByteArray path = qgetenv("PATH");
+ qputenv("PATH",
+ path + QDir::listSeparator().toLatin1()
+ + QCoreApplication::applicationDirPath().toLocal8Bit());
+ auto restore = qScopeGuard([&] { qputenv("PATH", path); });
+
testProcess.start("desktopsettingsaware_helper");
QVERIFY2(testProcess.waitForStarted(),
qPrintable(QString::fromLatin1("Cannot start 'desktopsettingsaware_helper': %1").arg(testProcess.errorString())));
@@ -2452,6 +2463,17 @@ void tst_QApplication::qtbug_12673()
#if QT_CONFIG(process)
QProcess testProcess;
QStringList arguments;
+ // Add the executable's directory to path so that we can find the test helper next to it
+ // in a cross-platform way. We must do this because the CWD is not pointing to this directory
+ // in debug-and-release builds.
+ int argc = 0;
+ QApplication app(argc, nullptr);
+ QByteArray path = qgetenv("PATH");
+ qputenv("PATH",
+ path + QDir::listSeparator().toLatin1()
+ + QCoreApplication::applicationDirPath().toLocal8Bit());
+ auto restore = qScopeGuard([&] { qputenv("PATH", path); });
+
testProcess.start("modal_helper", arguments);
QVERIFY2(testProcess.waitForStarted(),
qPrintable(QString::fromLatin1("Cannot start 'modal_helper': %1").arg(testProcess.errorString())));
diff --git a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp
index 26868a763c..c9a9378905 100644
--- a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp
+++ b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp
@@ -127,6 +127,8 @@ private slots:
void QTBUG36933_brokenPseudoClassLookup();
void styleSheetChangeBeforePolish();
void placeholderColor();
+ void enumPropertySelector_data();
+ void enumPropertySelector();
//at the end because it mess with the style.
void widgetStyle();
void appStyle();
@@ -2245,6 +2247,42 @@ void tst_QStyleSheetStyle::placeholderColor()
QCOMPARE(le2.palette().placeholderText(), red);
}
+void tst_QStyleSheetStyle::enumPropertySelector_data()
+{
+ QTest::addColumn<QString>("styleSheet");
+
+ QTest::addRow("Enum value") << R"(QToolButton[popupMode=MenuButtonPopup] { padding-right: 40px; })";
+ QTest::addRow("Int value") << R"(QToolButton[popupMode="1"] { padding-right: 40px; })";
+}
+
+void tst_QStyleSheetStyle::enumPropertySelector()
+{
+ QFETCH(QString, styleSheet);
+
+ QToolButton button;
+ QMenu menu;
+ menu.addAction("Action1");
+ QPixmap pm(50, 50);
+ pm.fill(Qt::red);
+ button.setIcon(pm);
+ button.setMenu(&menu);
+ button.setPopupMode(QToolButton::MenuButtonPopup);
+
+ button.show();
+ const QSize unstyledSizeHint = button.sizeHint();
+
+ qApp->setStyleSheet(styleSheet);
+ const QSize styledSizeHint = button.sizeHint();
+
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ QEXPECT_FAIL("Enum value", "In Qt 5, style sheet selectors have to use integer enum values", Continue);
+#else
+ QEXPECT_FAIL("Int value", "In Qt 6, style sheet selectors must use the enum value name", Continue);
+#endif
+
+ QVERIFY(styledSizeHint.width() > unstyledSizeHint.width());
+}
+
QTEST_MAIN(tst_QStyleSheetStyle)
#include "tst_qstylesheetstyle.moc"
diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
index 32437050f5..7af60ed757 100644
--- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
@@ -1682,6 +1682,16 @@ void tst_QComboBox::setModel()
QCOMPARE(box.rootModelIndex(), rootModelIndex);
box.setModel(box.model());
QCOMPARE(box.rootModelIndex(), rootModelIndex);
+
+ // check that setting the same model as the completer's doesn't crash
+ QCompleter *completer = new QCompleter(&box);
+ box.setEditable(true);
+ box.setCompleter(completer);
+ auto *listModel = new QStringListModel({ "one", "two" }, completer);
+ completer->setModel(listModel);
+ QCOMPARE(listModel->rowCount(), 2); // make sure it wasn't deleted
+ box.setModel(listModel);
+ QCOMPARE(listModel->rowCount(), 2); // make sure it wasn't deleted
}
void tst_QComboBox::setCustomModelAndView()
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
index 7c2203deb4..2f1a095f91 100644
--- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
@@ -4959,7 +4959,7 @@ void tst_QLineEdit::testQuickSelectionWithMouse()
QVERIFY(lineEdit.selectedText().endsWith(suffix));
QTest::mouseMove(lineEdit.windowHandle(), center + QPoint(20, 0));
qCDebug(lcTests) << "Selected text:" << lineEdit.selectedText();
-#ifdef Q_PROCESSOR_ARM
+#if defined(Q_PROCESSOR_ARM) && !defined(Q_OS_MACOS)
QEXPECT_FAIL("", "Currently fails on gcc-armv7, needs investigation.", Continue);
#endif
QCOMPARE(lineEdit.selectedText(), partialSelection);
diff --git a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
index a86784f2ec..64c709d72f 100644
--- a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
+++ b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
@@ -148,7 +148,7 @@ private slots:
void layoutAfterMultiLineRemove();
void undoCommandRemovesAndReinsertsBlock();
void taskQTBUG_43562_lineCountCrash();
-#ifndef QT_NO_CONTEXTMENU
+#if !defined(QT_NO_CONTEXTMENU) && !defined(QT_NO_CLIPBOARD)
void contextMenu();
#endif
void inputMethodCursorRect();
@@ -1740,7 +1740,7 @@ void tst_QPlainTextEdit::taskQTBUG_43562_lineCountCrash()
disconnect(ed->document(), SIGNAL(contentsChange(int, int, int)), 0, 0);
}
-#ifndef QT_NO_CONTEXTMENU
+#if !defined(QT_NO_CONTEXTMENU) && !defined(QT_NO_CLIPBOARD)
void tst_QPlainTextEdit::contextMenu()
{
ed->appendHtml(QStringLiteral("Hello <a href='http://www.qt.io'>Qt</a>"));
@@ -1774,7 +1774,7 @@ void tst_QPlainTextEdit::contextMenu()
delete menu;
QVERIFY(!ed->findChild<QAction *>(QStringLiteral("link-copy")));
}
-#endif // QT_NO_CONTEXTMENU
+#endif // QT_NO_CONTEXTMENU && QT_NO_CLIPBOARD
// QTBUG-51923: Verify that the cursor rectangle returned by the input
// method query correctly reflects the viewport offset.
diff --git a/tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp b/tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp
index d28f9502d7..9c3cef0e6d 100644
--- a/tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp
+++ b/tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp
@@ -335,7 +335,7 @@ void tst_QTransform::operatorMultiplyEqualScalar()
QFETCH(QTransform, transform);
QTransform x = transform;
QBENCHMARK {
- x * 3;
+ x *= 3;
}
}