summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config.tests/.qmake.conf7
-rw-r--r--config.tests/unix/opengldesktop/opengldesktop.cpp1
-rw-r--r--config.tests/unix/opengles2/opengles2.cpp1
-rw-r--r--config.tests/unix/opengles3/opengles3.cpp1
-rwxr-xr-xconfigure6
-rw-r--r--doc/global/template/style/offline-simple.css2
-rw-r--r--doc/global/template/style/offline.css14
-rw-r--r--doc/global/template/style/online.css12
-rw-r--r--examples/corelib/ipc/localfortuneclient/client.cpp5
-rw-r--r--examples/corelib/ipc/localfortuneclient/client.h2
-rw-r--r--examples/corelib/ipc/localfortuneserver/server.cpp4
-rw-r--r--examples/widgets/doc/src/calculator.qdoc2
-rw-r--r--examples/xml/dombookmarks/frank.xbel230
-rw-r--r--examples/xml/dombookmarks/jennifer.xbel62
-rw-r--r--examples/xml/saxbookmarks/frank.xbel230
-rw-r--r--examples/xml/saxbookmarks/jennifer.xbel62
-rw-r--r--examples/xml/streambookmarks/frank.xbel230
-rw-r--r--examples/xml/streambookmarks/jennifer.xbel62
-rw-r--r--mkspecs/android-clang/qmake.conf4
-rw-r--r--mkspecs/android-g++/qmake.conf2
-rw-r--r--mkspecs/common/linux-android.conf114
-rw-r--r--mkspecs/features/data/unix/findclasslist.pl2
-rw-r--r--mkspecs/features/lex.prf1
-rw-r--r--mkspecs/features/mac/objective_c.prf2
-rw-r--r--mkspecs/features/moc.prf2
-rw-r--r--mkspecs/features/qt.prf5
-rw-r--r--mkspecs/features/qt_module_pris.prf2
-rw-r--r--mkspecs/features/unix/separate_debug_info.prf5
-rw-r--r--mkspecs/features/yacc.prf1
-rw-r--r--mkspecs/macx-ios-clang/features/default_post.prf8
-rw-r--r--mkspecs/win32-msvc2017/qmake.conf10
-rw-r--r--mkspecs/win32-msvc2017/qplatformdefs.h34
-rw-r--r--qmake/Makefile.win322
-rw-r--r--qmake/doc/src/qmake-manual.qdoc12
-rw-r--r--qmake/generators/makefiledeps.cpp5
-rw-r--r--qmake/generators/win32/msbuild_objectmodel.cpp17
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp15
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp4
-rw-r--r--qmake/generators/win32/msvc_objectmodel.h8
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp11
-rw-r--r--qmake/library/qmakebuiltins.cpp3
-rw-r--r--qmake/library/qmakeevaluator.cpp13
-rw-r--r--qmake/property.cpp53
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp8
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtActivityLoader.java2
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtLoader.java2
-rw-r--r--src/concurrent/doc/snippets/code/src_concurrent_qtconcurrentfilter.cpp4
-rw-r--r--src/corelib/codecs/qsimplecodec_p.h10
-rw-r--r--src/corelib/doc/src/containers.qdoc7
-rw-r--r--src/corelib/doc/src/eventsandfilters.qdoc2
-rw-r--r--src/corelib/global/qcompilerdetection.h3
-rw-r--r--src/corelib/global/qglobal.cpp6
-rw-r--r--src/corelib/global/qlibraryinfo.cpp4
-rw-r--r--src/corelib/global/qlogging.cpp2
-rw-r--r--src/corelib/global/qversiontagging.h2
-rw-r--r--src/corelib/io/qfile_p.h2
-rw-r--r--src/corelib/io/qfileinfo.cpp3
-rw-r--r--src/corelib/io/qfilesystemengine.cpp4
-rw-r--r--src/corelib/io/qfilesystemengine_unix.cpp22
-rw-r--r--src/corelib/io/qfilesystemiterator_p.h8
-rw-r--r--src/corelib/io/qfilesystemiterator_unix.cpp38
-rw-r--r--src/corelib/io/qfilesystemwatcher_fsevents.mm105
-rw-r--r--src/corelib/io/qfilesystemwatcher_fsevents_p.h19
-rw-r--r--src/corelib/io/qtemporaryfile.cpp2
-rw-r--r--src/corelib/io/qtemporaryfile_p.h14
-rw-r--r--src/corelib/io/qurl.cpp5
-rw-r--r--src/corelib/io/qurltlds_p.h24151
-rw-r--r--src/corelib/io/qurltlds_p.h.INFO4
-rw-r--r--src/corelib/json/qjson.cpp25
-rw-r--r--src/corelib/json/qjson_p.h37
-rw-r--r--src/corelib/json/qjsondocument.cpp3
-rw-r--r--src/corelib/json/qjsonobject.cpp4
-rw-r--r--src/corelib/json/qjsonparser.cpp79
-rw-r--r--src/corelib/json/qjsonparser_p.h4
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp2
-rw-r--r--src/corelib/kernel/qeventdispatcher_winrt.cpp33
-rw-r--r--src/corelib/kernel/qtimer.cpp2
-rw-r--r--src/corelib/mimetypes/qmimeprovider.cpp4
-rw-r--r--src/corelib/mimetypes/qmimeprovider_p.h1
-rw-r--r--src/corelib/mimetypes/qmimetypeparser_p.h10
-rw-r--r--src/corelib/plugin/qfactoryloader.cpp6
-rw-r--r--src/corelib/plugin/qpluginloader.cpp5
-rw-r--r--src/corelib/statemachine/qhistorystate_p.h4
-rw-r--r--src/corelib/thread/qbasicatomic.h5
-rw-r--r--src/corelib/thread/qfutureinterface.cpp109
-rw-r--r--src/corelib/thread/qfutureinterface_p.h2
-rw-r--r--src/corelib/thread/qorderedmutexlocker_p.h4
-rw-r--r--src/corelib/tools/qalgorithms.h4
-rw-r--r--src/corelib/tools/qdatetime.cpp9
-rw-r--r--src/corelib/tools/qdatetimeparser.cpp2
-rw-r--r--src/corelib/tools/qregularexpression.cpp2
-rw-r--r--src/corelib/tools/qstring.cpp81
-rw-r--r--src/corelib/xml/qxmlstream.cpp2
-rw-r--r--src/dbus/qdbusabstractinterface.cpp14
-rw-r--r--src/dbus/qdbusdemarshaller.cpp7
-rw-r--r--src/dbus/qdbusserver.cpp2
-rw-r--r--src/gui/gui.pro1
-rw-r--r--src/gui/image/qicon.cpp2
-rw-r--r--src/gui/image/qiconloader.cpp2
-rw-r--r--src/gui/image/qiconloader_p.h17
-rw-r--r--src/gui/image/qimage.cpp2
-rw-r--r--src/gui/image/qimage_conversions.cpp4
-rw-r--r--src/gui/image/qpixmap.cpp50
-rw-r--r--src/gui/image/qxbmhandler.cpp13
-rw-r--r--src/gui/kernel/qclipboard.cpp5
-rw-r--r--src/gui/kernel/qevent.cpp2
-rw-r--r--src/gui/kernel/qevent.h2
-rw-r--r--src/gui/kernel/qguiapplication.cpp10
-rw-r--r--src/gui/kernel/qhighdpiscaling.cpp6
-rw-r--r--src/gui/kernel/qkeysequence.cpp4
-rw-r--r--src/gui/kernel/qplatformscreen.cpp4
-rw-r--r--src/gui/kernel/qsurfaceformat.cpp12
-rw-r--r--src/gui/kernel/qwindow.cpp3
-rw-r--r--src/gui/opengl/qopengl.cpp6
-rw-r--r--src/gui/opengl/qopengl.h22
-rw-r--r--src/gui/opengl/qopenglframebufferobject.cpp1
-rw-r--r--src/gui/painting/qdrawhelper.cpp12
-rw-r--r--src/gui/painting/qdrawhelper_p.h2
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp53
-rw-r--r--src/gui/painting/qpdf.cpp13
-rw-r--r--src/gui/painting/qpdf_p.h2
-rw-r--r--src/gui/text/qcssparser.cpp10
-rw-r--r--src/gui/text/qfontdatabase.cpp28
-rw-r--r--src/gui/text/qfontengine.cpp1
-rw-r--r--src/gui/text/qfontengine_ft.cpp2
-rw-r--r--src/gui/text/qfontengine_p.h1
-rw-r--r--src/gui/text/qtextdocument.cpp4
-rw-r--r--src/gui/text/qtextlayout.cpp8
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp15
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h1
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp3
-rw-r--r--src/network/access/qnetworkreplyhttpimpl.cpp6
-rw-r--r--src/network/bearer/qnetworksession.cpp5
-rw-r--r--src/network/socket/qabstractsocket.cpp4
-rw-r--r--src/network/socket/qnativesocketengine.cpp4
-rw-r--r--src/network/socket/qnativesocketengine_winrt.cpp32
-rw-r--r--src/network/socket/qnativesocketengine_winrt_p.h10
-rw-r--r--src/opengl/qgl.cpp11
-rw-r--r--src/platformheaders/xcbfunctions/qxcbwindowfunctions.qdoc29
-rw-r--r--src/platformsupport/clipboard/qmacmime.mm5
-rw-r--r--src/platformsupport/dbusmenu/qdbusmenuconnection.cpp8
-rw-r--r--src/platformsupport/dbusmenu/qdbusmenuconnection_p.h1
-rw-r--r--src/platformsupport/dbustray/qdbustrayicon.cpp15
-rw-r--r--src/platformsupport/eglconvenience/qt_egl_p.h2
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp52
-rw-r--r--src/platformsupport/glxconvenience/qglxconvenience.cpp5
-rw-r--r--src/plugins/platforms/android/androidjnimain.cpp5
-rw-r--r--src/plugins/platforms/android/qandroidplatformtheme.cpp4
-rw-r--r--src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoacursor.mm9
-rw-r--r--src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoakeymapper.mm16
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenubar.h1
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenubar.mm28
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.h3
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm62
-rw-r--r--src/plugins/platforms/cocoa/qnsview.h1
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm28
-rw-r--r--src/plugins/platforms/cocoa/qnswindowdelegate.h3
-rw-r--r--src/plugins/platforms/cocoa/qnswindowdelegate.mm15
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp2
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp4
-rw-r--r--src/plugins/platforms/eglfs/qeglfshooks.cpp3
-rw-r--r--src/plugins/platforms/eglfs/qeglfsintegration.cpp16
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindow.cpp2
-rw-r--r--src/plugins/platforms/ios/ios.pro67
-rw-r--r--src/plugins/platforms/ios/kernel.pro63
-rw-r--r--src/plugins/platforms/ios/optional/nsphotolibrarysupport/nsphotolibrarysupport.pro22
-rw-r--r--src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.json3
-rw-r--r--src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.mm64
-rw-r--r--src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h (renamed from src/plugins/platforms/ios/qiosfileengineassetslibrary.h)29
-rw-r--r--src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm (renamed from src/plugins/platforms/ios/qiosfileengineassetslibrary.mm)4
-rw-r--r--src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h (renamed from src/plugins/platforms/ios/qiosfileenginefactory.h)4
-rw-r--r--src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.h42
-rw-r--r--src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.mm66
-rw-r--r--src/plugins/platforms/ios/optional/optional.pro2
-rw-r--r--src/plugins/platforms/ios/qiosfiledialog.h2
-rw-r--r--src/plugins/platforms/ios/qiosfiledialog.mm79
-rw-r--r--src/plugins/platforms/ios/qiosintegration.h7
-rw-r--r--src/plugins/platforms/ios/qiosintegration.mm8
-rw-r--r--src/plugins/platforms/ios/qiosoptionalplugininterface.h59
-rw-r--r--src/plugins/platforms/ios/qiosscreen.mm4
-rw-r--r--src/plugins/platforms/ios/qiostextinputoverlay.mm3
-rw-r--r--src/plugins/platforms/ios/qiostextresponder.mm2
-rw-r--r--src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp14
-rw-r--r--src/plugins/platforms/minimalegl/qminimaleglintegration.cpp3
-rw-r--r--src/plugins/platforms/minimalegl/qminimaleglintegration.h2
-rw-r--r--src/plugins/platforms/minimalegl/qminimaleglwindow.h1
-rw-r--r--src/plugins/platforms/windows/openglblacklists/default.json12
-rw-r--r--src/plugins/platforms/windows/qwindowskeymapper.cpp2
-rw-r--r--src/plugins/platforms/winrt/qwinrtbackingstore.h1
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp7
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbbackingstore.cpp16
-rw-r--r--src/plugins/platforms/xcb/qxcbclipboard.cpp6
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.cpp2
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.cpp3
-rw-r--r--src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp18
-rw-r--r--src/sql/drivers/db2/qsql_db2.cpp6
-rw-r--r--src/sql/kernel/qsqldriver.cpp1
-rw-r--r--src/testlib/qtestcase.qdoc6
-rw-r--r--src/widgets/accessible/itemviews.cpp42
-rw-r--r--src/widgets/accessible/itemviews_p.h2
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp5
-rw-r--r--src/widgets/doc/snippets/code/src_gui_kernel_qwidget.cpp8
-rw-r--r--src/widgets/doc/src/model-view-programming.qdoc2
-rw-r--r--src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp8
-rw-r--r--src/widgets/graphicsview/qgraphicswidget.cpp6
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp9
-rw-r--r--src/widgets/itemviews/qstyleditemdelegate.cpp2
-rw-r--r--src/widgets/kernel/qapplication.cpp9
-rw-r--r--src/widgets/kernel/qformlayout.cpp15
-rw-r--r--src/widgets/kernel/qwidget.cpp9
-rw-r--r--src/widgets/kernel/qwidget_p.h3
-rw-r--r--src/widgets/kernel/qwidgetbackingstore.cpp10
-rw-r--r--src/widgets/kernel/qwidgetwindow.cpp2
-rw-r--r--src/widgets/styles/qcommonstyle.cpp10
-rw-r--r--src/widgets/styles/qfusionstyle.cpp2
-rw-r--r--src/widgets/styles/qmacstyle_mac.mm8
-rw-r--r--src/widgets/styles/qstylehelper.cpp22
-rw-r--r--src/widgets/styles/qwindowsxpstyle.cpp36
-rw-r--r--src/widgets/styles/qwindowsxpstyle_p_p.h4
-rw-r--r--src/widgets/widgets/qcalendarwidget.cpp4
-rw-r--r--src/widgets/widgets/qcombobox.cpp11
-rw-r--r--src/widgets/widgets/qdatetimeedit.cpp4
-rw-r--r--src/widgets/widgets/qdockwidget.cpp4
-rw-r--r--src/widgets/widgets/qlabel.cpp1
-rw-r--r--src/widgets/widgets/qlineedit.cpp2
-rw-r--r--src/widgets/widgets/qmainwindow.cpp8
-rw-r--r--src/widgets/widgets/qsizegrip.cpp5
-rw-r--r--src/widgets/widgets/qtabbar.cpp7
-rw-r--r--src/widgets/widgets/qtextedit.cpp2
-rw-r--r--src/widgets/widgets/qtoolbararealayout.cpp7
-rw-r--r--src/widgets/widgets/qwidgettextcontrol.cpp5
-rw-r--r--src/widgets/widgets/qwidgettextcontrol_p.h2
-rw-r--r--sync.profile8
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp2
-rw-r--r--tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp13
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp21
-rw-r--r--tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp14
-rw-r--r--tests/auto/corelib/io/qurl/tst_qurl.cpp50
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/10.bjsonbin0 -> 544 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/11.bjsonbin0 -> 542 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/12.bjsonbin0 -> 506 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/13.bjsonbin0 -> 544 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/14.bjsonbin0 -> 521 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/15.bjsonbin0 -> 536 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/16.bjsonbin0 -> 874 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/17.bjsonbin0 -> 49 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/18.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/19.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/20.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/21.bjsonbin0 -> 552 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/22.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/23.bjsonbin0 -> 533 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/24.bjsonbin0 -> 506 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/25.bjsonbin0 -> 542 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/26.bjsonbin0 -> 628 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/27.bjsonbin0 -> 51 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/28.bjsonbin0 -> 542 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/29.bjsonbin0 -> 544 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/30.bjsonbin0 -> 542 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/31.bjsonbin0 -> 553 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/32.bjsonbin0 -> 536 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/33.bjsonbin0 -> 544 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/34.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/35.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/36.bjsonbin0 -> 524 bytes
-rw-r--r--tests/auto/corelib/json/invalidBinaryData/37.bjsonbin0 -> 536 bytes
-rw-r--r--tests/auto/corelib/json/tst_qtjson.cpp16
-rw-r--r--tests/auto/corelib/thread/qthread/tst_qthread.cpp4
-rw-r--r--tests/auto/gui/image/qpixmap/tst_qpixmap.cpp42
-rw-r--r--tests/auto/gui/kernel/qwindow/tst_qwindow.cpp20
-rw-r--r--tests/auto/gui/painting/qpainter/tst_qpainter.cpp19
-rw-r--r--tests/auto/gui/qopengl/tst_qopengl.cpp28
-rw-r--r--tests/auto/gui/text/qcssparser/tst_qcssparser.cpp1
-rw-r--r--tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp37
-rw-r--r--tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp14
-rw-r--r--tests/auto/other/macnativeevents/BLACKLIST3
-rw-r--r--tests/auto/other/qaccessibility/tst_qaccessibility.cpp5
-rw-r--r--tests/auto/tools/qmakelib/evaltest.cpp4
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp10
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp19
-rw-r--r--tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp106
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp40
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp14
-rw-r--r--tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp52
-rw-r--r--tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp8
-rw-r--r--tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp8
-rw-r--r--tests/auto/widgets/kernel/qaction/tst_qaction.cpp6
-rw-r--r--tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp12
-rw-r--r--tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp57
-rw-r--r--tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp3
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp13
-rw-r--r--tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp2
-rw-r--r--tests/auto/widgets/widgets/qlabel/red@2x.pngbin0 -> 105 bytes
-rw-r--r--tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp24
-rw-r--r--tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp4
-rw-r--r--tests/auto/widgets/widgets/qmenubar/qmenubar.pro5
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp24
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm44
-rw-r--r--tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp3
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp12
-rw-r--r--tests/manual/qcursor/childwidget/childwidget.pro6
-rw-r--r--tests/manual/qcursor/childwidget/main.cpp92
-rw-r--r--tests/manual/qcursor/childwindow/childwindow.pro5
-rw-r--r--tests/manual/qcursor/childwindow/main.cpp91
-rw-r--r--tests/manual/qcursor/childwindowcontainer/childwindowcontainer.pro6
-rw-r--r--tests/manual/qcursor/childwindowcontainer/main.cpp138
-rw-r--r--tests/manual/qcursor/qcursor.pro2
-rw-r--r--tools/configure/configureapp.cpp39
-rw-r--r--tools/configure/environment.cpp6
-rw-r--r--tools/configure/environment.h3
-rw-r--r--tools/configure/tools.cpp8
314 files changed, 15648 insertions, 13302 deletions
diff --git a/config.tests/.qmake.conf b/config.tests/.qmake.conf
index 71e6817656..e8f6f09e9d 100644
--- a/config.tests/.qmake.conf
+++ b/config.tests/.qmake.conf
@@ -1,6 +1 @@
-mingw {
- TMPPATH = $$(INCLUDE)
- QMAKE_INCDIR_POST += $$split(TMPPATH, $$QMAKE_DIRLIST_SEP)
- TMPPATH = $$(LIB)
- QMAKE_LIBDIR_POST += $$split(TMPPATH, $$QMAKE_DIRLIST_SEP)
-}
+# This file exists only to detach the tests from the surroundings.
diff --git a/config.tests/unix/opengldesktop/opengldesktop.cpp b/config.tests/unix/opengldesktop/opengldesktop.cpp
index 9c206c6172..0a5ce4e78c 100644
--- a/config.tests/unix/opengldesktop/opengldesktop.cpp
+++ b/config.tests/unix/opengldesktop/opengldesktop.cpp
@@ -40,6 +40,7 @@
#ifdef __APPLE__
#include <OpenGL/gl.h>
#else
+#define GL_GLEXT_PROTOTYPES
#include <GL/gl.h>
#endif
diff --git a/config.tests/unix/opengles2/opengles2.cpp b/config.tests/unix/opengles2/opengles2.cpp
index af67129fdd..a9ad0d6766 100644
--- a/config.tests/unix/opengles2/opengles2.cpp
+++ b/config.tests/unix/opengles2/opengles2.cpp
@@ -40,6 +40,7 @@
#ifdef BUILD_ON_MAC
#include <OpenGLES/ES2/gl.h>
#else
+ #define GL_GLEXT_PROTOTYPES
#include <GLES2/gl2.h>
#endif
diff --git a/config.tests/unix/opengles3/opengles3.cpp b/config.tests/unix/opengles3/opengles3.cpp
index 41120ab85e..b5bf9b4a80 100644
--- a/config.tests/unix/opengles3/opengles3.cpp
+++ b/config.tests/unix/opengles3/opengles3.cpp
@@ -40,6 +40,7 @@
#ifdef BUILD_ON_MAC
#include <OpenGLES/ES3/gl.h>
#else
+ #define GL_GLEXT_PROTOTYPES
#include <GLES3/gl3.h>
#endif
diff --git a/configure b/configure
index ba94d08714..31c073246e 100755
--- a/configure
+++ b/configure
@@ -3125,14 +3125,14 @@ if [ "$Edition" = "OpenSource" ]; then
while true; do
if [ "$CFG_ANDROID_STYLE_ASSETS" = "no" ] || [ "$XPLATFORM_ANDROID" = "no" ]; then
echo "You are licensed to use this software under the terms of"
- echo "the GNU Lesser General Public License (LGPL) versions 3."
+ echo "the GNU Lesser General Public License (LGPL) version 3."
echo "You are also licensed to use this software under the terms of"
- echo "the GNU General Public License (GPL) versions 2."
+ echo "the GNU General Public License (GPL) version 2."
affix="either"
showGPL2="yes"
else
echo "You are licensed to use this software under the terms of"
- echo "the GNU Lesser General Public License (LGPL) versions 3."
+ echo "the GNU Lesser General Public License (LGPL) version 3."
showGPL2="no"
affix="the"
fi
diff --git a/doc/global/template/style/offline-simple.css b/doc/global/template/style/offline-simple.css
index 84d206b2d0..a805b924a3 100644
--- a/doc/global/template/style/offline-simple.css
+++ b/doc/global/template/style/offline-simple.css
@@ -1,4 +1,4 @@
-pre {
+pre, .LegaleseLeft {
background-color: #f0f0f0;
font-family: Courier, monospace;
font-weight: 600;
diff --git a/doc/global/template/style/offline.css b/doc/global/template/style/offline.css
index 612c1087d5..e2081596c9 100644
--- a/doc/global/template/style/offline.css
+++ b/doc/global/template/style/offline.css
@@ -18,8 +18,12 @@ img {
height: auto;
}
-.content {
+.content .border img {
+ box-shadow:3px 3px 8px 3px rgba(200,200,200,0.5)
+}
+.content .border .player {
+ box-shadow:3px 3px 8px 3px rgba(200,200,200,0.5)
}
.content .indexboxcont li {
@@ -424,7 +428,7 @@ table styles
/* table with border alternative colours*/
-table, pre {
+table, pre, .LegaleseLeft {
-moz-border-radius: 7px 7px 7px 7px;
-webkit-border-radius: 7px 7px 7px 7px;
border-radius: 7px 7px 7px 7px;
@@ -481,6 +485,10 @@ table, pre {
margin: 0px
}
+.LegaleseLeft {
+ font-family: monospace;
+ white-space: pre-wrap;
+}
/* table bodless & white*/
.borderless {
@@ -543,7 +551,7 @@ ol.a > li{
text-align: left
}
-.cpp {
+.cpp, .LegaleseLeft {
display: block;
margin: 10px;
overflow: auto;
diff --git a/doc/global/template/style/online.css b/doc/global/template/style/online.css
index be278a27da..3c305f3ddb 100644
--- a/doc/global/template/style/online.css
+++ b/doc/global/template/style/online.css
@@ -1280,6 +1280,12 @@ li a.active {
margin-top:0.75em;
max-width:100%
}
+.context .border img {
+ box-shadow:3px 3px 8px 3px rgba(200,200,200,0.5)
+ }
+.context .border .player {
+ box-shadow:3px 3px 8px 3px rgba(200,200,200,0.5)
+ }
.context table {
vertical-align:initial
}
@@ -1364,7 +1370,7 @@ div.qt_commercial {
border-top:5px solid #5caa15;
margin-bottom:50px
}
-pre {
+pre, .LegaleseLeft {
background-color:#404244;
color:#fff;
display:block;
@@ -1375,6 +1381,10 @@ pre {
padding:25px;
margin-top:0.75em
}
+.mainContent .LegaleseLeft p {
+ color:#fff;
+ white-space: pre-wrap
+}
.copy_text {
background-color:#46a2da;
color:#fff;
diff --git a/examples/corelib/ipc/localfortuneclient/client.cpp b/examples/corelib/ipc/localfortuneclient/client.cpp
index 122522f29d..d5a1525769 100644
--- a/examples/corelib/ipc/localfortuneclient/client.cpp
+++ b/examples/corelib/ipc/localfortuneclient/client.cpp
@@ -110,12 +110,13 @@ void Client::readFortune()
in.setVersion(QDataStream::Qt_4_0);
if (blockSize == 0) {
- if (socket->bytesAvailable() < (int)sizeof(quint16))
+ // Relies on the fact that QDataStream format streams a quint32 into sizeof(quint32) bytes
+ if (socket->bytesAvailable() < (int)sizeof(quint32))
return;
in >> blockSize;
}
- if (in.atEnd())
+ if (socket->bytesAvailable() < blockSize || in.atEnd())
return;
QString nextFortune;
diff --git a/examples/corelib/ipc/localfortuneclient/client.h b/examples/corelib/ipc/localfortuneclient/client.h
index 0400389989..8e628efcee 100644
--- a/examples/corelib/ipc/localfortuneclient/client.h
+++ b/examples/corelib/ipc/localfortuneclient/client.h
@@ -86,7 +86,7 @@ private:
QLocalSocket *socket;
QString currentFortune;
- quint16 blockSize;
+ quint32 blockSize;
};
#endif
diff --git a/examples/corelib/ipc/localfortuneserver/server.cpp b/examples/corelib/ipc/localfortuneserver/server.cpp
index 753f629e6a..2eee4760be 100644
--- a/examples/corelib/ipc/localfortuneserver/server.cpp
+++ b/examples/corelib/ipc/localfortuneserver/server.cpp
@@ -106,10 +106,10 @@ void Server::sendFortune()
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);
- out << (quint16)0;
+ out << (quint32)0;
out << fortunes.at(qrand() % fortunes.size());
out.device()->seek(0);
- out << (quint16)(block.size() - sizeof(quint16));
+ out << (quint32)(block.size() - sizeof(quint32));
QLocalSocket *clientConnection = server->nextPendingConnection();
connect(clientConnection, SIGNAL(disconnected()),
diff --git a/examples/widgets/doc/src/calculator.qdoc b/examples/widgets/doc/src/calculator.qdoc
index 5af52a75c9..4ee1248e6c 100644
--- a/examples/widgets/doc/src/calculator.qdoc
+++ b/examples/widgets/doc/src/calculator.qdoc
@@ -261,7 +261,7 @@
\snippet widgets/calculator/calculator.cpp 20
- Like in \c additiveOperatorClicked(), we start by handing any
+ Like in \c additiveOperatorClicked(), we start by handling any
pending multiplicative and additive operators. Then we display \c
sumSoFar and reset the variable to zero. Resetting the variable
to zero is necessary to avoid counting the value twice.
diff --git a/examples/xml/dombookmarks/frank.xbel b/examples/xml/dombookmarks/frank.xbel
deleted file mode 100644
index 2fd5c2e09d..0000000000
--- a/examples/xml/dombookmarks/frank.xbel
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xbel>
-<xbel version="1.0">
- <folder folded="yes">
- <title>Literate Programming</title>
- <bookmark href="http://www.vivtek.com/litprog.html">
- <title>Synopsis of Literate Programming</title>
- </bookmark>
- <bookmark href="http://vasc.ri.cmu.edu/old_help/Programming/Literate/literate.html">
- <title>Literate Programming: Propaganda and Tools</title>
- </bookmark>
- <bookmark href="http://www.isy.liu.se/%7Eturbell/litprog/">
- <title>Literate Programming by Henrik Turbell</title>
- </bookmark>
- <bookmark href="http://www.desy.de/user/projects/LitProg.html">
- <title>Literate Programming Library</title>
- </bookmark>
- <bookmark href="http://www.loria.fr/services/tex/english/litte.html">
- <title>Literate Programming Basics</title>
- </bookmark>
- <bookmark href="http://ei.cs.vt.edu/%7Ecs5014/courseNotes/4.LiterateProgramming/literate_prog.html">
- <title>Literate Programming Overview</title>
- </bookmark>
- <bookmark href="http://www.perl.com/pub/a/tchrist/litprog.html">
- <title>POD is not Literate Programming</title>
- </bookmark>
- <bookmark href="http://www.cornellcollege.edu/%7Eltabak/publications/articles/swsafety.html">
- <title>Computers That We Can Count On</title>
- </bookmark>
- <bookmark href="http://www.cs.auc.dk/%7Enormark/litpro/issues-and-problems.html">
- <title>Literate Programming - Issues and Problems</title>
- </bookmark>
- <bookmark href="http://c2.com/cgi/wiki?LiterateProgramming">
- <title>Literate Programming - Wiki Pages</title>
- </bookmark>
- <bookmark href="http://developers.slashdot.org/developers/02/05/19/2216233.shtml">
- <title>What is well-commented code?</title>
- </bookmark>
- <bookmark href="http://liinwww.ira.uka.de/bibliography/SE/litprog.html">
- <title>Bibliography on literate programming - A searchable bibliography</title>
- </bookmark>
- <bookmark href="http://www2.umassd.edu/SWPI/ProcessBibliography/bib-codereading.html">
- <title>Program comprehension and code reading bibliography</title>
- </bookmark>
- <bookmark href="http://www.cs.auc.dk/%7Enormark/elucidative-programming/">
- <title>Elucidative Programming</title>
- </bookmark>
- <bookmark href="http://www.msu.edu/%7Epfaffben/avl/index.html">
- <title>AVL Trees (TexiWeb)</title>
- </bookmark>
- <bookmark href="http://literate-programming.wikiverse.org/">
- <title>Literate Programming on Wikiverse</title>
- </bookmark>
- <bookmark href="http://www.pbrt.org/">
- <title>Physically Based Rendering: From Theory to Implementation</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Useful C++ Links</title>
- <folder folded="no">
- <title>STL</title>
- <bookmark href="http://www.sgi.com/tech/stl/table_of_contents.html">
- <title>STL Reference Documentation</title>
- </bookmark>
- <bookmark href="http://www.yrl.co.uk/~phil/stl/stl.htmlx">
- <title>STL Tutorial</title>
- </bookmark>
- <bookmark href="http://www.cppreference.com/cpp_stl.html">
- <title>STL Reference</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Qt</title>
- <bookmark href="http://doc.qt.digia.com/2.3/">
- <title>Qt 2.3 Reference</title>
- </bookmark>
- <bookmark href="http://doc.qt.digia.com/3.3/">
- <title>Qt 3.3 Reference</title>
- </bookmark>
- <bookmark href="http://doc.qt.digia.com/4.0/">
- <title>Qt 4.0 Reference</title>
- </bookmark>
- <bookmark href="http://qt-project.org/">
- <title>Qt Home Page</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>IOStreams</title>
- <bookmark href="http://www.cplusplus.com/ref/iostream/index.html">
- <title>IO Stream Library</title>
- </bookmark>
- <bookmark href="http://courses.cs.vt.edu/~cs2604/fall01/binio.html">
- <title>Binary I/O</title>
- </bookmark>
- <bookmark href="http://www.parashift.com/c++-faq-lite/input-output.html">
- <title>I/O Stream FAQ</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>gdb</title>
- <bookmark href="http://www.cs.princeton.edu/~benjasik/gdb/gdbtut.html">
- <title>GDB Tutorial</title>
- </bookmark>
- <bookmark href="http://www.gnu.org/manual/gdb-4.17/html_mono/gdb.html">
- <title>Debugging with GDB</title>
- </bookmark>
- <bookmark href="http://www.cs.washington.edu/orgs/acm/tutorials/dev-in-unix/gdb-refcard.pdf">
- <title>GDB Quick Reference Page (PDF) (Handy)</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>Classes and Constructors</title>
- <bookmark href="http://www.parashift.com/c++-faq-lite/ctors.html">
- <title>Constructor FAQ</title>
- </bookmark>
- <bookmark href="http://www.juicystudio.com/tutorial/cpp/index.html">
- <title>Organizing Classes</title>
- </bookmark>
- </folder>
- </folder>
- <folder folded="yes">
- <title>Software Documentation or System Documentation</title>
- <bookmark href="http://www.martinfowler.com/distributedComputing/thud.html">
- <title>The Almighty Thud</title>
- </bookmark>
- <bookmark href="http://msdn.microsoft.com/library/techart/cfr.htm">
- <title>Microsoft Coding Techniques and Programming Practices</title>
- </bookmark>
- <bookmark href="http://www.bearcave.com/software/prog_docs.html">
- <title>Software and Documentation</title>
- </bookmark>
- <bookmark href="http://c2.com/cgi/wiki?TheSourceCodeIsTheDesign">
- <title>The Source Code is the Design</title>
- </bookmark>
- <bookmark href="http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm">
- <title>What is Software Design?</title>
- </bookmark>
- <bookmark href="http://www.mindprod.com/unmain.html">
- <title>How To Write Unmaintainable Code</title>
- </bookmark>
- <bookmark href="http://www.idinews.com/selfDoc.html">
- <title>Self Documenting Program Code Remains a Distant Goal</title>
- </bookmark>
- <bookmark href="http://www.sdmagazine.com/documents/s=730/sdm0106m/0106m.htm">
- <title>Place Tab A in Slot B</title>
- </bookmark>
- <bookmark href="http://www.holub.com/class/uml/uml.html">
- <title>UML Reference Card</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>TeX Resources</title>
- <bookmark href="http://www.tug.org/">
- <title>The TeX User's Group</title>
- </bookmark>
- <bookmark href="http://www.miktex.org/">
- <title>MikTeX website</title>
- </bookmark>
- <bookmark href="http://cm.bell-labs.com/who/hobby/MetaPost.html">
- <title>MetaPost website</title>
- </bookmark>
- <bookmark href="http://pauillac.inria.fr/%7Emaranget/hevea/">
- <title>HEVEA is a quite complete and fast LATEX to HTML translator</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Portable Document Format (PDF)</title>
- <bookmark href="http://www.adobe.com/">
- <title>Adobe - The postscript and PDF standards</title>
- </bookmark>
- <bookmark href="http://partners.adobe.com/asn/developer/technotes/acrobatpdf.html">
- <title>Reference Manual Portable Document Format</title>
- </bookmark>
- <bookmark href="http://partners.adobe.com/asn/developer/acrosdk/main.html">
- <title>Adobe Acrobat Software Development Kit</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>Literature Sites</title>
- <bookmark href="http://www.cc.columbia.edu/cu/libraries/subjects/speccol.html">
- <title>Guide to Special Collections (Columbia University)</title>
- </bookmark>
- <bookmark href="http://www.ipl.org/ref/litcrit/">
- <title>Literary Criticism on the Web from the Internet Public Library</title>
- </bookmark>
- <bookmark href="http://www.victorianweb.org/">
- <title>Victorian Web.</title>
- </bookmark>
- <bookmark href="http://vos.ucsb.edu/">
- <title>Voice of the Shuttle.</title>
- </bookmark>
- <bookmark href="http://www.modjourn.brown.edu/">
- <title>Modernist Journals Project</title>
- </bookmark>
- <bookmark href="http://www.poetspath.com">
- <title>Museum of American Poetics</title>
- </bookmark>
- <bookmark href="http://www.english.uiuc.edu/maps/">
- <title>Modern American Poetry</title>
- </bookmark>
- <bookmark href="http://www.findarticles.com/">
- <title>FindArticles.com</title>
- </bookmark>
- <bookmark href="http://www.literaryhistory.com">
- <title>Literary History</title>
- </bookmark>
- <bookmark href="http://www.litencyc.com/LitEncycFrame.htm">
- <title>Literary Encyclopedia</title>
- </bookmark>
- <separator/>
- <bookmark href="http://texts.cdlib.org/ucpress/">
- <title>The University of California Press</title>
- </bookmark>
- <bookmark href="http://www.letrs.indiana.edu/web/w/wright2/">
- <title>Wright American Fiction, 1851-1875</title>
- </bookmark>
- <bookmark href="http://docsouth.unc.edu/">
- <title>Documenting the American South: Beginnings to 1920</title>
- </bookmark>
- <bookmark href="http://etext.lib.virginia.edu/eng-on.html">
- <title>Electronic Text Center at the University of Virginia</title>
- </bookmark>
- <bookmark href="http://digital.nypl.org/schomburg/writers_aa19/">
- <title>The Schomburg Center for Research in Black Culture</title>
- </bookmark>
- <bookmark href="http://www.infomotions.com/alex2/">
- <title>Alex Catalogue of Electronic Texts.</title>
- </bookmark>
- </folder>
-</xbel>
diff --git a/examples/xml/dombookmarks/jennifer.xbel b/examples/xml/dombookmarks/jennifer.xbel
index 74b7f1519f..2501c118af 100644
--- a/examples/xml/dombookmarks/jennifer.xbel
+++ b/examples/xml/dombookmarks/jennifer.xbel
@@ -3,60 +3,42 @@
<xbel version="1.0">
<folder folded="no">
<title>Qt Resources</title>
- <folder folded="yes">
+ <bookmark href="http://qt.io/">
+ <title>Qt home page</title>
+ </bookmark>
+ <bookmark href="https://www.qt.io/partners/">
<title>Qt Partners</title>
- <bookmark href="http://partners.trolltech.com/partners/training.html">
- <title>Training Partners</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/service.html">
- <title>Consultants and System Integrators</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/tech.html">
- <title>Technology Partners</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/resellers.html">
- <title>Value Added Resellers (VARs)</title>
- </bookmark>
- </folder>
+ </bookmark>
+ <bookmark href="https://www.qt.io/qt-training/">
+ <title>Training</title>
+ </bookmark>
+ <bookmark href="http://doc.qt.io/">
+ <title>Qt 5 documentation</title>
+ </bookmark>
+ <bookmark href="http://qt-project.org/faq/">
+ <title>Frequently Asked Questions</title>
+ </bookmark>
<folder folded="yes">
<title>Community Resources</title>
+ <bookmark href="http://www.qtcentre.org/content/">
+ <title>Qt Centre</title>
+ </bookmark>
<bookmark href="http://www.qtforum.org/">
<title>QtForum.org</title>
</bookmark>
- <bookmark href="http://www.digitalfanatics.org/projects/qt_tutorial/">
+ <bookmark href="http://digitalfanatics.org/projects/qt_tutorial/">
<title>The Independent Qt Tutorial</title>
</bookmark>
- <bookmark href="http://prog.qt.free.fr/">
- <title>French PROG.Qt</title>
- </bookmark>
<bookmark href="http://www.qtforum.de/">
<title>German Qt Forum</title>
</bookmark>
<bookmark href="http://www.korone.net/">
<title>Korean Qt Community Site</title>
</bookmark>
- <bookmark href="http://prog.org.ru/forum/forum_14.html">
+ <bookmark href="http://prog.org.ru/">
<title>Russian Qt Forum</title>
</bookmark>
- <bookmark href="http://qt4.digitalfanatics.org/">
- <title>Digitalfanatics: The QT 4 Resource Center</title>
- </bookmark>
- <bookmark href="http://www.qtquestions.org/">
- <title>QtQuestions</title>
- </bookmark>
</folder>
- <bookmark href="http://doc.qt.digia.com/qq/">
- <title>Qt Quarterly</title>
- </bookmark>
- <bookmark href="http://qt-project.org/">
- <title>Qt home page</title>
- </bookmark>
- <bookmark href="http://doc.qt.digia.com/4.0/">
- <title>Qt 4.0 documentation</title>
- </bookmark>
- <bookmark href="http://qt-project.org/faq/">
- <title>Frequently Asked Questions</title>
- </bookmark>
</folder>
<folder folded="no">
<title>Online Dictionaries</title>
@@ -73,9 +55,6 @@
<title>OneLook Dictionary Search</title>
</bookmark>
<separator/>
- <bookmark href="www.iee.et.tu-dresden.de/">
- <title>The New English-German Dictionary</title>
- </bookmark>
<bookmark href="http://dict.tu-chemnitz.de/">
<title>TU Chemnitz German-English Dictionary</title>
</bookmark>
@@ -86,8 +65,5 @@
<bookmark href="http://dictionnaires.atilf.fr/dictionnaires/ACADEMIE/">
<title>Dictionnaire de l'Académie Française</title>
</bookmark>
- <bookmark href="http://elsap1.unicaen.fr/cgi-bin/cherches.cgi">
- <title>Dictionnaire des synonymes</title>
- </bookmark>
</folder>
</xbel>
diff --git a/examples/xml/saxbookmarks/frank.xbel b/examples/xml/saxbookmarks/frank.xbel
deleted file mode 100644
index 2fd5c2e09d..0000000000
--- a/examples/xml/saxbookmarks/frank.xbel
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xbel>
-<xbel version="1.0">
- <folder folded="yes">
- <title>Literate Programming</title>
- <bookmark href="http://www.vivtek.com/litprog.html">
- <title>Synopsis of Literate Programming</title>
- </bookmark>
- <bookmark href="http://vasc.ri.cmu.edu/old_help/Programming/Literate/literate.html">
- <title>Literate Programming: Propaganda and Tools</title>
- </bookmark>
- <bookmark href="http://www.isy.liu.se/%7Eturbell/litprog/">
- <title>Literate Programming by Henrik Turbell</title>
- </bookmark>
- <bookmark href="http://www.desy.de/user/projects/LitProg.html">
- <title>Literate Programming Library</title>
- </bookmark>
- <bookmark href="http://www.loria.fr/services/tex/english/litte.html">
- <title>Literate Programming Basics</title>
- </bookmark>
- <bookmark href="http://ei.cs.vt.edu/%7Ecs5014/courseNotes/4.LiterateProgramming/literate_prog.html">
- <title>Literate Programming Overview</title>
- </bookmark>
- <bookmark href="http://www.perl.com/pub/a/tchrist/litprog.html">
- <title>POD is not Literate Programming</title>
- </bookmark>
- <bookmark href="http://www.cornellcollege.edu/%7Eltabak/publications/articles/swsafety.html">
- <title>Computers That We Can Count On</title>
- </bookmark>
- <bookmark href="http://www.cs.auc.dk/%7Enormark/litpro/issues-and-problems.html">
- <title>Literate Programming - Issues and Problems</title>
- </bookmark>
- <bookmark href="http://c2.com/cgi/wiki?LiterateProgramming">
- <title>Literate Programming - Wiki Pages</title>
- </bookmark>
- <bookmark href="http://developers.slashdot.org/developers/02/05/19/2216233.shtml">
- <title>What is well-commented code?</title>
- </bookmark>
- <bookmark href="http://liinwww.ira.uka.de/bibliography/SE/litprog.html">
- <title>Bibliography on literate programming - A searchable bibliography</title>
- </bookmark>
- <bookmark href="http://www2.umassd.edu/SWPI/ProcessBibliography/bib-codereading.html">
- <title>Program comprehension and code reading bibliography</title>
- </bookmark>
- <bookmark href="http://www.cs.auc.dk/%7Enormark/elucidative-programming/">
- <title>Elucidative Programming</title>
- </bookmark>
- <bookmark href="http://www.msu.edu/%7Epfaffben/avl/index.html">
- <title>AVL Trees (TexiWeb)</title>
- </bookmark>
- <bookmark href="http://literate-programming.wikiverse.org/">
- <title>Literate Programming on Wikiverse</title>
- </bookmark>
- <bookmark href="http://www.pbrt.org/">
- <title>Physically Based Rendering: From Theory to Implementation</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Useful C++ Links</title>
- <folder folded="no">
- <title>STL</title>
- <bookmark href="http://www.sgi.com/tech/stl/table_of_contents.html">
- <title>STL Reference Documentation</title>
- </bookmark>
- <bookmark href="http://www.yrl.co.uk/~phil/stl/stl.htmlx">
- <title>STL Tutorial</title>
- </bookmark>
- <bookmark href="http://www.cppreference.com/cpp_stl.html">
- <title>STL Reference</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Qt</title>
- <bookmark href="http://doc.qt.digia.com/2.3/">
- <title>Qt 2.3 Reference</title>
- </bookmark>
- <bookmark href="http://doc.qt.digia.com/3.3/">
- <title>Qt 3.3 Reference</title>
- </bookmark>
- <bookmark href="http://doc.qt.digia.com/4.0/">
- <title>Qt 4.0 Reference</title>
- </bookmark>
- <bookmark href="http://qt-project.org/">
- <title>Qt Home Page</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>IOStreams</title>
- <bookmark href="http://www.cplusplus.com/ref/iostream/index.html">
- <title>IO Stream Library</title>
- </bookmark>
- <bookmark href="http://courses.cs.vt.edu/~cs2604/fall01/binio.html">
- <title>Binary I/O</title>
- </bookmark>
- <bookmark href="http://www.parashift.com/c++-faq-lite/input-output.html">
- <title>I/O Stream FAQ</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>gdb</title>
- <bookmark href="http://www.cs.princeton.edu/~benjasik/gdb/gdbtut.html">
- <title>GDB Tutorial</title>
- </bookmark>
- <bookmark href="http://www.gnu.org/manual/gdb-4.17/html_mono/gdb.html">
- <title>Debugging with GDB</title>
- </bookmark>
- <bookmark href="http://www.cs.washington.edu/orgs/acm/tutorials/dev-in-unix/gdb-refcard.pdf">
- <title>GDB Quick Reference Page (PDF) (Handy)</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>Classes and Constructors</title>
- <bookmark href="http://www.parashift.com/c++-faq-lite/ctors.html">
- <title>Constructor FAQ</title>
- </bookmark>
- <bookmark href="http://www.juicystudio.com/tutorial/cpp/index.html">
- <title>Organizing Classes</title>
- </bookmark>
- </folder>
- </folder>
- <folder folded="yes">
- <title>Software Documentation or System Documentation</title>
- <bookmark href="http://www.martinfowler.com/distributedComputing/thud.html">
- <title>The Almighty Thud</title>
- </bookmark>
- <bookmark href="http://msdn.microsoft.com/library/techart/cfr.htm">
- <title>Microsoft Coding Techniques and Programming Practices</title>
- </bookmark>
- <bookmark href="http://www.bearcave.com/software/prog_docs.html">
- <title>Software and Documentation</title>
- </bookmark>
- <bookmark href="http://c2.com/cgi/wiki?TheSourceCodeIsTheDesign">
- <title>The Source Code is the Design</title>
- </bookmark>
- <bookmark href="http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm">
- <title>What is Software Design?</title>
- </bookmark>
- <bookmark href="http://www.mindprod.com/unmain.html">
- <title>How To Write Unmaintainable Code</title>
- </bookmark>
- <bookmark href="http://www.idinews.com/selfDoc.html">
- <title>Self Documenting Program Code Remains a Distant Goal</title>
- </bookmark>
- <bookmark href="http://www.sdmagazine.com/documents/s=730/sdm0106m/0106m.htm">
- <title>Place Tab A in Slot B</title>
- </bookmark>
- <bookmark href="http://www.holub.com/class/uml/uml.html">
- <title>UML Reference Card</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>TeX Resources</title>
- <bookmark href="http://www.tug.org/">
- <title>The TeX User's Group</title>
- </bookmark>
- <bookmark href="http://www.miktex.org/">
- <title>MikTeX website</title>
- </bookmark>
- <bookmark href="http://cm.bell-labs.com/who/hobby/MetaPost.html">
- <title>MetaPost website</title>
- </bookmark>
- <bookmark href="http://pauillac.inria.fr/%7Emaranget/hevea/">
- <title>HEVEA is a quite complete and fast LATEX to HTML translator</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Portable Document Format (PDF)</title>
- <bookmark href="http://www.adobe.com/">
- <title>Adobe - The postscript and PDF standards</title>
- </bookmark>
- <bookmark href="http://partners.adobe.com/asn/developer/technotes/acrobatpdf.html">
- <title>Reference Manual Portable Document Format</title>
- </bookmark>
- <bookmark href="http://partners.adobe.com/asn/developer/acrosdk/main.html">
- <title>Adobe Acrobat Software Development Kit</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>Literature Sites</title>
- <bookmark href="http://www.cc.columbia.edu/cu/libraries/subjects/speccol.html">
- <title>Guide to Special Collections (Columbia University)</title>
- </bookmark>
- <bookmark href="http://www.ipl.org/ref/litcrit/">
- <title>Literary Criticism on the Web from the Internet Public Library</title>
- </bookmark>
- <bookmark href="http://www.victorianweb.org/">
- <title>Victorian Web.</title>
- </bookmark>
- <bookmark href="http://vos.ucsb.edu/">
- <title>Voice of the Shuttle.</title>
- </bookmark>
- <bookmark href="http://www.modjourn.brown.edu/">
- <title>Modernist Journals Project</title>
- </bookmark>
- <bookmark href="http://www.poetspath.com">
- <title>Museum of American Poetics</title>
- </bookmark>
- <bookmark href="http://www.english.uiuc.edu/maps/">
- <title>Modern American Poetry</title>
- </bookmark>
- <bookmark href="http://www.findarticles.com/">
- <title>FindArticles.com</title>
- </bookmark>
- <bookmark href="http://www.literaryhistory.com">
- <title>Literary History</title>
- </bookmark>
- <bookmark href="http://www.litencyc.com/LitEncycFrame.htm">
- <title>Literary Encyclopedia</title>
- </bookmark>
- <separator/>
- <bookmark href="http://texts.cdlib.org/ucpress/">
- <title>The University of California Press</title>
- </bookmark>
- <bookmark href="http://www.letrs.indiana.edu/web/w/wright2/">
- <title>Wright American Fiction, 1851-1875</title>
- </bookmark>
- <bookmark href="http://docsouth.unc.edu/">
- <title>Documenting the American South: Beginnings to 1920</title>
- </bookmark>
- <bookmark href="http://etext.lib.virginia.edu/eng-on.html">
- <title>Electronic Text Center at the University of Virginia</title>
- </bookmark>
- <bookmark href="http://digital.nypl.org/schomburg/writers_aa19/">
- <title>The Schomburg Center for Research in Black Culture</title>
- </bookmark>
- <bookmark href="http://www.infomotions.com/alex2/">
- <title>Alex Catalogue of Electronic Texts.</title>
- </bookmark>
- </folder>
-</xbel>
diff --git a/examples/xml/saxbookmarks/jennifer.xbel b/examples/xml/saxbookmarks/jennifer.xbel
index d37b8224df..2501c118af 100644
--- a/examples/xml/saxbookmarks/jennifer.xbel
+++ b/examples/xml/saxbookmarks/jennifer.xbel
@@ -3,60 +3,42 @@
<xbel version="1.0">
<folder folded="no">
<title>Qt Resources</title>
- <folder folded="yes">
+ <bookmark href="http://qt.io/">
+ <title>Qt home page</title>
+ </bookmark>
+ <bookmark href="https://www.qt.io/partners/">
<title>Qt Partners</title>
- <bookmark href="http://partners.trolltech.com/partners/training.html">
- <title>Training Partners</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/service.html">
- <title>Consultants and System Integrators</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/tech.html">
- <title>Technology Partners</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/resellers.html">
- <title>Value Added Resellers (VARs)</title>
- </bookmark>
- </folder>
+ </bookmark>
+ <bookmark href="https://www.qt.io/qt-training/">
+ <title>Training</title>
+ </bookmark>
+ <bookmark href="http://doc.qt.io/">
+ <title>Qt 5 documentation</title>
+ </bookmark>
+ <bookmark href="http://qt-project.org/faq/">
+ <title>Frequently Asked Questions</title>
+ </bookmark>
<folder folded="yes">
<title>Community Resources</title>
+ <bookmark href="http://www.qtcentre.org/content/">
+ <title>Qt Centre</title>
+ </bookmark>
<bookmark href="http://www.qtforum.org/">
<title>QtForum.org</title>
</bookmark>
- <bookmark href="http://www.digitalfanatics.org/projects/qt_tutorial/">
+ <bookmark href="http://digitalfanatics.org/projects/qt_tutorial/">
<title>The Independent Qt Tutorial</title>
</bookmark>
- <bookmark href="http://prog.qt.free.fr/">
- <title>French PROG.Qt</title>
- </bookmark>
<bookmark href="http://www.qtforum.de/">
<title>German Qt Forum</title>
</bookmark>
<bookmark href="http://www.korone.net/">
<title>Korean Qt Community Site</title>
</bookmark>
- <bookmark href="http://prog.org.ru/forum/forum_14.html">
+ <bookmark href="http://prog.org.ru/">
<title>Russian Qt Forum</title>
</bookmark>
- <bookmark href="http://qt4.digitalfanatics.org/">
- <title>Digitalfanatics: The QT 4 Resource Center</title>
- </bookmark>
- <bookmark href="http://www.qtquestions.org/">
- <title>QtQuestions</title>
- </bookmark>
</folder>
- <bookmark href="http://doc.qt.digia.com/qq/">
- <title>Qt Quarterly</title>
- </bookmark>
- <bookmark href="http://qt-project.org/">
- <title>qt home page</title>
- </bookmark>
- <bookmark href="http://doc.qt.digia.com/4.0/">
- <title>Qt 4.0 documentation</title>
- </bookmark>
- <bookmark href="http://qt-project.org/faq/">
- <title>Frequently Asked Questions</title>
- </bookmark>
</folder>
<folder folded="no">
<title>Online Dictionaries</title>
@@ -73,9 +55,6 @@
<title>OneLook Dictionary Search</title>
</bookmark>
<separator/>
- <bookmark href="www.iee.et.tu-dresden.de/">
- <title>The New English-German Dictionary</title>
- </bookmark>
<bookmark href="http://dict.tu-chemnitz.de/">
<title>TU Chemnitz German-English Dictionary</title>
</bookmark>
@@ -86,8 +65,5 @@
<bookmark href="http://dictionnaires.atilf.fr/dictionnaires/ACADEMIE/">
<title>Dictionnaire de l'Académie Française</title>
</bookmark>
- <bookmark href="http://elsap1.unicaen.fr/cgi-bin/cherches.cgi">
- <title>Dictionnaire des synonymes</title>
- </bookmark>
</folder>
</xbel>
diff --git a/examples/xml/streambookmarks/frank.xbel b/examples/xml/streambookmarks/frank.xbel
deleted file mode 100644
index 2fd5c2e09d..0000000000
--- a/examples/xml/streambookmarks/frank.xbel
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xbel>
-<xbel version="1.0">
- <folder folded="yes">
- <title>Literate Programming</title>
- <bookmark href="http://www.vivtek.com/litprog.html">
- <title>Synopsis of Literate Programming</title>
- </bookmark>
- <bookmark href="http://vasc.ri.cmu.edu/old_help/Programming/Literate/literate.html">
- <title>Literate Programming: Propaganda and Tools</title>
- </bookmark>
- <bookmark href="http://www.isy.liu.se/%7Eturbell/litprog/">
- <title>Literate Programming by Henrik Turbell</title>
- </bookmark>
- <bookmark href="http://www.desy.de/user/projects/LitProg.html">
- <title>Literate Programming Library</title>
- </bookmark>
- <bookmark href="http://www.loria.fr/services/tex/english/litte.html">
- <title>Literate Programming Basics</title>
- </bookmark>
- <bookmark href="http://ei.cs.vt.edu/%7Ecs5014/courseNotes/4.LiterateProgramming/literate_prog.html">
- <title>Literate Programming Overview</title>
- </bookmark>
- <bookmark href="http://www.perl.com/pub/a/tchrist/litprog.html">
- <title>POD is not Literate Programming</title>
- </bookmark>
- <bookmark href="http://www.cornellcollege.edu/%7Eltabak/publications/articles/swsafety.html">
- <title>Computers That We Can Count On</title>
- </bookmark>
- <bookmark href="http://www.cs.auc.dk/%7Enormark/litpro/issues-and-problems.html">
- <title>Literate Programming - Issues and Problems</title>
- </bookmark>
- <bookmark href="http://c2.com/cgi/wiki?LiterateProgramming">
- <title>Literate Programming - Wiki Pages</title>
- </bookmark>
- <bookmark href="http://developers.slashdot.org/developers/02/05/19/2216233.shtml">
- <title>What is well-commented code?</title>
- </bookmark>
- <bookmark href="http://liinwww.ira.uka.de/bibliography/SE/litprog.html">
- <title>Bibliography on literate programming - A searchable bibliography</title>
- </bookmark>
- <bookmark href="http://www2.umassd.edu/SWPI/ProcessBibliography/bib-codereading.html">
- <title>Program comprehension and code reading bibliography</title>
- </bookmark>
- <bookmark href="http://www.cs.auc.dk/%7Enormark/elucidative-programming/">
- <title>Elucidative Programming</title>
- </bookmark>
- <bookmark href="http://www.msu.edu/%7Epfaffben/avl/index.html">
- <title>AVL Trees (TexiWeb)</title>
- </bookmark>
- <bookmark href="http://literate-programming.wikiverse.org/">
- <title>Literate Programming on Wikiverse</title>
- </bookmark>
- <bookmark href="http://www.pbrt.org/">
- <title>Physically Based Rendering: From Theory to Implementation</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Useful C++ Links</title>
- <folder folded="no">
- <title>STL</title>
- <bookmark href="http://www.sgi.com/tech/stl/table_of_contents.html">
- <title>STL Reference Documentation</title>
- </bookmark>
- <bookmark href="http://www.yrl.co.uk/~phil/stl/stl.htmlx">
- <title>STL Tutorial</title>
- </bookmark>
- <bookmark href="http://www.cppreference.com/cpp_stl.html">
- <title>STL Reference</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Qt</title>
- <bookmark href="http://doc.qt.digia.com/2.3/">
- <title>Qt 2.3 Reference</title>
- </bookmark>
- <bookmark href="http://doc.qt.digia.com/3.3/">
- <title>Qt 3.3 Reference</title>
- </bookmark>
- <bookmark href="http://doc.qt.digia.com/4.0/">
- <title>Qt 4.0 Reference</title>
- </bookmark>
- <bookmark href="http://qt-project.org/">
- <title>Qt Home Page</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>IOStreams</title>
- <bookmark href="http://www.cplusplus.com/ref/iostream/index.html">
- <title>IO Stream Library</title>
- </bookmark>
- <bookmark href="http://courses.cs.vt.edu/~cs2604/fall01/binio.html">
- <title>Binary I/O</title>
- </bookmark>
- <bookmark href="http://www.parashift.com/c++-faq-lite/input-output.html">
- <title>I/O Stream FAQ</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>gdb</title>
- <bookmark href="http://www.cs.princeton.edu/~benjasik/gdb/gdbtut.html">
- <title>GDB Tutorial</title>
- </bookmark>
- <bookmark href="http://www.gnu.org/manual/gdb-4.17/html_mono/gdb.html">
- <title>Debugging with GDB</title>
- </bookmark>
- <bookmark href="http://www.cs.washington.edu/orgs/acm/tutorials/dev-in-unix/gdb-refcard.pdf">
- <title>GDB Quick Reference Page (PDF) (Handy)</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>Classes and Constructors</title>
- <bookmark href="http://www.parashift.com/c++-faq-lite/ctors.html">
- <title>Constructor FAQ</title>
- </bookmark>
- <bookmark href="http://www.juicystudio.com/tutorial/cpp/index.html">
- <title>Organizing Classes</title>
- </bookmark>
- </folder>
- </folder>
- <folder folded="yes">
- <title>Software Documentation or System Documentation</title>
- <bookmark href="http://www.martinfowler.com/distributedComputing/thud.html">
- <title>The Almighty Thud</title>
- </bookmark>
- <bookmark href="http://msdn.microsoft.com/library/techart/cfr.htm">
- <title>Microsoft Coding Techniques and Programming Practices</title>
- </bookmark>
- <bookmark href="http://www.bearcave.com/software/prog_docs.html">
- <title>Software and Documentation</title>
- </bookmark>
- <bookmark href="http://c2.com/cgi/wiki?TheSourceCodeIsTheDesign">
- <title>The Source Code is the Design</title>
- </bookmark>
- <bookmark href="http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm">
- <title>What is Software Design?</title>
- </bookmark>
- <bookmark href="http://www.mindprod.com/unmain.html">
- <title>How To Write Unmaintainable Code</title>
- </bookmark>
- <bookmark href="http://www.idinews.com/selfDoc.html">
- <title>Self Documenting Program Code Remains a Distant Goal</title>
- </bookmark>
- <bookmark href="http://www.sdmagazine.com/documents/s=730/sdm0106m/0106m.htm">
- <title>Place Tab A in Slot B</title>
- </bookmark>
- <bookmark href="http://www.holub.com/class/uml/uml.html">
- <title>UML Reference Card</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>TeX Resources</title>
- <bookmark href="http://www.tug.org/">
- <title>The TeX User's Group</title>
- </bookmark>
- <bookmark href="http://www.miktex.org/">
- <title>MikTeX website</title>
- </bookmark>
- <bookmark href="http://cm.bell-labs.com/who/hobby/MetaPost.html">
- <title>MetaPost website</title>
- </bookmark>
- <bookmark href="http://pauillac.inria.fr/%7Emaranget/hevea/">
- <title>HEVEA is a quite complete and fast LATEX to HTML translator</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Portable Document Format (PDF)</title>
- <bookmark href="http://www.adobe.com/">
- <title>Adobe - The postscript and PDF standards</title>
- </bookmark>
- <bookmark href="http://partners.adobe.com/asn/developer/technotes/acrobatpdf.html">
- <title>Reference Manual Portable Document Format</title>
- </bookmark>
- <bookmark href="http://partners.adobe.com/asn/developer/acrosdk/main.html">
- <title>Adobe Acrobat Software Development Kit</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>Literature Sites</title>
- <bookmark href="http://www.cc.columbia.edu/cu/libraries/subjects/speccol.html">
- <title>Guide to Special Collections (Columbia University)</title>
- </bookmark>
- <bookmark href="http://www.ipl.org/ref/litcrit/">
- <title>Literary Criticism on the Web from the Internet Public Library</title>
- </bookmark>
- <bookmark href="http://www.victorianweb.org/">
- <title>Victorian Web.</title>
- </bookmark>
- <bookmark href="http://vos.ucsb.edu/">
- <title>Voice of the Shuttle.</title>
- </bookmark>
- <bookmark href="http://www.modjourn.brown.edu/">
- <title>Modernist Journals Project</title>
- </bookmark>
- <bookmark href="http://www.poetspath.com">
- <title>Museum of American Poetics</title>
- </bookmark>
- <bookmark href="http://www.english.uiuc.edu/maps/">
- <title>Modern American Poetry</title>
- </bookmark>
- <bookmark href="http://www.findarticles.com/">
- <title>FindArticles.com</title>
- </bookmark>
- <bookmark href="http://www.literaryhistory.com">
- <title>Literary History</title>
- </bookmark>
- <bookmark href="http://www.litencyc.com/LitEncycFrame.htm">
- <title>Literary Encyclopedia</title>
- </bookmark>
- <separator/>
- <bookmark href="http://texts.cdlib.org/ucpress/">
- <title>The University of California Press</title>
- </bookmark>
- <bookmark href="http://www.letrs.indiana.edu/web/w/wright2/">
- <title>Wright American Fiction, 1851-1875</title>
- </bookmark>
- <bookmark href="http://docsouth.unc.edu/">
- <title>Documenting the American South: Beginnings to 1920</title>
- </bookmark>
- <bookmark href="http://etext.lib.virginia.edu/eng-on.html">
- <title>Electronic Text Center at the University of Virginia</title>
- </bookmark>
- <bookmark href="http://digital.nypl.org/schomburg/writers_aa19/">
- <title>The Schomburg Center for Research in Black Culture</title>
- </bookmark>
- <bookmark href="http://www.infomotions.com/alex2/">
- <title>Alex Catalogue of Electronic Texts.</title>
- </bookmark>
- </folder>
-</xbel>
diff --git a/examples/xml/streambookmarks/jennifer.xbel b/examples/xml/streambookmarks/jennifer.xbel
index 74b7f1519f..2501c118af 100644
--- a/examples/xml/streambookmarks/jennifer.xbel
+++ b/examples/xml/streambookmarks/jennifer.xbel
@@ -3,60 +3,42 @@
<xbel version="1.0">
<folder folded="no">
<title>Qt Resources</title>
- <folder folded="yes">
+ <bookmark href="http://qt.io/">
+ <title>Qt home page</title>
+ </bookmark>
+ <bookmark href="https://www.qt.io/partners/">
<title>Qt Partners</title>
- <bookmark href="http://partners.trolltech.com/partners/training.html">
- <title>Training Partners</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/service.html">
- <title>Consultants and System Integrators</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/tech.html">
- <title>Technology Partners</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/resellers.html">
- <title>Value Added Resellers (VARs)</title>
- </bookmark>
- </folder>
+ </bookmark>
+ <bookmark href="https://www.qt.io/qt-training/">
+ <title>Training</title>
+ </bookmark>
+ <bookmark href="http://doc.qt.io/">
+ <title>Qt 5 documentation</title>
+ </bookmark>
+ <bookmark href="http://qt-project.org/faq/">
+ <title>Frequently Asked Questions</title>
+ </bookmark>
<folder folded="yes">
<title>Community Resources</title>
+ <bookmark href="http://www.qtcentre.org/content/">
+ <title>Qt Centre</title>
+ </bookmark>
<bookmark href="http://www.qtforum.org/">
<title>QtForum.org</title>
</bookmark>
- <bookmark href="http://www.digitalfanatics.org/projects/qt_tutorial/">
+ <bookmark href="http://digitalfanatics.org/projects/qt_tutorial/">
<title>The Independent Qt Tutorial</title>
</bookmark>
- <bookmark href="http://prog.qt.free.fr/">
- <title>French PROG.Qt</title>
- </bookmark>
<bookmark href="http://www.qtforum.de/">
<title>German Qt Forum</title>
</bookmark>
<bookmark href="http://www.korone.net/">
<title>Korean Qt Community Site</title>
</bookmark>
- <bookmark href="http://prog.org.ru/forum/forum_14.html">
+ <bookmark href="http://prog.org.ru/">
<title>Russian Qt Forum</title>
</bookmark>
- <bookmark href="http://qt4.digitalfanatics.org/">
- <title>Digitalfanatics: The QT 4 Resource Center</title>
- </bookmark>
- <bookmark href="http://www.qtquestions.org/">
- <title>QtQuestions</title>
- </bookmark>
</folder>
- <bookmark href="http://doc.qt.digia.com/qq/">
- <title>Qt Quarterly</title>
- </bookmark>
- <bookmark href="http://qt-project.org/">
- <title>Qt home page</title>
- </bookmark>
- <bookmark href="http://doc.qt.digia.com/4.0/">
- <title>Qt 4.0 documentation</title>
- </bookmark>
- <bookmark href="http://qt-project.org/faq/">
- <title>Frequently Asked Questions</title>
- </bookmark>
</folder>
<folder folded="no">
<title>Online Dictionaries</title>
@@ -73,9 +55,6 @@
<title>OneLook Dictionary Search</title>
</bookmark>
<separator/>
- <bookmark href="www.iee.et.tu-dresden.de/">
- <title>The New English-German Dictionary</title>
- </bookmark>
<bookmark href="http://dict.tu-chemnitz.de/">
<title>TU Chemnitz German-English Dictionary</title>
</bookmark>
@@ -86,8 +65,5 @@
<bookmark href="http://dictionnaires.atilf.fr/dictionnaires/ACADEMIE/">
<title>Dictionnaire de l'Académie Française</title>
</bookmark>
- <bookmark href="http://elsap1.unicaen.fr/cgi-bin/cherches.cgi">
- <title>Dictionnaire des synonymes</title>
- </bookmark>
</folder>
</xbel>
diff --git a/mkspecs/android-clang/qmake.conf b/mkspecs/android-clang/qmake.conf
index 9758546fd4..c33bbe7eed 100644
--- a/mkspecs/android-clang/qmake.conf
+++ b/mkspecs/android-clang/qmake.conf
@@ -1,9 +1,9 @@
-# qmake configuration for building with android-g++
+# qmake configuration for building with android-clang
MAKEFILE_GENERATOR = UNIX
QMAKE_PLATFORM = android
QMAKE_COMPILER = gcc clang llvm
-CONFIG += android_install unversioned_soname unversioned_libname android_deployment_settings
+CONFIG += android_install unversioned_soname unversioned_libname plugin_with_soname android_deployment_settings
include(../common/linux.conf)
include(../common/clang.conf)
diff --git a/mkspecs/android-g++/qmake.conf b/mkspecs/android-g++/qmake.conf
index 50d1fd6cf2..2b81ac58f0 100644
--- a/mkspecs/android-g++/qmake.conf
+++ b/mkspecs/android-g++/qmake.conf
@@ -3,7 +3,7 @@ MAKEFILE_GENERATOR = UNIX
QMAKE_PLATFORM = android
QMAKE_COMPILER = gcc
-CONFIG += android_install unversioned_soname unversioned_libname android_deployment_settings
+CONFIG += android_install unversioned_soname unversioned_libname plugin_with_soname android_deployment_settings
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
diff --git a/mkspecs/common/linux-android.conf b/mkspecs/common/linux-android.conf
deleted file mode 100644
index fec008cb45..0000000000
--- a/mkspecs/common/linux-android.conf
+++ /dev/null
@@ -1,114 +0,0 @@
-MAKEFILE_GENERATOR = UNIX
-QMAKE_INCREMENTAL_STYLE = sublib
-
-QMAKE_PLATFORM += android
-
-include(linux.conf)
-include(gcc-base-unix.conf)
-
-DEFINES += QT_NO_PRINTER QT_NO_PRINTDIALOG
-QT_QPA_DEFAULT_PLATFORM = minimal
-
-NDK_ROOT = $$(ANDROID_NDK_ROOT)
-isEmpty(NDK_ROOT): error("$ANDROID_NDK_ROOT is empty, please set it to something like ~/android/ndk-r7c")
-
-NDK_HOST = $$(ANDROID_NDK_HOST)
-isEmpty(NDK_HOST): error("$ANDROID_NDK_HOST is empty, please set it to something like linux-x86 or darwin-x86")
-
-ANDROID_PLATFORM = $$(ANDROID_NDK_PLATFORM)
-isEmpty(ANDROID_PLATFORM): ANDROID_PLATFORM = android-5
-
-NDK_TOOLCHAIN_VERSION = $$(ANDROID_NDK_TOOLCHAIN_VERSION)
-isEmpty(NDK_TOOLCHAIN_VERSION): NDK_TOOLCHAIN_VERSION = 4.4.3
-
-!contains(NDK_TOOLCHAIN_VERSION, 4.4.3): ANDROID_CXXSTL_SUFFIX = -$$NDK_TOOLCHAIN_VERSION
-
-NDK_TOOLCHAIN = $$ANDROID_NDK_TOOLCHAIN_PREFIX-$$NDK_TOOLCHAIN_VERSION
-NDK_TOOLCHAIN_PATH = $$NDK_ROOT/toolchains/$$NDK_TOOLCHAIN/prebuilt/$$NDK_HOST
-
-CONFIG += $$ANDROID_PLATFORM $$ANDROID_TARGET_ARCH
-ANDROID_PLATFORM_ROOT_PATH = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/
-ANDROID_PLATFORM_PATH = $$ANDROID_PLATFORM_ROOT_PATH/usr
-
-# used to compile platform plugins for android-4 and android-5
-QMAKE_ANDROID_PLATFORM_INCDIR = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/usr/include
-QMAKE_ANDROID_PLATFORM_LIBDIR = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/usr/lib
-
-ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl$$ANDROID_CXXSTL_SUFFIX/gnu-libstdc++/libs/$$ANDROID_TARGET_ARCH
-ANDROID_SOURCES_CXX_STL_INCDIR = $$NDK_ROOT/sources/cxx-stl$$ANDROID_CXXSTL_SUFFIX/gnu-libstdc++/include $$ANDROID_SOURCES_CXX_STL_LIBDIR/include
-
-# modifications to g++.conf
-QMAKE_CC = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-gcc
-
-QMAKE_CFLAGS_WARN_ON = -Wall -Wextra
-QMAKE_CFLAGS_WARN_OFF = -Wno-psabi
-
-QMAKE_CFLAGS_SHLIB = -fPIC
-QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
-QMAKE_CFLAGS_THREAD = -D_REENTRANT
-QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
-
-QMAKE_CXX = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-g++
-QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
-QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
-QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
-QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
-QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
-
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_LINK
-
-# modifications to linux.conf
-QMAKE_AR = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-ar cqs
-QMAKE_OBJCOPY = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-objcopy
-QMAKE_NM = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-nm -P
-QMAKE_STRIP = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-strip
-QMAKE_RANLIB = $$NDK_TOOLCHAIN_PATH/bin/$$ANDROID_NDK_TOOLS_PREFIX-ranlib
-
-QMAKE_INCDIR = $$ANDROID_PLATFORM_PATH/include $$ANDROID_SOURCES_CXX_STL_INCDIR
-QMAKE_LIBDIR = $$ANDROID_SOURCES_CXX_STL_LIBDIR $$ANDROID_PLATFORM_PATH/lib
-QMAKE_INCDIR_X11 =
-QMAKE_LIBDIR_X11 =
-QMAKE_INCDIR_OPENGL =
-QMAKE_INCDIR_OPENGL_ES2 =
-QMAKE_LIBDIR_OPENGL_ES2 =
-
-contains(ANDROID_TARGET_ARCH, x86): LIBGCC_PATH_FULL = $$system($$QMAKE_CC -print-libgcc-file-name)
- else: LIBGCC_PATH_FULL = $$system($$QMAKE_CC -mthumb-interwork -print-libgcc-file-name)
-
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-QMAKE_LFLAGS = --sysroot=$$ANDROID_PLATFORM_ROOT_PATH -L$$dirname(LIBGCC_PATH_FULL) -Wl,-rpath-link=$$ANDROID_PLATFORM_PATH/lib
-QMAKE_LFLAGS_APP =
-QMAKE_LFLAGS_SHLIB = -Wl,--no-undefined -Wl,-z,noexecstack -shared
-
-contains(NDK_ROOT, ".*r[56].*") {
- !contains(ANDROID_PLATFORM, ".*android-[458].*") {
- message("Your NDK-version is out-dated. A work-around is enabled. Consider updating your NDK (workarounds are required until r6(a))")
- QMAKE_LFLAGS_SHLIB += $$ANDROID_PLATFORM_PATH/lib/crtbegin_so.o $$ANDROID_PLATFORM_PATH/lib/crtend_so.o
- }
-}
-
-QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_SONAME =
-QMAKE_LFLAGS_NOUNDEF = -Wl,--no-undefined
-QMAKE_LFLAGS_RPATH = -Wl,-rpath=
-
-# TODO: -lgnustl_static was -lstdc++, but that leads to undefined reference to
-# std::__throw_bad_alloc during configure.
-QMAKE_LIBS = -lsupc++ -llog -lz -lm -ldl -lc -lgcc -lgnustl_static
-QMAKE_LIBS_X11 =
-QMAKE_LIBS_X11SM =
-QMAKE_LIBS_QT_THREAD =
-QMAKE_LIBS_QT_OPENGL =
-QMAKE_LIBS_QTOPIA =
-QMAKE_LIBS_THREAD =
-QMAKE_LIBS_OPENGL =
-QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $$QMAKE_LIBS
-
-load(qt_config)
-
diff --git a/mkspecs/features/data/unix/findclasslist.pl b/mkspecs/features/data/unix/findclasslist.pl
index fb4357d0d4..b74b8b6a58 100644
--- a/mkspecs/features/data/unix/findclasslist.pl
+++ b/mkspecs/features/data/unix/findclasslist.pl
@@ -55,7 +55,7 @@ while (<STDIN>) {
my $comment = " /* $1 */";
while (my $line = <HDR>) {
# Match a struct or class declaration, but not a forward declaration
- $line =~ /^(?:struct|class) (?:Q_.*_EXPORT)? (\w+)(?!;)/ or next;
+ $line =~ /^(?:struct|class|namespace) (?:Q_.*_EXPORT)? (\w+)(?!;)/ or next;
print $comment if $comment;
printf " *%d%s*;\n", length $1, $1;
$comment = 0;
diff --git a/mkspecs/features/lex.prf b/mkspecs/features/lex.prf
index 16d3a6aa94..7d8325bedb 100644
--- a/mkspecs/features/lex.prf
+++ b/mkspecs/features/lex.prf
@@ -5,6 +5,7 @@
{
lex.name = Lex ${QMAKE_FILE_IN}
lex.input = LEXSOURCES
+ lex.dependency_type = TYPE_C
lex_included {
lex.CONFIG += no_link
} else {
diff --git a/mkspecs/features/mac/objective_c.prf b/mkspecs/features/mac/objective_c.prf
index b3b1d4be99..ed1ad8ad38 100644
--- a/mkspecs/features/mac/objective_c.prf
+++ b/mkspecs/features/mac/objective_c.prf
@@ -1,6 +1,7 @@
# Objective-C/C++ sources go in SOURCES, like all other sources
SOURCES += $$OBJECTIVE_SOURCES
+unset(OBJECTIVE_SOURCES)
# Strip C/C++ flags from QMAKE_OBJECTIVE_CFLAGS just in case
QMAKE_OBJECTIVE_CFLAGS -= $$QMAKE_CFLAGS $$QMAKE_CXXFLAGS
@@ -8,3 +9,4 @@ QMAKE_OBJECTIVE_CFLAGS -= $$QMAKE_CFLAGS $$QMAKE_CXXFLAGS
# Add Objective-C/C++ flags to C/C++ flags, the compiler can handle it
QMAKE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS
QMAKE_CXXFLAGS += $$QMAKE_OBJECTIVE_CFLAGS
+unset(QMAKE_OBJECTIVE_CFLAGS)
diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf
index 8ddfc38c63..9d3c3353cc 100644
--- a/mkspecs/features/moc.prf
+++ b/mkspecs/features/moc.prf
@@ -56,7 +56,7 @@ moc_source.CONFIG = no_link moc_verify
moc_source.dependency_type = TYPE_C
moc_source.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC}
-moc_source.input = SOURCES OBJECTIVE_SOURCES
+moc_source.input = SOURCES
moc_source.name = MOC ${QMAKE_FILE_IN}
moc_source.depends += $$WIN_INCLUDETEMP
silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index bb52f23378..c0f17f9808 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -290,7 +290,8 @@ contains(TEMPLATE, .*app) {
autoplugs =
for (qtmod, qt_module_deps) {
for (ptype, QT.$${qtmod}.plugin_types) {
- isEmpty(QTPLUGIN.$$ptype) {
+ nptype = $$replace(ptype, [-/], _)
+ isEmpty(QTPLUGIN.$$nptype) {
for (plug, QT_PLUGINS) {
equals(QT_PLUGIN.$${plug}.TYPE, $$ptype) {
for (dep, QT_PLUGIN.$${plug}.EXTENDS) {
@@ -303,7 +304,7 @@ contains(TEMPLATE, .*app) {
}
}
} else {
- plug = $$eval(QTPLUGIN.$$ptype)
+ plug = $$eval(QTPLUGIN.$$nptype)
!equals(plug, -): \
autoplugs += $$plug
}
diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf
index 4dd9e25f9f..95b4b586a8 100644
--- a/mkspecs/features/qt_module_pris.prf
+++ b/mkspecs/features/qt_module_pris.prf
@@ -70,7 +70,7 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri
else: \
module_config =
!isEmpty(MODULE_PLUGIN_TYPES): \
- module_plugtypes = "QT.$${MODULE_ID}.plugin_types = $$replace(MODULE_PLUGIN_TYPES, /.*$, )"
+ module_plugtypes = "QT.$${MODULE_ID}.plugin_types = $$replace(MODULE_PLUGIN_TYPES, /[^.]+\\.[^.]+$, )"
else: \
module_plugtypes =
!isEmpty(MODULE_MASTER_HEADER): \
diff --git a/mkspecs/features/unix/separate_debug_info.prf b/mkspecs/features/unix/separate_debug_info.prf
index 272cc8ef79..ebb37bdfc7 100644
--- a/mkspecs/features/unix/separate_debug_info.prf
+++ b/mkspecs/features/unix/separate_debug_info.prf
@@ -87,8 +87,9 @@ have_target:!static:if(darwin|!isEmpty(QMAKE_OBJCOPY)) {
QMAKE_POST_LINK = $$mkdir_debug_info && $$copy_debug_info && $$strip_debug_info $$QMAKE_POST_LINK
} else {
link_debug_info = $$QMAKE_OBJCOPY --add-gnu-debuglink=$$shell_target_debug_info $$shell_target
- chmod_debug_info = chmod -x $$shell_target_debug_info
- QMAKE_POST_LINK = $$copy_debug_info && $$strip_debug_info && $$link_debug_info && $$chmod_debug_info $$QMAKE_POST_LINK
+ !contains(QMAKE_HOST.os, Windows): \
+ QMAKE_POST_LINK = && chmod -x $$shell_target_debug_info $$QMAKE_POST_LINK
+ QMAKE_POST_LINK = $$copy_debug_info && $$strip_debug_info && $$link_debug_info $$QMAKE_POST_LINK
}
silent:QMAKE_POST_LINK = @echo creating $@.$$debug_info_suffix && $$QMAKE_POST_LINK
diff --git a/mkspecs/features/yacc.prf b/mkspecs/features/yacc.prf
index 915fbf6850..618f0668c2 100644
--- a/mkspecs/features/yacc.prf
+++ b/mkspecs/features/yacc.prf
@@ -35,6 +35,7 @@
yacc_impl.name = source for ${QMAKE_FILE_IN}
yacc_impl.input = YACCSOURCES
yacc_impl.variable_out = GENERATED_SOURCES
+ yacc_impl.dependency_type = TYPE_C
yacc_impl.commands = $$escape_expand(\\n) # We don't want any commands where, but if command is empty no rules are created
yacc_impl.depends += $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_H)} # Make sure we depend on the step above
yacc_impl.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_MOD_YACC}$${first(QMAKE_EXT_CPP)} # Faked output from this step, output really created in step above
diff --git a/mkspecs/macx-ios-clang/features/default_post.prf b/mkspecs/macx-ios-clang/features/default_post.prf
index 37964b688b..ec2e2d509c 100644
--- a/mkspecs/macx-ios-clang/features/default_post.prf
+++ b/mkspecs/macx-ios-clang/features/default_post.prf
@@ -80,3 +80,11 @@ macx-xcode {
QMAKE_CXXFLAGS += $$arch_flags
QMAKE_LFLAGS += $$arch_flags
}
+
+!xcodebuild:equals(TEMPLATE, app):!isEmpty(QMAKE_INFO_PLIST) {
+ # Only link in photo library support if Info.plist contains
+ # NSPhotoLibraryUsageDescription. Otherwise it will be rejected from AppStore.
+ plist_path = $$absolute_path($$QMAKE_INFO_PLIST, $$_PRO_FILE_PWD_)
+ system("/usr/libexec/PlistBuddy -c 'Print NSPhotoLibraryUsageDescription' $$system_quote($$plist_path) &>/dev/null"): \
+ QTPLUGIN += qiosnsphotolibrarysupport
+}
diff --git a/mkspecs/win32-msvc2017/qmake.conf b/mkspecs/win32-msvc2017/qmake.conf
new file mode 100644
index 0000000000..b8351eb3fe
--- /dev/null
+++ b/mkspecs/win32-msvc2017/qmake.conf
@@ -0,0 +1,10 @@
+#
+# qmake configuration for win32-msvc2017
+#
+# Written for Microsoft Visual C++ 2017
+#
+
+MSC_VER = 1910
+MSVC_VER = 15.0
+include(../common/msvc-desktop.conf)
+load(qt_config)
diff --git a/mkspecs/win32-msvc2017/qplatformdefs.h b/mkspecs/win32-msvc2017/qplatformdefs.h
new file mode 100644
index 0000000000..7100e3aa41
--- /dev/null
+++ b/mkspecs/win32-msvc2017/qplatformdefs.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the qmake spec of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "../win32-msvc2005/qplatformdefs.h"
diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32
index 834065ee61..1e28f3ec32 100644
--- a/qmake/Makefile.win32
+++ b/qmake/Makefile.win32
@@ -25,7 +25,7 @@ LINKER = link
CFLAGS_EXTRA = /Zc:wchar_t-
! elseif "$(QMAKESPEC)" == "win32-msvc2008" || "$(QMAKESPEC)" == "win32-msvc2010" || "$(QMAKESPEC)" == "win32-msvc2012" || "$(QMAKESPEC)" == "win32-msvc2013"
CFLAGS_EXTRA = /MP /D_CRT_SECURE_NO_WARNINGS /D_SCL_SECURE_NO_WARNINGS $(CFLAGS_CRT)
-! elseif "$(QMAKESPEC)" == "win32-msvc2015" || "$(QMAKESPEC)" == "win32-clang-msvc2015"
+! elseif "$(QMAKESPEC)" == "win32-msvc2015" || "$(QMAKESPEC)" == "win32-msvc2017" || "$(QMAKESPEC)" == "win32-clang-msvc2015"
CFLAGS_EXTRA = /MP /D_CRT_SECURE_NO_WARNINGS /D_SCL_SECURE_NO_WARNINGS /Zc:strictStrings /w44456 /w44457 /w44458 /wd4577 $(CFLAGS_CRT)
! else
! error Unsupported compiler for this Makefile
diff --git a/qmake/doc/src/qmake-manual.qdoc b/qmake/doc/src/qmake-manual.qdoc
index 7135948832..c0f03018c0 100644
--- a/qmake/doc/src/qmake-manual.qdoc
+++ b/qmake/doc/src/qmake-manual.qdoc
@@ -1813,6 +1813,12 @@
which qmake will replace with the actual executable name. Other variables
include @ICON@, @TYPEINFO@, @LIBRARY@, and @SHORT_VERSION@.
+ If building for iOS, and the \c{.plist} file contains the key
+ \c NSPhotoLibraryUsageDescription, qmake will include an additional plugin
+ to the build that adds photo access support (to, e.g.,
+ \l{QFileDialog::setDirectory()}{QFile/QFileDialog}). See Info.plist
+ documentation from Apple for more information regarding this key.
+
\note Most of the time, the default \c{Info.plist} is good enough.
\section1 QMAKE_LFLAGS
@@ -2051,6 +2057,12 @@
value of this variable is typically handled by qmake or
\l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+ \section1 QMAKE_OBJECTIVE_CFLAGS
+
+ Specifies the Objective C/C++ compiler flags for building
+ a project. These flags are used in addition to QMAKE_CFLAGS and
+ QMAKE_CXXFLAGS.
+
\section1 QMAKE_POST_LINK
Specifies the command to execute after linking the \l{TARGET}
diff --git a/qmake/generators/makefiledeps.cpp b/qmake/generators/makefiledeps.cpp
index 57cb0ea854..44f715346f 100644
--- a/qmake/generators/makefiledeps.cpp
+++ b/qmake/generators/makefiledeps.cpp
@@ -46,6 +46,7 @@
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <limits.h>
#if defined(_MSC_VER) && _MSC_VER >= 1400
#include <share.h>
#endif
@@ -979,9 +980,11 @@ bool QMakeSourceFileInfo::findMocs(SourceFile *file)
continue;
int matchlen = 0, extralines = 0;
+ size_t needle_len = strlen(interesting[interest]);
+ Q_ASSERT(needle_len <= INT_MAX);
if (matchWhileUnsplitting(buffer, buffer_len, y,
interesting[interest],
- strlen(interesting[interest]),
+ static_cast<int>(needle_len),
&matchlen, &extralines)
&& y + matchlen < buffer_len
&& !isCWordChar(buffer[y + matchlen])) {
diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp
index 4539058cbf..914505a362 100644
--- a/qmake/generators/win32/msbuild_objectmodel.cpp
+++ b/qmake/generators/win32/msbuild_objectmodel.cpp
@@ -1158,6 +1158,21 @@ static inline QString toString(subSystemOption option)
return QString();
}
+static inline QString toString(triState genDebugInfo, linkerDebugOption option)
+{
+ switch (genDebugInfo) {
+ case unset:
+ break;
+ case _False:
+ return "false";
+ case _True:
+ if (option == linkerDebugOptionFastLink)
+ return "DebugFastLink";
+ return "true";
+ }
+ return QString();
+}
+
static inline QString toString(machineTypeOption option)
{
switch (option) {
@@ -1536,7 +1551,7 @@ void VCXProjectWriter::write(XmlOutput &xml, const VCLinkerTool &tool)
<< attrTagS(_EntryPointSymbol, tool.EntryPointSymbol)
<< attrTagX(_ForceSymbolReferences, tool.ForceSymbolReferences, ";")
<< attrTagS(_FunctionOrder, tool.FunctionOrder)
- << attrTagT(_GenerateDebugInformation, tool.GenerateDebugInformation)
+ << attrTagS(_GenerateDebugInformation, toString(tool.GenerateDebugInformation, tool.DebugInfoOption))
<< attrTagT(_GenerateManifest, tool.GenerateManifest)
<< attrTagT(_GenerateWindowsMetadata, tool.GenerateWindowsMetadata)
<< attrTagS(_WindowsMetadataFile, tool.GenerateWindowsMetadata == _True ? tool.WindowsMetadataFile : QString())
diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp
index 00d5d248ed..6aa850bf4e 100644
--- a/qmake/generators/win32/msvc_nmake.cpp
+++ b/qmake/generators/win32/msvc_nmake.cpp
@@ -406,14 +406,21 @@ void NmakeMakefileGenerator::init()
project->values("QMAKE_DISTCLEAN").append(tgt + ".lib");
}
if (project->isActiveConfig("debug_info")) {
- // Add the compiler's PDB file.
- QString pdbfile = var("OBJECTS_DIR") + project->first("TARGET") + ".vc.pdb";
+ QString pdbfile;
+ QString distPdbFile = tgt + ".pdb";
+ if (project->isActiveConfig("staticlib")) {
+ // For static libraries, the compiler's pdb file and the dist pdb file are the same.
+ pdbfile = distPdbFile;
+ } else {
+ // Use $${TARGET}.vc.pdb in the OBJECTS_DIR for the compiler and
+ // $${TARGET}.pdb (the default) for the linker.
+ pdbfile = var("OBJECTS_DIR") + project->first("TARGET") + ".vc.pdb";
+ }
QString escapedPdbFile = escapeFilePath(pdbfile);
project->values("QMAKE_CFLAGS").append("/Fd" + escapedPdbFile);
project->values("QMAKE_CXXFLAGS").append("/Fd" + escapedPdbFile);
project->values("QMAKE_CLEAN").append(pdbfile);
- // Add the linker's PDB file to the distclean target.
- project->values("QMAKE_DISTCLEAN").append(tgt + ".pdb");
+ project->values("QMAKE_DISTCLEAN").append(distPdbFile);
}
if (project->isActiveConfig("debug")) {
project->values("QMAKE_CLEAN").append(tgt + ".ilk");
diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp
index 39898567a7..fb9c4f354d 100644
--- a/qmake/generators/win32/msvc_objectmodel.cpp
+++ b/qmake/generators/win32/msvc_objectmodel.cpp
@@ -1425,8 +1425,10 @@ bool VCLinkerTool::parseOption(const char* option)
}else
EnableUAC = _True;
break;
- case 0x3389797: // /DEBUG
+ case 0x3389797: // /DEBUG[:FASTLINK]
GenerateDebugInformation = _True;
+ if (config->CompilerVersion >= NET2015 && strcmp(option + 7, "FASTLINK") == 0)
+ DebugInfoOption = linkerDebugOptionFastLink;
break;
case 0x0033896: // /DEF:filename
ModuleDefinitionFile = option+5;
diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h
index dfbfaacfa8..7f9d38a411 100644
--- a/qmake/generators/win32/msvc_objectmodel.h
+++ b/qmake/generators/win32/msvc_objectmodel.h
@@ -52,7 +52,8 @@ enum DotNET {
NET2010 = 0xa0,
NET2012 = 0xb0,
NET2013 = 0xc0,
- NET2015 = 0xd0
+ NET2015 = 0xd0,
+ NET2017 = 0xe0
};
/*
@@ -277,6 +278,10 @@ enum inlineExpansionOption {
expandAnySuitable,
expandDefault // Not useful number, but stops the output
};
+enum linkerDebugOption {
+ linkerDebugOptionNone,
+ linkerDebugOptionFastLink
+};
enum linkIncrementalType {
linkIncrementalDefault,
linkIncrementalNo,
@@ -590,6 +595,7 @@ public:
QStringList ForceSymbolReferences;
QString FunctionOrder;
triState GenerateDebugInformation;
+ linkerDebugOption DebugInfoOption;
triState GenerateMapFile;
qlonglong HeapCommitSize;
qlonglong HeapReserveSize;
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index 7a713e1b65..19e35e798f 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -65,6 +65,7 @@ struct DotNetCombo {
const char *versionStr;
const char *regKey;
} dotNetCombo[] = {
+ {NET2017, "MSVC.NET 2017 (15.0)", "Software\\Microsoft\\VisualStudio\\SxS\\VS7\\15.0"},
{NET2015, "MSVC.NET 2015 (14.0)", "Software\\Microsoft\\VisualStudio\\14.0\\Setup\\VC\\ProductDir"},
{NET2013, "MSVC.NET 2013 (12.0)", "Software\\Microsoft\\VisualStudio\\12.0\\Setup\\VC\\ProductDir"},
{NET2013, "MSVC.NET 2013 Express Edition (12.0)", "Software\\Microsoft\\VCExpress\\12.0\\Setup\\VC\\ProductDir"},
@@ -159,6 +160,8 @@ const char _slnHeader120[] = "Microsoft Visual Studio Solution File, Format
"\n# Visual Studio 2013";
const char _slnHeader140[] = "Microsoft Visual Studio Solution File, Format Version 12.00"
"\n# Visual Studio 2015";
+const char _slnHeader141[] = "Microsoft Visual Studio Solution File, Format Version 12.00"
+ "\n# Visual Studio 2017";
// The following UUID _may_ change for later servicepacks...
// If so we need to search through the registry at
// HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0\Projects
@@ -389,6 +392,8 @@ QString VcprojGenerator::retrievePlatformToolSet() const
return QStringLiteral("v120") + suffix;
case NET2015:
return QStringLiteral("v140") + suffix;
+ case NET2017:
+ return QStringLiteral("v141") + suffix;
default:
return QString();
}
@@ -615,6 +620,9 @@ void VcprojGenerator::writeSubDirs(QTextStream &t)
}
switch (which_dotnet_version(project->first("MSVC_VER").toLatin1())) {
+ case NET2017:
+ t << _slnHeader141;
+ break;
case NET2015:
t << _slnHeader140;
break;
@@ -945,6 +953,9 @@ void VcprojGenerator::initProject()
// Own elements -----------------------------
vcProject.Name = project->first("QMAKE_ORIG_TARGET").toQString();
switch (which_dotnet_version(project->first("MSVC_VER").toLatin1())) {
+ case NET2017:
+ vcProject.Version = "15.00";
+ break;
case NET2015:
vcProject.Version = "14.00";
break;
diff --git a/qmake/library/qmakebuiltins.cpp b/qmake/library/qmakebuiltins.cpp
index 199c49e315..93a292ccf5 100644
--- a/qmake/library/qmakebuiltins.cpp
+++ b/qmake/library/qmakebuiltins.cpp
@@ -481,8 +481,7 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand(
int end = -1;
if (func_t == E_SECTION) {
if (args.count() != 3 && args.count() != 4) {
- evalError(fL1S("%1(var) section(var, sep, begin, end) requires"
- " three or four arguments.").arg(func.toQString(m_tmp1)));
+ evalError(fL1S("section(var, sep, begin, end) requires three or four arguments."));
} else {
var = args[0];
sep = args.at(1).toQString();
diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp
index e828dd85f7..dcbf16b3ea 100644
--- a/qmake/library/qmakeevaluator.cpp
+++ b/qmake/library/qmakeevaluator.cpp
@@ -971,6 +971,13 @@ static ProString msvcBinDirToQMakeArch(QString subdir)
subdir = subdir.toLower();
if (subdir == QLatin1String("amd64"))
return ProString("x86_64");
+ // Since 2017 the folder structure from here is HostX64|X86/x64|x86
+ idx = subdir.indexOf(QLatin1Char('\\'));
+ if (idx == -1)
+ return ProString("x86");
+ subdir.remove(0, idx + 1);
+ if (subdir == QLatin1String("x64"))
+ return ProString("x86_64");
return ProString(subdir);
}
@@ -1065,8 +1072,12 @@ void QMakeEvaluator::loadDefaults()
vars[ProKey("QMAKE_HOST.arch")] << archStr;
# if defined(Q_CC_MSVC) // ### bogus condition, but nobody x-builds for msvc with a different qmake
+ // Since VS 2017 we need VCToolsInstallDir instead of VCINSTALLDIR
+ QString vcInstallDir = m_option->getEnv(QLatin1String("VCToolsInstallDir"));
+ if (vcInstallDir.isEmpty())
+ vcInstallDir = m_option->getEnv(QLatin1String("VCINSTALLDIR"));
vars[ProKey("QMAKE_TARGET.arch")] = msvcArchitecture(
- m_option->getEnv(QLatin1String("VCINSTALLDIR")),
+ vcInstallDir,
m_option->getEnv(QLatin1String("PATH")));
# endif
#elif defined(Q_OS_UNIX)
diff --git a/qmake/property.cpp b/qmake/property.cpp
index 9ee08f4b55..d17d62481a 100644
--- a/qmake/property.cpp
+++ b/qmake/property.cpp
@@ -41,38 +41,41 @@ static const struct {
const char *name;
QLibraryInfo::LibraryLocation loc;
bool raw;
+ bool singular;
} propList[] = {
- { "QT_SYSROOT", QLibraryInfo::SysrootPath, true },
- { "QT_INSTALL_PREFIX", QLibraryInfo::PrefixPath, false },
- { "QT_INSTALL_ARCHDATA", QLibraryInfo::ArchDataPath, false },
- { "QT_INSTALL_DATA", QLibraryInfo::DataPath, false },
- { "QT_INSTALL_DOCS", QLibraryInfo::DocumentationPath, false },
- { "QT_INSTALL_HEADERS", QLibraryInfo::HeadersPath, false },
- { "QT_INSTALL_LIBS", QLibraryInfo::LibrariesPath, false },
- { "QT_INSTALL_LIBEXECS", QLibraryInfo::LibraryExecutablesPath, false },
- { "QT_INSTALL_BINS", QLibraryInfo::BinariesPath, false },
- { "QT_INSTALL_TESTS", QLibraryInfo::TestsPath, false },
- { "QT_INSTALL_PLUGINS", QLibraryInfo::PluginsPath, false },
- { "QT_INSTALL_IMPORTS", QLibraryInfo::ImportsPath, false },
- { "QT_INSTALL_QML", QLibraryInfo::Qml2ImportsPath, false },
- { "QT_INSTALL_TRANSLATIONS", QLibraryInfo::TranslationsPath, false },
- { "QT_INSTALL_CONFIGURATION", QLibraryInfo::SettingsPath, false },
- { "QT_INSTALL_EXAMPLES", QLibraryInfo::ExamplesPath, false },
- { "QT_INSTALL_DEMOS", QLibraryInfo::ExamplesPath, false }, // Just backwards compat
- { "QT_HOST_PREFIX", QLibraryInfo::HostPrefixPath, true },
- { "QT_HOST_DATA", QLibraryInfo::HostDataPath, true },
- { "QT_HOST_BINS", QLibraryInfo::HostBinariesPath, true },
- { "QT_HOST_LIBS", QLibraryInfo::HostLibrariesPath, true },
- { "QMAKE_SPEC", QLibraryInfo::HostSpecPath, true },
- { "QMAKE_XSPEC", QLibraryInfo::TargetSpecPath, true },
+ { "QT_SYSROOT", QLibraryInfo::SysrootPath, true, true },
+ { "QT_INSTALL_PREFIX", QLibraryInfo::PrefixPath, false, false },
+ { "QT_INSTALL_ARCHDATA", QLibraryInfo::ArchDataPath, false, false },
+ { "QT_INSTALL_DATA", QLibraryInfo::DataPath, false, false },
+ { "QT_INSTALL_DOCS", QLibraryInfo::DocumentationPath, false, false },
+ { "QT_INSTALL_HEADERS", QLibraryInfo::HeadersPath, false, false },
+ { "QT_INSTALL_LIBS", QLibraryInfo::LibrariesPath, false, false },
+ { "QT_INSTALL_LIBEXECS", QLibraryInfo::LibraryExecutablesPath, false, false },
+ { "QT_INSTALL_BINS", QLibraryInfo::BinariesPath, false, false },
+ { "QT_INSTALL_TESTS", QLibraryInfo::TestsPath, false, false },
+ { "QT_INSTALL_PLUGINS", QLibraryInfo::PluginsPath, false, false },
+ { "QT_INSTALL_IMPORTS", QLibraryInfo::ImportsPath, false, false },
+ { "QT_INSTALL_QML", QLibraryInfo::Qml2ImportsPath, false, false },
+ { "QT_INSTALL_TRANSLATIONS", QLibraryInfo::TranslationsPath, false, false },
+ { "QT_INSTALL_CONFIGURATION", QLibraryInfo::SettingsPath, false, false },
+ { "QT_INSTALL_EXAMPLES", QLibraryInfo::ExamplesPath, false, false },
+ { "QT_INSTALL_DEMOS", QLibraryInfo::ExamplesPath, false, false }, // Just backwards compat
+ { "QT_HOST_PREFIX", QLibraryInfo::HostPrefixPath, true, false },
+ { "QT_HOST_DATA", QLibraryInfo::HostDataPath, true, false },
+ { "QT_HOST_BINS", QLibraryInfo::HostBinariesPath, true, false },
+ { "QT_HOST_LIBS", QLibraryInfo::HostLibrariesPath, true, false },
+ { "QMAKE_SPEC", QLibraryInfo::HostSpecPath, true, true },
+ { "QMAKE_XSPEC", QLibraryInfo::TargetSpecPath, true, true },
};
QMakeProperty::QMakeProperty() : settings(0)
{
for (unsigned i = 0; i < sizeof(propList)/sizeof(propList[0]); i++) {
QString name = QString::fromLatin1(propList[i].name);
- m_values[ProKey(name + "/src")] = QLibraryInfo::rawLocation(propList[i].loc, QLibraryInfo::EffectiveSourcePaths);
- m_values[ProKey(name + "/get")] = QLibraryInfo::rawLocation(propList[i].loc, QLibraryInfo::EffectivePaths);
+ if (!propList[i].singular) {
+ m_values[ProKey(name + "/src")] = QLibraryInfo::rawLocation(propList[i].loc, QLibraryInfo::EffectiveSourcePaths);
+ m_values[ProKey(name + "/get")] = QLibraryInfo::rawLocation(propList[i].loc, QLibraryInfo::EffectivePaths);
+ }
QString val = QLibraryInfo::rawLocation(propList[i].loc, QLibraryInfo::FinalPaths);
if (!propList[i].raw) {
m_values[ProKey(name + "/dev")] = QLibraryInfo::rawLocation(propList[i].loc, QLibraryInfo::DevicePaths);
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp
index 30dde281e8..82977db5e7 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp
@@ -156,12 +156,14 @@ static inline void positionCluster(HB_ShaperItem *item, int gfrom, int glast)
// ### wrong in rtl context!
case HB_Combining_BelowLeft:
p.y += offset;
+ // fall through
case HB_Combining_BelowLeftAttached:
p.x += attachmentRect.x - markMetrics.x;
p.y += (attachmentRect.y + attachmentRect.height) - markMetrics.y;
break;
case HB_Combining_Below:
p.y += offset;
+ // fall through
case HB_Combining_BelowAttached:
p.x += attachmentRect.x - markMetrics.x;
p.y += (attachmentRect.y + attachmentRect.height) - markMetrics.y;
@@ -170,28 +172,33 @@ static inline void positionCluster(HB_ShaperItem *item, int gfrom, int glast)
break;
case HB_Combining_BelowRight:
p.y += offset;
+ // fall through
case HB_Combining_BelowRightAttached:
p.x += attachmentRect.x + attachmentRect.width - markMetrics.width - markMetrics.x;
p.y += attachmentRect.y + attachmentRect.height - markMetrics.y;
break;
case HB_Combining_Left:
p.x -= offset;
+ // fall through
case HB_Combining_LeftAttached:
break;
case HB_Combining_Right:
p.x += offset;
+ // fall through
case HB_Combining_RightAttached:
break;
case HB_Combining_DoubleAbove:
// ### wrong in RTL context!
case HB_Combining_AboveLeft:
p.y -= offset;
+ // fall through
case HB_Combining_AboveLeftAttached:
p.x += attachmentRect.x - markMetrics.x;
p.y += attachmentRect.y - markMetrics.y - markMetrics.height;
break;
case HB_Combining_Above:
p.y -= offset;
+ // fall through
case HB_Combining_AboveAttached:
p.x += attachmentRect.x - markMetrics.x;
p.y += attachmentRect.y - markMetrics.y - markMetrics.height;
@@ -200,6 +207,7 @@ static inline void positionCluster(HB_ShaperItem *item, int gfrom, int glast)
break;
case HB_Combining_AboveRight:
p.y -= offset;
+ // fall through
case HB_Combining_AboveRightAttached:
p.x += attachmentRect.x + attachmentRect.width - markMetrics.x - markMetrics.width;
p.y += attachmentRect.y - markMetrics.y - markMetrics.height;
diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivityLoader.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivityLoader.java
index 2494035c60..ce0ce3abc7 100644
--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivityLoader.java
+++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivityLoader.java
@@ -66,7 +66,7 @@ public class QtActivityLoader extends QtLoader {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
try {
- Uri uri = Uri.parse("market://search?q=pname:org.kde.necessitas.ministro");
+ Uri uri = Uri.parse("market://details?id=org.kde.necessitas.ministro");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
m_activity.startActivityForResult(intent, MINISTRO_INSTALL_REQUEST_CODE);
} catch (Exception e) {
diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtLoader.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtLoader.java
index d281cb0996..aeac2448bb 100644
--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtLoader.java
+++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtLoader.java
@@ -73,7 +73,7 @@ public abstract class QtLoader {
public final static int MINISTRO_INSTALL_REQUEST_CODE = 0xf3ee; // request code used to know when Ministro instalation is finished
public static final int MINISTRO_API_LEVEL = 5; // Ministro api level (check IMinistro.aidl file)
public static final int NECESSITAS_API_LEVEL = 2; // Necessitas api level used by platform plugin
- public static final int QT_VERSION = 0x050100; // This app requires at least Qt version 5.1.0
+ public static final int QT_VERSION = 0x050700; // This app requires at least Qt version 5.7.0
public static final String ERROR_CODE_KEY = "error.code";
public static final String ERROR_MESSAGE_KEY = "error.message";
diff --git a/src/concurrent/doc/snippets/code/src_concurrent_qtconcurrentfilter.cpp b/src/concurrent/doc/snippets/code/src_concurrent_qtconcurrentfilter.cpp
index 53772fe55a..d09c7658d4 100644
--- a/src/concurrent/doc/snippets/code/src_concurrent_qtconcurrentfilter.cpp
+++ b/src/concurrent/doc/snippets/code/src_concurrent_qtconcurrentfilter.cpp
@@ -113,9 +113,9 @@ QSet<QString> dictionary = QtConcurrent::blockingFilteredReduced(strings, allLow
//! [7]
// keep only images with an alpha channel
QList<QImage> images = ...;
-QFuture<void> alphaImages = QtConcurrent::filter(strings, &QImage::hasAlphaChannel);
+QFuture<void> alphaImages = QtConcurrent::filter(images, &QImage::hasAlphaChannel);
-// keep only gray scale images
+// retrieve gray scale images
QList<QImage> images = ...;
QFuture<QImage> grayscaleImages = QtConcurrent::filtered(images, &QImage::isGrayscale);
diff --git a/src/corelib/codecs/qsimplecodec_p.h b/src/corelib/codecs/qsimplecodec_p.h
index d45cf2377f..a84f9af1e9 100644
--- a/src/corelib/codecs/qsimplecodec_p.h
+++ b/src/corelib/codecs/qsimplecodec_p.h
@@ -66,12 +66,12 @@ public:
explicit QSimpleTextCodec(int);
~QSimpleTextCodec();
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+ QString convertToUnicode(const char *, int, ConverterState *) const override;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
- QByteArray name() const;
- QList<QByteArray> aliases() const;
- int mibEnum() const;
+ QByteArray name() const override;
+ QList<QByteArray> aliases() const override;
+ int mibEnum() const override;
private:
int forwardIndex;
diff --git a/src/corelib/doc/src/containers.qdoc b/src/corelib/doc/src/containers.qdoc
index 0b98397a68..a1c32bb007 100644
--- a/src/corelib/doc/src/containers.qdoc
+++ b/src/corelib/doc/src/containers.qdoc
@@ -158,11 +158,8 @@
\endtable
Containers can be nested. For example, it is perfectly possible
- to use a QMap<QString, QList<int> >, where the key type is
- QString and the value type QList<int>. The only pitfall is that
- you must insert a space between the closing angle brackets (>);
- otherwise the C++ compiler will misinterpret the two >'s as a
- right-shift operator (>>) and report a syntax error.
+ to use a QMap<QString, QList<int>>, where the key type is
+ QString and the value type QList<int>.
The containers are defined in individual header files with the
same name as the container (e.g., \c <QLinkedList>). For
diff --git a/src/corelib/doc/src/eventsandfilters.qdoc b/src/corelib/doc/src/eventsandfilters.qdoc
index 4e914d17cc..947a24f4e5 100644
--- a/src/corelib/doc/src/eventsandfilters.qdoc
+++ b/src/corelib/doc/src/eventsandfilters.qdoc
@@ -80,7 +80,7 @@
\section1 Event Types
- Most events types have special classes, notably QResizeEvent,
+ Most event types have special classes, notably QResizeEvent,
QPaintEvent, QMouseEvent, QKeyEvent, and QCloseEvent. Each class
subclasses QEvent and adds event-specific functions. For example,
QResizeEvent adds \l{QResizeEvent::}{size()} and
diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h
index d0eb2af423..5f60e32af5 100644
--- a/src/corelib/global/qcompilerdetection.h
+++ b/src/corelib/global/qcompilerdetection.h
@@ -994,6 +994,9 @@
# define Q_COMPILER_THREADSAFE_STATICS
# define Q_COMPILER_UNIFORM_INIT
# endif
+# if _MSC_VER >= 1910
+# define Q_COMPILER_CONSTEXPR
+# endif
# endif /* __cplusplus */
#endif /* Q_CC_MSVC */
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index bc93b1f477..934916514a 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -4268,8 +4268,10 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters)
Compares the floating point value \a p1 and \a p2 and
returns \c true if they are considered equal, otherwise \c false.
- Note that comparing values where either \a p1 or \a p2 is 0.0 will not work.
- The solution to this is to compare against values greater than or equal to 1.0.
+ Note that comparing values where either \a p1 or \a p2 is 0.0 will not work,
+ nor does comparing values where one of the values is NaN or infinity.
+ If one of the values is always 0.0, use qFuzzyIsNull instead. If one of the
+ values is likely to be 0.0, one solution is to add 1.0 to both values.
\snippet code/src_corelib_global_qglobal.cpp 46
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index 458200180e..62b49da316 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -318,8 +318,10 @@ QLibraryInfo::buildDate()
# define COMPILER_STRING "MSVC 2012"
# elif _MSC_VER < 1900
# define COMPILER_STRING "MSVC 2013"
-# elif _MSC_VER < 2000
+# elif _MSC_VER < 1910
# define COMPILER_STRING "MSVC 2015"
+# elif _MSC_VER < 2000
+# define COMPILER_STRING "MSVC 2017"
# else
# define COMPILER_STRING "MSVC _MSC_VER " QT_STRINGIFY(_MSC_VER)
# endif
diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp
index e8262aa0c0..22b75afac8 100644
--- a/src/corelib/global/qlogging.cpp
+++ b/src/corelib/global/qlogging.cpp
@@ -1781,7 +1781,7 @@ void qErrnoWarning(int code, const char *msg, ...)
\snippet code/src_corelib_global_qglobal.cpp 23
- \sa QtMessageHandler, QtMsgType, qDebug(), qWarning(), qCritical(), qFatal(),
+ \sa QtMessageHandler, QtMsgType, qDebug(), qInfo(), qWarning(), qCritical(), qFatal(),
{Debugging Techniques}
*/
diff --git a/src/corelib/global/qversiontagging.h b/src/corelib/global/qversiontagging.h
index 1e276dc3e0..3ed02c7376 100644
--- a/src/corelib/global/qversiontagging.h
+++ b/src/corelib/global/qversiontagging.h
@@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE
* There will only be one copy of the section in the output library or application.
*/
-#if defined(QT_BUILD_CORE_LIB) || defined(QT_BOOTSTRAPPED) || defined(QT_NO_VERSION_TAGGING)
+#if defined(QT_BUILD_CORE_LIB) || defined(QT_BOOTSTRAPPED) || defined(QT_NO_VERSION_TAGGING) || defined(QT_STATIC)
// don't make tags in QtCore, bootstrapped systems or if the user asked not to
#elif defined(Q_CC_GNU) && !defined(Q_OS_ANDROID)
# if defined(Q_PROCESSOR_X86) && (defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD_KERNEL))
diff --git a/src/corelib/io/qfile_p.h b/src/corelib/io/qfile_p.h
index fd7db3c120..545890c6b3 100644
--- a/src/corelib/io/qfile_p.h
+++ b/src/corelib/io/qfile_p.h
@@ -70,7 +70,7 @@ protected:
bool openExternalFile(int flags, int fd, QFile::FileHandleFlags handleFlags);
bool openExternalFile(int flags, FILE *fh, QFile::FileHandleFlags handleFlags);
- virtual QAbstractFileEngine *engine() const;
+ QAbstractFileEngine *engine() const override;
QString fileName;
};
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp
index baf8cbd193..5acee25d02 100644
--- a/src/corelib/io/qfileinfo.cpp
+++ b/src/corelib/io/qfileinfo.cpp
@@ -293,8 +293,7 @@ QDateTime &QFileInfoPrivate::getFileTime(QAbstractFileEngine::FileTime request)
\note To speed up performance, QFileInfo caches information about
the file.
- To speed up performance, QFileInfo caches information about the
- file. Because files can be changed by other users or programs, or
+ Because files can be changed by other users or programs, or
even by other parts of the same program, there is a function that
refreshes the file information: refresh(). If you want to switch
off a QFileInfo's caching and force it to access the file system
diff --git a/src/corelib/io/qfilesystemengine.cpp b/src/corelib/io/qfilesystemengine.cpp
index fd8f251ccb..c93c42bc60 100644
--- a/src/corelib/io/qfilesystemengine.cpp
+++ b/src/corelib/io/qfilesystemengine.cpp
@@ -222,7 +222,7 @@ bool QFileSystemEngine::fillMetaData(int fd, QFileSystemMetaData &data)
return false;
}
-#if defined(QT_EXT_QNX_READDIR_R)
+#if defined(_DEXTRA_FIRST)
static void fillStat64fromStat32(struct stat64 *statBuf64, const struct stat &statBuf32)
{
statBuf64->st_mode = statBuf32.st_mode;
@@ -287,7 +287,7 @@ void QFileSystemMetaData::fillFromStatBuf(const QT_STATBUF &statBuffer)
void QFileSystemMetaData::fillFromDirEnt(const QT_DIRENT &entry)
{
-#if defined(QT_EXT_QNX_READDIR_R)
+#if defined(_DEXTRA_FIRST)
knownFlagsMask = 0;
entryFlags = 0;
for (dirent_extra *extra = _DEXTRA_FIRST(&entry); _DEXTRA_VALID(extra, &entry);
diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp
index 75797e58da..9618fade2b 100644
--- a/src/corelib/io/qfilesystemengine_unix.cpp
+++ b/src/corelib/io/qfilesystemengine_unix.cpp
@@ -65,6 +65,13 @@
#include <MobileCoreServices/MobileCoreServices.h>
#endif
+#if defined(Q_OS_DARWIN)
+// We cannot include <Foundation/Foundation.h> (it's an Objective-C header), but
+// we need these declarations:
+Q_FORWARD_DECLARE_OBJC_CLASS(NSString);
+extern "C" NSString *NSTemporaryDirectory();
+#endif
+
QT_BEGIN_NAMESPACE
#if defined(Q_OS_DARWIN)
@@ -282,7 +289,7 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry,
if (ret) {
data.knownFlagsMask |= QFileSystemMetaData::ExistsAttribute;
data.entryFlags |= QFileSystemMetaData::ExistsAttribute;
- QString canonicalPath = QDir::cleanPath(QString::fromLocal8Bit(ret));
+ QString canonicalPath = QDir::cleanPath(QFile::decodeName(ret));
free(ret);
return QFileSystemEntry(canonicalPath);
} else if (errno == ENOENT) { // file doesn't exist
@@ -702,8 +709,17 @@ QString QFileSystemEngine::tempPath()
return QLatin1String(QT_UNIX_TEMP_PATH_OVERRIDE);
#else
QString temp = QFile::decodeName(qgetenv("TMPDIR"));
- if (temp.isEmpty())
- temp = QLatin1String("/tmp");
+ if (temp.isEmpty()) {
+#if defined(Q_OS_DARWIN) && !defined(QT_BOOTSTRAPPED)
+ if (NSString *nsPath = NSTemporaryDirectory()) {
+ temp = QString::fromCFString((CFStringRef)nsPath);
+ } else {
+#else
+ {
+#endif
+ temp = QLatin1String("/tmp");
+ }
+ }
return QDir::cleanPath(temp);
#endif
}
diff --git a/src/corelib/io/qfilesystemiterator_p.h b/src/corelib/io/qfilesystemiterator_p.h
index 16830257e1..081487e66e 100644
--- a/src/corelib/io/qfilesystemiterator_p.h
+++ b/src/corelib/io/qfilesystemiterator_p.h
@@ -93,14 +93,6 @@ private:
#else
QT_DIR *dir;
QT_DIRENT *dirEntry;
-#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_CYGWIN) || defined(QT_EXT_QNX_READDIR_R)
- // for readdir_r
- QScopedPointer<QT_DIRENT, QScopedPointerPodDeleter> mt_file;
-#if defined(QT_EXT_QNX_READDIR_R)
- // for _readdir_r
- size_t direntSize;
-#endif
-#endif
int lastError;
#endif
diff --git a/src/corelib/io/qfilesystemiterator_unix.cpp b/src/corelib/io/qfilesystemiterator_unix.cpp
index d7b21fac32..0d1438f137 100644
--- a/src/corelib/io/qfilesystemiterator_unix.cpp
+++ b/src/corelib/io/qfilesystemiterator_unix.cpp
@@ -52,9 +52,6 @@ QFileSystemIterator::QFileSystemIterator(const QFileSystemEntry &entry, QDir::Fi
: nativePath(entry.nativeFilePath())
, dir(0)
, dirEntry(0)
-#if defined(Q_OS_QNX) && defined(__EXT_QNX__READDIR_R)
- , direntSize(0)
-#endif
, lastError(0)
{
Q_UNUSED(filters)
@@ -64,32 +61,8 @@ QFileSystemIterator::QFileSystemIterator(const QFileSystemEntry &entry, QDir::Fi
if ((dir = QT_OPENDIR(nativePath.constData())) == 0) {
lastError = errno;
} else {
-
if (!nativePath.endsWith('/'))
nativePath.append('/');
-
-#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_CYGWIN) || defined(QT_EXT_QNX_READDIR_R)
- // ### Race condition; we should use fpathconf and dirfd().
- size_t maxPathName = ::pathconf(nativePath.constData(), _PC_NAME_MAX);
- if (maxPathName == size_t(-1))
- maxPathName = FILENAME_MAX;
- maxPathName += sizeof(QT_DIRENT) + 1;
-
- QT_DIRENT *p = reinterpret_cast<QT_DIRENT*>(::malloc(maxPathName));
- Q_CHECK_PTR(p);
-
- mt_file.reset(p);
-#if defined(QT_EXT_QNX_READDIR_R)
- direntSize = maxPathName;
-
- // Include extra stat information in the readdir() call (d_stat member of
- // dirent_extra_stat). This is used in QFileSystemMetaData::fillFromDirEnt() to
- // avoid extra stat() calls when iterating over directories
- int flags = dircntl(dir, D_GETFLAG) | D_FLAG_STAT | D_FLAG_FILTER;
- if (dircntl(dir, D_SETFLAG, flags) == -1)
- lastError = errno;
-#endif
-#endif
}
}
@@ -104,18 +77,7 @@ bool QFileSystemIterator::advance(QFileSystemEntry &fileEntry, QFileSystemMetaDa
if (!dir)
return false;
-#if defined(QT_EXT_QNX_READDIR_R)
- lastError = QT_EXT_QNX_READDIR_R(dir, mt_file.data(), &dirEntry, direntSize);
- if (lastError)
- return false;
-#elif defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(Q_OS_CYGWIN)
- lastError = QT_READDIR_R(dir, mt_file.data(), &dirEntry);
- if (lastError)
- return false;
-#else
- // ### add local lock to prevent breaking reentrancy
dirEntry = QT_READDIR(dir);
-#endif // _POSIX_THREAD_SAFE_FUNCTIONS
if (dirEntry) {
fileEntry = QFileSystemEntry(nativePath + QByteArray(dirEntry->d_name), QFileSystemEntry::FromNativePath());
diff --git a/src/corelib/io/qfilesystemwatcher_fsevents.mm b/src/corelib/io/qfilesystemwatcher_fsevents.mm
index be9eef889a..e88b4e4678 100644
--- a/src/corelib/io/qfilesystemwatcher_fsevents.mm
+++ b/src/corelib/io/qfilesystemwatcher_fsevents.mm
@@ -87,7 +87,7 @@ bool QFseventsFileSystemWatcherEngine::checkDir(DirsByName::iterator &it)
if (res == -1) {
needsRestart |= derefPath(info.watchedPath);
emit emitDirectoryChanged(info.origPath, true);
- it = watchedDirectories.erase(it);
+ it = watchingState.watchedDirectories.erase(it);
} else if (st.st_ctimespec != info.ctime || st.st_mode != info.mode) {
info.ctime = st.st_ctimespec;
info.mode = st.st_mode;
@@ -138,7 +138,8 @@ bool QFseventsFileSystemWatcherEngine::rescanDirs(const QString &path)
{
bool needsRestart = false;
- for (DirsByName::iterator it = watchedDirectories.begin(); it != watchedDirectories.end(); ) {
+ for (DirsByName::iterator it = watchingState.watchedDirectories.begin();
+ it != watchingState.watchedDirectories.end(); ) {
if (it.key().startsWith(path))
needsRestart |= checkDir(it);
else
@@ -177,11 +178,12 @@ bool QFseventsFileSystemWatcherEngine::rescanFiles(const QString &path)
{
bool needsRestart = false;
- for (FilesByPath::iterator i = watchedFiles.begin(); i != watchedFiles.end(); ) {
+ for (FilesByPath::iterator i = watchingState.watchedFiles.begin();
+ i != watchingState.watchedFiles.end(); ) {
if (i.key().startsWith(path)) {
needsRestart |= rescanFiles(i.value());
if (i.value().isEmpty()) {
- i = watchedFiles.erase(i);
+ i = watchingState.watchedFiles.erase(i);
continue;
}
}
@@ -232,8 +234,8 @@ void QFseventsFileSystemWatcherEngine::processEvent(ConstFSEventStreamRef stream
if (eFlags & kFSEventStreamEventFlagRootChanged) {
// re-check everything:
- DirsByName::iterator dirIt = watchedDirectories.find(path);
- if (dirIt != watchedDirectories.end())
+ DirsByName::iterator dirIt = watchingState.watchedDirectories.find(path);
+ if (dirIt != watchingState.watchedDirectories.end())
needsRestart |= checkDir(dirIt);
needsRestart |= rescanFiles(path);
continue;
@@ -243,13 +245,13 @@ void QFseventsFileSystemWatcherEngine::processEvent(ConstFSEventStreamRef stream
needsRestart |= rescanDirs(path);
// check watched directories:
- DirsByName::iterator dirIt = watchedDirectories.find(path);
- if (dirIt != watchedDirectories.end())
+ DirsByName::iterator dirIt = watchingState.watchedDirectories.find(path);
+ if (dirIt != watchingState.watchedDirectories.end())
needsRestart |= checkDir(dirIt);
// check watched files:
- FilesByPath::iterator pIt = watchedFiles.find(path);
- if (pIt != watchedFiles.end())
+ FilesByPath::iterator pIt = watchingState.watchedFiles.find(path);
+ if (pIt != watchingState.watchedFiles.end())
needsRestart |= rescanFiles(pIt.value());
}
@@ -282,12 +284,11 @@ void QFseventsFileSystemWatcherEngine::doEmitDirectoryChanged(const QString &pat
emit directoryChanged(path, removed);
}
-void QFseventsFileSystemWatcherEngine::restartStream()
+bool QFseventsFileSystemWatcherEngine::restartStream()
{
- QMacAutoReleasePool pool;
QMutexLocker locker(&lock);
stopStream();
- startStream();
+ return startStream();
}
QFseventsFileSystemWatcherEngine *QFseventsFileSystemWatcherEngine::create(QObject *parent)
@@ -317,6 +318,7 @@ QFseventsFileSystemWatcherEngine::~QFseventsFileSystemWatcherEngine()
{
QMacAutoReleasePool pool;
+ // Stop the stream in case we have to wait for the lock below to be acquired.
if (stream)
FSEventStreamStop(stream);
@@ -340,12 +342,14 @@ QStringList QFseventsFileSystemWatcherEngine::addPaths(const QStringList &paths,
QMutexLocker locker(&lock);
+ bool wasRunning = stream != Q_NULLPTR;
bool needsRestart = false;
+ WatchingState oldState = watchingState;
QStringList p = paths;
QMutableListIterator<QString> it(p);
while (it.hasNext()) {
- QString origPath = it.next();
+ QString origPath = it.next().normalized(QString::NormalizationForm_C);
QString realPath = origPath;
if (realPath.endsWith(QDir::separator()))
realPath = realPath.mid(0, realPath.size() - 1);
@@ -362,7 +366,7 @@ QStringList QFseventsFileSystemWatcherEngine::addPaths(const QStringList &paths,
const bool isDir = S_ISDIR(st.st_mode);
if (isDir) {
- if (watchedDirectories.contains(realPath))
+ if (watchingState.watchedDirectories.contains(realPath))
continue;
directories->append(origPath);
watchedPath = realPath;
@@ -377,17 +381,18 @@ QStringList QFseventsFileSystemWatcherEngine::addPaths(const QStringList &paths,
parentPath = watchedPath;
}
- for (PathRefCounts::const_iterator i = watchedPaths.begin(), ei = watchedPaths.end(); i != ei; ++i) {
+ for (PathRefCounts::const_iterator i = watchingState.watchedPaths.begin(),
+ ei = watchingState.watchedPaths.end(); i != ei; ++i) {
if (watchedPath.startsWith(i.key())) {
watchedPath = i.key();
break;
}
}
- PathRefCounts::iterator it = watchedPaths.find(watchedPath);
- if (it == watchedPaths.end()) {
+ PathRefCounts::iterator it = watchingState.watchedPaths.find(watchedPath);
+ if (it == watchingState.watchedPaths.end()) {
needsRestart = true;
- watchedPaths.insert(watchedPath, 1);
+ watchingState.watchedPaths.insert(watchedPath, 1);
DEBUG("Adding '%s' to watchedPaths", qPrintable(watchedPath));
} else {
++it.value();
@@ -398,18 +403,25 @@ QStringList QFseventsFileSystemWatcherEngine::addPaths(const QStringList &paths,
DirInfo dirInfo;
dirInfo.dirInfo = info;
dirInfo.entries = scanForDirEntries(realPath);
- watchedDirectories.insert(realPath, dirInfo);
+ watchingState.watchedDirectories.insert(realPath, dirInfo);
DEBUG("-- Also adding '%s' to watchedDirectories", qPrintable(realPath));
} else {
- watchedFiles[parentPath].insert(realPath, info);
+ watchingState.watchedFiles[parentPath].insert(realPath, info);
DEBUG("-- Also adding '%s' to watchedFiles", qPrintable(realPath));
}
}
if (needsRestart) {
stopStream();
- if (!startStream())
+ if (!startStream()) {
+ // ok, something went wrong, let's try to restore the previous state
+ watchingState = qMove(oldState);
+ // and because we don't know which path caused the issue (if any), fail on all of them
p = paths;
+
+ if (wasRunning)
+ startStream();
+ }
}
return p;
@@ -425,6 +437,7 @@ QStringList QFseventsFileSystemWatcherEngine::removePaths(const QStringList &pat
bool needsRestart = false;
+ WatchingState oldState = watchingState;
QStringList p = paths;
QMutableListIterator<QString> it(p);
while (it.hasNext()) {
@@ -437,10 +450,10 @@ QStringList QFseventsFileSystemWatcherEngine::removePaths(const QStringList &pat
realPath = fi.canonicalFilePath();
if (fi.isDir()) {
- DirsByName::iterator dirIt = watchedDirectories.find(realPath);
- if (dirIt != watchedDirectories.end()) {
+ DirsByName::iterator dirIt = watchingState.watchedDirectories.find(realPath);
+ if (dirIt != watchingState.watchedDirectories.end()) {
needsRestart |= derefPath(dirIt->dirInfo.watchedPath);
- watchedDirectories.erase(dirIt);
+ watchingState.watchedDirectories.erase(dirIt);
directories->removeAll(origPath);
it.remove();
DEBUG("Removed directory '%s'", qPrintable(realPath));
@@ -448,15 +461,15 @@ QStringList QFseventsFileSystemWatcherEngine::removePaths(const QStringList &pat
} else {
QFileInfo fi(realPath);
QString parentPath = fi.path();
- FilesByPath::iterator pIt = watchedFiles.find(parentPath);
- if (pIt != watchedFiles.end()) {
+ FilesByPath::iterator pIt = watchingState.watchedFiles.find(parentPath);
+ if (pIt != watchingState.watchedFiles.end()) {
InfoByName &filesInDir = pIt.value();
InfoByName::iterator fIt = filesInDir.find(realPath);
if (fIt != filesInDir.end()) {
needsRestart |= derefPath(fIt->watchedPath);
filesInDir.erase(fIt);
if (filesInDir.isEmpty())
- watchedFiles.erase(pIt);
+ watchingState.watchedFiles.erase(pIt);
files->removeAll(origPath);
it.remove();
DEBUG("Removed file '%s'", qPrintable(realPath));
@@ -467,26 +480,33 @@ QStringList QFseventsFileSystemWatcherEngine::removePaths(const QStringList &pat
locker.unlock();
- if (needsRestart)
- restartStream();
+ if (needsRestart) {
+ if (!restartStream()) {
+ watchingState = qMove(oldState);
+ startStream();
+ }
+ }
return p;
}
+// Returns false if FSEventStream* calls failed for some mysterious reason, true if things got a
+// thumbs-up.
bool QFseventsFileSystemWatcherEngine::startStream()
{
Q_ASSERT(stream == 0);
- QMacAutoReleasePool pool;
- if (stream) // This shouldn't happen, but let's be nice and handle it.
+ if (stream) // Ok, this really shouldn't happen, esp. not after the assert. But let's be nice in release mode and still handle it.
stopStream();
- if (watchedPaths.isEmpty())
- return false;
+ QMacAutoReleasePool pool;
- DEBUG() << "Starting stream with paths" << watchedPaths.keys();
+ if (watchingState.watchedPaths.isEmpty())
+ return true; // we succeeded in doing nothing
- NSMutableArray *pathsToWatch = [NSMutableArray arrayWithCapacity:watchedPaths.size()];
- for (PathRefCounts::const_iterator i = watchedPaths.begin(), ei = watchedPaths.end(); i != ei; ++i)
+ DEBUG() << "Starting stream with paths" << watchingState.watchedPaths.keys();
+
+ NSMutableArray *pathsToWatch = [NSMutableArray arrayWithCapacity:watchingState.watchedPaths.size()];
+ for (PathRefCounts::const_iterator i = watchingState.watchedPaths.begin(), ei = watchingState.watchedPaths.end(); i != ei; ++i)
[pathsToWatch addObject:i.key().toNSString()];
struct FSEventStreamContext callBackInfo = {
@@ -510,7 +530,7 @@ bool QFseventsFileSystemWatcherEngine::startStream()
latency,
FSEventStreamCreateFlags(0));
- if (!stream) {
+ if (!stream) { // nope, no way to know what went wrong, so just fail
DEBUG() << "Failed to create stream!";
return false;
}
@@ -520,7 +540,7 @@ bool QFseventsFileSystemWatcherEngine::startStream()
if (FSEventStreamStart(stream)) {
DEBUG() << "Stream started successfully with sinceWhen =" << lastReceivedEvent;
return true;
- } else {
+ } else { // again, no way to know what went wrong, so just clean up and fail
DEBUG() << "Stream failed to start!";
FSEventStreamInvalidate(stream);
FSEventStreamRelease(stream);
@@ -531,6 +551,7 @@ bool QFseventsFileSystemWatcherEngine::startStream()
void QFseventsFileSystemWatcherEngine::stopStream(bool isStopped)
{
+ QMacAutoReleasePool pool;
if (stream) {
if (!isStopped)
FSEventStreamStop(stream);
@@ -560,9 +581,9 @@ QFseventsFileSystemWatcherEngine::InfoByName QFseventsFileSystemWatcherEngine::s
bool QFseventsFileSystemWatcherEngine::derefPath(const QString &watchedPath)
{
- PathRefCounts::iterator it = watchedPaths.find(watchedPath);
- if (it != watchedPaths.end() && --it.value() < 1) {
- watchedPaths.erase(it);
+ PathRefCounts::iterator it = watchingState.watchedPaths.find(watchedPath);
+ if (it != watchingState.watchedPaths.end() && --it.value() < 1) {
+ watchingState.watchedPaths.erase(it);
DEBUG("Removing '%s' from watchedPaths.", qPrintable(watchedPath));
return true;
}
diff --git a/src/corelib/io/qfilesystemwatcher_fsevents_p.h b/src/corelib/io/qfilesystemwatcher_fsevents_p.h
index 5281d64d63..c23fc63735 100644
--- a/src/corelib/io/qfilesystemwatcher_fsevents_p.h
+++ b/src/corelib/io/qfilesystemwatcher_fsevents_p.h
@@ -87,7 +87,7 @@ Q_SIGNALS:
private slots:
void doEmitFileChanged(const QString &path, bool removed);
void doEmitDirectoryChanged(const QString &path, bool removed);
- void restartStream();
+ bool restartStream();
private:
struct Info {
@@ -118,6 +118,19 @@ private:
typedef QHash<QString, DirInfo> DirsByName;
typedef QHash<QString, qint64> PathRefCounts;
+ struct WatchingState {
+ // These fields go hand-in-hand. FSEvents watches paths, and there is no use in watching
+ // the same path multiple times. So, the "refcount" on a path is the number of watched
+ // files that have the same path, plus the number of directories that have the same path.
+ //
+ // If the stream fails to start after adding files/directories, the watcher will try to
+ // keep watching files/directories that it was already watching. It does that by restoring
+ // the previous WatchingState and restarting the stream.
+ FilesByPath watchedFiles;
+ DirsByName watchedDirectories;
+ PathRefCounts watchedPaths;
+ };
+
QFseventsFileSystemWatcherEngine(QObject *parent);
bool startStream();
void stopStream(bool isStopped = false);
@@ -131,10 +144,8 @@ private:
QMutex lock;
dispatch_queue_t queue;
FSEventStreamRef stream;
- FilesByPath watchedFiles;
- DirsByName watchedDirectories;
- PathRefCounts watchedPaths;
FSEventStreamEventId lastReceivedEvent;
+ WatchingState watchingState;
};
QT_END_NAMESPACE
diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp
index 0b0446a37e..917cd34d2d 100644
--- a/src/corelib/io/qtemporaryfile.cpp
+++ b/src/corelib/io/qtemporaryfile.cpp
@@ -672,7 +672,7 @@ QString QTemporaryFile::fileTemplate() const
/*!
Sets the static portion of the file name to \a name. If the file
- template ends in XXXXXX that will automatically be replaced with
+ template contains XXXXXX that will automatically be replaced with
the unique part of the filename, otherwise a filename will be
determined automatically based on the static portion specified.
diff --git a/src/corelib/io/qtemporaryfile_p.h b/src/corelib/io/qtemporaryfile_p.h
index 58cc318ffd..40974bd6cd 100644
--- a/src/corelib/io/qtemporaryfile_p.h
+++ b/src/corelib/io/qtemporaryfile_p.h
@@ -69,7 +69,7 @@ protected:
QTemporaryFilePrivate();
~QTemporaryFilePrivate();
- QAbstractFileEngine *engine() const;
+ QAbstractFileEngine *engine() const override;
void resetFileEngine() const;
bool autoRemove;
@@ -98,14 +98,14 @@ public:
~QTemporaryFileEngine();
bool isReallyOpen() const;
- void setFileName(const QString &file);
+ void setFileName(const QString &file) override;
void setFileTemplate(const QString &fileTemplate);
- bool open(QIODevice::OpenMode flags);
- bool remove();
- bool rename(const QString &newName);
- bool renameOverwrite(const QString &newName);
- bool close();
+ bool open(QIODevice::OpenMode flags) override;
+ bool remove() override;
+ bool rename(const QString &newName) override;
+ bool renameOverwrite(const QString &newName) override;
+ bool close() override;
quint32 fileMode;
bool filePathIsTemplate;
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index b79ec78aa9..eed7c4e1f8 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -155,7 +155,7 @@
dealing with URLs and strings:
\list
- \li When creating an QString to contain a URL from a QByteArray or a
+ \li When creating a QString to contain a URL from a QByteArray or a
char*, always use QString::fromUtf8().
\endlist
*/
@@ -3708,6 +3708,9 @@ bool QUrl::matches(const QUrl &url, FormattingOptions options) const
if ((d->sectionIsPresent & mask) != (url.d->sectionIsPresent & mask))
return false;
+ if (options & QUrl::RemovePath)
+ return true;
+
// Compare paths, after applying path-related options
QString path1;
d->appendPath(path1, options, QUrlPrivate::Path);
diff --git a/src/corelib/io/qurltlds_p.h b/src/corelib/io/qurltlds_p.h
index 69d0701faa..c823104b84 100644
--- a/src/corelib/io/qurltlds_p.h
+++ b/src/corelib/io/qurltlds_p.h
@@ -58,11678 +58,13225 @@ QT_BEGIN_NAMESPACE
// this file should be updated before each release ->
// for instructions see the program at
// util/corelib/qurl-generateTLDs
-static const quint16 tldCount = 7150;
+
+static const quint16 tldCount = 8101;
static const quint32 tldIndices[] = {
0,
-40,
-40,
-49,
-49,
-49,
-71,
-95,
-95,
-110,
-123,
-123,
-151,
-189,
-189,
-189,
-189,
-189,
-189,
-189,
-189,
-189,
-202,
-202,
-202,
-208,
-219,
-219,
-219,
-219,
-219,
-238,
-249,
-278,
-294,
-301,
-312,
-312,
-317,
-317,
-317,
-323,
-330,
-406,
-406,
-467,
-467,
-500,
-500,
-500,
-512,
-533,
-533,
-533,
-533,
-533,
-542,
-574,
-580,
-620,
-620,
-633,
-645,
-645,
-659,
-659,
-659,
-685,
-685,
-703,
+15,
+43,
+55,
+60,
+70,
+80,
+101,
+101,
+154,
+169,
+169,
+169,
+184,
+184,
+195,
+217,
+217,
+235,
+255,
+276,
+296,
+296,
+314,
+345,
+350,
+350,
+358,
+384,
+400,
+424,
+424,
+431,
+452,
+472,
+508,
+508,
+508,
+508,
+525,
+558,
+581,
+581,
+594,
+608,
+608,
+628,
+628,
+652,
+680,
+680,
703,
-721,
-721,
-721,
-737,
-744,
-744,
-756,
+722,
+722,
+760,
768,
-774,
-774,
-774,
-784,
-784,
-802,
-841,
-882,
-882,
-882,
-882,
-905,
-924,
-935,
-950,
-960,
-960,
-972,
-983,
-983,
-983,
-990,
-997,
-1017,
-1037,
-1045,
-1045,
-1045,
-1063,
-1069,
-1085,
-1085,
-1085,
-1085,
-1085,
-1085,
-1085,
-1136,
-1145,
-1183,
-1183,
-1225,
-1225,
-1241,
-1241,
-1259,
-1282,
-1305,
-1305,
-1358,
-1358,
-1370,
-1370,
-1383,
-1383,
-1430,
-1430,
-1430,
-1457,
-1466,
-1472,
-1472,
-1472,
-1472,
-1486,
-1518,
-1564,
-1593,
-1614,
-1661,
-1675,
-1675,
-1691,
-1719,
-1730,
-1750,
-1750,
-1755,
-1759,
-1773,
-1797,
-1823,
-1841,
-1848,
+768,
+788,
+788,
+814,
+847,
+847,
+865,
+895,
+895,
+930,
+930,
+936,
+964,
+991,
+1025,
+1042,
+1061,
+1061,
+1082,
+1098,
+1098,
+1098,
+1111,
+1135,
+1141,
+1141,
+1141,
+1160,
+1192,
+1192,
+1192,
+1192,
+1192,
+1192,
+1207,
+1207,
+1214,
+1219,
+1219,
+1219,
+1242,
+1255,
+1255,
+1255,
+1272,
+1291,
+1291,
+1291,
+1309,
+1334,
+1372,
+1376,
+1376,
+1385,
+1419,
+1419,
+1419,
+1427,
+1442,
+1442,
+1450,
+1450,
+1469,
+1508,
+1533,
+1533,
+1574,
+1582,
+1582,
+1592,
+1625,
+1643,
+1643,
+1653,
+1653,
+1664,
+1664,
+1687,
+1687,
+1731,
+1742,
+1760,
+1760,
+1760,
+1775,
+1788,
+1815,
+1815,
+1815,
+1815,
+1827,
+1842,
+1850,
+1850,
+1874,
+1874,
+1887,
1887,
-1894,
-1911,
-1918,
-1923,
-1929,
-1966,
-1966,
-1973,
-1973,
-1973,
-1990,
-2041,
-2059,
-2075,
-2093,
-2093,
-2093,
-2127,
-2136,
-2152,
-2159,
-2178,
-2201,
+1887,
+1917,
+1931,
+1962,
+1962,
+1962,
+2002,
+2017,
+2073,
+2073,
+2103,
+2103,
+2120,
+2160,
+2168,
+2168,
+2176,
+2193,
+2199,
+2199,
+2205,
2212,
-2219,
-2219,
-2219,
-2233,
-2240,
-2247,
-2247,
-2273,
-2298,
+2212,
+2226,
+2226,
+2226,
+2226,
+2261,
+2282,
2298,
-2305,
-2330,
-2377,
-2410,
-2461,
-2468,
-2511,
-2511,
-2524,
-2524,
-2530,
-2547,
-2560,
-2576,
-2583,
-2599,
-2599,
-2599,
-2599,
-2599,
-2628,
-2671,
-2692,
-2697,
-2726,
-2726,
-2756,
-2756,
-2775,
-2775,
-2787,
-2814,
-2814,
-2839,
-2853,
-2869,
-2901,
-2949,
-2949,
-2972,
-2972,
-2979,
-2997,
-3003,
-3014,
-3014,
-3014,
-3014,
-3014,
-3014,
-3043,
-3043,
-3070,
-3070,
+2316,
+2316,
+2316,
+2316,
+2316,
+2373,
+2373,
+2390,
+2390,
+2397,
+2412,
+2428,
+2435,
+2435,
+2443,
+2443,
+2451,
+2458,
+2504,
+2504,
+2510,
+2510,
+2510,
+2517,
+2544,
+2555,
+2573,
+2612,
+2627,
+2627,
+2650,
+2657,
+2664,
+2674,
+2691,
+2698,
+2706,
+2713,
+2713,
+2729,
+2743,
+2750,
+2781,
+2781,
+2796,
+2796,
+2809,
+2816,
+2836,
+2866,
+2887,
+2894,
+2943,
+2950,
+2950,
+2950,
+2950,
+2970,
+2970,
+3002,
+3002,
+3015,
+3022,
+3032,
+3059,
+3069,
+3084,
3091,
3091,
-3097,
-3108,
-3108,
-3108,
+3098,
+3098,
+3107,
3125,
-3182,
-3232,
-3283,
-3283,
-3292,
-3312,
-3319,
-3359,
-3379,
-3406,
-3433,
-3441,
-3448,
-3459,
-3466,
-3466,
-3466,
-3466,
-3466,
-3473,
-3491,
-3498,
-3524,
-3524,
-3568,
-3605,
-3605,
-3618,
-3618,
-3618,
-3632,
-3632,
-3632,
-3632,
-3645,
-3645,
-3652,
-3662,
-3662,
-3701,
-3708,
+3132,
+3140,
+3172,
+3189,
+3205,
+3218,
+3224,
+3231,
+3255,
+3261,
+3261,
+3261,
+3261,
+3279,
+3285,
+3296,
+3310,
+3317,
+3317,
+3333,
+3352,
+3362,
+3362,
+3362,
+3362,
+3404,
+3404,
+3404,
+3404,
+3404,
+3404,
+3415,
+3428,
+3428,
+3483,
+3503,
+3503,
+3530,
+3555,
+3562,
+3562,
+3578,
+3593,
+3600,
+3622,
+3629,
+3644,
+3663,
+3663,
+3685,
+3685,
+3685,
+3685,
3713,
-3729,
-3742,
-3767,
-3799,
-3799,
-3806,
-3806,
-3824,
-3824,
-3839,
-3839,
-3854,
-3876,
-3883,
-3883,
-3890,
-3896,
-3939,
-3939,
-3953,
-3953,
-3953,
-3953,
-3988,
+3730,
+3757,
+3775,
+3775,
+3775,
+3800,
+3815,
+3815,
+3815,
+3815,
+3815,
+3900,
+3900,
+3950,
+3950,
+3959,
+3959,
+3959,
+3974,
4005,
-4019,
-4039,
-4039,
-4058,
-4069,
-4094,
-4101,
-4139,
-4146,
-4174,
-4206,
-4221,
-4221,
-4237,
-4237,
-4254,
-4270,
-4277,
-4301,
-4301,
-4301,
-4301,
-4327,
-4327,
-4334,
-4341,
-4361,
-4361,
-4368,
-4391,
-4403,
-4403,
-4416,
-4416,
-4423,
-4448,
-4448,
-4448,
-4500,
-4534,
-4543,
-4543,
-4562,
-4569,
-4576,
-4613,
-4632,
-4639,
-4646,
-4670,
-4670,
-4670,
-4677,
-4695,
-4695,
-4695,
-4702,
-4720,
-4734,
-4734,
-4734,
-4734,
-4741,
-4741,
-4741,
-4748,
-4748,
-4762,
-4785,
-4792,
-4823,
-4823,
-4861,
-4886,
-4886,
-4886,
-4922,
-4922,
-4932,
-4939,
-4939,
-4939,
-4946,
-4953,
-4953,
-4977,
-4977,
-4977,
-4984,
-5009,
-5028,
-5080,
-5080,
-5080,
-5080,
-5110,
-5117,
-5132,
-5143,
-5167,
-5184,
-5184,
-5184,
-5209,
-5209,
-5230,
-5230,
-5238,
-5260,
-5289,
-5289,
-5298,
-5315,
-5315,
-5315,
+4070,
+4141,
+4141,
+4160,
+4177,
+4177,
+4207,
+4235,
+4263,
+4274,
+4280,
+4280,
+4290,
+4321,
+4338,
+4381,
+4396,
+4402,
+4446,
+4461,
+4461,
+4461,
+4485,
+4496,
+4512,
+4528,
+4580,
+4580,
+4624,
+4650,
+4650,
+4650,
+4672,
+4714,
+4714,
+4721,
+4728,
+4751,
+4769,
+4769,
+4769,
+4783,
+4783,
+4783,
+4807,
+4814,
+4821,
+4821,
+4839,
+4892,
+4908,
+4908,
+4908,
+4915,
+4952,
+4952,
+4959,
+4966,
+4973,
+4973,
+4980,
+4999,
+5032,
+5039,
+5057,
+5095,
+5112,
+5127,
+5127,
+5144,
+5151,
+5172,
+5172,
+5186,
+5200,
+5215,
+5236,
+5263,
+5294,
+5294,
+5294,
+5310,
+5310,
+5320,
+5320,
+5350,
5350,
-5356,
-5356,
-5356,
-5356,
5370,
5392,
-5413,
-5430,
-5437,
-5471,
-5502,
-5514,
-5514,
-5534,
-5552,
-5559,
-5559,
-5616,
-5651,
-5657,
-5657,
-5657,
-5674,
-5681,
-5681,
-5681,
-5702,
-5709,
-5745,
-5764,
-5776,
-5776,
-5812,
-5827,
-5849,
-5875,
-5892,
-5913,
-5913,
-5920,
-5935,
-5980,
-5987,
-6024,
-6024,
-6041,
-6058,
+5392,
+5419,
+5419,
+5419,
+5426,
+5426,
+5426,
+5433,
+5449,
+5449,
+5455,
+5468,
+5481,
+5487,
+5487,
+5521,
+5581,
+5581,
+5604,
+5604,
+5617,
+5624,
+5631,
+5631,
+5666,
+5666,
+5692,
+5705,
+5719,
+5726,
+5746,
+5761,
+5777,
+5789,
+5795,
+5802,
+5815,
+5833,
+5839,
+5846,
+5846,
+5846,
+5868,
+5868,
+5887,
+5899,
+5910,
+5927,
+5937,
+5937,
+5974,
+5996,
+6019,
+6019,
+6027,
+6027,
+6033,
+6066,
6066,
-6103,
-6103,
-6103,
-6127,
-6127,
-6137,
-6157,
-6223,
-6248,
-6297,
-6297,
-6297,
-6325,
-6332,
-6355,
-6355,
-6382,
-6408,
-6423,
-6423,
-6423,
-6440,
-6452,
-6462,
-6482,
-6482,
-6482,
-6500,
-6500,
-6518,
-6518,
-6518,
-6526,
-6535,
-6535,
-6542,
+6088,
+6095,
+6109,
+6123,
+6130,
+6130,
+6168,
+6176,
+6176,
+6176,
+6176,
+6183,
+6183,
+6190,
+6207,
+6235,
+6254,
+6254,
+6266,
+6293,
+6293,
+6308,
+6329,
+6341,
+6360,
+6367,
+6407,
+6413,
+6431,
+6460,
+6467,
+6467,
+6488,
+6510,
+6510,
+6538,
6560,
-6570,
-6585,
-6604,
-6604,
-6604,
-6604,
-6617,
-6626,
-6626,
-6626,
-6654,
-6654,
-6680,
-6695,
-6695,
-6695,
-6706,
-6706,
-6736,
-6736,
-6766,
-6766,
-6766,
-6766,
-6766,
-6775,
-6775,
-6775,
-6786,
-6825,
-6825,
-6834,
-6854,
-6854,
-6854,
-6897,
-6915,
-6915,
-6960,
-7002,
+6575,
+6589,
+6589,
+6589,
+6589,
+6606,
+6606,
+6614,
+6629,
+6629,
+6635,
+6647,
+6667,
+6696,
+6696,
+6703,
+6712,
+6712,
+6752,
+6759,
+6759,
+6791,
+6815,
+6815,
+6822,
+6859,
+6859,
+6875,
+6900,
+6906,
+6913,
+6942,
+6981,
+6996,
+6996,
+7015,
+7015,
7015,
-7077,
-7155,
-7207,
-7222,
-7250,
-7284,
-7284,
-7297,
-7334,
-7357,
-7357,
-7373,
-7373,
-7373,
-7398,
-7411,
-7424,
-7458,
-7470,
-7508,
-7508,
-7531,
-7538,
-7554,
+7022,
+7044,
+7044,
+7062,
+7062,
+7062,
+7089,
+7102,
+7102,
+7150,
+7159,
+7186,
+7194,
+7204,
+7204,
+7226,
+7256,
+7264,
+7277,
+7302,
+7316,
+7316,
+7351,
+7387,
+7410,
+7410,
+7410,
+7421,
+7463,
+7463,
+7463,
+7463,
+7463,
+7499,
+7521,
+7521,
+7550,
7566,
-7580,
-7612,
-7612,
-7612,
-7619,
-7629,
-7636,
-7648,
-7682,
-7682,
-7701,
-7712,
-7712,
-7712,
-7719,
-7719,
-7746,
-7746,
-7746,
-7770,
-7770,
-7770,
-7770,
-7770,
-7795,
-7847,
-7847,
-7847,
-7868,
-7868,
-7877,
-7893,
-7910,
-7942,
-7976,
-7976,
-8015,
-8020,
-8031,
-8031,
-8040,
-8040,
-8059,
-8071,
-8092,
-8123,
-8136,
-8136,
-8136,
-8141,
-8141,
-8141,
-8148,
-8148,
-8193,
-8193,
-8210,
-8230,
-8247,
-8247,
-8264,
-8296,
-8317,
-8332,
-8332,
-8332,
-8364,
-8392,
-8403,
-8421,
-8421,
-8441,
-8441,
-8441,
-8441,
-8441,
-8460,
-8474,
-8487,
-8508,
-8508,
-8508,
-8526,
-8540,
-8540,
-8540,
-8540,
-8572,
-8596,
-8641,
-8641,
-8641,
-8686,
-8686,
-8686,
-8695,
-8695,
-8714,
-8735,
-8744,
-8775,
-8780,
+7600,
+7627,
+7627,
+7627,
+7641,
+7652,
+7665,
+7677,
+7677,
+7677,
+7693,
+7709,
+7709,
+7725,
+7725,
+7757,
+7757,
+7811,
+7817,
+7874,
+7886,
+7905,
+7905,
+7905,
+7905,
+7929,
+7929,
+7958,
+7972,
+7988,
+7988,
+7988,
+8007,
+8038,
+8078,
+8078,
+8084,
+8084,
+8111,
+8111,
+8111,
+8118,
+8118,
+8118,
+8118,
+8118,
+8118,
+8128,
+8147,
+8159,
+8166,
+8166,
+8191,
+8191,
+8229,
+8229,
+8229,
+8229,
+8229,
+8251,
+8258,
+8258,
+8258,
+8258,
+8258,
+8263,
+8263,
+8272,
+8290,
+8301,
+8301,
+8333,
+8333,
+8350,
+8357,
+8408,
+8408,
+8408,
+8425,
+8469,
+8469,
+8504,
+8545,
+8552,
+8552,
+8552,
+8552,
+8552,
+8552,
+8552,
+8552,
+8552,
+8552,
+8552,
+8552,
+8552,
+8552,
+8552,
+8552,
+8575,
+8608,
+8608,
+8608,
+8634,
+8652,
+8652,
+8673,
+8673,
+8673,
+8673,
+8688,
+8688,
+8717,
+8717,
+8762,
+8762,
+8762,
+8779,
8802,
-8802,
-8802,
-8802,
-8835,
-8842,
-8894,
-8894,
-8908,
-8908,
-8908,
-8942,
-8967,
-8967,
-9008,
-9008,
-9023,
-9035,
-9035,
-9035,
-9052,
-9079,
-9087,
-9087,
-9127,
-9139,
-9139,
-9173,
-9173,
-9199,
-9208,
-9235,
-9235,
-9249,
-9249,
-9259,
-9259,
-9267,
-9285,
-9300,
-9300,
-9322,
-9337,
-9342,
-9342,
-9348,
-9407,
-9418,
-9434,
-9434,
-9455,
-9455,
-9455,
-9469,
-9489,
-9489,
-9527,
-9527,
-9527,
-9568,
-9568,
-9568,
-9578,
-9603,
-9610,
-9610,
-9610,
-9621,
-9621,
-9625,
-9641,
-9649,
-9649,
-9649,
-9667,
-9667,
-9667,
-9680,
-9709,
-9709,
-9739,
-9739,
-9766,
-9775,
-9783,
-9790,
-9810,
-9810,
-9828,
-9828,
-9853,
-9867,
-9867,
-9867,
-9867,
-9884,
-9884,
-9900,
-9900,
-9936,
-9954,
-9954,
-9977,
-9987,
-9987,
-9994,
-9994,
-10009,
-10009,
-10009,
-10029,
-10047,
-10047,
-10062,
-10076,
-10076,
-10100,
-10106,
-10106,
-10113,
-10129,
-10143,
-10166,
-10166,
-10198,
-10208,
-10208,
-10229,
-10251,
-10251,
-10275,
-10275,
-10281,
-10314,
-10333,
-10333,
-10333,
-10357,
-10357,
-10378,
-10386,
-10398,
-10420,
-10443,
-10461,
-10480,
-10488,
-10498,
-10498,
-10498,
-10498,
-10528,
-10528,
-10534,
-10534,
-10534,
-10534,
-10534,
-10534,
-10534,
-10558,
-10579,
-10595,
-10595,
-10595,
-10595,
-10611,
-10611,
+8812,
+8844,
+8844,
+8850,
+8862,
+8887,
+8893,
+8928,
+8946,
+8978,
+9010,
+9010,
+9010,
+9010,
+9041,
+9047,
+9047,
+9047,
+9054,
+9054,
+9054,
+9054,
+9054,
+9061,
+9061,
+9098,
+9117,
+9129,
+9162,
+9179,
+9179,
+9185,
+9221,
+9221,
+9244,
+9258,
+9288,
+9295,
+9307,
+9307,
+9307,
+9314,
+9356,
+9356,
+9372,
+9372,
+9403,
+9425,
+9430,
+9430,
+9447,
+9447,
+9454,
+9496,
+9528,
+9535,
+9543,
+9570,
+9577,
+9577,
+9619,
+9619,
+9626,
+9640,
+9647,
+9672,
+9687,
+9694,
+9705,
+9770,
+9820,
+9827,
+9843,
+9861,
+9874,
+9886,
+9893,
+9916,
+9931,
+9931,
+9941,
+9968,
+10012,
+10030,
+10045,
+10045,
+10052,
+10068,
+10104,
+10104,
+10111,
+10111,
+10126,
+10136,
+10144,
+10144,
+10151,
+10157,
+10164,
+10176,
+10197,
+10197,
+10197,
+10222,
+10222,
+10222,
+10245,
+10276,
+10292,
+10298,
+10318,
+10318,
+10346,
+10353,
+10353,
+10360,
+10360,
+10371,
+10395,
+10395,
+10405,
+10413,
+10413,
+10413,
+10440,
+10440,
+10448,
+10481,
+10481,
+10481,
+10495,
+10495,
+10495,
+10509,
+10516,
+10525,
+10543,
+10550,
+10550,
+10594,
+10594,
10634,
-10659,
-10659,
-10659,
-10659,
-10659,
-10659,
-10698,
-10716,
-10741,
-10749,
-10768,
-10801,
-10813,
-10842,
-10842,
-10860,
-10860,
-10879,
-10917,
-10939,
-10958,
-10964,
-10964,
-10986,
-10994,
-11000,
-11005,
-11005,
-11005,
-11021,
-11031,
-11031,
-11031,
-11050,
-11077,
-11077,
-11091,
-11091,
-11110,
-11110,
-11120,
-11139,
-11187,
-11187,
-11187,
-11187,
+10634,
+10641,
+10641,
+10648,
+10648,
+10648,
+10660,
+10687,
+10718,
+10718,
+10746,
+10785,
+10794,
+10812,
+10820,
+10832,
+10849,
+10863,
+10863,
+10870,
+10887,
+10897,
+10897,
+10897,
+10944,
+10970,
+10970,
+10970,
+11003,
+11019,
+11074,
+11074,
+11081,
+11081,
+11111,
+11131,
+11150,
+11164,
11187,
-11219,
-11249,
-11260,
-11283,
-11299,
-11330,
-11330,
-11330,
-11330,
-11340,
-11340,
-11340,
-11340,
-11346,
-11391,
-11391,
-11397,
-11397,
-11397,
-11408,
-11408,
-11431,
-11452,
-11452,
+11207,
+11228,
+11243,
+11243,
+11243,
+11243,
+11258,
+11273,
+11279,
+11310,
+11310,
+11310,
+11322,
+11361,
+11361,
+11389,
+11417,
+11430,
+11436,
+11436,
+11436,
+11453,
+11461,
+11475,
+11482,
11489,
-11505,
-11526,
-11526,
-11526,
-11526,
-11543,
-11563,
-11580,
-11599,
-11599,
-11599,
-11599,
-11636,
-11636,
-11636,
+11528,
+11545,
+11575,
+11616,
+11632,
+11668,
+11668,
11675,
-11675,
-11675,
-11675,
-11695,
-11695,
-11695,
-11703,
-11712,
-11725,
-11734,
-11743,
-11771,
-11812,
-11838,
+11689,
+11696,
+11714,
+11714,
+11714,
+11714,
+11714,
+11714,
+11721,
+11721,
+11739,
+11739,
+11758,
+11799,
+11817,
+11824,
+11824,
+11831,
11848,
11870,
+11870,
11888,
-11903,
-11903,
-11910,
-11938,
-11938,
-11938,
-11956,
-11956,
-11986,
-11986,
-11994,
-12007,
-12017,
-12017,
-12053,
-12066,
-12066,
-12066,
-12066,
-12066,
-12066,
-12076,
-12088,
-12099,
-12099,
-12117,
-12117,
-12127,
-12146,
-12146,
-12146,
-12165,
-12165,
-12165,
+11888,
+11895,
+11902,
+11927,
+11934,
+11941,
+11971,
+12005,
+12012,
+12069,
+12087,
+12087,
+12106,
+12126,
+12126,
+12140,
+12140,
+12140,
+12147,
+12153,
12165,
-12172,
-12176,
-12176,
-12176,
-12191,
-12191,
-12201,
-12217,
-12217,
-12241,
-12241,
-12241,
-12255,
-12255,
-12269,
-12269,
-12310,
-12310,
-12333,
-12351,
-12366,
-12366,
-12377,
-12412,
-12435,
-12453,
-12453,
-12453,
-12457,
-12489,
-12489,
-12489,
-12501,
-12523,
-12523,
-12547,
-12569,
-12628,
-12628,
-12628,
-12628,
-12628,
-12638,
-12687,
-12705,
-12705,
-12715,
-12732,
-12732,
-12750,
-12750,
-12750,
-12750,
-12750,
-12750,
-12763,
-12763,
-12772,
-12772,
-12827,
-12863,
-12870,
-12880,
-12886,
-12902,
-12916,
-12944,
-12944,
+12186,
+12194,
+12199,
+12207,
+12207,
+12207,
+12213,
+12229,
+12236,
+12243,
+12243,
+12243,
+12250,
+12259,
+12270,
+12270,
+12277,
+12284,
+12284,
+12291,
+12300,
+12309,
+12345,
+12373,
+12385,
+12385,
+12404,
+12404,
+12424,
+12431,
+12475,
+12494,
+12494,
+12494,
+12494,
+12515,
+12522,
+12532,
+12540,
+12578,
+12597,
+12636,
+12636,
+12636,
+12636,
+12636,
+12651,
+12651,
+12693,
+12693,
+12711,
+12720,
+12720,
+12720,
+12720,
+12739,
+12766,
+12787,
+12794,
+12794,
+12826,
+12833,
+12862,
+12869,
+12890,
+12890,
+12910,
+12917,
+12934,
+12934,
+12949,
12956,
12956,
-12977,
-12983,
-12993,
-13011,
-13022,
-13059,
-13066,
-13066,
-13113,
-13113,
-13120,
-13120,
-13132,
-13143,
-13154,
-13154,
-13154,
-13160,
-13160,
-13164,
-13164,
-13164,
-13203,
-13222,
-13222,
-13244,
-13250,
-13267,
-13272,
-13301,
-13319,
-13319,
-13319,
-13319,
-13319,
-13338,
-13350,
-13350,
-13350,
-13355,
-13362,
-13362,
-13374,
-13396,
-13408,
-13408,
-13408,
-13433,
-13454,
-13454,
-13454,
-13511,
-13522,
-13541,
-13550,
-13550,
-13563,
-13580,
-13585,
-13585,
-13585,
-13585,
-13585,
-13598,
-13628,
-13634,
-13634,
-13654,
-13679,
-13684,
-13693,
-13723,
-13740,
-13740,
-13747,
-13791,
+12963,
+12989,
+12997,
+13021,
+13021,
+13021,
+13028,
+13028,
+13035,
+13054,
+13070,
+13077,
+13107,
+13119,
+13119,
+13126,
+13140,
+13163,
+13163,
+13216,
+13228,
+13251,
+13275,
+13329,
+13329,
+13386,
+13404,
+13410,
+13410,
+13416,
+13429,
+13445,
+13445,
+13445,
+13473,
+13480,
+13480,
+13487,
+13487,
+13500,
+13555,
+13568,
+13574,
+13607,
+13627,
+13627,
+13644,
+13658,
+13665,
+13685,
+13691,
+13691,
+13691,
+13706,
+13719,
+13726,
+13738,
+13776,
+13795,
+13795,
13805,
-13805,
-13834,
-13868,
-13893,
-13910,
-13920,
+13813,
+13813,
+13813,
+13813,
+13827,
+13827,
+13833,
+13833,
+13840,
+13892,
+13901,
13920,
-13940,
-13940,
-13960,
-13977,
-13977,
-13988,
-13988,
-13999,
-13999,
-13999,
-13999,
-14025,
-14025,
-14025,
-14044,
-14059,
-14059,
-14059,
-14096,
+13933,
+13966,
+13966,
+13966,
+13998,
+14033,
+14046,
+14060,
+14060,
+14075,
+14075,
+14075,
14112,
-14143,
-14156,
-14156,
-14169,
-14173,
-14193,
-14193,
-14193,
-14197,
-14197,
-14197,
-14222,
-14222,
-14231,
-14231,
+14129,
+14129,
+14129,
+14129,
+14129,
+14129,
+14139,
+14167,
+14167,
+14211,
+14220,
+14220,
14231,
14231,
-14251,
-14251,
-14251,
-14256,
-14260,
-14287,
-14287,
-14309,
-14309,
-14309,
-14309,
-14361,
-14361,
-14380,
-14380,
-14396,
-14440,
-14448,
-14448,
-14448,
-14461,
-14486,
-14486,
-14486,
-14500,
-14500,
-14500,
-14500,
-14500,
-14500,
-14525,
-14531,
-14538,
-14556,
-14578,
-14578,
-14601,
-14601,
-14601,
-14601,
-14615,
-14615,
-14615,
-14626,
-14626,
-14637,
-14654,
-14688,
-14688,
-14719,
-14735,
-14744,
-14749,
-14749,
-14749,
-14749,
-14749,
-14786,
-14808,
-14808,
-14822,
-14867,
-14882,
-14887,
-14899,
-14899,
+14248,
+14248,
+14266,
+14288,
+14307,
+14352,
+14397,
+14404,
+14404,
+14423,
+14455,
+14480,
+14480,
+14509,
+14509,
+14535,
+14541,
+14541,
+14541,
+14541,
+14541,
+14554,
+14554,
+14561,
+14600,
+14618,
+14618,
+14618,
+14618,
+14634,
+14649,
+14649,
+14649,
+14662,
+14662,
+14667,
+14686,
+14720,
+14753,
+14774,
+14806,
+14806,
+14826,
+14826,
+14848,
+14848,
+14848,
+14866,
+14879,
+14879,
+14879,
+14879,
+14879,
+14888,
14906,
-14916,
-14958,
-14958,
-14958,
-14968,
-15000,
-15031,
-15051,
-15056,
-15060,
-15079,
-15079,
-15096,
-15116,
-15133,
-15133,
-15133,
-15133,
-15133,
-15145,
-15145,
-15182,
-15209,
-15218,
-15218,
-15239,
-15282,
-15282,
-15282,
-15282,
-15304,
-15318,
-15338,
-15364,
-15383,
-15402,
-15426,
-15480,
-15491,
-15491,
-15491,
-15507,
-15530,
-15543,
-15543,
-15543,
-15571,
-15571,
-15571,
-15578,
-15595,
-15612,
-15621,
-15621,
-15621,
-15634,
-15662,
-15662,
-15666,
+14929,
+14949,
+14949,
+14981,
+14996,
+15019,
+15019,
+15037,
+15070,
+15092,
+15092,
+15092,
+15113,
+15128,
+15128,
+15163,
+15163,
+15187,
+15223,
+15223,
+15223,
+15241,
+15241,
+15241,
+15278,
+15299,
+15309,
+15331,
+15331,
+15331,
+15342,
+15342,
+15342,
+15352,
+15352,
+15368,
+15368,
+15374,
+15386,
+15386,
+15386,
+15386,
+15386,
+15392,
+15421,
+15434,
+15434,
+15434,
+15434,
+15472,
+15489,
+15489,
+15500,
+15500,
+15506,
+15539,
+15560,
+15560,
+15560,
+15560,
+15582,
+15587,
+15602,
+15610,
+15624,
+15650,
+15656,
+15672,
15681,
-15705,
-15705,
-15705,
15711,
15711,
-15716,
-15716,
-15716,
-15728,
-15728,
-15758,
-15782,
-15791,
-15791,
-15801,
-15823,
-15833,
-15851,
-15871,
-15871,
-15889,
-15897,
-15897,
-15914,
-15914,
-15926,
-15947,
-15968,
-15974,
-15974,
-15998,
-16015,
-16028,
-16052,
-16063,
-16063,
-16069,
-16075,
-16087,
-16087,
-16093,
-16131,
-16131,
-16142,
-16142,
-16153,
+15711,
+15711,
+15711,
+15718,
+15730,
+15752,
+15752,
+15759,
+15759,
+15772,
+15778,
+15788,
+15788,
+15798,
+15807,
+15807,
+15829,
+15829,
+15829,
+15843,
+15843,
+15843,
+15888,
+15931,
+15980,
+15993,
+16020,
+16025,
+16056,
+16074,
+16081,
+16146,
+16146,
16173,
-16205,
-16205,
-16205,
-16228,
-16251,
-16251,
-16251,
-16291,
-16291,
-16298,
-16312,
-16327,
-16327,
-16336,
-16346,
-16346,
-16366,
-16391,
-16406,
-16406,
-16406,
-16449,
-16449,
-16449,
-16473,
+16197,
+16210,
+16210,
+16210,
+16225,
+16265,
+16280,
+16290,
+16308,
+16321,
+16321,
+16321,
+16321,
+16332,
+16341,
+16353,
+16389,
+16389,
+16399,
+16427,
+16439,
+16450,
16473,
-16491,
-16501,
-16510,
-16510,
-16510,
-16510,
-16516,
-16516,
-16535,
-16535,
-16552,
-16573,
-16588,
-16588,
-16588,
-16597,
-16635,
-16700,
-16738,
-16743,
-16743,
-16754,
-16765,
-16765,
-16774,
-16783,
-16783,
-16783,
-16783,
-16812,
-16812,
-16827,
-16833,
-16833,
-16874,
-16906,
+16505,
+16505,
+16518,
+16554,
+16554,
+16554,
+16565,
+16577,
+16595,
+16614,
+16622,
+16622,
+16622,
+16654,
+16654,
+16685,
+16697,
+16697,
+16697,
+16697,
+16719,
+16719,
+16752,
+16766,
+16798,
+16798,
+16798,
+16820,
+16828,
+16847,
+16847,
+16854,
+16860,
+16870,
+16877,
+16877,
+16901,
16919,
-16928,
-16942,
-16955,
-16982,
-17004,
-17020,
-17020,
-17020,
-17020,
-17020,
-17028,
-17041,
-17053,
-17053,
-17058,
-17072,
-17072,
-17092,
-17138,
-17138,
-17155,
-17155,
-17155,
-17155,
-17168,
-17168,
-17182,
-17205,
-17214,
-17214,
-17214,
-17220,
-17238,
-17238,
-17245,
-17291,
-17313,
-17313,
-17322,
-17361,
-17398,
-17435,
-17435,
-17450,
-17450,
-17450,
-17486,
-17493,
-17493,
-17493,
-17497,
-17497,
-17497,
-17497,
-17497,
-17497,
-17497,
-17527,
-17531,
-17551,
-17551,
-17568,
-17586,
-17603,
-17603,
-17603,
-17616,
-17622,
-17622,
-17622,
-17622,
-17647,
-17677,
-17717,
-17727,
-17749,
-17781,
-17813,
-17813,
-17830,
-17879,
-17879,
-17906,
-17932,
-17932,
-17932,
-17932,
-17932,
+16952,
+16972,
+16972,
+16986,
+16986,
+17029,
+17055,
+17067,
+17080,
+17099,
+17124,
+17124,
+17124,
+17124,
+17144,
+17151,
+17158,
+17163,
+17163,
+17178,
+17195,
+17195,
+17210,
+17244,
+17244,
+17244,
+17262,
+17272,
+17290,
+17308,
+17308,
+17321,
+17321,
+17333,
+17351,
+17364,
+17364,
+17379,
+17406,
+17406,
+17424,
+17443,
+17500,
+17500,
+17507,
+17520,
+17538,
+17545,
+17560,
+17597,
+17597,
+17597,
+17597,
+17608,
+17641,
+17652,
+17673,
+17673,
+17689,
+17689,
+17707,
+17732,
+17748,
+17748,
+17790,
+17790,
+17790,
+17820,
+17820,
+17820,
+17820,
+17820,
+17836,
+17855,
+17866,
+17866,
+17866,
+17904,
17947,
-17981,
-17988,
-18011,
-18011,
-18011,
-18011,
-18011,
-18011,
-18011,
-18019,
-18026,
-18026,
-18039,
-18039,
-18039,
-18039,
-18047,
-18079,
-18079,
-18084,
-18125,
-18138,
-18138,
-18138,
-18138,
-18147,
-18147,
-18147,
-18147,
-18147,
-18147,
-18163,
-18182,
-18182,
-18193,
-18193,
-18193,
-18204,
-18204,
-18204,
-18204,
-18204,
-18204,
-18213,
-18235,
-18257,
-18283,
-18283,
-18304,
-18334,
-18352,
-18367,
-18367,
-18367,
-18387,
-18396,
-18403,
-18403,
-18413,
-18413,
-18444,
-18444,
-18468,
-18478,
-18499,
-18506,
-18517,
-18526,
-18526,
-18544,
-18563,
-18563,
-18563,
-18563,
-18579,
-18603,
-18603,
-18621,
+17958,
+17979,
+17993,
+18009,
+18021,
+18021,
+18033,
+18033,
+18043,
+18067,
+18103,
+18140,
+18150,
+18164,
+18188,
+18188,
+18196,
+18211,
+18236,
+18236,
+18255,
+18255,
+18255,
+18255,
+18255,
+18255,
+18285,
+18300,
+18300,
+18324,
+18333,
+18360,
+18388,
+18425,
+18443,
+18457,
+18466,
+18466,
+18466,
+18482,
+18482,
+18482,
+18515,
+18538,
+18538,
+18555,
+18565,
+18631,
+18631,
+18631,
+18631,
18631,
18631,
18631,
18631,
-18638,
-18638,
-18638,
-18638,
-18662,
-18703,
-18703,
-18703,
-18703,
-18715,
-18723,
-18741,
-18759,
-18798,
-18814,
-18834,
-18853,
-18853,
-18871,
-18881,
-18935,
-18935,
-18962,
-18962,
-18962,
-18962,
-18978,
-18987,
-18987,
-18987,
-19014,
-19027,
-19037,
-19060,
-19060,
-19060,
-19060,
-19109,
-19134,
-19149,
-19170,
-19170,
-19188,
-19195,
-19211,
+18644,
+18644,
+18669,
+18669,
+18686,
+18686,
+18706,
+18718,
+18751,
+18769,
+18776,
+18783,
+18783,
+18783,
+18783,
+18783,
+18783,
+18803,
+18836,
+18845,
+18845,
+18856,
+18856,
+18864,
+18864,
+18878,
+18878,
+18878,
+18878,
+18885,
+18891,
+18901,
+18926,
+18926,
+18937,
+18961,
+18981,
+18981,
+18981,
+18981,
+18988,
+19002,
+19028,
+19078,
+19078,
+19078,
+19098,
+19104,
+19151,
+19151,
+19158,
+19182,
+19198,
+19198,
+19198,
+19213,
19233,
-19248,
-19257,
-19275,
-19278,
-19323,
-19326,
-19366,
-19378,
-19378,
-19381,
-19381,
-19394,
-19414,
-19417,
-19420,
-19433,
-19456,
-19462,
-19468,
-19494,
-19497,
-19503,
-19539,
-19561,
-19567,
-19570,
-19576,
-19576,
-19576,
-19599,
-19599,
-19633,
-19633,
-19643,
-19651,
-19662,
-19695,
-19711,
-19740,
-19758,
-19783,
-19789,
-19792,
-19802,
-19825,
-19838,
-19841,
-19870,
-19900,
-19900,
-19930,
-19930,
-19974,
-20013,
-20052,
-20059,
-20079,
-20085,
-20101,
-20113,
-20126,
-20129,
-20169,
-20180,
+19233,
+19233,
+19243,
+19243,
+19300,
+19350,
+19350,
+19368,
+19368,
+19393,
+19423,
+19434,
+19434,
+19451,
+19466,
+19477,
+19477,
+19498,
+19498,
+19519,
+19543,
+19550,
+19550,
+19557,
+19557,
+19557,
+19557,
+19590,
+19590,
+19595,
+19595,
+19595,
+19626,
+19626,
+19636,
+19678,
+19678,
+19697,
+19703,
+19703,
+19703,
+19722,
+19735,
+19761,
+19782,
+19782,
+19782,
+19782,
+19808,
+19808,
+19814,
+19814,
+19814,
+19830,
+19830,
+19830,
+19830,
+19840,
+19840,
+19852,
+19875,
+19894,
+19894,
+19894,
+19915,
+19915,
+19922,
+19922,
+19922,
+19953,
+19968,
+19984,
+19997,
+20012,
+20028,
+20068,
+20099,
+20099,
+20117,
+20148,
+20148,
+20155,
+20155,
+20165,
+20195,
20220,
20220,
-20230,
-20264,
-20264,
-20289,
-20296,
-20299,
-20299,
-20299,
-20308,
-20308,
-20358,
-20374,
-20374,
-20388,
-20396,
-20402,
-20402,
-20428,
-20468,
-20493,
-20493,
+20250,
+20250,
+20275,
+20287,
+20287,
+20321,
+20321,
+20321,
+20355,
+20370,
+20395,
+20410,
+20432,
+20435,
+20463,
+20466,
+20466,
+20479,
+20499,
+20499,
+20502,
20517,
-20524,
-20534,
-20551,
-20593,
-20608,
-20611,
-20611,
-20618,
-20632,
-20635,
-20657,
-20657,
-20677,
-20704,
-20707,
-20734,
-20751,
-20754,
-20774,
-20794,
-20813,
-20816,
-20819,
-20830,
-20839,
-20842,
-20855,
-20865,
-20868,
-20868,
-20868,
-20881,
-20888,
-20891,
-20891,
-20933,
-20933,
-20936,
-20939,
-20939,
-20963,
-20963,
-20998,
-21005,
-21063,
-21111,
-21118,
-21118,
-21141,
-21147,
-21164,
-21164,
-21171,
-21209,
-21230,
-21253,
-21273,
-21283,
-21300,
-21332,
-21347,
-21379,
-21386,
-21397,
-21404,
-21412,
-21419,
-21419,
-21419,
-21434,
-21434,
-21451,
-21494,
-21501,
-21508,
-21526,
+20554,
+20613,
+20613,
+20658,
+20672,
+20716,
+20741,
+20769,
+20772,
+20795,
+20801,
+20836,
+20852,
+20852,
+20873,
+20876,
+20930,
+20949,
+20970,
+20987,
+20990,
+21010,
+21016,
+21016,
+21022,
+21035,
+21038,
+21044,
+21047,
+21062,
+21065,
+21094,
+21114,
+21126,
+21126,
+21145,
+21166,
+21166,
+21173,
+21226,
+21291,
+21313,
+21331,
+21331,
+21337,
+21340,
+21340,
+21359,
+21378,
+21387,
+21421,
+21439,
+21452,
+21460,
+21460,
+21463,
+21485,
+21520,
+21537,
+21537,
+21540,
+21540,
21540,
-21549,
-21549,
-21565,
-21565,
-21575,
+21540,
+21558,
+21586,
+21586,
+21607,
21607,
-21625,
-21663,
-21703,
-21713,
+21621,
+21634,
+21654,
+21654,
+21671,
+21671,
+21674,
+21674,
+21674,
+21674,
+21677,
+21683,
+21686,
+21698,
+21716,
21746,
-21797,
-21811,
-21817,
-21833,
+21764,
+21767,
+21789,
+21813,
+21816,
+21819,
+21822,
21839,
-21846,
-21865,
-21865,
-21872,
-21943,
-21954,
-21957,
-21995,
-22002,
-22019,
-22026,
-22044,
-22057,
-22060,
-22073,
-22090,
-22103,
-22106,
-22116,
-22126,
-22129,
+21854,
+21873,
+21886,
+21889,
+21902,
+21905,
+21908,
+21947,
+21965,
+21994,
+21994,
+22001,
+22004,
+22020,
+22023,
+22023,
+22034,
+22034,
+22037,
+22059,
+22059,
+22065,
+22065,
+22068,
+22091,
+22130,
22136,
-22139,
-22163,
-22187,
-22190,
-22203,
-22206,
-22224,
-22249,
-22255,
-22282,
-22293,
-22319,
-22325,
-22349,
-22365,
-22365,
-22386,
-22408,
-22408,
-22408,
-22420,
-22420,
-22420,
-22447,
-22472,
-22493,
-22548,
-22564,
-22581,
-22601,
-22608,
-22611,
-22622,
-22622,
-22625,
-22632,
-22649,
-22675,
+22164,
+22205,
+22205,
+22205,
+22227,
+22235,
+22238,
+22241,
+22263,
+22266,
+22272,
+22317,
+22320,
+22328,
+22344,
+22353,
+22359,
+22368,
+22380,
+22405,
+22427,
+22427,
+22427,
+22441,
+22489,
+22512,
+22531,
+22552,
+22575,
+22591,
+22591,
+22629,
+22629,
+22658,
+22677,
22691,
-22698,
-22720,
-22736,
-22739,
-22742,
-22756,
-22785,
-22811,
-22864,
-22881,
-22921,
-22924,
-22950,
-22950,
+22691,
+22721,
+22721,
+22730,
+22733,
+22741,
+22757,
+22760,
+22775,
+22788,
+22795,
+22804,
+22809,
+22809,
+22847,
+22894,
+22916,
22966,
-22969,
-22986,
-23024,
-23043,
-23063,
-23063,
-23079,
-23113,
-23124,
+22966,
+22993,
+23007,
+23044,
+23066,
+23100,
+23110,
23124,
23135,
-23175,
-23175,
-23190,
-23190,
-23224,
-23238,
-23245,
-23252,
-23259,
-23274,
-23283,
-23310,
-23310,
-23310,
-23310,
-23310,
-23310,
-23336,
-23349,
-23359,
-23359,
-23380,
-23421,
-23447,
-23457,
-23471,
-23471,
-23484,
-23516,
-23551,
-23569,
-23572,
-23575,
-23599,
-23609,
-23612,
-23635,
-23651,
-23680,
-23690,
+23156,
+23159,
+23182,
+23185,
+23188,
+23188,
+23201,
+23204,
+23219,
+23222,
+23232,
+23241,
+23253,
+23276,
+23306,
+23323,
+23329,
+23341,
+23367,
+23383,
+23386,
+23402,
+23416,
+23452,
+23459,
+23478,
+23481,
+23481,
+23488,
+23504,
+23518,
+23518,
+23521,
+23540,
+23561,
+23570,
+23570,
+23573,
+23587,
+23620,
+23633,
+23659,
+23671,
+23671,
+23681,
+23681,
+23687,
+23694,
23714,
-23753,
-23777,
-23789,
-23849,
-23859,
-23872,
-23882,
-23892,
-23911,
-23931,
-23934,
-23937,
-23960,
-23970,
-23982,
-23998,
-24016,
-24053,
-24066,
-24090,
+23767,
+23767,
+23770,
+23786,
+23823,
+23826,
+23845,
+23856,
+23876,
+23876,
+23876,
+23896,
+23923,
+23944,
+23955,
+23979,
+23990,
+23993,
+24000,
+24003,
+24021,
+24021,
+24021,
+24021,
+24029,
+24035,
+24035,
+24035,
+24035,
+24046,
+24046,
+24049,
+24077,
24097,
-24100,
-24110,
-24146,
-24165,
-24179,
+24106,
+24150,
+24150,
+24150,
+24169,
+24186,
24186,
-24193,
-24196,
-24240,
-24253,
-24270,
-24280,
-24312,
-24329,
-24329,
-24342,
-24345,
-24354,
-24354,
+24216,
+24226,
+24229,
+24232,
+24248,
+24271,
+24286,
+24301,
+24307,
+24332,
24370,
-24373,
+24391,
24394,
-24394,
-24405,
-24430,
-24440,
-24462,
-24465,
-24488,
-24502,
-24502,
-24526,
-24533,
-24542,
-24542,
-24559,
-24578,
-24585,
-24617,
-24617,
-24634,
-24648,
-24664,
-24690,
-24690,
-24690,
-24715,
-24715,
-24732,
-24757,
-24764,
+24406,
+24409,
+24412,
+24415,
+24425,
+24425,
+24428,
+24438,
+24444,
+24447,
+24481,
+24505,
+24547,
+24556,
+24562,
+24565,
+24568,
+24594,
+24614,
+24632,
+24632,
+24635,
+24676,
+24705,
+24738,
+24765,
+24773,
24779,
-24786,
-24786,
-24786,
-24793,
-24830,
-24852,
-24872,
-24872,
-24890,
-24903,
-24903,
-24910,
-24914,
-24921,
-24939,
-24946,
-24977,
-24986,
-25008,
-25022,
-25022,
-25032,
-25035,
-25047,
-25047,
-25073,
+24810,
+24842,
+24881,
+24896,
+24904,
+24919,
+24919,
+24944,
+24944,
+24947,
+24969,
+24994,
+25013,
+25028,
+25034,
+25037,
+25037,
+25060,
+25063,
+25063,
+25063,
+25075,
+25078,
+25078,
25084,
-25111,
-25111,
-25137,
-25137,
+25084,
+25116,
+25116,
+25116,
25137,
-25142,
-25142,
-25149,
-25156,
-25163,
-25177,
-25184,
-25197,
-25197,
-25235,
-25261,
-25267,
-25313,
-25333,
-25362,
-25362,
+25140,
+25183,
+25183,
+25214,
+25214,
+25214,
+25214,
+25272,
+25288,
+25315,
+25315,
+25325,
+25351,
+25394,
25409,
25409,
25409,
-25409,
-25427,
-25427,
-25447,
-25447,
-25477,
-25483,
-25490,
-25504,
-25529,
-25536,
-25543,
-25550,
-25573,
-25580,
-25593,
-25612,
-25619,
-25637,
-25651,
-25651,
-25682,
-25703,
-25712,
-25712,
-25712,
-25719,
-25725,
-25725,
-25725,
-25745,
-25763,
-25783,
-25789,
-25809,
-25809,
-25823,
-25829,
-25829,
-25835,
-25847,
-25847,
-25867,
-25886,
-25886,
-25914,
-25914,
-25914,
-25914,
-25914,
-25920,
-25920,
-25927,
-25927,
-25953,
-25961,
-25961,
-25973,
-25994,
-25994,
-26009,
-26009,
-26015,
-26015,
-26015,
-26037,
-26053,
-26089,
+25417,
+25433,
+25433,
+25463,
+25463,
+25463,
+25463,
+25508,
+25508,
+25508,
+25517,
+25541,
+25586,
+25604,
+25622,
+25634,
+25634,
+25644,
+25677,
+25688,
+25723,
+25723,
+25735,
+25750,
+25750,
+25750,
+25785,
+25785,
+25803,
+25830,
+25850,
+25850,
+25850,
+25863,
+25863,
+25913,
+25921,
+25921,
+25930,
+25950,
+25974,
+25974,
+25999,
+25999,
+26023,
+26048,
+26092,
26098,
-26104,
-26113,
-26118,
-26133,
-26133,
-26133,
-26146,
-26155,
-26155,
-26185,
-26185,
-26202,
-26246,
-26246,
-26246,
-26261,
-26298,
-26298,
-26298,
-26298,
-26316,
-26331,
-26358,
-26367,
-26411,
-26411,
-26411,
-26444,
-26451,
-26458,
-26464,
-26464,
-26464,
-26464,
-26482,
-26482,
-26482,
-26512,
-26512,
-26512,
-26555,
-26555,
-26555,
-26555,
-26587,
-26587,
-26587,
-26587,
-26610,
-26610,
-26620,
-26639,
-26657,
-26673,
-26688,
-26688,
-26723,
-26740,
-26749,
-26765,
-26807,
-26807,
-26877,
-26904,
-26904,
-26945,
-26962,
-26962,
-26982,
-26992,
-27013,
-27030,
-27060,
-27065,
-27104,
+26109,
+26122,
+26190,
+26201,
+26207,
+26216,
+26234,
+26234,
+26248,
+26248,
+26269,
+26269,
+26275,
+26291,
+26346,
+26365,
+26365,
+26365,
+26414,
+26432,
+26438,
+26438,
+26438,
+26438,
+26438,
+26459,
+26469,
+26469,
+26509,
+26532,
+26581,
+26608,
+26615,
+26615,
+26615,
+26615,
+26615,
+26615,
+26615,
+26615,
+26615,
+26645,
+26666,
+26694,
+26694,
+26694,
+26694,
+26694,
+26694,
+26714,
+26714,
+26730,
+26743,
+26796,
+26796,
+26824,
+26844,
+26872,
+26872,
+26878,
+26887,
+26892,
+26912,
+26931,
+26931,
+26949,
+26949,
+26949,
+26949,
+26949,
+26958,
+26994,
+27010,
+27031,
+27053,
+27071,
+27110,
27110,
-27119,
-27125,
-27125,
-27125,
+27139,
+27139,
+27139,
+27139,
+27139,
+27139,
+27139,
+27144,
27150,
-27166,
-27166,
-27185,
-27185,
-27207,
+27150,
+27165,
+27184,
+27184,
+27184,
+27202,
+27214,
+27230,
+27246,
27246,
-27265,
-27265,
-27286,
-27294,
-27311,
-27331,
-27331,
-27331,
-27331,
-27331,
-27353,
-27353,
-27360,
-27378,
-27402,
-27419,
-27431,
-27431,
-27431,
-27437,
-27506,
-27514,
-27514,
-27514,
-27514,
-27514,
-27514,
-27530,
-27542,
-27550,
-27550,
-27550,
-27550,
-27550,
-27550,
-27585,
-27603,
-27603,
-27635,
-27635,
-27635,
-27642,
-27650,
-27686,
-27686,
-27686,
-27697,
-27717,
-27723,
-27766,
-27808,
-27815,
-27831,
-27831,
-27831,
-27850,
-27866,
-27866,
-27866,
-27866,
-27871,
-27871,
-27877,
-27899,
-27923,
-27948,
-27955,
-27955,
-27964,
-27990,
-27999,
-28015,
-28023,
-28027,
-28052,
-28052,
-28052,
-28059,
-28059,
-28096,
-28096,
-28112,
-28112,
-28124,
-28124,
-28180,
-28180,
-28203,
-28203,
-28212,
-28212,
-28244,
-28279,
-28286,
-28298,
-28298,
-28317,
-28340,
-28340,
-28340,
-28385,
-28406,
-28438,
-28445,
-28462,
-28462,
-28462,
-28462,
-28462,
-28462,
-28488,
-28504,
-28520,
-28558,
-28558,
-28558,
-28563,
-28578,
-28578,
-28578,
-28584,
-28584,
-28584,
-28584,
-28584,
-28600,
-28600,
-28600,
-28600,
-28606,
-28611,
-28611,
-28631,
-28631,
-28655,
-28655,
-28664,
-28664,
-28668,
-28672,
-28672,
-28672,
-28672,
-28700,
-28708,
-28708,
-28730,
-28746,
-28758,
-28758,
-28776,
+27255,
+27255,
+27266,
+27266,
+27266,
+27279,
+27279,
+27279,
+27288,
+27296,
+27358,
+27367,
+27367,
+27367,
+27367,
+27367,
+27367,
+27367,
+27395,
+27427,
+27427,
+27451,
+27451,
+27462,
+27462,
+27462,
+27497,
+27508,
+27512,
+27512,
+27538,
+27538,
+27564,
+27564,
+27587,
+27611,
+27626,
+27626,
+27648,
+27648,
+27667,
+27667,
+27691,
+27706,
+27720,
+27734,
+27764,
+27791,
+27791,
+27823,
+27847,
+27847,
+27847,
+27857,
+27863,
+27874,
+27878,
+27878,
+27878,
+27884,
+27891,
+27891,
+27907,
+27929,
+27935,
+27935,
+27935,
+27942,
+27966,
+27966,
+27966,
+27993,
+27993,
+27993,
+27993,
+28009,
+28020,
+28020,
+28020,
+28025,
+28045,
+28066,
+28087,
+28104,
+28117,
+28148,
+28158,
+28167,
+28208,
+28225,
+28254,
+28305,
+28305,
+28310,
+28319,
+28319,
+28319,
+28328,
+28328,
+28359,
+28405,
+28409,
+28409,
+28409,
+28409,
+28440,
+28440,
+28440,
+28440,
+28486,
+28486,
+28486,
+28501,
+28530,
+28530,
+28546,
+28546,
+28569,
+28569,
+28587,
+28650,
+28650,
+28650,
+28650,
+28673,
+28686,
+28686,
+28697,
+28697,
+28732,
+28737,
+28737,
+28749,
+28760,
+28760,
+28772,
+28779,
28794,
-28801,
-28801,
-28801,
-28811,
-28811,
-28827,
-28834,
-28860,
-28872,
-28887,
-28917,
-28930,
+28841,
+28841,
+28865,
+28865,
+28865,
+28897,
+28920,
+28920,
+28927,
+28934,
28965,
-28983,
-28983,
-29018,
-29038,
-29051,
-29051,
-29082,
-29082,
-29136,
-29152,
-29172,
-29182,
-29198,
-29198,
-29205,
-29205,
-29219,
-29219,
-29219,
+29022,
+29022,
+29047,
+29065,
+29083,
+29089,
+29125,
+29125,
+29125,
+29125,
+29130,
+29186,
+29186,
+29194,
+29247,
+29257,
+29257,
29285,
-29299,
-29305,
-29323,
-29323,
-29332,
-29355,
-29390,
-29396,
-29447,
-29447,
+29285,
+29285,
+29368,
+29375,
+29402,
+29409,
+29414,
+29421,
+29428,
+29434,
29447,
-29460,
-29460,
-29472,
-29472,
-29484,
-29484,
-29484,
-29484,
-29502,
-29502,
-29529,
-29538,
-29538,
+29464,
+29473,
+29494,
+29509,
+29509,
+29521,
+29521,
+29533,
29538,
-29538,
-29577,
-29589,
-29589,
-29605,
-29624,
-29624,
-29624,
-29624,
-29624,
-29624,
-29632,
-29641,
-29641,
-29650,
-29695,
-29702,
-29702,
-29714,
+29544,
+29561,
+29571,
+29578,
+29578,
+29578,
+29588,
+29598,
+29609,
+29609,
+29616,
+29634,
+29640,
+29651,
+29651,
+29663,
+29679,
+29694,
+29694,
+29694,
+29694,
+29727,
29727,
29737,
-29737,
-29737,
-29788,
-29802,
-29825,
-29825,
-29825,
-29832,
-29859,
-29876,
-29894,
-29894,
-29904,
-29904,
-29904,
-29904,
-29904,
-29919,
-29929,
-29940,
-29940,
-29947,
-29967,
-29991,
-29991,
-29991,
-29998,
-30006,
-30006,
-30006,
-30026,
+29746,
+29752,
+29759,
+29778,
+29778,
+29778,
+29784,
+29784,
+29792,
+29792,
+29792,
+29792,
+29826,
+29843,
+29854,
+29877,
+29903,
+29903,
+29903,
+29903,
+29903,
+29903,
+29910,
+29910,
+29910,
+29910,
+29933,
+29961,
+29979,
+30013,
+30013,
+30024,
+30028,
+30028,
30042,
30042,
-30059,
-30067,
-30067,
-30090,
-30096,
-30115,
-30133,
-30133,
-30138,
-30144,
-30152,
-30152,
-30164,
-30164,
-30164,
-30164,
-30164,
-30178,
+30042,
+30048,
+30062,
+30062,
+30080,
+30086,
+30093,
+30113,
+30113,
+30130,
+30130,
+30130,
+30130,
30178,
-30211,
-30215,
-30255,
-30259,
-30267,
-30277,
-30283,
-30289,
-30289,
-30307,
-30327,
-30334,
-30334,
-30334,
-30353,
-30359,
-30375,
-30387,
-30387,
-30387,
-30413,
-30413,
-30422,
-30422,
-30422,
-30459,
-30477,
-30492,
+30183,
+30183,
+30183,
+30204,
+30208,
+30217,
+30238,
+30250,
+30250,
+30250,
+30270,
+30276,
+30282,
+30298,
+30336,
+30336,
+30370,
+30415,
+30415,
+30415,
+30415,
+30415,
+30419,
+30423,
+30423,
+30436,
+30436,
+30436,
+30436,
+30436,
+30436,
+30475,
+30475,
30519,
-30519,
-30567,
-30567,
-30575,
-30581,
-30618,
-30618,
-30618,
-30618,
-30635,
-30657,
-30665,
-30665,
-30685,
-30695,
-30717,
-30738,
-30757,
-30757,
-30780,
-30786,
-30786,
-30796,
-30834,
-30834,
-30834,
-30838,
-30864,
-30894,
-30913,
-30913,
-30913,
-30935,
-30935,
-30935,
-30965,
-30965,
-30993,
-31002,
-31002,
-31002,
-31014,
-31014,
-31040,
-31065,
-31075,
-31075,
-31109,
-31121,
-31121,
-31121,
+30536,
+30536,
+30536,
+30542,
+30542,
+30562,
+30602,
+30608,
+30617,
+30641,
+30701,
+30701,
+30701,
+30730,
+30730,
+30730,
+30743,
+30751,
+30765,
+30779,
+30807,
+30814,
+30814,
+30814,
+30850,
+30850,
+30850,
+30850,
+30879,
+30886,
+30893,
+30893,
+30907,
+30923,
+30930,
+30930,
+30930,
+30930,
+30940,
+31010,
+31023,
+31023,
+31032,
+31032,
+31032,
+31032,
+31049,
+31049,
+31059,
+31059,
+31071,
+31090,
+31113,
+31120,
31136,
-31164,
-31164,
-31164,
-31179,
-31189,
-31189,
-31189,
-31189,
-31189,
-31202,
-31202,
-31202,
-31202,
-31219,
-31219,
-31225,
-31243,
-31259,
-31259,
-31282,
-31282,
-31282,
+31162,
+31168,
+31235,
+31249,
+31249,
+31254,
+31260,
+31260,
+31290,
31290,
-31298,
-31313,
-31330,
-31338,
-31338,
-31338,
-31338,
-31338,
-31338,
-31338,
-31338,
-31353,
-31353,
-31353,
-31382,
-31390,
-31429,
-31437,
-31447,
-31447,
+31299,
+31311,
+31348,
+31348,
+31357,
+31357,
+31380,
+31430,
+31469,
31475,
-31499,
-31499,
-31521,
-31562,
-31562,
-31562,
-31595,
-31614,
-31631,
-31683,
-31707,
-31735,
-31735,
-31762,
-31776,
-31817,
-31828,
-31828,
-31838,
-31852,
-31870,
-31870,
-31870,
-31870,
-31879,
-31879,
-31879,
-31879,
-31895,
-31895,
-31895,
-31925,
-31925,
-31925,
-31925,
-31944,
-31944,
-31944,
-31944,
-31968,
-31968,
-31985,
-32000,
-32021,
-32032,
-32054,
-32065,
-32065,
-32076,
-32099,
-32099,
-32118,
-32126,
-32152,
-32152,
-32152,
-32169,
-32169,
+31493,
+31531,
+31542,
+31563,
+31579,
+31625,
+31636,
+31651,
+31661,
+31684,
+31688,
+31698,
+31698,
+31704,
+31730,
+31785,
+31798,
+31798,
+31798,
+31798,
+31808,
+31808,
+31808,
+31808,
+31822,
+31840,
+31840,
+31854,
+31874,
+31874,
+31885,
+31896,
+31896,
+31903,
+31903,
+31942,
+31942,
+31942,
+31946,
+31951,
+31972,
+31999,
+31999,
+32016,
+32030,
+32030,
+32030,
+32037,
+32037,
+32067,
+32105,
+32105,
+32148,
+32170,
32176,
-32235,
-32240,
-32240,
-32257,
-32257,
-32257,
-32288,
-32288,
-32288,
-32301,
-32301,
-32301,
-32301,
-32331,
-32331,
-32331,
-32331,
-32331,
-32331,
-32359,
-32359,
-32424,
-32440,
-32440,
-32468,
-32468,
+32188,
+32188,
+32188,
+32188,
+32208,
+32234,
+32234,
+32251,
+32295,
+32295,
+32295,
+32295,
+32295,
+32295,
+32295,
+32295,
+32308,
+32308,
+32323,
+32336,
+32336,
+32341,
+32367,
+32411,
+32411,
+32429,
+32461,
+32461,
+32461,
+32467,
+32478,
32488,
-32488,
-32509,
-32536,
-32558,
-32573,
-32573,
-32577,
-32597,
-32597,
-32609,
-32620,
-32634,
-32640,
-32640,
-32668,
-32679,
-32679,
-32687,
-32718,
-32718,
-32718,
-32718,
-32718,
-32738,
-32745,
-32760,
-32784,
-32848,
+32525,
+32563,
+32586,
+32598,
+32598,
+32598,
+32613,
+32629,
+32629,
+32660,
+32676,
+32708,
+32720,
+32736,
+32743,
+32743,
+32752,
+32752,
+32762,
+32766,
+32778,
+32778,
+32797,
+32801,
+32813,
+32820,
+32820,
+32838,
32862,
-32894,
-32901,
-32901,
-32901,
-32908,
-32908,
-32915,
-32915,
-32919,
-32961,
-32993,
-33005,
-33005,
-33037,
-33044,
-33044,
-33051,
-33090,
-33097,
-33097,
-33116,
-33123,
-33123,
-33130,
-33138,
-33142,
-33168,
-33186,
-33193,
-33193,
+32868,
+32881,
+32881,
+32892,
+32906,
+32920,
+32920,
+32920,
+32942,
+32942,
+32942,
+32955,
+32970,
+32970,
+32979,
+32979,
+32983,
+32990,
+33013,
+33045,
+33057,
+33067,
+33073,
+33099,
+33099,
+33099,
+33099,
+33103,
+33103,
+33141,
+33141,
+33173,
+33190,
+33190,
+33190,
+33190,
+33212,
33216,
-33223,
-33223,
-33240,
-33268,
-33272,
-33272,
-33304,
-33311,
-33343,
-33343,
-33343,
-33362,
-33362,
-33372,
-33389,
-33389,
-33396,
-33396,
-33404,
-33404,
-33420,
-33420,
+33234,
+33234,
+33245,
+33245,
+33263,
+33263,
+33263,
+33271,
+33312,
+33337,
+33359,
+33398,
33427,
-33435,
-33456,
+33432,
33456,
-33467,
-33536,
-33543,
-33547,
-33554,
-33576,
-33583,
-33606,
-33606,
-33613,
-33629,
-33657,
-33664,
-33664,
-33664,
-33690,
-33699,
-33699,
-33730,
-33750,
-33762,
-33783,
-33826,
-33844,
-33844,
-33868,
-33868,
-33903,
-33911,
-33911,
-33927,
-33945,
+33460,
+33490,
+33500,
+33500,
+33508,
+33508,
+33508,
+33508,
+33508,
+33532,
+33570,
+33593,
+33597,
+33597,
+33597,
+33597,
+33597,
+33601,
+33638,
+33638,
+33638,
+33638,
+33638,
+33660,
+33693,
+33729,
+33739,
+33787,
+33787,
+33787,
+33798,
+33798,
+33808,
+33808,
+33808,
+33808,
+33840,
+33840,
+33840,
+33854,
+33854,
+33854,
+33884,
+33884,
+33884,
+33914,
+33955,
+33961,
+33965,
+33974,
+33974,
+33974,
33990,
-34010,
-34025,
-34025,
-34032,
-34051,
-34075,
-34095,
-34129,
-34129,
+33998,
+34006,
+34030,
+34030,
+34030,
+34064,
+34074,
+34094,
+34108,
+34108,
34129,
-34129,
-34129,
-34136,
-34149,
-34173,
-34173,
-34186,
-34199,
-34206,
-34218,
-34218,
-34227,
-34227,
-34227,
-34227,
-34234,
-34234,
-34234,
-34241,
-34268,
-34275,
+34174,
+34198,
+34225,
+34246,
+34261,
+34277,
+34277,
+34281,
+34305,
+34305,
34305,
-34326,
-34360,
-34367,
-34386,
-34397,
-34407,
-34407,
-34407,
-34407,
-34407,
-34461,
-34468,
-34496,
-34496,
-34505,
-34512,
-34566,
-34594,
-34594,
-34601,
-34606,
-34634,
-34634,
-34634,
-34634,
-34634,
-34634,
-34634,
-34653,
-34660,
-34660,
-34666,
-34686,
-34696,
-34703,
-34720,
-34720,
-34727,
+34305,
+34305,
+34305,
+34338,
+34355,
+34355,
+34355,
+34355,
+34380,
+34380,
+34395,
+34422,
+34443,
+34443,
+34448,
+34448,
+34459,
+34472,
+34488,
+34495,
+34504,
+34515,
+34515,
+34533,
+34533,
+34533,
+34563,
+34622,
+34622,
+34639,
+34656,
+34706,
34744,
-34751,
-34758,
-34773,
-34794,
-34801,
-34808,
-34808,
-34828,
-34835,
-34852,
-34859,
-34876,
-34876,
+34752,
+34752,
+34767,
+34788,
+34793,
+34793,
+34793,
+34793,
+34793,
+34793,
+34837,
+34837,
+34837,
34885,
-34893,
-34905,
-34934,
-34941,
-34988,
-34988,
-34988,
-35033,
-35033,
-35033,
-35040,
-35058,
-35065,
+34908,
+34908,
+34926,
+34933,
+34953,
+34963,
+34963,
+34963,
+34990,
+34990,
+35013,
+35013,
+35017,
+35017,
+35024,
+35024,
+35041,
+35041,
+35059,
+35059,
+35059,
+35073,
35073,
-35093,
-35119,
-35137,
-35144,
-35171,
-35199,
+35073,
+35084,
+35108,
+35120,
+35130,
+35184,
+35184,
+35184,
+35191,
35206,
-35213,
-35253,
-35266,
-35273,
-35273,
-35312,
-35329,
-35336,
-35365,
-35381,
-35399,
-35413,
-35420,
-35427,
-35427,
-35432,
-35442,
-35448,
-35455,
-35467,
-35517,
-35531,
-35538,
+35216,
+35216,
+35216,
+35226,
+35244,
+35260,
+35260,
+35290,
+35296,
+35296,
+35296,
+35313,
+35334,
+35334,
+35343,
+35382,
+35414,
+35414,
+35447,
+35447,
+35457,
+35457,
+35475,
+35475,
+35484,
+35491,
+35491,
+35503,
+35503,
+35509,
+35529,
+35537,
+35558,
35558,
-35571,
-35581,
-35606,
-35619,
-35645,
-35659,
-35666,
-35666,
-35681,
-35688,
-35719,
-35729,
-35736,
-35743,
-35761,
-35769,
-35828,
-35835,
-35859,
-35859,
-35866,
-35866,
-35866,
-35873,
-35921,
-35950,
+35567,
+35567,
+35585,
+35595,
+35610,
+35624,
+35654,
+35654,
+35661,
+35661,
+35680,
+35696,
+35701,
+35701,
+35726,
+35752,
+35768,
+35768,
+35838,
+35870,
+35870,
+35894,
+35894,
+35894,
+35905,
+35922,
35965,
-35976,
-35976,
-35983,
-36007,
-36014,
-36021,
-36021,
-36021,
-36021,
-36021,
-36038,
-36038,
-36038,
-36053,
-36067,
-36082,
-36082,
-36082,
-36119,
-36155,
-36171,
-36171,
-36171,
-36184,
-36199,
-36206,
-36206,
-36220,
-36234,
-36242,
-36272,
-36282,
-36296,
-36296,
-36314,
-36321,
-36352,
-36359,
-36383,
-36391,
-36412,
-36419,
-36419,
-36434,
-36442,
-36449,
-36462,
-36469,
-36476,
-36492,
-36492,
-36512,
-36512,
-36567,
-36567,
-36588,
-36588,
-36588,
-36608,
-36650,
-36660,
-36670,
-36687,
-36694,
-36701,
-36714,
-36725,
-36732,
-36762,
-36777,
-36804,
-36804,
-36838,
-36855,
-36855,
-36903,
-36922,
-36943,
-36943,
-36949,
-36949,
-36969,
+35984,
+35989,
+36011,
+36025,
+36040,
+36057,
+36057,
+36057,
+36074,
+36086,
+36096,
+36108,
+36140,
+36163,
+36191,
+36216,
+36248,
+36248,
+36275,
+36284,
+36284,
+36298,
+36298,
+36328,
+36335,
+36344,
+36348,
+36406,
+36413,
+36433,
+36457,
+36470,
+36470,
+36478,
+36485,
+36485,
+36485,
+36523,
+36541,
+36550,
+36550,
+36550,
+36550,
+36550,
+36565,
+36565,
+36565,
+36569,
+36569,
+36576,
+36576,
+36576,
+36595,
+36595,
+36610,
+36620,
+36620,
+36639,
+36639,
+36639,
+36653,
+36653,
+36682,
+36722,
+36722,
+36722,
+36722,
+36722,
+36728,
+36745,
+36745,
+36759,
+36759,
+36759,
+36759,
+36768,
+36785,
+36803,
+36834,
+36834,
+36834,
+36865,
+36887,
+36887,
+36887,
+36907,
+36926,
+36967,
36977,
-36977,
-36993,
-36993,
-37000,
-37023,
-37023,
-37030,
-37121,
-37137,
-37137,
-37153,
-37176,
-37183,
-37192,
+36981,
+36981,
+37005,
+37005,
+37054,
+37086,
+37096,
+37103,
+37116,
+37116,
+37116,
+37143,
+37143,
+37149,
+37149,
+37181,
+37181,
+37181,
+37205,
+37209,
37209,
-37217,
-37248,
-37248,
-37248,
-37266,
+37236,
+37259,
+37259,
37286,
-37292,
-37292,
-37300,
-37339,
-37339,
-37355,
-37362,
-37379,
-37387,
-37403,
-37403,
-37403,
-37432,
-37432,
-37450,
-37450,
-37466,
-37481,
-37481,
-37481,
-37500,
+37302,
+37302,
+37319,
+37336,
+37348,
+37361,
+37361,
+37361,
+37361,
+37361,
+37371,
+37371,
+37382,
+37396,
+37396,
+37396,
+37420,
+37433,
+37449,
+37449,
+37449,
+37449,
+37471,
+37471,
+37499,
+37519,
+37519,
37540,
-37540,
-37540,
-37552,
-37569,
-37594,
-37594,
-37609,
-37628,
-37628,
-37661,
-37677,
-37677,
-37677,
-37717,
-37717,
-37717,
-37723,
-37754,
-37754,
-37799,
-37799,
-37810,
-37810,
-37825,
-37825,
-37825,
-37825,
-37845,
-37867,
-37867,
-37877,
-37892,
-37909,
-37909,
-37919,
-37919,
-37938,
-37959,
-37967,
-37972,
-37992,
-37992,
-38026,
+37550,
+37555,
+37555,
+37572,
+37576,
+37576,
+37576,
+37583,
+37583,
+37599,
+37615,
+37615,
+37634,
+37634,
+37647,
+37672,
+37672,
+37690,
+37705,
+37710,
+37728,
+37728,
+37728,
+37728,
+37745,
+37755,
+37755,
+37761,
+37771,
+37771,
+37788,
+37813,
+37813,
+37832,
+37832,
+37832,
+37832,
+37856,
+37856,
+37872,
+37872,
+37872,
+37872,
+37872,
+37872,
+37872,
+37902,
+37913,
+37913,
+37925,
+37943,
+37952,
+37952,
+37952,
+37982,
+38011,
+38011,
+38011,
+38011,
+38019,
+38019,
+38019,
+38019,
+38019,
38035,
-38061,
-38061,
-38072,
-38083,
-38083,
-38099,
-38123,
-38146,
-38146,
-38158,
-38158,
-38182,
-38234,
-38255,
-38255,
-38310,
-38331,
-38331,
-38346,
-38346,
-38346,
-38353,
-38353,
-38353,
-38378,
-38378,
-38388,
-38408,
-38428,
-38428,
-38428,
-38428,
-38445,
-38453,
-38460,
-38460,
-38460,
-38493,
-38503,
-38525,
-38525,
-38532,
-38532,
-38546,
-38546,
-38569,
-38599,
-38618,
-38618,
-38618,
-38643,
-38643,
-38643,
-38691,
-38699,
-38717,
+38035,
+38057,
+38057,
+38068,
+38080,
+38091,
+38110,
+38128,
+38149,
+38164,
+38189,
+38199,
+38199,
+38199,
+38207,
+38207,
+38224,
+38224,
+38235,
+38251,
+38251,
+38251,
+38251,
+38251,
+38260,
+38260,
+38260,
+38260,
+38260,
+38279,
+38279,
+38290,
+38290,
+38297,
+38345,
+38351,
+38351,
+38389,
+38398,
+38402,
+38402,
+38450,
+38450,
+38466,
+38490,
+38490,
+38494,
+38517,
+38544,
+38544,
+38557,
+38568,
+38574,
+38574,
+38574,
+38574,
+38574,
+38574,
+38595,
+38616,
+38642,
+38672,
+38672,
+38672,
+38672,
+38672,
+38686,
+38693,
38717,
-38729,
-38729,
-38733,
-38760,
-38760,
-38773,
-38801,
-38817,
-38824,
+38735,
+38751,
+38751,
+38758,
+38794,
+38808,
+38829,
38836,
38843,
-38843,
-38843,
-38870,
-38880,
-38880,
-38887,
-38900,
-38907,
-38919,
-38919,
-38919,
-38949,
-38967,
-38984,
-38984,
-38984,
-38989,
-38989,
-39029,
-39036,
-39054,
-39080,
-39086,
-39103,
-39110,
-39130,
-39130,
-39130,
-39154,
-39154,
-39176,
-39176,
-39213,
-39213,
-39213,
-39225,
-39230,
-39249,
-39264,
-39264,
-39264,
-39284,
-39284,
-39293,
-39293,
-39311,
-39311,
-39311,
-39320,
+38858,
+38883,
+38893,
+38915,
+38915,
+38915,
+38922,
+38933,
+38940,
+38940,
+38950,
+38957,
+38991,
+39009,
+39009,
+39014,
+39021,
+39021,
+39028,
+39042,
+39048,
+39055,
+39077,
+39102,
+39116,
+39129,
+39136,
+39155,
+39155,
+39161,
+39179,
+39205,
+39219,
+39239,
+39283,
+39283,
+39304,
39339,
-39345,
-39355,
-39369,
-39388,
-39399,
-39399,
-39399,
-39418,
-39418,
-39433,
-39451,
-39451,
-39458,
-39476,
-39481,
-39519,
-39519,
-39519,
-39519,
-39529,
-39567,
-39609,
-39624,
-39637,
-39637,
-39644,
-39644,
-39651,
-39679,
-39679,
-39679,
-39697,
-39709,
-39751,
-39751,
-39777,
-39791,
-39817,
-39817,
-39835,
-39835,
-39844,
-39844,
-39851,
-39874,
-39878,
-39878,
-39888,
-39905,
-39905,
-39928,
-39928,
+39365,
+39387,
+39413,
+39413,
+39413,
+39430,
+39437,
+39437,
+39450,
+39462,
+39469,
+39484,
+39502,
+39509,
+39509,
+39548,
+39548,
+39548,
+39560,
+39573,
+39582,
+39582,
+39582,
+39596,
+39616,
+39639,
+39639,
+39646,
+39668,
+39677,
+39694,
+39705,
+39721,
+39731,
+39731,
+39750,
+39750,
+39760,
+39760,
+39769,
+39796,
+39796,
+39815,
+39822,
+39847,
+39867,
+39881,
+39881,
+39900,
+39907,
+39907,
+39920,
+39934,
+39945,
39945,
39952,
-39978,
-39978,
-39985,
-40029,
-40043,
-40043,
-40043,
-40053,
-40066,
-40094,
-40106,
-40129,
-40129,
-40151,
-40151,
-40151,
-40158,
-40182,
-40199,
-40232,
-40232,
-40232,
-40281,
-40288,
-40302,
-40302,
-40302,
-40302,
-40317,
-40317,
-40324,
-40324,
-40356,
-40356,
-40369,
-40384,
-40392,
-40392,
-40392,
-40413,
-40413,
-40455,
-40462,
-40469,
-40483,
+39952,
+39952,
+39961,
+39989,
+40030,
+40045,
+40058,
+40085,
+40101,
+40138,
+40178,
+40188,
+40210,
+40221,
+40228,
+40228,
+40241,
+40248,
+40279,
+40292,
+40292,
+40301,
+40308,
+40322,
+40322,
+40329,
+40336,
+40352,
+40359,
+40366,
+40373,
+40380,
+40380,
+40435,
+40435,
+40435,
+40473,
40483,
40483,
-40511,
-40511,
-40524,
-40524,
-40528,
-40546,
-40546,
-40568,
-40575,
-40582,
-40610,
-40629,
-40656,
-40656,
-40656,
-40679,
-40679,
-40679,
-40693,
-40713,
-40732,
-40754,
-40795,
-40795,
-40809,
-40816,
-40823,
-40851,
-40889,
-40908,
-40956,
-40970,
-41026,
-41040,
-41056,
-41063,
-41070,
-41077,
-41100,
-41108,
-41141,
-41148,
-41181,
-41197,
-41220,
-41241,
-41275,
-41291,
-41307,
-41307,
-41327,
-41334,
-41355,
-41369,
-41394,
-41401,
-41414,
-41430,
-41444,
-41494,
+40488,
+40488,
+40488,
+40513,
+40537,
+40537,
+40564,
+40569,
+40612,
+40637,
+40637,
+40651,
+40651,
+40658,
+40665,
+40665,
+40672,
+40686,
+40717,
+40741,
+40766,
+40789,
+40815,
+40830,
+40830,
+40840,
+40840,
+40840,
+40840,
+40860,
+40886,
+40893,
+40933,
+40933,
+40946,
+40968,
+41002,
+41017,
+41024,
+41057,
+41080,
+41087,
+41094,
+41137,
+41150,
+41157,
+41157,
+41164,
+41171,
+41177,
+41184,
+41198,
+41198,
+41198,
+41216,
+41240,
+41251,
+41293,
+41300,
+41330,
+41346,
+41383,
+41405,
+41405,
+41417,
+41448,
+41466,
+41466,
+41466,
+41466,
+41473,
+41485,
41513,
-41513,
-41520,
-41529,
-41575,
-41589,
-41612,
+41528,
+41537,
+41564,
+41564,
+41594,
+41627,
+41627,
+41627,
41634,
41634,
+41639,
+41639,
41652,
-41652,
-41664,
-41696,
-41703,
-41750,
-41772,
-41772,
-41793,
-41819,
-41826,
-41848,
-41855,
-41872,
-41884,
-41892,
-41892,
-41947,
-41947,
-41947,
-41971,
-41971,
-41971,
-41971,
-41977,
-41977,
-41984,
-42033,
-42051,
-42051,
+41671,
+41680,
+41690,
+41690,
+41690,
+41690,
+41712,
+41712,
+41722,
+41746,
+41778,
+41784,
+41816,
+41825,
+41825,
+41832,
+41856,
+41868,
+41916,
+41922,
+41935,
+41944,
+41956,
+41970,
+41982,
+41982,
+41982,
+41989,
+41996,
+42018,
+42018,
+42018,
+42025,
+42032,
+42040,
+42040,
+42047,
+42047,
+42055,
+42055,
42066,
-42066,
-42066,
-42066,
-42087,
-42102,
-42127,
-42134,
-42134,
-42155,
-42167,
-42186,
-42186,
-42186,
-42193,
-42215,
-42224,
-42242,
-42249,
-42262,
-42286,
-42303,
-42316,
-42340,
-42360,
-42392,
-42392,
-42399,
-42406,
-42433,
-42449,
-42449,
-42459,
-42485,
-42513,
-42530,
-42537,
-42537,
-42544,
-42576,
-42576,
-42583,
-42583,
-42590,
-42599,
-42628,
-42649,
-42649,
-42656,
-42697,
-42704,
+42086,
+42086,
+42086,
+42103,
+42103,
+42122,
+42129,
+42136,
+42157,
+42164,
+42179,
+42179,
+42212,
+42226,
+42233,
+42240,
+42240,
+42247,
+42274,
+42308,
+42315,
+42343,
+42343,
+42385,
+42408,
+42415,
+42415,
+42415,
+42415,
+42436,
+42443,
+42450,
+42450,
+42457,
+42464,
+42471,
+42484,
+42508,
+42529,
+42548,
+42548,
+42596,
+42596,
+42596,
+42603,
+42624,
+42645,
+42661,
+42684,
+42684,
+42694,
+42694,
+42701,
+42701,
+42720,
42720,
-42739,
-42739,
-42815,
-42815,
-42834,
-42834,
-42870,
-42892,
-42899,
-42899,
-42919,
-42939,
-42969,
-42969,
-42979,
-42979,
-42979,
-42990,
-43030,
-43030,
-43052,
-43052,
-43074,
-43102,
-43102,
-43102,
-43130,
-43147,
-43154,
+42754,
+42776,
+42795,
+42795,
+42808,
+42808,
+42846,
+42855,
+42864,
+42882,
+42888,
+42909,
+42909,
+42929,
+42964,
+42985,
+43001,
+43017,
+43043,
+43050,
+43050,
+43060,
+43073,
+43091,
+43111,
+43134,
43172,
-43179,
-43199,
-43211,
-43215,
-43222,
-43222,
+43172,
+43172,
+43204,
+43250,
+43250,
43257,
-43284,
-43302,
-43352,
-43368,
-43368,
-43368,
-43381,
-43393,
-43423,
-43444,
-43487,
-43494,
-43523,
-43547,
-43567,
-43595,
-43612,
-43612,
-43619,
-43619,
-43640,
-43646,
-43664,
-43697,
-43717,
-43724,
-43724,
-43744,
-43767,
-43776,
-43781,
-43801,
-43801,
-43808,
-43808,
-43815,
-43822,
-43836,
-43850,
-43869,
+43286,
+43325,
+43345,
+43362,
+43362,
+43362,
+43362,
+43362,
+43430,
+43430,
+43430,
+43437,
+43437,
+43455,
+43455,
+43464,
+43464,
+43471,
+43471,
+43471,
+43471,
+43484,
+43484,
+43490,
+43490,
+43513,
+43526,
+43546,
+43546,
+43553,
+43571,
+43584,
+43584,
+43631,
+43642,
+43642,
+43642,
+43682,
+43702,
+43702,
+43722,
+43729,
+43729,
+43756,
+43783,
+43783,
+43795,
+43814,
+43818,
+43824,
+43854,
+43854,
+43861,
+43861,
+43868,
43888,
-43895,
-43911,
-43943,
-43963,
-43963,
-43998,
-43998,
-44033,
-44033,
-44047,
-44064,
-44077,
-44077,
-44101,
-44112,
-44112,
-44112,
-44130,
-44130,
-44130,
-44155,
-44166,
-44166,
-44166,
-44184,
-44184,
-44268,
-44268,
-44291,
-44317,
-44326,
-44353,
-44353,
-44392,
-44408,
-44444,
-44444,
-44444,
-44444,
-44444,
-44451,
-44483,
+43888,
+43893,
+43900,
+43917,
+43939,
+43939,
+43939,
+43946,
+43980,
+43980,
+43996,
+44024,
+44030,
+44036,
+44036,
+44043,
+44043,
+44055,
+44071,
+44087,
+44087,
+44097,
+44097,
+44097,
+44110,
+44158,
+44164,
+44171,
+44208,
+44208,
+44235,
+44241,
+44241,
+44241,
+44241,
+44241,
+44251,
+44251,
+44275,
+44275,
+44300,
+44307,
+44307,
+44314,
+44321,
+44332,
+44377,
+44400,
+44426,
+44432,
+44446,
+44446,
+44476,
+44476,
+44486,
+44486,
+44486,
+44486,
44502,
-44525,
-44525,
-44570,
-44606,
-44606,
-44658,
-44677,
-44677,
-44711,
-44711,
-44711,
-44711,
-44711,
-44742,
-44742,
-44742,
-44749,
-44763,
-44804,
+44512,
+44522,
+44535,
+44550,
+44574,
+44597,
+44605,
+44616,
+44616,
+44622,
+44622,
+44628,
+44636,
+44636,
+44636,
+44643,
+44643,
+44662,
+44669,
+44701,
+44720,
+44720,
+44727,
+44750,
+44754,
+44772,
+44772,
44804,
-44854,
-44866,
-44866,
-44884,
-44884,
-44894,
-44909,
-44916,
-44916,
-44923,
-44938,
-44958,
-44965,
-45004,
-45016,
-45030,
-45050,
-45060,
-45060,
-45066,
-45073,
-45077,
-45084,
-45105,
-45105,
-45105,
-45105,
-45105,
-45112,
-45112,
-45130,
-45139,
-45159,
-45166,
-45208,
-45223,
-45251,
+44819,
+44835,
+44859,
+44859,
+44883,
+44887,
+44898,
+44910,
+44922,
+44939,
+44939,
+44939,
+44945,
+44945,
+44945,
+44952,
+44952,
+44952,
+44991,
+45023,
+45054,
+45071,
+45071,
+45071,
+45080,
+45102,
+45102,
+45102,
+45128,
+45132,
+45162,
+45175,
+45193,
+45199,
+45199,
+45206,
+45221,
+45228,
+45243,
45258,
-45275,
-45291,
+45276,
+45280,
45291,
45310,
-45323,
-45351,
-45358,
-45368,
-45399,
-45413,
-45437,
-45437,
-45446,
-45473,
-45481,
-45488,
-45488,
-45488,
-45488,
-45501,
-45526,
-45544,
-45589,
-45612,
-45632,
-45632,
-45658,
-45672,
-45715,
-45721,
-45721,
-45727,
-45734,
-45759,
-45810,
-45838,
-45903,
-45915,
-45952,
-45959,
-45978,
-45991,
-45997,
-45997,
-45997,
-45997,
-46020,
-46020,
-46038,
-46070,
-46076,
-46076,
-46076,
-46093,
-46112,
-46135,
-46152,
-46152,
-46182,
-46182,
-46182,
-46182,
-46182,
-46182,
-46182,
-46182,
-46198,
-46222,
-46222,
-46229,
-46229,
-46240,
-46261,
-46273,
-46273,
-46288,
-46288,
-46288,
-46314,
-46314,
-46314,
-46327,
-46327,
-46327,
-46362,
-46377,
-46377,
-46383,
-46383,
-46383,
+45331,
+45338,
+45346,
+45346,
+45383,
+45383,
+45390,
+45416,
+45442,
+45449,
+45477,
+45484,
+45503,
+45503,
+45503,
+45510,
+45547,
+45561,
+45571,
+45578,
+45585,
+45617,
+45617,
+45617,
+45617,
+45676,
+45700,
+45730,
+45745,
+45745,
+45765,
+45796,
+45803,
+45829,
+45833,
+45843,
+45851,
+45886,
+45886,
+45909,
+45916,
+45916,
+45916,
+45923,
+45963,
+45984,
+45984,
+46004,
+46022,
+46052,
+46090,
+46113,
+46119,
+46138,
+46166,
+46166,
+46179,
+46196,
+46224,
+46224,
+46224,
+46224,
+46224,
+46234,
+46234,
+46289,
+46309,
+46328,
+46334,
+46357,
+46369,
46383,
-46391,
-46391,
-46400,
-46400,
-46400,
-46404,
-46433,
-46450,
-46475,
-46493,
-46515,
-46521,
-46521,
-46521,
-46546,
-46567,
-46567,
-46567,
+46390,
+46398,
+46398,
+46412,
+46443,
+46457,
+46476,
+46476,
+46484,
+46484,
+46484,
+46504,
+46522,
+46522,
+46522,
+46522,
+46538,
+46538,
+46544,
+46544,
46582,
46582,
46582,
-46603,
-46603,
-46603,
-46620,
-46653,
-46653,
-46659,
-46690,
-46700,
-46700,
-46719,
-46736,
-46736,
-46763,
-46763,
-46763,
-46785,
-46785,
+46596,
+46596,
+46613,
+46621,
+46628,
+46643,
+46657,
+46665,
+46699,
+46707,
+46716,
+46720,
+46747,
+46762,
+46762,
+46770,
46796,
-46811,
-46811,
-46819,
-46819,
-46819,
-46855,
-46855,
-46874,
-46874,
-46893,
+46806,
+46816,
+46827,
+46827,
+46827,
+46844,
+46857,
+46867,
+46881,
+46896,
+46903,
+46903,
+46903,
46911,
-46931,
-46931,
-46931,
-46941,
-46954,
-46961,
-46967,
-46996,
-47009,
-47009,
-47046,
-47046,
-47046,
-47046,
-47046,
-47074,
+46932,
+46947,
+46964,
+46964,
+46984,
+47006,
+47013,
+47013,
+47013,
+47027,
+47027,
+47069,
+47077,
+47077,
+47077,
+47083,
47093,
-47100,
-47121,
-47130,
-47168,
-47168,
-47168,
-47168,
-47168,
-47168,
-47209,
-47243,
-47282,
+47093,
+47106,
+47181,
+47195,
+47195,
+47195,
+47237,
+47273,
47295,
47295,
-47302,
-47336,
-47346,
-47346,
-47353,
-47353,
-47359,
-47366,
-47373,
-47380,
-47419,
-47434,
-47441,
-47458,
-47486,
-47486,
-47486,
-47493,
-47512,
-47519,
-47519,
-47519,
-47519,
-47536,
-47550,
-47575,
-47601,
-47601,
-47612,
-47619,
-47643,
-47655,
-47655,
-47670,
-47670,
-47683,
-47690,
-47690,
-47727,
-47740,
-47747,
-47755,
-47771,
-47771,
-47806,
-47806,
-47813,
-47819,
-47819,
-47819,
-47826,
-47851,
-47858,
-47865,
-47890,
-47912,
+47301,
+47343,
+47349,
+47369,
+47393,
+47409,
+47414,
+47428,
+47428,
+47454,
+47499,
+47511,
+47529,
+47535,
+47535,
+47535,
+47535,
+47535,
+47547,
+47572,
+47587,
+47587,
+47587,
+47625,
+47625,
+47645,
+47664,
+47664,
+47696,
+47704,
+47731,
+47769,
+47790,
+47799,
+47799,
+47816,
+47816,
+47833,
+47833,
+47833,
+47839,
+47856,
+47877,
+47877,
47918,
-47939,
-47955,
-47996,
-48029,
-48029,
-48029,
-48050,
-48050,
-48068,
-48092,
-48106,
-48106,
-48117,
-48117,
-48134,
-48134,
-48134,
-48134,
-48134,
-48134,
-48134,
-48134,
-48143,
-48158,
-48192,
-48199,
-48199,
-48206,
-48234,
-48270,
-48277,
-48322,
-48337,
-48337,
-48337,
-48344,
-48351,
-48364,
-48371,
-48371,
-48378,
-48395,
-48402,
-48402,
-48402,
-48412,
-48421,
-48421,
-48445,
-48452,
+47948,
+47956,
+47978,
+47978,
+47991,
+47991,
+47991,
+48008,
+48008,
+48019,
+48031,
+48045,
+48045,
+48045,
+48045,
+48066,
+48066,
+48070,
+48090,
+48119,
+48136,
+48142,
+48149,
+48149,
+48160,
+48160,
+48160,
+48160,
+48172,
+48172,
+48185,
+48196,
+48196,
+48218,
+48218,
+48225,
+48225,
+48225,
+48225,
+48235,
+48249,
+48249,
+48258,
+48258,
+48284,
+48284,
+48308,
+48326,
+48341,
+48370,
+48370,
+48394,
+48429,
+48429,
+48437,
+48442,
48452,
48452,
-48482,
-48500,
-48542,
-48542,
-48559,
-48579,
-48611,
-48611,
-48628,
-48651,
-48657,
-48657,
-48676,
-48676,
-48676,
-48676,
-48683,
-48689,
-48722,
-48729,
-48729,
-48736,
-48749,
-48765,
+48456,
+48479,
+48479,
+48485,
+48492,
+48498,
+48498,
+48498,
+48523,
+48560,
+48581,
+48597,
+48597,
+48597,
+48624,
+48624,
+48652,
+48665,
+48705,
+48705,
+48712,
+48726,
+48726,
+48726,
+48760,
+48760,
+48770,
+48770,
+48770,
+48770,
+48770,
+48770,
+48770,
+48770,
+48770,
+48770,
+48779,
+48786,
+48786,
48786,
-48802,
-48802,
-48802,
-48832,
-48853,
-48869,
-48888,
-48888,
-48895,
-48922,
-48922,
-48922,
-48922,
-48943,
-48943,
-48956,
-48973,
-48973,
-48986,
-48992,
-49006,
-49045,
-49064,
+48797,
+48811,
+48820,
+48820,
+48820,
+48836,
+48836,
+48842,
+48871,
+48894,
+48894,
+48894,
+48894,
+48894,
+48911,
+48935,
+48935,
+48935,
+48968,
+48979,
+48994,
+49007,
+49019,
+49040,
+49051,
49071,
-49080,
-49116,
-49123,
-49130,
-49137,
-49172,
-49193,
-49193,
-49193,
-49193,
-49210,
-49217,
-49224,
-49261,
-49261,
-49285,
-49310,
-49327,
-49343,
-49350,
-49371,
-49371,
+49079,
+49079,
+49096,
+49106,
+49106,
+49128,
+49138,
+49138,
+49138,
+49150,
+49150,
+49159,
+49219,
+49262,
+49262,
+49300,
+49300,
+49300,
+49331,
+49337,
+49347,
+49347,
+49347,
+49368,
+49368,
+49368,
+49368,
+49368,
49378,
-49385,
-49392,
-49392,
-49428,
-49448,
-49464,
-49512,
-49542,
-49549,
-49556,
-49562,
-49594,
-49623,
-49630,
-49674,
-49674,
-49699,
+49378,
+49378,
+49387,
+49403,
+49412,
+49412,
+49422,
+49441,
+49474,
+49498,
+49498,
+49498,
+49514,
+49514,
+49524,
+49524,
+49535,
+49535,
+49546,
+49546,
+49551,
+49602,
+49602,
+49609,
+49613,
+49624,
+49624,
+49624,
+49624,
+49641,
+49648,
+49648,
+49648,
+49675,
+49692,
+49692,
+49709,
+49724,
49739,
-49752,
-49775,
-49775,
-49775,
-49793,
-49803,
-49819,
-49819,
-49819,
-49828,
-49846,
+49770,
+49770,
+49770,
+49770,
+49770,
+49786,
+49825,
+49825,
+49825,
+49834,
+49853,
+49853,
49860,
-49860,
-49867,
-49888,
-49895,
-49909,
-49941,
-49947,
-49947,
-50014,
-50030,
-50036,
-50036,
-50036,
-50049,
-50071,
-50097,
-50136,
-50143,
-50158,
-50158,
-50165,
-50165,
-50183,
-50196,
+49875,
+49891,
+49914,
+49924,
+49924,
+49939,
+49949,
+49960,
+49970,
+49970,
+49980,
+49994,
+50001,
+50013,
+50039,
+50039,
+50039,
+50065,
+50081,
+50114,
+50142,
+50169,
+50180,
+50180,
50203,
50203,
-50210,
-50237,
-50248,
+50220,
+50220,
+50229,
+50236,
+50236,
50266,
-50280,
-50293,
-50307,
+50275,
+50295,
50307,
-50307,
-50307,
-50346,
+50340,
50359,
-50390,
-50412,
-50440,
-50440,
-50440,
-50446,
-50462,
-50462,
-50478,
-50486,
-50486,
-50494,
-50498,
-50552,
-50569,
-50569,
-50569,
-50569,
-50569,
-50569,
-50591,
-50604,
-50604,
-50611,
-50618,
-50642,
-50684,
-50720,
-50720,
-50750,
-50754,
-50754,
-50784,
-50784,
-50817,
-50832,
-50858,
-50874,
-50874,
-50919,
-50955,
-50955,
-50962,
-50962,
-50992,
-51013,
-51013,
-51020,
-51046,
-51056,
-51115,
-51122,
-51152,
-51189,
-51189,
-51196,
-51203,
-51203,
-51217,
-51217,
-51217,
-51265,
-51304,
-51327,
-51347,
-51360,
-51371,
-51386,
-51386,
-51411,
-51452,
-51452,
-51452,
-51459,
-51484,
-51491,
-51491,
-51491,
-51491,
-51510,
-51510,
+50359,
+50374,
+50374,
+50387,
+50387,
+50387,
+50387,
+50387,
+50387,
+50409,
+50414,
+50423,
+50423,
+50449,
+50449,
+50449,
+50459,
+50482,
+50499,
+50499,
+50514,
+50522,
+50522,
+50522,
+50540,
+50558,
+50565,
+50574,
+50574,
+50620,
+50620,
+50620,
+50624,
+50633,
+50633,
+50653,
+50665,
+50673,
+50673,
+50700,
+50700,
+50700,
+50713,
+50713,
+50713,
+50740,
+50748,
+50767,
+50767,
+50767,
+50775,
+50781,
+50789,
+50803,
+50803,
+50803,
+50803,
+50803,
+50810,
+50810,
+50821,
+50827,
+50839,
+50876,
+50893,
+50893,
+50910,
+50942,
+50960,
+50960,
+50984,
+50984,
+50991,
+50991,
+51025,
+51043,
+51058,
+51073,
+51077,
+51077,
+51092,
+51092,
+51113,
+51144,
+51160,
+51172,
+51188,
+51198,
+51198,
+51208,
+51221,
+51231,
+51235,
+51235,
+51255,
+51271,
+51288,
+51288,
+51288,
+51307,
+51307,
+51318,
+51318,
+51318,
+51338,
+51338,
+51349,
+51349,
+51364,
+51375,
+51375,
+51416,
+51416,
+51416,
+51416,
+51416,
+51437,
+51437,
+51457,
+51470,
+51470,
+51470,
+51486,
+51501,
51521,
-51565,
-51581,
-51588,
-51601,
-51620,
-51620,
-51635,
-51666,
-51683,
-51690,
-51718,
-51718,
-51718,
-51757,
-51779,
-51779,
-51779,
-51779,
-51779,
-51779,
-51809,
-51814,
-51820,
-51842,
-51886,
-51900,
-51900,
-51900,
-51900,
-51900,
-51910,
-51927,
-51927,
-51945,
-51962,
-51968,
-51974,
-51974,
-51980,
-51980,
-51980,
-51980,
-52001,
-52011,
-52011,
-52025,
-52025,
-52025,
-52039,
-52071,
-52096,
-52096,
-52096,
-52096,
-52102,
-52119,
-52119,
-52119,
-52119,
-52125,
-52153,
-52164,
-52164,
-52164,
-52195,
-52207,
-52223,
-52255,
+51531,
+51548,
+51548,
+51558,
+51576,
+51611,
+51611,
+51611,
+51632,
+51670,
+51682,
+51695,
+51717,
+51717,
+51717,
+51717,
+51732,
+51743,
+51743,
+51758,
+51765,
+51765,
+51782,
+51812,
+51812,
+51812,
+51812,
+51828,
+51828,
+51828,
+51845,
+51845,
+51851,
+51851,
+51908,
+51923,
+51923,
+51923,
+51932,
+51953,
+51953,
+51969,
+52002,
+52002,
+52056,
+52072,
+52072,
+52072,
+52092,
+52137,
+52145,
+52145,
+52145,
+52163,
+52183,
+52219,
+52219,
+52227,
+52256,
+52267,
+52267,
+52276,
52276,
52276,
-52299,
-52305,
-52305,
-52320,
-52320,
-52359,
-52373,
-52389,
-52389,
-52396,
-52401,
-52401,
+52295,
+52363,
+52375,
+52375,
+52395,
+52395,
52414,
52414,
-52420,
-52432,
-52432,
-52432,
-52449,
-52449,
-52456,
-52466,
-52466,
+52414,
+52429,
+52429,
+52429,
+52445,
+52471,
52471,
52471,
-52478,
-52478,
-52478,
-52507,
-52507,
-52507,
-52519,
-52537,
-52537,
-52537,
-52537,
-52556,
-52569,
-52569,
-52569,
-52585,
-52594,
-52594,
-52631,
-52652,
-52680,
-52695,
-52710,
-52745,
-52745,
-52745,
-52758,
-52764,
+52471,
+52492,
+52492,
+52510,
+52530,
+52530,
+52530,
+52538,
+52555,
+52555,
+52579,
+52587,
+52587,
+52587,
+52644,
+52644,
+52644,
+52644,
+52644,
+52654,
+52654,
+52667,
+52690,
+52690,
+52702,
+52727,
+52727,
+52755,
+52773,
+52778,
52778,
-52789,
-52805,
-52805,
-52821,
-52842,
-52855,
-52855,
-52896,
-52896,
-52928,
-52928,
-52941,
-52947,
-52947,
-52960,
-52960,
-52990,
-53004,
+52790,
+52810,
+52826,
+52826,
+52826,
+52826,
+52834,
+52848,
+52848,
+52848,
+52856,
+52875,
+52885,
+52895,
+52895,
+52895,
+52895,
+52908,
+52908,
+52959,
+52963,
+52963,
+52988,
+52993,
53014,
-53020,
-53020,
-53020,
-53020,
-53034,
-53073,
-53084,
-53084,
-53100,
-53100,
-53100,
-53115,
-53123,
-53148,
-53178,
-53188,
-53202,
-53202,
-53218,
-53218,
-53228,
-53251,
-53256,
-53262,
-53262,
-53262,
-53282,
-53299,
+53014,
+53056,
+53080,
+53111,
+53111,
+53118,
+53118,
+53134,
+53161,
+53161,
+53161,
+53172,
+53172,
+53194,
+53208,
+53208,
+53208,
+53233,
+53233,
+53233,
+53240,
+53240,
+53247,
+53274,
+53296,
+53321,
+53321,
+53338,
53338,
-53358,
-53358,
-53431,
-53436,
-53436,
-53456,
-53504,
-53504,
-53517,
-53531,
-53574,
-53583,
-53619,
-53631,
-53631,
-53631,
-53631,
-53640,
-53670,
-53670,
-53718,
-53718,
+53355,
+53362,
+53369,
+53376,
+53393,
+53393,
+53393,
+53393,
+53400,
+53412,
+53426,
+53437,
+53460,
+53467,
+53509,
+53509,
+53509,
+53532,
+53532,
+53542,
+53588,
+53593,
+53600,
+53600,
+53615,
+53615,
+53615,
+53630,
+53637,
+53637,
+53653,
+53667,
+53674,
+53674,
+53681,
+53681,
+53681,
53728,
-53733,
-53749,
-53774,
-53774,
-53811,
-53811,
+53735,
+53740,
+53748,
+53772,
+53783,
+53791,
+53791,
+53791,
+53791,
+53791,
+53804,
53822,
-53835,
-53842,
-53882,
+53831,
+53861,
+53861,
+53861,
+53879,
+53893,
+53899,
+53899,
+53899,
53903,
-53919,
-53932,
-53942,
-53942,
-53951,
-53978,
-54001,
-54015,
-54015,
-54015,
-54015,
-54024,
-54024,
-54031,
-54067,
-54081,
-54081,
-54081,
-54086,
-54086,
-54105,
-54132,
-54132,
-54132,
+53903,
+53914,
+53924,
+53924,
+53924,
+53924,
+53946,
+53975,
+53988,
+53988,
+54008,
+54008,
+54016,
+54033,
+54054,
+54094,
+54123,
54140,
54140,
-54178,
-54178,
-54178,
-54192,
-54192,
-54209,
-54231,
-54258,
+54147,
+54147,
+54180,
+54180,
+54198,
+54198,
+54217,
+54217,
+54234,
+54241,
+54251,
54258,
-54280,
-54287,
-54293,
-54308,
-54308,
-54315,
+54300,
+54300,
+54307,
+54307,
54332,
54332,
-54346,
-54379,
-54379,
-54421,
-54444,
-54467,
-54481,
-54481,
-54497,
-54529,
-54555,
-54555,
-54597,
-54614,
-54620,
-54635,
-54635,
-54635,
-54652,
-54664,
-54664,
-54724,
-54752,
-54752,
-54762,
-54778,
-54788,
-54788,
-54796,
-54835,
-54848,
-54848,
-54864,
-54914,
-54940,
-54940,
-54945,
-54957,
-54966,
-54966,
-54966,
-54966,
-54988,
-54988,
-54988,
-55008,
-55008,
-55008,
-55014,
-55014,
-55030,
-55044,
+54339,
+54356,
+54370,
+54380,
+54380,
+54380,
+54380,
+54380,
+54380,
+54384,
+54405,
+54438,
+54459,
+54480,
+54480,
+54487,
+54494,
+54528,
+54538,
+54552,
+54552,
+54552,
+54552,
+54568,
+54585,
+54595,
+54624,
+54624,
+54637,
+54644,
+54644,
+54644,
+54644,
+54657,
+54657,
+54677,
+54677,
+54684,
+54684,
+54697,
+54697,
+54712,
+54739,
+54749,
+54773,
+54793,
+54802,
+54827,
+54834,
+54841,
+54841,
+54873,
+54882,
+54901,
+54941,
+54948,
+54963,
+54970,
+54986,
+54986,
+55001,
+55029,
+55035,
+55065,
55072,
-55072,
-55102,
-55102,
-55102,
-55130,
-55137,
-55137,
-55137,
-55137,
-55137,
-55156,
-55168,
-55168,
-55181,
-55226,
-55226,
-55233,
-55246,
-55246,
-55256,
-55256,
-55261,
-55261,
-55261,
-55282,
-55298,
-55314,
-55321,
-55330,
-55339,
+55089,
+55111,
+55124,
+55143,
+55143,
+55143,
+55150,
+55150,
+55189,
+55196,
+55216,
+55245,
+55252,
+55252,
+55272,
+55272,
+55332,
55339,
-55350,
-55368,
-55381,
-55401,
-55412,
-55412,
-55412,
-55412,
-55412,
-55430,
-55440,
-55461,
-55461,
-55474,
-55518,
-55537,
-55537,
-55553,
-55571,
-55571,
-55615,
-55622,
-55622,
-55622,
-55634,
-55650,
-55650,
-55685,
-55691,
-55691,
-55691,
-55697,
-55734,
-55734,
+55363,
+55396,
+55410,
+55433,
+55447,
+55454,
+55458,
+55458,
+55487,
+55487,
+55497,
+55497,
+55497,
+55544,
+55544,
+55548,
+55562,
+55568,
+55568,
+55568,
+55568,
+55585,
+55585,
+55585,
+55604,
+55604,
+55619,
+55625,
+55632,
+55632,
+55671,
+55671,
+55684,
+55684,
+55684,
+55709,
+55717,
+55727,
55734,
+55769,
55801,
-55813,
-55844,
-55857,
-55863,
-55876,
-55890,
-55924,
+55815,
+55837,
+55848,
+55855,
+55871,
+55885,
+55905,
+55926,
+55926,
55942,
-55949,
-55970,
-55970,
-55970,
-55970,
-55990,
-56006,
-56006,
-56029,
-56038,
-56050,
-56057,
-56057,
-56073,
-56073,
-56073,
-56073,
-56073,
-56085,
-56085,
-56108,
-56108,
-56108,
-56141,
-56155,
-56168,
+55942,
+55973,
+55973,
+55973,
+55973,
+55979,
+56020,
+56033,
+56033,
+56047,
+56054,
+56072,
+56089,
+56096,
+56103,
+56130,
+56146,
+56146,
+56153,
56179,
-56186,
-56204,
-56245,
-56257,
-56257,
-56257,
-56274,
-56304,
-56341,
-56341,
-56341,
-56367,
-56405,
-56405,
-56405,
-56405,
-56443,
-56443,
-56463,
-56482,
-56492,
-56522,
-56539,
-56539,
-56539,
-56546,
-56553,
-56586,
-56605,
-56612,
-56631,
-56631,
-56631,
-56649,
-56649,
-56670,
-56684,
-56684,
-56733,
-56769,
-56769,
-56779,
-56807,
-56823,
-56839,
-56870,
-56870,
-56870,
-56870,
-56886,
-56886,
-56886,
-56886,
-56886,
-56908,
-56908,
-56964,
-56964,
-56970,
-56982,
-57001,
-57001,
-57001,
-57010,
-57032,
-57039,
-57039,
-57070,
-57080,
-57088,
-57095,
-57095,
-57112,
-57112,
-57131,
-57141,
-57161,
-57193,
-57193,
-57204,
-57221,
-57221,
-57221,
-57221,
-57221,
-57231,
-57241,
-57271,
-57298,
-57310,
-57321,
-57321,
-57321,
-57336,
-57336,
-57342,
-57349,
-57349,
-57349,
-57349,
-57349,
-57349,
-57366,
-57397,
-57406,
-57437,
-57437,
-57456,
-57511,
-57527,
-57548,
-57564,
-57564,
-57564,
-57586,
-57586,
-57611,
-57627,
-57649,
-57656,
-57708,
-57708,
-57708,
-57708,
-57728,
-57728,
-57747,
-57747,
-57747,
-57756,
-57772,
-57784,
-57784,
-57784,
-57806,
-57854,
-57861,
-57876,
-57882,
-57882,
-57882,
-57890,
-57911,
-57911,
-57911,
-57918,
-57918,
-57936,
-57936,
-57936,
-57936,
-57942,
-57942,
-57942,
-57942,
-57947,
-57947,
-57947,
-57954,
+56183,
+56202,
+56216,
+56226,
+56260,
+56287,
+56300,
+56307,
+56345,
+56359,
+56376,
+56390,
+56410,
+56417,
+56435,
+56442,
+56462,
+56462,
+56480,
+56514,
+56521,
+56521,
+56521,
+56528,
+56558,
+56565,
+56626,
+56646,
+56685,
+56692,
+56718,
+56741,
+56741,
+56768,
+56804,
+56821,
+56821,
+56851,
+56904,
+56911,
+56918,
+56925,
+56940,
+56962,
+56977,
+56984,
+56999,
+57019,
+57019,
+57019,
+57037,
+57049,
+57049,
+57083,
+57083,
+57115,
+57115,
+57152,
+57178,
+57178,
+57209,
+57223,
+57244,
+57244,
+57244,
+57244,
+57273,
+57280,
+57287,
+57287,
+57332,
+57368,
+57368,
+57375,
+57375,
+57375,
+57412,
+57412,
+57418,
+57433,
+57433,
+57452,
+57462,
+57462,
+57469,
+57476,
+57485,
+57499,
+57544,
+57551,
+57551,
+57561,
+57568,
+57577,
+57593,
+57593,
+57606,
+57606,
+57633,
+57633,
+57644,
+57644,
+57659,
+57659,
+57689,
+57710,
+57718,
+57725,
+57725,
+57725,
+57732,
+57732,
+57732,
+57732,
+57745,
+57767,
+57774,
+57809,
+57809,
+57809,
+57829,
+57880,
+57915,
+57927,
57954,
-57978,
-57978,
-58000,
-58006,
-58013,
-58013,
-58013,
-58027,
-58076,
-58093,
-58093,
-58093,
-58099,
-58099,
-58107,
-58118,
-58158,
-58158,
-58173,
-58181,
-58187,
-58194,
-58194,
-58215,
-58240,
-58240,
-58240,
-58240,
-58256,
-58256,
-58256,
-58263,
-58282,
-58290,
-58290,
+58002,
+58009,
+58009,
+58021,
+58035,
+58042,
+58049,
+58069,
+58084,
+58105,
+58105,
+58122,
+58122,
+58140,
+58177,
+58195,
+58199,
+58220,
+58239,
+58252,
+58252,
+58252,
+58291,
58312,
58312,
-58312,
-58317,
-58317,
-58317,
58333,
-58345,
-58345,
-58361,
-58361,
-58387,
-58414,
-58438,
+58351,
+58398,
+58409,
+58409,
+58409,
+58409,
+58416,
+58446,
58446,
-58467,
-58467,
-58482,
-58482,
-58512,
-58512,
-58512,
-58520,
-58542,
-58569,
-58598,
-58607,
-58626,
-58647,
-58666,
-58688,
-58688,
-58688,
-58697,
-58703,
-58703,
-58703,
-58703,
-58721,
-58742,
-58794,
+58453,
+58469,
+58476,
+58509,
+58509,
+58509,
+58509,
+58509,
+58529,
+58555,
+58571,
+58587,
+58587,
+58587,
+58587,
+58594,
+58594,
+58628,
+58635,
+58668,
+58668,
+58693,
+58700,
+58707,
+58761,
+58789,
+58789,
58829,
-58847,
-58866,
-58866,
-58874,
-58880,
-58880,
-58887,
-58887,
-58900,
-58900,
-58900,
-58928,
+58854,
+58854,
+58871,
+58878,
+58886,
+58893,
+58931,
+58938,
58945,
-58945,
-58963,
-58963,
-58963,
-58985,
-58985,
-58991,
-59011,
-59062,
-59062,
-59062,
-59062,
-59062,
-59062,
-59095,
-59115,
-59138,
-59138,
-59138,
-59155,
+58952,
+58970,
+58984,
+59013,
+59038,
+59045,
+59068,
+59077,
+59077,
+59086,
+59086,
+59086,
+59086,
+59112,
+59151,
+59151,
59166,
59166,
-59202,
-59202,
-59202,
-59211,
-59218,
-59224,
+59166,
+59166,
+59166,
+59194,
59224,
59224,
-59242,
-59242,
-59268,
-59268,
-59308,
-59314,
-59326,
-59326,
-59340,
-59340,
-59345,
-59368,
-59373,
-59373,
-59412,
-59412,
-59435,
-59435,
-59435,
-59435,
-59455,
-59466,
+59247,
+59247,
+59247,
+59259,
+59283,
+59283,
+59283,
+59283,
+59290,
+59297,
+59330,
+59349,
+59362,
+59374,
+59437,
+59449,
+59459,
59466,
-59466,
-59481,
-59481,
-59481,
-59481,
-59500,
-59517,
-59517,
-59549,
-59555,
-59555,
-59555,
-59568,
-59595,
-59615,
-59631,
-59631,
-59631,
-59631,
+59488,
+59494,
+59511,
+59537,
+59560,
+59574,
+59598,
+59611,
+59634,
+59634,
59641,
59641,
-59654,
-59678,
-59678,
-59694,
-59700,
-59700,
-59700,
-59700,
-59700,
-59714,
-59721,
+59641,
+59641,
+59652,
+59663,
+59663,
+59679,
+59679,
+59685,
59721,
-59740,
-59749,
-59765,
-59765,
-59784,
-59784,
+59727,
+59727,
+59727,
+59741,
+59760,
+59771,
+59810,
59822,
-59822,
-59867,
-59878,
-59890,
-59890,
-59925,
-59925,
-59925,
-59925,
-59925,
-59942,
-59942,
-59964,
-59964,
-59964,
-59978,
-59985,
-59997,
-60010,
-60010,
-60055,
-60091,
-60101,
-60101,
-60108,
-60114,
-60139,
-60139,
-60139,
-60156,
-60156,
-60156,
-60163,
-60163,
-60169,
-60175,
-60181,
-60181,
-60181,
-60187,
-60195,
-60215,
-60215,
-60215,
-60215,
-60234,
-60234,
-60234,
-60244,
-60284,
-60290,
-60305,
-60305,
-60317,
-60380,
-60388,
-60388,
-60393,
-60400,
-60400,
-60400,
-60400,
-60407,
-60407,
-60407,
-60407,
-60431,
-60450,
-60460,
-60512,
-60522,
-60532,
-60532,
-60552,
-60560,
-60560,
-60560,
-60594,
-60594,
-60607,
-60615,
-60615,
-60615,
-60628,
-60628,
-60649,
-60655,
-60663,
-60675,
+59831,
+59850,
+59856,
+59880,
+59923,
+59966,
+59973,
+59987,
+60006,
+60041,
+60041,
+60070,
+60103,
+60119,
+60131,
+60136,
+60152,
+60184,
+60191,
+60220,
+60228,
+60253,
+60253,
+60280,
+60303,
+60303,
+60310,
+60345,
+60345,
+60372,
+60395,
+60406,
+60430,
+60454,
+60461,
+60486,
+60497,
+60504,
+60511,
+60528,
+60535,
+60535,
+60535,
+60556,
+60556,
+60563,
+60581,
+60599,
+60599,
+60616,
+60636,
+60636,
+60668,
+60690,
+60690,
60697,
-60713,
-60731,
+60716,
+60723,
60747,
-60754,
-60761,
-60761,
-60778,
-60778,
-60778,
-60778,
-60782,
-60793,
-60811,
-60811,
-60848,
-60874,
-60904,
-60904,
-60910,
+60759,
+60771,
+60785,
+60792,
+60792,
+60792,
+60815,
+60829,
+60849,
+60849,
+60849,
+60849,
+60859,
+60870,
+60911,
60929,
-60944,
-60959,
-60977,
-60984,
-60992,
-60992,
-61013,
-61019,
-61045,
-61045,
-61049,
-61061,
-61061,
-61061,
-61061,
-61069,
-61089,
-61115,
-61138,
-61148,
-61165,
-61182,
-61203,
-61241,
-61295,
-61295,
-61295,
-61295,
-61308,
-61335,
-61335,
-61335,
-61335,
-61358,
-61406,
-61410,
+60929,
+60947,
+60947,
+60947,
+60947,
+60947,
+60947,
+60947,
+60974,
+60974,
+60974,
+60991,
+61014,
+61025,
+61025,
+61025,
+61062,
+61074,
+61074,
+61074,
+61080,
+61096,
+61112,
+61112,
+61136,
+61136,
+61136,
+61147,
+61154,
+61154,
+61176,
+61176,
+61199,
+61209,
+61224,
+61224,
+61231,
+61246,
+61246,
+61246,
+61266,
+61266,
+61273,
+61294,
+61312,
+61312,
+61332,
+61332,
+61354,
+61371,
+61378,
+61378,
+61378,
61410,
-61418,
-61418,
-61418,
-61418,
-61424,
-61424,
-61424,
-61424,
-61438,
-61452,
-61497,
-61505,
-61505,
-61529,
-61554,
-61575,
-61581,
-61581,
-61615,
-61623,
+61417,
+61433,
+61433,
+61455,
+61489,
+61489,
+61501,
+61501,
+61513,
+61513,
+61547,
+61547,
+61547,
+61558,
+61558,
+61578,
+61584,
+61598,
+61598,
+61598,
+61598,
+61598,
+61598,
+61627,
+61635,
+61635,
+61635,
61663,
61663,
-61677,
-61677,
-61686,
-61686,
-61698,
-61698,
-61698,
-61705,
-61705,
-61705,
-61705,
-61714,
-61714,
-61745,
-61755,
-61761,
-61779,
-61807,
-61807,
-61817,
-61817,
-61855,
-61872,
-61872,
-61872,
-61872,
-61872,
-61872,
-61878,
-61905,
-61905,
-61905,
-61905,
-61930,
-61943,
-61943,
-61949,
+61669,
+61687,
+61687,
+61687,
+61706,
+61723,
+61803,
+61803,
+61803,
+61813,
+61823,
+61842,
+61842,
+61870,
+61870,
+61926,
+61926,
+61926,
+61944,
61970,
-61982,
-61982,
-61982,
-61982,
-61993,
-61993,
-62005,
-62036,
-62036,
-62055,
-62076,
-62076,
-62091,
+61980,
+61980,
+61980,
+61985,
+62001,
+62007,
+62007,
+62035,
+62052,
+62067,
+62081,
+62081,
+62081,
+62081,
+62087,
+62118,
+62118,
62124,
-62134,
-62134,
-62140,
-62161,
+62142,
+62149,
+62149,
62181,
-62193,
-62236,
-62243,
-62261,
-62261,
-62297,
-62297,
-62308,
-62317,
-62317,
-62331,
-62356,
-62356,
-62417,
-62452,
-62452,
-62452,
-62467,
-62467,
-62467,
-62477,
-62477,
-62486,
-62486,
-62510,
-62510,
-62518,
-62548,
-62548,
-62567,
-62567,
-62567,
-62580,
-62580,
-62580,
-62586,
-62593,
-62613,
-62613,
-62628,
-62669,
-62697,
-62697,
-62697,
+62209,
+62209,
+62209,
+62209,
+62225,
+62225,
+62225,
+62232,
+62268,
+62286,
+62320,
+62320,
+62320,
+62320,
+62320,
+62320,
+62320,
+62335,
+62335,
+62343,
+62379,
+62425,
+62425,
+62442,
+62442,
+62474,
+62484,
+62530,
+62555,
+62555,
+62582,
+62582,
+62608,
+62608,
+62621,
+62621,
+62631,
+62681,
+62681,
62697,
62697,
-62718,
-62718,
-62718,
-62718,
-62718,
-62741,
-62771,
-62797,
-62827,
-62847,
-62847,
-62847,
-62847,
-62901,
-62901,
-62901,
-62901,
-62901,
-62915,
-62915,
-62926,
-62940,
-62940,
-62940,
-62948,
-62954,
-62954,
-62960,
-62975,
-62975,
+62723,
+62753,
+62774,
+62774,
+62774,
+62774,
+62774,
+62820,
+62829,
+62829,
+62837,
+62841,
+62841,
+62849,
+62849,
+62857,
+62857,
+62925,
+62931,
+62931,
+62937,
+62966,
+62978,
62987,
-63007,
-63007,
-63044,
-63044,
-63065,
-63065,
-63081,
-63081,
-63100,
-63120,
-63133,
-63150,
-63150,
-63167,
-63167,
-63187,
-63227,
-63227,
-63227,
-63227,
-63227,
-63227,
-63256,
-63273,
-63277,
-63291,
-63297,
-63297,
-63297,
-63297,
-63315,
-63351,
-63368,
-63397,
-63397,
-63397,
-63397,
-63409,
-63437,
-63437,
-63437,
-63444,
-63444,
-63444,
-63489,
-63522,
-63522,
-63522,
-63538,
-63554,
-63554,
-63554,
-63569,
-63576,
-63576,
-63606,
-63615,
-63626,
-63646,
-63670,
-63670,
-63670,
-63696,
-63710,
-63730,
-63742,
-63757,
-63766,
-63792,
-63807,
-63807,
-63828,
+62993,
+63002,
+63016,
+63052,
+63097,
+63101,
+63123,
+63152,
+63175,
+63202,
+63208,
+63214,
+63214,
+63214,
+63214,
+63231,
+63231,
+63239,
+63286,
+63321,
+63333,
+63333,
+63348,
+63348,
+63348,
+63355,
+63355,
+63359,
+63372,
+63394,
+63394,
+63394,
+63410,
+63410,
+63417,
+63417,
+63417,
+63452,
+63469,
+63501,
+63501,
+63511,
+63520,
+63530,
+63530,
+63530,
+63530,
+63543,
+63558,
+63558,
+63574,
+63574,
+63591,
+63613,
+63625,
+63645,
+63645,
+63663,
+63663,
+63675,
+63687,
+63687,
+63687,
+63687,
+63715,
+63731,
+63737,
+63737,
+63737,
+63741,
+63759,
+63759,
+63759,
+63769,
+63769,
+63769,
+63769,
+63769,
+63794,
+63810,
+63841,
63849,
63849,
-63856,
-63876,
-63910,
+63849,
+63849,
+63849,
+63862,
+63862,
+63862,
+63880,
+63886,
+63901,
+63914,
+63928,
63928,
-63945,
-63961,
-63961,
-63982,
-64042,
-64050,
-64066,
-64071,
-64089,
-64099,
-64099,
-64129,
-64150,
-64150,
-64168,
-64168,
-64168,
-64168,
-64168,
-64214,
-64231,
+63955,
+63962,
+63969,
+63981,
+63981,
+63981,
+63981,
+63981,
+63999,
+64014,
+64014,
+64033,
+64048,
+64048,
+64059,
+64059,
+64059,
+64059,
+64108,
+64108,
+64108,
+64108,
+64117,
+64127,
+64158,
+64158,
+64158,
+64178,
+64190,
+64215,
64241,
64241,
-64250,
-64294,
-64294,
-64294,
-64326,
-64355,
-64366,
-64386,
-64386,
-64386,
-64408,
-64408,
-64426,
-64458,
-64458,
-64492,
-64492,
-64498,
-64537,
-64555,
-64573,
-64573,
-64622,
-64642,
-64651,
-64651,
-64659,
-64659,
-64683,
-64683,
-64683,
-64718,
-64718,
-64735,
-64735,
-64741,
-64741,
-64745,
-64745,
-64771,
-64771,
-64771,
-64771,
-64792,
-64800,
-64825,
-64825,
-64825,
-64850,
-64868,
-64868,
-64886,
-64886,
-64897,
-64897,
-64904,
-64909,
-64945,
-64945,
-64965,
-64982,
-65005,
-65005,
-65044,
-65068,
-65082,
-65090,
-65090,
-65113,
-65125,
-65134,
-65151,
-65172,
-65184,
-65211,
-65211,
-65221,
-65277,
-65284,
-65290,
-65290,
-65290,
+64241,
+64241,
+64263,
+64291,
+64295,
+64295,
+64307,
+64307,
+64307,
+64307,
+64307,
+64307,
+64311,
+64352,
+64352,
+64352,
+64368,
+64368,
+64368,
+64412,
+64412,
+64434,
+64443,
+64443,
+64456,
+64456,
+64456,
+64469,
+64514,
+64514,
+64514,
+64514,
+64514,
+64522,
+64522,
+64522,
+64544,
+64578,
+64608,
+64633,
+64644,
+64672,
+64700,
+64716,
+64742,
+64755,
+64755,
+64765,
+64793,
+64846,
+64856,
+64856,
+64879,
+64885,
+64896,
+64896,
+64924,
+64928,
+64928,
+64938,
+64971,
+64971,
+64977,
+65007,
+65019,
+65019,
+65034,
+65073,
+65073,
+65091,
+65091,
+65091,
+65101,
+65101,
+65101,
+65112,
+65146,
+65167,
+65178,
+65178,
+65192,
+65208,
+65227,
+65227,
+65227,
+65227,
+65227,
+65227,
+65227,
+65227,
+65227,
+65271,
+65286,
65290,
-65301,
-65362,
-65380,
-65380,
-65400,
-65411,
-65437,
-65437,
-65437,
-65450,
-65458,
-65458,
-65458,
-65458,
-65483,
-65483,
-65496,
+65324,
+65348,
+65358,
+65412,
+65412,
+65412,
+65419,
+65423,
+65459,
+65466,
+65489,
65496,
-65528,
-65542,
-65568,
-65568,
-65578,
-65578,
-65578,
-65610,
-65610,
-65618,
-65641,
-65664,
-65664,
-65664,
-65664,
-65693,
-65693,
-65693,
-65716,
-65743,
-65760,
-65760,
-65760,
-65767,
-65771,
-65781,
-65811,
-65816,
-65836,
-65836,
-65857,
-65868,
-65880,
-65880,
-65880,
-65886,
-65904,
-65904,
-65919,
-65919,
-65947,
-65951,
-65958,
-65962,
-65972,
-65989,
-65989,
-65989,
-65993,
-66011,
-66011,
+65502,
+65512,
+65538,
+65547,
+65551,
+65585,
+65601,
+65601,
+65612,
+65632,
+65651,
+65657,
+65657,
+65669,
+65669,
+65675,
+65679,
+65701,
+65701,
+65730,
+65756,
+65756,
+65770,
+65789,
+65789,
+65789,
+65818,
+65818,
+65851,
+65851,
+65865,
+65869,
+65879,
+65879,
+65911,
+65911,
+65917,
+65917,
+65936,
+65959,
+65965,
+65965,
+65965,
+65965,
+65990,
+66019,
66036,
-66073,
-66073,
-66079,
-66095,
-66095,
-66124,
-66136,
-66136,
-66154,
-66172,
-66176,
-66176,
-66185,
-66185,
-66185,
-66198,
-66198,
-66236,
-66250,
-66255,
-66277,
-66277,
-66277,
-66291,
-66313,
-66332,
-66352,
-66352,
-66356,
-66378,
-66384,
-66384,
-66399,
-66399,
-66434,
-66444,
-66444,
-66444,
-66486,
-66501,
-66546,
-66556,
-66589,
-66589,
-66589,
-66596,
-66596,
-66607,
-66618,
-66644,
-66672,
-66672,
-66672,
-66686,
-66686,
-66705,
-66705,
-66705,
-66723,
-66733,
-66733,
-66741,
-66764,
-66785,
-66810,
-66810,
-66841,
-66841,
-66841,
-66849,
-66857,
-66857,
-66857,
-66867,
-66885,
-66885,
+66068,
+66076,
+66090,
+66108,
+66130,
+66130,
+66166,
+66184,
+66204,
+66204,
+66217,
+66217,
+66228,
+66228,
+66228,
+66247,
+66247,
+66278,
+66311,
+66316,
+66335,
+66350,
+66368,
+66382,
+66382,
+66382,
+66382,
+66382,
+66382,
+66386,
+66402,
+66408,
+66408,
+66418,
+66422,
+66470,
+66470,
+66491,
+66521,
+66548,
+66548,
+66555,
+66574,
+66581,
+66581,
+66593,
+66593,
+66600,
+66610,
+66636,
+66657,
+66675,
+66675,
+66675,
+66687,
+66721,
+66751,
+66760,
+66781,
+66798,
+66798,
+66811,
+66811,
+66811,
+66819,
+66819,
+66830,
+66830,
+66853,
+66869,
66893,
-66899,
-66919,
-66927,
-66944,
-66954,
-66954,
-66961,
-66993,
-66993,
-67008,
-67022,
-67064,
-67068,
-67089,
-67089,
-67093,
-67106,
+66893,
+66893,
+66893,
+66900,
+66918,
+66940,
+66950,
+66959,
+66959,
+66965,
+67016,
+67023,
+67047,
+67047,
+67062,
+67069,
67106,
-67121,
-67121,
-67125,
67136,
-67145,
-67145,
-67161,
-67161,
-67161,
-67191,
-67191,
-67191,
-67200,
-67200,
-67209,
-67209,
-67209,
-67209,
-67223,
-67223,
-67223,
-67223,
-67223,
-67223,
-67223,
-67237,
-67237,
-67287,
-67287,
-67294,
-67294,
-67294,
-67294,
-67294,
+67167,
+67177,
+67212,
+67230,
+67230,
+67249,
+67279,
+67285,
67312,
-67338,
-67338,
-67338,
-67354,
-67376,
-67387,
-67392,
-67407,
-67407,
-67432,
-67472,
-67483,
-67526,
-67526,
+67330,
+67351,
+67358,
+67374,
+67394,
+67441,
+67473,
+67513,
+67524,
+67524,
+67545,
+67565,
+67573,
67584,
-67605,
-67625,
-67633,
-67649,
-67659,
-67659,
-67659,
-67659,
-67675,
-67712,
-67746,
-67764,
-67764,
-67795,
-67795,
-67799,
-67808,
-67808,
-67817,
-67829,
-67829,
-67836,
-67856,
-67874,
-67874,
-67884,
-67907,
-67907,
-67912,
-67912,
-67936,
-67936,
-67951,
-67969,
-67975,
-67984,
-67984,
-67984,
-67984,
-67984,
-68010,
-68010,
-68016,
-68037,
-68044,
-68044,
-68053,
-68072,
-68078,
-68078,
-68078,
-68078,
-68078,
-68078,
-68091,
-68091,
-68091,
+67619,
+67637,
+67637,
+67657,
+67684,
+67684,
+67684,
+67684,
+67684,
+67713,
+67721,
+67733,
+67733,
+67733,
+67739,
+67745,
+67745,
+67750,
+67750,
+67787,
+67787,
+67806,
+67827,
+67837,
+67872,
+67872,
+67872,
+67898,
+67916,
+67922,
+67922,
+67944,
+67953,
+67996,
+67996,
+68023,
+68023,
+68038,
+68038,
+68038,
+68074,
68100,
68100,
-68110,
-68117,
68125,
68125,
-68125,
-68157,
+68141,
68157,
68157,
-68173,
-68173,
-68218,
-68218,
-68248,
-68288,
-68288,
-68288,
-68310,
-68310,
-68343,
-68343,
-68382,
-68402,
-68402,
-68427,
-68450,
-68461,
-68468,
-68493,
-68542,
-68542,
-68573,
-68591,
-68591,
-68591,
-68598,
-68616,
-68634,
-68634,
-68634,
-68634,
-68634,
-68663,
-68682,
-68695,
-68711,
-68733,
-68769,
-68769,
-68804,
-68804,
-68815,
-68821,
-68842,
-68842,
-68868,
-68868,
-68868,
-68868,
-68868,
-68868,
-68868,
-68884,
-68884,
-68884,
-68888,
-68888,
-68888,
-68888,
-68926,
-68926,
-68940,
-68962,
-68962,
-68979,
-68998,
-69014,
-69020,
-69020,
-69039,
-69039,
-69045,
-69073,
-69073,
-69073,
-69073,
-69077,
-69077,
-69077,
-69093,
-69099,
-69099,
-69099,
-69107,
-69138,
-69138,
-69146,
-69146,
-69180,
-69180,
-69213,
-69222,
-69222,
-69245,
+68177,
+68216,
+68221,
+68256,
+68256,
+68262,
+68285,
+68285,
+68301,
+68301,
+68301,
+68312,
+68312,
+68332,
+68332,
+68381,
+68403,
+68409,
+68432,
+68432,
+68445,
+68465,
+68471,
+68471,
+68488,
+68515,
+68515,
+68539,
+68539,
+68552,
+68569,
+68594,
+68594,
+68609,
+68648,
+68704,
+68710,
+68730,
+68737,
+68737,
+68750,
+68760,
+68766,
+68794,
+68794,
+68794,
+68794,
+68794,
+68810,
+68810,
+68825,
+68839,
+68839,
+68860,
+68893,
+68893,
+68893,
+68922,
+68922,
+68922,
+68927,
+68927,
+68927,
+68944,
+68944,
+68944,
+68944,
+68944,
+68944,
+68960,
+68970,
+68985,
+69001,
+69001,
+69007,
+69028,
+69028,
+69042,
+69042,
+69048,
+69076,
+69076,
+69095,
+69124,
+69131,
+69155,
+69162,
+69162,
+69176,
+69184,
+69184,
+69184,
+69184,
+69230,
69254,
-69276,
-69286,
-69286,
-69286,
-69326,
-69344,
-69378,
-69396,
-69396,
-69408,
-69408,
-69445,
-69445,
-69456,
-69469,
-69469,
-69477,
+69261,
+69267,
+69267,
+69273,
+69292,
+69298,
+69335,
+69356,
+69356,
+69361,
+69367,
+69367,
+69367,
+69367,
+69382,
+69402,
+69421,
+69434,
+69455,
+69467,
+69479,
69485,
-69513,
-69526,
-69526,
-69536,
-69569,
-69569,
-69614,
-69632,
+69493,
+69505,
+69511,
+69556,
+69586,
+69595,
+69605,
+69605,
+69605,
+69621,
+69634,
+69634,
+69648,
+69648,
+69652,
+69652,
69658,
-69668,
-69668,
-69693,
-69732,
-69740,
-69756,
-69772,
-69772,
-69779,
-69779,
-69779,
-69779,
-69779,
-69800,
-69815,
-69819,
-69819,
-69846,
-69852,
-69941,
-69962,
-69962,
-69962,
-69962,
-69962,
-69962,
-69962,
-69962,
-69982,
-70001,
-70012,
-70031,
-70038,
-70038,
-70046,
-70069,
-70069,
-70094,
-70128,
-70128,
-70128,
-70128,
-70128,
-70128,
-70128,
+69678,
+69706,
+69717,
+69717,
+69731,
+69731,
+69731,
+69731,
+69752,
+69766,
+69775,
+69807,
+69814,
+69814,
+69855,
+69859,
+69868,
+69868,
+69874,
+69874,
+69874,
+69874,
+69874,
+69883,
+69900,
+69900,
+69917,
+69934,
+69949,
+69969,
+69969,
+69996,
+69996,
+70014,
+70056,
+70075,
+70097,
70145,
-70177,
-70177,
-70189,
-70189,
-70189,
-70189,
-70189,
-70219,
-70219,
-70219,
-70219,
-70226,
-70226,
-70245,
-70245,
-70245,
-70245,
-70253,
-70253,
-70253,
-70279,
-70279,
-70279,
-70279,
-70279,
-70279,
-70311,
-70349,
-70356,
-70386,
-70386,
-70424,
-70424,
-70466,
-70466,
-70494,
-70523,
-70541,
-70550,
-70568,
-70583,
-70592,
-70592,
-70592,
-70592,
-70631,
-70656,
-70676,
-70676,
-70696,
-70696,
-70703,
+70145,
+70168,
+70182,
+70193,
+70209,
+70209,
+70233,
+70233,
+70240,
+70240,
+70240,
+70247,
+70280,
+70295,
+70295,
+70321,
+70351,
+70357,
+70364,
+70384,
+70397,
+70409,
+70413,
+70413,
+70421,
+70430,
+70446,
+70446,
+70446,
+70461,
+70461,
+70461,
+70478,
+70478,
+70484,
+70490,
+70490,
+70490,
+70504,
+70509,
+70509,
+70522,
+70522,
+70522,
+70532,
+70532,
+70532,
+70539,
+70546,
+70574,
+70604,
+70634,
+70649,
+70649,
+70663,
+70669,
+70669,
+70681,
+70681,
+70681,
+70698,
+70698,
+70710,
+70710,
+70710,
70710,
70710,
-70716,
-70730,
-70730,
-70769,
-70769,
-70769,
-70786,
-70804,
-70804,
-70821,
-70832,
-70832,
-70844,
-70844,
-70891,
-70891,
+70710,
+70731,
+70744,
+70761,
+70783,
+70783,
+70783,
+70783,
+70790,
+70790,
+70800,
+70835,
+70835,
+70835,
+70851,
+70851,
+70851,
+70856,
+70856,
+70864,
+70864,
+70864,
+70864,
+70879,
+70879,
+70879,
+70898,
+70904,
70904,
-70944,
-70951,
-70951,
-70961,
-70961,
-70990,
-71009,
-71025,
-71032,
-71045,
-71045,
-71052,
-71052,
-71052,
-71052,
-71052,
-71063,
-71073,
-71080,
-71080,
-71119,
-71119,
-71119,
-71155,
-71155,
-71155,
-71155,
-71191,
-71207,
-71207,
-71214,
-71214,
-71214,
-71225,
-71242,
-71248,
-71252,
-71274,
-71307,
+70904,
+70910,
+70910,
+70930,
+70930,
+70941,
+70957,
+70978,
+70988,
+71002,
+71006,
+71020,
+71030,
+71035,
+71056,
+71094,
+71116,
+71116,
+71135,
+71135,
+71147,
+71164,
+71175,
+71195,
+71195,
+71239,
+71257,
+71277,
+71277,
+71291,
+71311,
+71311,
+71311,
71320,
-71356,
-71356,
-71356,
-71374,
-71374,
-71404,
-71428,
-71459,
-71467,
-71478,
-71478,
-71489,
-71495,
-71505,
-71543,
-71543,
-71565,
-71565,
-71578,
-71638,
-71666,
-71673,
-71688,
-71688,
-71688,
-71700,
-71700,
-71730,
-71742,
-71742,
-71742,
-71754,
-71771,
+71324,
+71331,
+71331,
+71331,
+71337,
+71337,
+71349,
+71362,
+71362,
+71362,
+71362,
+71385,
+71400,
+71409,
+71416,
+71416,
+71416,
+71416,
+71434,
+71454,
+71454,
+71466,
+71466,
+71466,
+71466,
+71493,
+71511,
+71511,
+71547,
+71547,
+71581,
+71581,
+71590,
+71590,
+71590,
+71597,
+71613,
+71613,
+71620,
+71641,
+71645,
+71645,
+71659,
+71659,
+71668,
+71675,
+71681,
+71687,
+71687,
+71704,
+71704,
+71704,
+71704,
+71722,
+71722,
+71765,
71789,
-71836,
-71841,
-71852,
-71852,
-71885,
-71896,
-71913,
-71913,
-71971,
-71991,
-71991,
-72030,
-72054,
-72054,
-72101,
-72130,
-72130,
-72148,
+71789,
+71814,
+71825,
+71838,
+71855,
+71855,
+71861,
+71891,
+71891,
+71907,
+71928,
+71928,
+71936,
+71983,
+71983,
+71993,
+71998,
+71998,
+71998,
+72033,
+72052,
+72077,
+72089,
+72098,
+72137,
+72137,
+72144,
+72144,
72148,
-72158,
-72158,
-72158,
-72158,
-72158,
-72158,
-72158,
-72167,
-72184,
-72203,
-72209,
-72209,
-72214,
-72228,
+72166,
+72191,
+72221,
72238,
-72248,
-72248,
-72248,
-72257,
-72289,
-72289,
-72289,
-72289,
-72295,
-72295,
-72295,
-72295,
-72356,
-72369,
-72369,
-72369,
-72377,
-72414,
-72434,
-72441,
-72459,
-72459,
-72470,
-72477,
-72477,
-72477,
-72477,
-72477,
+72293,
+72326,
+72350,
+72350,
+72375,
+72375,
+72387,
+72400,
+72432,
+72432,
+72456,
+72482,
72482,
-72486,
-72504,
-72504,
-72527,
-72527,
-72548,
-72548,
-72548,
-72558,
-72564,
-72564,
-72581,
-72581,
-72587,
-72587,
-72612,
-72627,
-72633,
-72633,
-72633,
-72644,
-72660,
-72660,
-72681,
-72702,
-72712,
-72712,
-72732,
-72775,
-72775,
-72775,
-72775,
-72775,
-72775,
-72775,
-72830,
-72839,
-72861,
-72877,
-72894,
-72894,
-72894,
-72894,
-72900,
-72900,
-72931,
-72931,
-72931,
+72502,
+72502,
+72506,
+72506,
+72525,
+72578,
+72585,
+72618,
+72618,
+72632,
+72674,
+72674,
+72683,
+72726,
+72743,
+72743,
+72743,
+72753,
+72761,
+72767,
+72798,
+72832,
+72832,
+72872,
+72886,
+72913,
+72913,
72943,
+72965,
72980,
-72991,
-73019,
-73034,
-73056,
-73056,
-73073,
-73086,
-73086,
-73086,
-73086,
-73109,
-73129,
-73139,
-73157,
-73167,
-73167,
-73192,
-73192,
-73209,
-73231,
-73231,
-73247,
-73268,
-73288,
+73003,
+73025,
+73025,
+73025,
+73058,
+73104,
+73119,
+73126,
+73146,
+73146,
+73158,
+73170,
+73186,
+73186,
+73205,
+73218,
+73222,
+73234,
+73251,
+73261,
+73261,
+73261,
+73299,
+73299,
+73299,
+73299,
73303,
-73324,
-73324,
-73324,
-73331,
-73331,
-73331,
-73367,
-73393,
-73398,
-73429,
-73452,
-73463,
-73463,
-73463,
-73492,
-73492,
-73492,
-73492,
-73515,
-73530,
-73553,
-73563,
-73563,
-73576,
-73576,
-73592,
-73611,
-73645,
-73687,
-73700,
-73700,
-73700,
-73716,
-73758,
-73790,
-73790,
-73804,
-73804,
-73822,
-73822,
-73845,
+73322,
+73343,
+73352,
+73352,
+73357,
+73357,
+73374,
+73382,
+73382,
+73396,
+73402,
+73402,
+73414,
+73441,
+73459,
+73459,
+73488,
+73494,
+73508,
+73508,
+73584,
+73610,
+73610,
+73630,
+73647,
+73647,
+73647,
+73665,
+73703,
+73715,
+73715,
+73715,
+73736,
+73750,
+73762,
+73782,
+73796,
+73824,
+73824,
+73838,
+73838,
+73838,
+73850,
73862,
73862,
-73875,
-73919,
-73919,
-73938,
-73938,
-73938,
-73968,
-73968,
-73981,
-73992,
-73992,
-73992,
-73992,
-73992,
-74000,
-74000,
-74005,
-74024,
-74058,
-74074,
-74074,
-74096,
-74144,
-74161,
-74161,
-74161,
-74161,
-74161,
-74169,
-74179,
-74191,
-74204,
-74204,
-74214,
-74225,
-74225,
-74238,
-74279,
-74289,
-74296,
-74320,
-74320,
-74325,
-74325,
-74325,
-74378,
-74426,
-74426,
-74426,
-74473,
-74488,
-74498,
-74498,
-74531,
-74531,
-74531,
+73882,
+73882,
+73882,
+73882,
+73897,
+73918,
+73951,
+73951,
+73951,
+73951,
+73963,
+73973,
+73973,
+73973,
+73983,
+73993,
+74021,
+74021,
+74021,
+74021,
+74021,
+74068,
+74091,
+74104,
+74104,
+74104,
+74104,
+74116,
+74147,
+74147,
+74147,
+74147,
+74159,
+74183,
+74197,
+74209,
+74229,
+74243,
+74243,
+74254,
+74254,
+74254,
+74260,
+74267,
+74267,
+74288,
+74333,
+74350,
+74350,
+74360,
+74365,
+74365,
+74381,
+74393,
+74408,
+74414,
+74414,
+74414,
+74414,
+74464,
+74469,
+74486,
+74515,
+74515,
+74515,
74531,
+74540,
+74562,
74572,
-74597,
-74597,
-74597,
-74611,
+74572,
+74572,
+74595,
+74595,
+74601,
74611,
-74631,
-74645,
+74643,
74663,
-74674,
-74701,
-74701,
-74707,
-74712,
-74712,
-74712,
-74727,
-74737,
-74746,
-74770,
-74790,
+74716,
+74716,
+74732,
+74732,
+74745,
+74745,
+74760,
+74775,
+74775,
+74792,
+74792,
+74792,
74803,
-74808,
-74843,
-74854,
-74897,
-74901,
-74901,
-74907,
-74945,
-74945,
-74945,
-74958,
-74978,
-74978,
-74998,
-74998,
-75015,
-75015,
-75015,
-75023,
-75023,
-75023,
-75032,
-75077,
-75077,
-75115,
-75127,
-75127,
-75127,
-75160,
-75166,
-75166,
-75172,
-75172,
-75186,
-75224,
-75224,
-75241,
-75241,
-75241,
-75251,
-75251,
-75257,
-75263,
-75278,
+74803,
+74826,
+74865,
+74870,
+74870,
+74870,
+74870,
+74886,
+74886,
+74890,
+74890,
+74926,
+74926,
+74940,
+74940,
+74954,
+74954,
+74964,
+74976,
+74976,
+74976,
+75000,
+75010,
+75019,
+75044,
+75044,
+75050,
+75059,
+75088,
+75088,
+75128,
+75128,
+75141,
+75153,
+75153,
+75153,
+75153,
+75185,
+75209,
+75221,
+75221,
+75221,
+75233,
+75233,
+75237,
+75237,
+75267,
75291,
-75335,
-75372,
-75382,
-75398,
-75404,
-75423,
-75438,
-75438,
-75444,
-75444,
-75452,
-75452,
-75458,
-75481,
-75481,
-75481,
-75494,
-75504,
-75510,
-75524,
-75540,
-75540,
-75540,
-75546,
-75552,
-75574,
-75574,
-75614,
-75630,
-75646,
-75652,
-75652,
-75652,
-75692,
-75708,
-75708,
-75724,
-75724,
-75724,
-75724,
-75724,
-75724,
-75729,
-75737,
-75754,
-75754,
-75754,
-75772,
-75772,
-75795,
-75795,
-75820,
-75858,
-75858,
-75875,
-75881,
-75890,
-75890,
+75296,
+75308,
+75328,
+75346,
+75357,
+75369,
+75390,
+75390,
+75462,
+75475,
+75475,
+75475,
+75496,
+75523,
+75523,
+75542,
+75562,
+75580,
+75590,
+75604,
+75604,
+75660,
+75678,
+75678,
+75678,
+75678,
+75690,
+75702,
+75728,
+75751,
+75764,
+75792,
+75805,
+75805,
+75805,
+75805,
+75815,
+75824,
+75824,
+75824,
+75824,
+75833,
+75833,
+75833,
+75833,
+75833,
+75841,
+75851,
+75851,
+75851,
+75851,
+75851,
+75863,
+75863,
+75885,
+75885,
75900,
-75916,
-75916,
-75925,
-75941,
-75941,
-75960,
-75960,
-75960,
-75960,
-75983,
-75983,
-75983,
-75983,
-75993,
-75993,
-75993,
-76007,
-76028,
-76028,
-76056,
-76056,
-76067,
-76067,
+75912,
+75943,
+75943,
+75962,
+75991,
+75991,
+76016,
+76045,
+76052,
+76052,
+76052,
+76052,
+76065,
+76080,
76080,
-76100,
-76100,
-76107,
-76107,
-76107,
-76107,
-76107,
-76107,
-76107,
-76116,
-76136,
-76136,
-76136,
-76149,
-76177,
-76193,
-76193,
-76199,
+76080,
+76087,
+76087,
+76108,
+76108,
+76108,
+76108,
+76108,
+76118,
+76129,
+76129,
+76129,
+76169,
+76169,
+76188,
+76188,
+76197,
+76206,
+76216,
+76227,
+76227,
+76227,
+76232,
+76253,
76253,
+76253,
+76259,
76259,
-76281,
-76299,
-76349,
-76349,
-76357,
-76362,
-76382,
-76399,
-76405,
-76421,
+76274,
+76295,
+76310,
+76310,
+76326,
+76326,
+76326,
+76344,
+76374,
+76406,
+76406,
+76406,
76437,
-76442,
-76442,
-76457,
-76480,
-76480,
-76497,
-76514,
-76520,
-76525,
-76535,
-76535,
-76597,
-76597,
-76603,
-76625,
-76625,
+76472,
+76486,
+76493,
+76499,
+76509,
+76530,
+76537,
+76558,
+76568,
+76587,
+76587,
+76587,
+76587,
+76587,
+76617,
+76617,
+76617,
+76617,
+76617,
+76617,
76625,
+76640,
76659,
-76679,
-76698,
-76698,
-76698,
-76726,
-76757,
-76780,
-76786,
-76792,
-76792,
-76806,
-76826,
-76846,
-76862,
-76871,
+76678,
+76678,
+76678,
+76693,
+76693,
+76702,
+76734,
+76734,
+76734,
+76734,
+76771,
+76794,
+76808,
+76830,
+76830,
+76830,
+76837,
+76837,
+76837,
+76843,
+76843,
+76861,
+76890,
+76898,
76906,
-76906,
-76921,
-76921,
-76921,
-76921,
-76921,
-76955,
-76955,
-76968,
-76994,
-77032,
+76913,
+76913,
+76927,
+76927,
+76934,
+76943,
+76943,
+76943,
+76943,
+76959,
+76959,
+76969,
+76969,
+76976,
+76976,
+77017,
+77017,
+77048,
77048,
-77068,
-77068,
77073,
-77094,
-77094,
-77094,
-77103,
-77120,
-77120,
-77120,
-77136,
-77136,
-77148,
-77166,
-77185,
-77185,
-77191,
-77191,
-77233,
-77252,
-77252,
-77252,
-77252,
+77073,
+77088,
+77118,
+77118,
+77139,
+77153,
+77153,
+77153,
+77153,
+77178,
+77214,
+77214,
+77214,
+77231,
+77249,
+77258,
+77258,
+77265,
+77284,
+77301,
+77301,
+77301,
77307,
-77318,
-77318,
-77318,
-77318,
-77324,
-77343,
-77357,
-77357,
-77373,
-77383,
-77389,
-77416,
-77427,
-77444,
-77475,
-77514,
-77514,
-77514,
-77520,
-77520,
-77538,
-77563,
-77572,
-77572,
-77572,
-77572,
-77613,
-77613,
-77633,
-77643,
-77651,
-77667,
-77673,
-77690,
-77690,
-77690,
-77705,
-77723,
-77723,
-77723,
-77744,
-77744,
-77763,
-77801,
-77816,
-77838,
-77838,
+77316,
+77316,
+77316,
+77316,
+77322,
+77322,
+77340,
+77340,
+77346,
+77364,
+77364,
+77371,
+77371,
+77371,
+77371,
+77388,
+77394,
+77394,
+77394,
+77409,
+77409,
+77429,
+77459,
+77459,
+77477,
+77491,
+77491,
+77529,
+77529,
+77546,
+77577,
+77599,
+77604,
+77625,
+77625,
+77631,
+77640,
+77662,
+77675,
+77675,
+77675,
+77688,
+77698,
+77708,
+77708,
+77708,
+77715,
+77731,
+77749,
+77749,
+77753,
+77785,
+77785,
+77785,
+77805,
+77818,
+77818,
+77844,
77844,
-77856,
77862,
-77877,
-77889,
-77919,
-77935,
-77940,
-77981,
-77986,
-78016,
-78029,
-78029,
-78029,
-78049,
-78049,
-78049,
-78061,
-78061,
-78080,
-78080,
-78080,
-78080,
-78080,
-78080,
-78089,
-78089,
-78101,
-78101,
-78101,
-78101,
-78121,
-78125,
-78155,
-78155,
-78185,
-78185,
-78209,
-78224,
-78254,
-78282,
-78282,
-78296,
-78314,
-78337,
-78342,
-78371,
-78371,
-78383,
-78393,
-78426,
-78440,
-78440,
-78455,
-78477,
-78486,
-78499,
-78499,
-78507,
-78507,
-78578,
-78584,
-78596,
-78617,
-78659,
-78665,
-78665,
-78705,
-78705,
-78741,
-78778,
-78792,
-78805,
-78805,
-78812,
-78831,
-78831,
-78848,
-78866,
-78911,
-78911,
-78916,
-78935,
-78952,
-78964,
-78979,
-78979,
-78985,
-79017,
-79039,
-79039,
-79066,
-79066,
-79085,
+77886,
+77886,
+77904,
+77915,
+77930,
+77945,
+77945,
+77945,
+77945,
+77961,
+77984,
+77997,
+78011,
+78041,
+78041,
+78058,
+78065,
+78065,
+78072,
+78098,
+78113,
+78127,
+78141,
+78153,
+78183,
+78183,
+78202,
+78202,
+78202,
+78202,
+78202,
+78202,
+78202,
+78202,
+78202,
+78202,
+78231,
+78231,
+78231,
+78273,
+78273,
+78283,
+78341,
+78341,
+78341,
+78341,
+78341,
+78363,
+78363,
+78363,
+78396,
+78413,
+78413,
+78424,
+78445,
+78445,
+78472,
+78522,
+78522,
+78522,
+78539,
+78539,
+78543,
+78558,
+78558,
+78588,
+78592,
+78592,
+78609,
+78609,
+78633,
+78633,
+78646,
+78646,
+78646,
+78654,
+78654,
+78694,
+78694,
+78712,
+78721,
+78742,
+78774,
+78774,
+78774,
+78790,
+78810,
+78828,
+78891,
+78891,
+78903,
+78903,
+78903,
+78903,
+78978,
+78978,
+78993,
+78999,
+79016,
+79048,
+79056,
+79056,
+79086,
79091,
-79091,
-79110,
-79128,
-79147,
-79147,
-79168,
-79168,
-79224,
-79224,
-79242,
-79242,
-79252,
-79252,
-79252,
-79252,
-79271,
-79291,
-79309,
-79327,
-79327,
-79327,
-79346,
-79375,
-79393,
+79119,
+79125,
+79141,
+79141,
+79150,
+79166,
+79212,
+79232,
+79266,
+79266,
+79266,
+79302,
+79319,
+79335,
+79376,
79400,
79400,
-79407,
-79407,
-79417,
-79432,
-79432,
-79432,
-79464,
-79476,
-79476,
-79501,
-79511,
-79518,
-79518,
-79539,
-79547,
+79418,
+79418,
+79418,
+79418,
+79455,
+79455,
+79455,
+79474,
+79503,
+79503,
+79515,
79569,
79569,
-79600,
-79610,
-79642,
-79676,
-79713,
-79713,
-79736,
-79736,
-79755,
-79755,
-79755,
+79578,
+79589,
+79589,
+79589,
+79601,
+79601,
+79601,
+79601,
+79625,
+79625,
+79625,
+79646,
+79659,
+79659,
+79665,
+79665,
+79665,
+79688,
+79694,
+79704,
+79716,
+79716,
+79737,
+79737,
+79737,
+79744,
79755,
-79771,
-79801,
-79801,
-79821,
-79837,
-79848,
-79860,
-79860,
-79867,
-79867,
-79867,
-79867,
-79867,
-79906,
-79933,
-79943,
-79977,
-79993,
-80011,
-80042,
-80060,
-80060,
-80082,
-80101,
-80113,
-80119,
-80155,
-80159,
-80174,
-80174,
-80174,
-80174,
-80174,
-80183,
-80202,
-80214,
+79806,
+79833,
+79843,
+79856,
+79870,
+79887,
+79887,
+79917,
+79917,
+79917,
+79925,
+79925,
+79932,
+79932,
+79950,
+79975,
+80002,
+80002,
+80027,
+80044,
+80044,
+80044,
+80044,
+80044,
+80044,
+80044,
+80044,
+80044,
+80055,
+80074,
+80089,
+80089,
+80089,
+80098,
+80118,
+80126,
+80150,
+80150,
+80198,
+80198,
+80207,
+80207,
80218,
-80247,
-80259,
-80259,
-80295,
-80295,
-80300,
-80342,
-80342,
-80342,
-80359,
-80359,
-80375,
-80375,
-80402,
-80413,
-80446,
-80446,
-80480,
-80485,
-80504,
-80504,
-80525,
-80529,
+80235,
+80246,
+80246,
+80246,
+80255,
+80276,
+80276,
+80280,
+80306,
+80329,
+80350,
+80360,
+80376,
+80376,
+80396,
+80396,
+80396,
+80396,
+80406,
+80406,
+80415,
+80424,
+80437,
+80461,
+80461,
+80476,
+80503,
+80515,
+80515,
80533,
-80548,
-80553,
-80565,
-80569,
-80569,
-80605,
-80623,
-80623,
-80623,
-80623,
-80643,
-80684,
-80684,
-80695,
-80695,
-80712,
-80730,
-80737,
-80737,
-80776,
-80776,
-80776,
-80776,
-80776,
-80776,
-80795,
-80795,
-80816,
-80867,
-80881,
-80881,
-80881,
-80896,
-80896,
-80913,
-80913,
-80937,
-80937,
-80947,
-80952,
-80952,
-80952,
-80958,
-80992,
-80992,
-81015,
-81048,
-81063,
-81063,
-81082,
-81089,
-81121,
-81121,
-81121,
-81151,
-81196,
-81201,
-81215,
-81215,
-81244,
-81244,
-81244,
+80559,
+80567,
+80567,
+80567,
+80567,
+80595,
+80595,
+80600,
+80618,
+80618,
+80624,
+80624,
+80624,
+80624,
+80661,
+80661,
+80697,
+80697,
+80697,
+80697,
+80697,
+80714,
+80718,
+80718,
+80725,
+80772,
+80786,
+80805,
+80805,
+80833,
+80882,
+80886,
+80907,
+80907,
+80907,
+80955,
+80955,
+80963,
+80986,
+80986,
+81002,
+81002,
+81025,
+81025,
+81043,
+81066,
+81066,
+81076,
+81081,
+81101,
+81117,
+81146,
+81146,
+81162,
+81188,
+81188,
+81195,
+81204,
+81227,
+81227,
+81227,
+81227,
+81264,
+81264,
81273,
-81273,
-81307,
-81333,
-81338,
-81400,
-81400,
-81400,
-81400,
-81418,
-81418,
-81418,
-81430,
-81455,
+81283,
+81299,
+81311,
+81339,
+81339,
+81350,
+81372,
+81397,
+81425,
+81425,
+81425,
+81425,
81455,
-81493,
-81499,
-81527,
-81527,
-81539,
-81554,
+81467,
+81467,
+81467,
+81483,
+81497,
+81513,
+81513,
+81513,
81560,
-81584,
-81584,
-81601,
-81601,
-81601,
-81601,
-81601,
-81601,
-81601,
-81619,
-81631,
-81643,
-81643,
-81643,
-81654,
-81666,
-81716,
-81740,
-81740,
-81757,
-81769,
-81797,
-81797,
-81848,
-81873,
-81873,
-81873,
-81873,
-81885,
-81885,
-81898,
-81911,
-81916,
-81940,
-81940,
-81940,
-81940,
-81956,
-81956,
-81961,
-81977,
-81994,
-81994,
-82025,
-82025,
+81578,
+81595,
+81595,
+81605,
+81605,
+81616,
+81616,
+81623,
+81623,
+81623,
+81632,
+81640,
+81640,
+81640,
+81640,
+81640,
+81640,
+81640,
+81659,
+81676,
+81690,
+81690,
+81690,
+81690,
+81690,
+81690,
+81694,
+81694,
+81709,
+81725,
+81730,
+81730,
+81746,
+81746,
+81765,
+81765,
+81765,
+81801,
+81815,
+81815,
+81826,
+81826,
+81830,
+81830,
+81830,
+81849,
+81863,
+81874,
+81884,
+81884,
+81884,
+81909,
+81953,
+81971,
+82024,
+82024,
+82024,
+82024,
82031,
-82047,
-82047,
-82086,
-82105,
-82124,
-82124,
-82143,
-82143,
-82143,
-82143,
-82163,
-82163,
-82163,
-82163,
-82163,
-82188,
-82193,
-82207,
-82207,
-82207,
-82234,
-82246,
-82265,
-82314,
-82314,
-82314,
-82323,
-82323,
-82323,
-82323,
-82337,
-82337,
-82343,
-82349,
-82349,
-82375,
-82385,
-82402,
-82402,
-82452,
-82462,
-82462,
-82462,
-82469,
-82481,
-82481,
-82481,
-82540,
-82550,
-82567,
-82576,
-82576,
-82576,
-82585,
-82591,
-82620,
-82634,
-82668,
+82054,
+82068,
+82088,
+82104,
+82132,
+82192,
+82221,
+82221,
+82262,
+82281,
+82287,
+82300,
+82300,
+82300,
+82300,
+82300,
+82300,
+82300,
+82306,
+82306,
+82328,
+82328,
+82338,
+82338,
+82365,
+82365,
+82365,
+82365,
+82365,
+82365,
+82365,
+82372,
+82372,
+82403,
+82403,
+82403,
+82403,
+82403,
+82420,
+82453,
+82453,
+82467,
+82467,
+82467,
+82479,
+82484,
+82493,
+82502,
+82518,
+82559,
+82582,
+82618,
+82618,
+82618,
+82667,
+82667,
82687,
-82714,
-82724,
-82724,
-82750,
-82750,
-82750,
-82764,
-82777,
-82811,
-82849,
-82849,
+82703,
+82726,
+82726,
+82726,
+82738,
+82799,
+82799,
+82806,
+82827,
+82843,
+82843,
+82848,
+82848,
+82848,
+82848,
+82848,
82864,
-82877,
-82888,
-82917,
-82917,
+82864,
+82870,
+82878,
+82891,
+82895,
82917,
-82923,
-82944,
-82958,
-82958,
-82958,
-82958,
-82958,
-82971,
-82985,
-82985,
-83004,
-83004,
-83025,
+82933,
+82960,
+82983,
+82983,
+83005,
83025,
-83107,
-83126,
-83126,
-83126,
-83126,
-83126,
-83126,
-83126,
-83132,
-83132,
-83147,
-83153,
-83153,
-83153,
-83164,
-83164,
-83176,
-83183,
-83212,
-83233,
-83294,
-83315,
-83336,
-83355,
-83355,
-83355,
-83367,
-83403,
-83430,
-83448,
-83448,
+83058,
+83068,
+83085,
+83090,
+83094,
+83094,
+83094,
+83094,
+83136,
+83169,
+83169,
+83169,
+83169,
+83187,
+83201,
+83201,
+83201,
+83209,
+83225,
+83252,
+83252,
+83275,
+83297,
+83304,
+83304,
+83312,
+83312,
+83316,
+83343,
+83365,
+83370,
+83370,
+83370,
+83390,
+83431,
+83431,
+83436,
+83436,
83448,
-83448,
-83488,
-83488,
-83488,
-83488,
-83488,
-83488,
-83506,
-83506,
-83506,
-83510,
-83551,
-83567,
-83575,
-83575,
-83591,
-83591,
-83599,
-83681,
-83681,
-83703,
-83703,
+83454,
+83487,
+83504,
+83504,
+83515,
+83519,
+83519,
+83519,
+83529,
+83529,
+83562,
+83562,
+83569,
+83587,
+83592,
+83606,
+83615,
+83615,
+83642,
+83690,
83709,
-83732,
-83742,
-83742,
-83752,
-83752,
-83805,
-83805,
-83805,
-83845,
-83864,
-83864,
-83875,
-83907,
-83933,
-83950,
-83976,
-83985,
-83992,
-83992,
-84001,
-84040,
-84040,
-84057,
-84070,
-84096,
-84124,
+83714,
+83714,
+83721,
+83721,
+83721,
+83741,
+83741,
+83755,
+83773,
+83797,
+83812,
+83812,
+83827,
+83837,
+83865,
+83865,
+83865,
+83865,
+83865,
+83877,
+83877,
+83877,
+83884,
+83884,
+83905,
+83910,
+83922,
+83922,
+83934,
+83946,
+83946,
+83968,
+83968,
+83988,
+83988,
+84023,
+84023,
+84023,
+84034,
+84034,
+84034,
+84048,
+84061,
+84085,
+84085,
+84085,
+84125,
+84125,
+84125,
+84125,
+84125,
+84134,
+84134,
+84134,
+84155,
+84155,
+84170,
+84179,
84179,
-84187,
-84232,
-84232,
-84286,
-84308,
-84308,
-84322,
-84322,
-84322,
-84322,
-84338,
-84357,
-84373,
-84373,
-84373,
-84394,
-84394,
-84402,
-84402,
-84402,
-84424,
-84445,
-84466,
-84485,
-84501,
-84501,
-84522,
-84529,
-84547,
-84592,
-84592,
-84621,
-84633,
-84651,
-84651,
-84662,
-84689,
+84179,
+84212,
+84212,
+84224,
+84242,
+84247,
+84256,
+84256,
+84276,
+84303,
+84303,
+84310,
+84310,
+84317,
+84324,
+84324,
+84324,
+84328,
+84328,
+84346,
+84346,
+84353,
+84364,
+84397,
+84407,
+84407,
+84433,
+84433,
+84433,
+84447,
+84447,
+84463,
+84463,
+84463,
+84488,
+84488,
+84499,
+84523,
+84523,
+84523,
+84540,
+84540,
+84540,
+84556,
+84556,
+84556,
+84556,
+84588,
+84619,
+84666,
+84666,
+84666,
+84666,
84696,
-84704,
-84704,
-84704};
+84730,
+84751,
+84756,
+84756,
+84790,
+84800,
+84832,
+84832,
+84837,
+84853,
+84853,
+84879,
+84879,
+84901,
+84907,
+84920,
+84947,
+84965,
+84997,
+85035,
+85045,
+85045,
+85045,
+85045,
+85086,
+85118,
+85135,
+85172,
+85192,
+85192,
+85192,
+85202,
+85202,
+85215,
+85228,
+85241,
+85268,
+85268,
+85268,
+85287,
+85287,
+85287,
+85287,
+85300,
+85300,
+85305,
+85305,
+85305,
+85353,
+85353,
+85353,
+85368,
+85405,
+85405,
+85432,
+85432,
+85438,
+85443,
+85443,
+85452,
+85459,
+85477,
+85477,
+85490,
+85490,
+85519,
+85519,
+85524,
+85542,
+85552,
+85557,
+85557,
+85557,
+85577,
+85622,
+85640,
+85651,
+85658,
+85663,
+85668,
+85668,
+85680,
+85688,
+85695,
+85695,
+85695,
+85731,
+85731,
+85738,
+85742,
+85742,
+85758,
+85758,
+85758,
+85796,
+85796,
+85796,
+85796,
+85818,
+85840,
+85872,
+85872,
+85872,
+85872,
+85893,
+85898,
+85898,
+85898,
+85907,
+85907,
+85914,
+85933,
+85933,
+85955,
+85955,
+85981,
+85981,
+85996,
+86009,
+86009,
+86019,
+86019,
+86019,
+86029,
+86033,
+86033,
+86033,
+86048,
+86053,
+86053,
+86068,
+86068,
+86088,
+86138,
+86153,
+86178,
+86178,
+86199,
+86218,
+86231,
+86231,
+86231,
+86231,
+86231,
+86247,
+86252,
+86252,
+86277,
+86292,
+86313,
+86342,
+86370,
+86378,
+86430,
+86470,
+86504,
+86509,
+86509,
+86527,
+86536,
+86536,
+86544,
+86555,
+86555,
+86555,
+86580,
+86597,
+86597,
+86618,
+86623,
+86633,
+86648,
+86671,
+86671,
+86698,
+86698,
+86698,
+86705,
+86714,
+86727,
+86732,
+86732,
+86754,
+86754,
+86776,
+86776,
+86810,
+86810,
+86810,
+86817,
+86817,
+86849,
+86870,
+86875,
+86896,
+86941,
+86947,
+86952,
+86973,
+86980,
+86980,
+87006,
+87022,
+87030,
+87037,
+87043,
+87051,
+87051,
+87085,
+87085,
+87101,
+87101,
+87123,
+87160,
+87160,
+87173,
+87188,
+87188,
+87207,
+87207,
+87223,
+87241,
+87258,
+87305,
+87312,
+87312,
+87328,
+87328,
+87348,
+87357,
+87357,
+87375,
+87375,
+87375,
+87375,
+87394,
+87394,
+87425,
+87445,
+87453,
+87471,
+87480,
+87480,
+87501,
+87510,
+87528,
+87528,
+87545,
+87545,
+87560,
+87593,
+87600,
+87600,
+87600,
+87600,
+87600,
+87600,
+87676,
+87676,
+87676,
+87689,
+87709,
+87744,
+87744,
+87778,
+87778,
+87819,
+87819,
+87819,
+87835,
+87835,
+87842,
+87853,
+87853,
+87868,
+87880,
+87893,
+87912,
+87912,
+87943,
+87953,
+87953,
+87953,
+87953,
+87958,
+87958,
+87969,
+88010,
+88010,
+88029,
+88029,
+88029,
+88040,
+88040,
+88040,
+88040,
+88055,
+88060,
+88066,
+88072,
+88072,
+88085,
+88085,
+88104,
+88104,
+88132,
+88138,
+88138,
+88138,
+88138,
+88142,
+88161,
+88171,
+88171,
+88180,
+88180,
+88180,
+88180,
+88200,
+88206,
+88206,
+88206,
+88240,
+88266,
+88282,
+88282,
+88301,
+88312,
+88325,
+88343,
+88354,
+88354,
+88385,
+88385,
+88385,
+88401,
+88415,
+88415,
+88424,
+88424,
+88435,
+88458,
+88458,
+88502,
+88514,
+88520,
+88520,
+88536,
+88536,
+88536,
+88558,
+88576,
+88576,
+88576,
+88576,
+88588,
+88612,
+88655,
+88662,
+88672,
+88683,
+88699,
+88707,
+88725,
+88732,
+88772,
+88772,
+88778,
+88807,
+88814,
+88824,
+88824,
+88845,
+88877,
+88877,
+88882,
+88888,
+88921,
+88921,
+88921,
+88927,
+88934,
+88934,
+88958,
+88958,
+88958,
+88988,
+89030,
+89044,
+89044,
+89073,
+89087,
+89117,
+89132,
+89142,
+89142,
+89147,
+89164,
+89171,
+89185,
+89206,
+89206,
+89206,
+89206,
+89206,
+89206,
+89206,
+89227,
+89233,
+89233,
+89259,
+89281,
+89281,
+89281,
+89312,
+89321,
+89328,
+89342,
+89360,
+89360,
+89369,
+89378,
+89378,
+89398,
+89398,
+89417,
+89429,
+89429,
+89442,
+89442,
+89442,
+89442,
+89460,
+89476,
+89476,
+89476,
+89493,
+89551,
+89551,
+89570,
+89583,
+89583,
+89600,
+89609,
+89609,
+89619,
+89636,
+89636,
+89658,
+89681,
+89688,
+89714,
+89733,
+89744,
+89744,
+89753,
+89753,
+89753,
+89766,
+89766,
+89778,
+89778,
+89799,
+89820,
+89832,
+89866,
+89907,
+89907,
+89907,
+89947,
+89947,
+89975,
+89995,
+90004,
+90004,
+90004,
+90015,
+90023,
+90023,
+90040,
+90047,
+90065,
+90065,
+90074,
+90088,
+90088,
+90088,
+90094,
+90109,
+90109,
+90139,
+90139,
+90139,
+90139,
+90145,
+90151,
+90156,
+90156,
+90187,
+90187,
+90198,
+90204,
+90204,
+90204,
+90204,
+90226,
+90238,
+90245,
+90245,
+90250,
+90281,
+90281,
+90281,
+90329,
+90334,
+90349,
+90370,
+90392,
+90392,
+90412,
+90412,
+90437,
+90437,
+90464,
+90470,
+90483,
+90483,
+90495,
+90495,
+90495,
+90495,
+90506,
+90506,
+90506,
+90506,
+90522,
+90529,
+90547,
+90596,
+90614,
+90614,
+90614,
+90614,
+90636,
+90636,
+90636,
+90654,
+90654,
+90654,
+90654,
+90654,
+90661,
+90661,
+90693,
+90713,
+90713,
+90719,
+90744,
+90744,
+90744,
+90756,
+90776,
+90782,
+90782,
+90807,
+90865,
+90865,
+90865,
+90865,
+90865,
+90892,
+90892,
+90892,
+90892,
+90938,
+90974,
+90974,
+90980,
+90980,
+90997,
+90997,
+91011,
+91031,
+91061,
+91074,
+91106,
+91111,
+91123,
+91123,
+91150,
+91159,
+91159,
+91159,
+91190,
+91195,
+91208,
+91208,
+91216,
+91228,
+91228,
+91228,
+91228,
+91238,
+91258,
+91258,
+91258,
+91275,
+91297,
+91335,
+91335,
+91351,
+91382,
+91382,
+91389,
+91389,
+91397,
+91397,
+91425,
+91425,
+91425,
+91425,
+91425,
+91425,
+91440,
+91469,
+91476,
+91476,
+91500,
+91534,
+91553,
+91553,
+91580,
+91587,
+91607,
+91617,
+91639,
+91639,
+91656,
+91671,
+91677,
+91710,
+91710,
+91719,
+91719,
+91743,
+91743,
+91743,
+91743,
+91748,
+91768,
+91781,
+91781,
+91803,
+91826,
+91826,
+91836,
+91856,
+91856,
+91872,
+91872,
+91872,
+91878,
+91878,
+91878,
+91878,
+91878,
+91901,
+91901,
+91915,
+91931,
+91931,
+91931,
+91942,
+91942,
+91952,
+91967,
+91982,
+91982,
+92000,
+92000,
+92000,
+92000,
+92000,
+92023,
+92023,
+92048,
+92070,
+92085,
+92104,
+92104,
+92116,
+92116,
+92150,
+92163,
+92163,
+92179,
+92179,
+92179,
+92193,
+92221,
+92221,
+92228,
+92228,
+92265,
+92289,
+92303,
+92303,
+92303,
+92303,
+92311,
+92311,
+92328,
+92365,
+92365,
+92365,
+92365,
+92365,
+92365,
+92365,
+92365,
+92365,
+92365,
+92401,
+92401,
+92401,
+92401,
+92401,
+92401,
+92420,
+92434,
+92448,
+92498,
+92556,
+92561,
+92561,
+92576,
+92576,
+92576,
+92576,
+92582,
+92599,
+92614,
+92638,
+92654,
+92654,
+92665,
+92665,
+92665,
+92665,
+92665,
+92699,
+92699,
+92718,
+92718,
+92741,
+92746,
+92765,
+92783,
+92783,
+92820,
+92850,
+92850,
+92896,
+92918,
+92955,
+92955,
+92955,
+92955,
+92955,
+92967,
+92967,
+92982,
+92998,
+93004,
+93004,
+93026,
+93026,
+93026,
+93026,
+93032,
+93073,
+93073,
+93079,
+93093,
+93093,
+93105,
+93123,
+93123,
+93145,
+93145,
+93145,
+93145,
+93150,
+93150,
+93179,
+93201,
+93227,
+93245,
+93267,
+93276,
+93276,
+93287,
+93292,
+93292,
+93292,
+93292,
+93292,
+93305,
+93305,
+93319,
+93323,
+93341,
+93349,
+93349,
+93361,
+93361,
+93361,
+93372,
+93389,
+93389,
+93389,
+93432,
+93464,
+93477,
+93477,
+93484,
+93484,
+93484,
+93484,
+93484,
+93503,
+93503,
+93519,
+93519,
+93544,
+93553,
+93553,
+93562,
+93606,
+93621,
+93621,
+93631,
+93654,
+93670,
+93693,
+93699,
+93705,
+93715,
+93734,
+93745,
+93745,
+93745,
+93745,
+93745,
+93761};
static const char *tldData[] = {
-"trentinosudtirol.it\0ashikaga.tochigi.jp\0"
-"radio.br\0"
-"lib.il.us\0photography\0"
-"miki.hyogo.jp\0edunet.tn\0"
-"aisai.aichi.jp\0"
-"isa-geek.org\0"
-"educator.aero\0mining.museum\0"
-"tsu.mie.jp\0yakumo.shimane.jp\0turek.pl\0"
-"*.sch.uk\0ifm\0"
-"an.it\0"
-"consulting\0"
-"tsuyama.okayama.jp\0"
-"kommune.no\0"
-"hl.cn\0mamurogawa.yamagata.jp\0"
-"michigan.museum\0"
-"\xe6\x89\x8b\xe6\x9c\xba\0"
-"sand\xc3\xb8y.no\0"
-"jprs\0"
-"ne.jp\0"
-"rnd.ru\0"
-"ogaki.gifu.jp\0chitose.hokkaido.jp\0chigasaki.kanagawa.jp\0kasukabe.saitama.jp\0"
-"kawaguchi.saitama.jp\0takashima.shiga.jp\0chuo.tokyo.jp\0expert\0"
-"ueno.gunma.jp\0bifuka.hokkaido.jp\0"
-"oster\xc3\xb8y.no\0"
-"nishigo.fukushima.jp\0"
-"gs.sf.no\0"
-"higashichichibu.saitama.jp\0qpon\0"
-"ns.ca\0"
-"oishida.yamagata.jp\0ne.kr\0kobierzyce.pl\0"
-"for-some.biz\0"
-"satx.museum\0"
-"sydney.museum\0"
-"fujishiro.ibaraki.jp\0gift\0"
-"akaiwa.okayama.jp\0"
-"azumino.nagano.jp\0"
-"divtasvuodna.no\0"
-"slg.br\0"
-"creditunion\0"
-"ralingen.no\0"
-"trust\0"
-"lib.tn.us\0"
-"h\xc3\xa1mm\xc3\xa1rfeasta.no\0"
-"trentinosud-tirol.it\0unazuki.toyama.jp\0"
-"naturhistorisches.museum\0war.museum\0nico\0"
-"nedre-eiker.no\0odda.no\0"
-"zentsuji.kagawa.jp\0"
-"finn\xc3\xb8y.no\0"
-"ikeda.osaka.jp\0"
-"lerdal.no\0"
-"mill.museum\0"
-"wolomin.pl\0"
-"vrn.ru\0"
-"g12.br\0"
-"artanddesign.museum\0"
-"fujimino.saitama.jp\0"
-"arts.co\0"
-"shiroishi.saga.jp\0"
-"honda\0"
-"otaki.nagano.jp\0"
-"harvestcelebration.museum\0bremanger.no\0nikolaev.ua\0"
-"ilawa.pl\0"
-"brandywinevalley.museum\0portal.museum\0"
-"indianapolis.museum\0\xc3\xb8vre-eiker.no\0ski.no\0"
-"catering\0condos\0"
-"vlaanderen.museum\0"
-"higashiyamato.tokyo.jp\0"
-"alesund.no\0ternopil.ua\0"
-"living.museum\0tysvar.no\0norilsk.ru\0osaka\0from-wi.com\0"
-"bill.museum\0"
-"is-saved.org\0"
-"accident-investigation.aero\0palmsprings.museum\0"
-"aeroport.fr\0tamba.hyogo.jp\0"
-"sorum.no\0"
-"ts.it\0"
-"nose.osaka.jp\0"
-"miners.museum\0ne.pw\0mari.ru\0ing\0"
-"saikai.nagasaki.jp\0iheya.okinawa.jp\0miasta.pl\0"
-"scientist.aero\0ovre-eiker.no\0"
-"hirogawa.wakayama.jp\0"
-"gs.oslo.no\0mn.us\0ink\0blogdns.com\0is-a-chef.org\0"
-"miyama.mie.jp\0"
-"starachowice.pl\0"
-"settlement.museum\0k12.nh.us\0"
-"sassari.it\0"
-"lib.vi.us\0directory\0"
-"b.bg\0"
-"int\0"
-"veg\xc3\xa5rshei.no\0"
-"tsurugashima.saitama.jp\0"
-"net.ac\0here-for-more.info\0"
-"kamijima.ehime.jp\0"
-"net.ae\0"
-"net.af\0hakodate.hokkaido.jp\0opoczno.pl\0"
-"net.ag\0"
-"date.hokkaido.jp\0"
-"net.ai\0"
-"b.br\0"
-"te.ua\0"
-"net.al\0bl.it\0shichikashuku.miyagi.jp\0"
-"net.an\0"
-"net.ba\0tyumen.ru\0"
-"net.ar\0net.bb\0friuli-v-giulia.it\0yawara.ibaraki.jp\0"
-"nl.no\0dnsdojo.com\0"
-"monzabrianza.it\0"
-"net.au\0granvin.no\0"
-"net.bh\0tadotsu.kagawa.jp\0olawa.pl\0"
-"airforce\0"
-"net.az\0konin.pl\0"
-"fin.ec\0"
-"shonai.yamagata.jp\0"
-"net.bm\0vestre-toten.no\0"
-"webhop.net\0"
-"net.bo\0"
-"net.br\0gen.in\0"
-"net.bs\0"
-"net.bt\0"
-"shinjuku.tokyo.jp\0lincoln\0"
-"geology.museum\0lahppi.no\0"
-"net.ci\0"
-"net.bz\0campidanomedio.it\0"
-"gs.st.no\0naustdal.no\0omasvuotna.no\0from-il.com\0"
-"aomori.aomori.jp\0tanabe.kyoto.jp\0"
-"net.cm\0beeldengeluid.museum\0openair.museum\0tana.no\0"
-"net.cn\0"
-"net.co\0arboretum.museum\0ivano-frankivsk.ua\0"
-"stavropol.ru\0"
-"ne.ug\0"
-"koganei.tokyo.jp\0"
-"net.cu\0hl.no\0"
-"ne.tz\0goldpoint\0"
-"net.cw\0"
-"haga.tochigi.jp\0"
-"services.aero\0net.dm\0whoswho\0"
-"sodegaura.chiba.jp\0toyoura.hokkaido.jp\0jcb\0"
-"net.do\0ne.us\0courses\0"
-"best\0"
-"baseball.museum\0paleo.museum\0"
-"net.ec\0k12.ne.us\0isa-geek.com\0"
-"gemological.museum\0"
-"i.bg\0net.eg\0"
-"toga.toyama.jp\0williamhill\0"
-"net.dz\0matsue.shimane.jp\0"
-"mytis.ru\0auto\0"
-"toho.fukuoka.jp\0"
-"saintlouis.museum\0is-a-chef.com\0"
-"chikujo.fukuoka.jp\0okagaki.fukuoka.jp\0wegrow.pl\0"
-"ogliastra.it\0hs.kr\0ist\0"
-"atm.pl\0"
-"ballangen.no\0date\0"
-"bs.it\0"
-"gotdns.com\0"
-"pharmacy.museum\0blogsite.org\0"
-"natuurwetenschappen.museum\0"
-"tysfjord.no\0vagan.no\0"
-"gu.us\0"
-"vlaanderen\0"
-"net.ge\0k12.gu.us\0"
-"joso.ibaraki.jp\0shimotsuma.ibaraki.jp\0kawagoe.saitama.jp\0"
-"net.gg\0iraq.museum\0holtalen.no\0za.com\0from-or.com\0"
-"isehara.kanagawa.jp\0itoman.okinawa.jp\0zgorzelec.pl\0"
-"slask.pl\0"
-"est-a-la-maison.com\0"
-"design\0"
-"s3-website-ap-northeast-1.amazonaws.com\0"
-"net.gn\0benevento.it\0"
-"\xe7\xbb\x84\xe7\xb9\x94.hk\0botanical.museum\0"
-"net.gp\0hanawa.fukushima.jp\0"
-"arts.ve\0"
-"net.gr\0"
-"works.aero\0"
-"net.gt\0"
-"net.gy\0"
-"seihi.nagasaki.jp\0"
-"net.hk\0"
-"koza.wakayama.jp\0hotel.tz\0"
-"cq.cn\0net.hn\0va.it\0masuda.shimane.jp\0gen.nz\0"
-"britishcolumbia.museum\0orkdal.no\0iwc\0"
-"dynalias.org\0"
-"net.ht\0net.id\0"
-"ono.hyogo.jp\0"
-"\xe5\x8f\xb0\xe6\xb9\xbe\0"
-"k12.nv.us\0"
-"net.im\0newmexico.museum\0chelyabinsk.ru\0"
-"net.in\0"
-"p.bg\0"
-"yasuda.kochi.jp\0"
-"net.iq\0cc.na\0"
-"net.ir\0hofu.yamaguchi.jp\0"
-"net.is\0r\xc3\xb8ros.no\0dyn-o-saur.com\0"
-"net.je\0"
-"video.hu\0graphics\0"
+"sakae.chiba.jp\0"
+"equipment.aero\0bjerkreim.no\0"
+"gyeonggi.kr\0"
+"jeep\0"
+"chieti.it\0"
+"landrover\0"
+"genoa.it\0ugim.gov.pl\0"
+"rishirifuji.hokkaido.jp\0tomiya.miyagi.jp\0foodnetwork\0"
+"bananarepublic\0"
+"kr\xc3\xb8""dsherad.no\0"
+"swiftcover\0"
+"wtc\0unusualperson.com\0"
+"unazuki.toyama.jp\0"
+"wtf\0forgot.his.name\0"
+"dyndns.org\0ma.leg.br\0"
+"cci.fr\0\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0"
+"hiroo.hokkaido.jp\0"
+"showa.gunma.jp\0yawata.kyoto.jp\0"
+"help\0"
+"name.vn\0"
+"cagliari.it\0game-host.org\0"
+"\xe5\x9f\xbc\xe7\x8e\x89.jp\0trust\0"
+"dagestan.ru\0pokrovsk.su\0"
+"cmw.ru\0"
+"tokamachi.niigata.jp\0"
+"hirono.fukushima.jp\0"
+"forlicesena.it\0tsushima.nagasaki.jp\0"
+"sci.eg\0\xe7\xae\x87\xe4\xba\xba.hk\0"
+"kawaba.gunma.jp\0ookuwa.nagano.jp\0"
+"masuda.shimane.jp\0xbox\0"
+"servep2p.com\0"
+"portal.museum\0"
+"blog.br\0dagestan.su\0"
+"fukushima.jp\0newholland\0"
+"merseine.nu\0ditchyourip.com\0"
+"iraq.museum\0bronnoy.no\0"
+"ogasawara.tokyo.jp\0"
+"furukawa.miyagi.jp\0takayama.nagano.jp\0"
+"name.tj\0"
+"mb.ca\0koto.tokyo.jp\0"
+"loyalist.museum\0gdansk.pl\0"
+"chosei.chiba.jp\0nagawa.nagano.jp\0"
+"cheltenham.museum\0"
+"casadelamoneda.museum\0name.tr\0"
+"d\xc3\xb8nna.no\0name.tt\0futuremailing.at\0"
+"al.no\0"
+"trentinoa-adige.it\0herad.no\0"
+"kizu.kyoto.jp\0\xc3\xa5krehamn.no\0"
+"katagami.akita.jp\0\xc3\xb8stre-toten.no\0"
+"johana.toyama.jp\0"
+"kawasaki.miyagi.jp\0"
+"cc.in.us\0dnsdojo.com\0"
+"cc.de.us\0\xe6\x89\x8b\xe8\xa1\xa8\0"
+"toki.gifu.jp\0"
+"georgia.museum\0gs.tr.no\0"
+"ri.it\0"
+"an.it\0house.museum\0"
+"is-a-musician.com\0servehttp.com\0"
+"oto.fukuoka.jp\0"
+"\xe5\xbe\xae\xe5\x8d\x9a\0"
+"mtpc\0"
+"nordkapp.no\0boxfuse.io\0"
+"shell.museum\0"
+"alipay\0mt.eu.org\0"
+"\xe6\x9d\xb1\xe4\xba\xac.jp\0softbank\0"
+"yashio.saitama.jp\0"
+"mutsuzawa.chiba.jp\0nowtv\0"
+"ina.ibaraki.jp\0hembygdsforbund.museum\0"
+"xin\0"
+"loppa.no\0"
+"judygarland.museum\0here\0scjohnson\0"
+"firm.ht\0"
+"suita.osaka.jp\0"
+"assn.lk\0"
+"saikai.nagasaki.jp\0"
+"mo-i-rana.no\0spiegel\0sites.static.land\0"
+"skydiving.aero\0homegoods\0"
+"hino.tokyo.jp\0phoenix.museum\0kvalsund.no\0"
+"firm.in\0"
+"k12.ia.us\0"
+"heguri.nara.jp\0name.qa\0guru\0lego\0"
+"flor\xc3\xb8.no\0name.pr\0"
+"\xe9\x95\xb7\xe9\x87\x8e.jp\0"
+"palermo.it\0"
+"control.aero\0verona.it\0"
+"traniandriabarletta.it\0takamori.kumamoto.jp\0"
+"skedsmo.no\0"
+"kyotamba.kyoto.jp\0"
+"itami.hyogo.jp\0"
+"clubmed\0star\0"
+"ginowan.okinawa.jp\0name.na\0"
+"griw.gov.pl\0"
+"name.mv\0mormon\0"
+"name.ng\0"
+"fvg.it\0name.my\0tomsk.ru\0"
+"altoadige.it\0"
+"school.museum\0gs.jan-mayen.no\0"
+"md.ci\0firm.co\0"
+"and\xc3\xb8y.no\0mari-el.ru\0lib.az.us\0"
+"wanouchi.gifu.jp\0higashiyamato.tokyo.jp\0"
+"textile.museum\0"
+"kitakami.iwate.jp\0mansions.museum\0randaberg.no\0chrysler\0"
+"udm.ru\0cc.ny.us\0is-a-guru.com\0"
+"eisenbahn.museum\0"
+"eun.eg\0her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0praxi\0"
+"firm.dk\0"
+"domains\0"
+"parachuting.aero\0"
+"mb.it\0"
+"ap.it\0"
+"travel\0"
+"muko.kyoto.jp\0"
+"tsukiyono.gunma.jp\0freiburg.museum\0"
+"higashiyama.kyoto.jp\0"
+"\xe6\x84\x9b\xe7\x9f\xa5.jp\0al.us\0"
+"kamagaya.chiba.jp\0"
+"ibaraki.ibaraki.jp\0chikuhoku.nagano.jp\0mima.tokushima.jp\0"
+"noheji.aomori.jp\0"
+"edu.ac\0"
+"redirectme.net\0"
+"tahara.aichi.jp\0"
+"edu.af\0"
+"taxi.br\0"
+"name.mk\0"
+"med.br\0"
+"edu.al\0nishitosa.kochi.jp\0stpetersburg.museum\0"
+"salon\0"
+"edu.ba\0"
+"edu.ar\0edu.bb\0gyeongnam.kr\0"
+"*.0emm.com\0"
+"shimoichi.nara.jp\0"
+"civilaviation.aero\0edu.au\0la-spezia.it\0"
+"seiyo.ehime.jp\0"
+"edu.bh\0is-very-bad.org\0"
+"edu.bi\0"
+"edu.az\0"
+"k12.ct.us\0"
+"b.ssl.fastly.net\0"
+"edu.bm\0"
+"name.jo\0"
+"edu.bo\0"
+"dyndns-wiki.com\0"
+"edu.br\0\xeb\x8b\xb7\xec\xbb\xb4\0"
+"edu.bs\0"
+"flog.br\0edu.bt\0onjuku.chiba.jp\0"
+"otoyo.kochi.jp\0"
+"benevento.it\0"
+"edu.ci\0"
+"in-addr.arpa\0edu.bz\0"
+"art.br\0history.museum\0brother\0"
+"med.ec\0meteorapp.com\0"
+"agr.br\0"
+"edu.cn\0med.ee\0naka.hiroshima.jp\0kamimine.saga.jp\0"
+"edu.co\0"
+"rishiri.hokkaido.jp\0"
+"edu.cu\0shinjo.nara.jp\0nesset.no\0"
+"edu.cw\0click\0"
+"\xe9\xa4\x90\xe5\x8e\x85\0"
+"lib.ga.us\0"
+"\xd9\x83\xd9\x88\xd9\x85\0is-a-bookkeeper.com\0"
+"samara.ru\0"
+"ainan.ehime.jp\0"
+"edu.dm\0"
+"edu.do\0"
+"cc.ok.us\0"
+"fujisawa.iwate.jp\0"
+"edu.ec\0"
+"vlog.br\0"
+"edu.ee\0hamatonbetsu.hokkaido.jp\0"
+"datsun\0my.eu.org\0"
+"edu.eg\0football\0"
+"art.do\0rm.it\0"
+"lt.it\0"
+"edu.dz\0"
+"ar.it\0juedisches.museum\0"
+"e4.cz\0"
+"a.prod.fastly.net\0"
+"ri.us\0"
+"norddal.no\0"
+"art.dz\0edu.es\0"
+"edu.et\0"
+"geisei.kochi.jp\0"
+"kasaoka.okayama.jp\0"
+"bergen.no\0"
+"kujukuri.chiba.jp\0ochi.kochi.jp\0ladbrokes\0"
+"foundation\0"
+"ven.it\0style\0"
+"edu.ge\0okayama.jp\0takahama.aichi.jp\0shimofusa.chiba.jp\0"
+"family\0godaddy\0read\0"
+"edu.gh\0imakane.hokkaido.jp\0"
+"edu.gi\0shioya.tochigi.jp\0"
+"\xe1\x83\x92\xe1\x83\x94\0"
+"edu.gl\0skjak.no\0"
+"med.ht\0gifu.jp\0"
+"edu.gn\0"
+"culturalcenter.museum\0"
+"edu.gp\0"
+"is-a-llama.com\0"
+"edu.gr\0skanland.no\0"
+"edu.gt\0inagi.tokyo.jp\0"
+"mobara.chiba.jp\0creditunion\0"
+"edu.gy\0community\0"
+"osaka.jp\0historisch.museum\0"
+"edu.hk\0b\xc3\xa1l\xc3\xa1t.no\0"
+"press.aero\0pri.ee\0edu.hn\0"
+"sa.au\0ulvik.no\0"
+"barreau.bj\0edu.ht\0asaka.saitama.jp\0birkenes.no\0evje-og-hornnes.no\0pomorze.pl\0firm.ve\0"
+"siena.it\0nysa.pl\0est-a-la-maison.com\0paris.eu.org\0"
+"brussels\0"
"withgoogle.com\0"
-"operaunite.com\0"
-"bz.it\0yamazoe.nara.jp\0"
-"vgs.no\0"
-"net.jo\0"
-"pa.it\0"
-"telekommunikation.museum\0cc.mt.us\0cc.nd.us\0"
-"brasil.museum\0"
-"net.kg\0ullensvang.no\0sebastopol.ua\0"
-"toyooka.hyogo.jp\0"
-"net.ki\0supply\0"
-"higashiomi.shiga.jp\0"
-"tottori.tottori.jp\0"
-"jfk.museum\0"
-"misaki.okayama.jp\0net.kn\0"
-"kr.com\0"
-"ookuwa.nagano.jp\0koshigaya.saitama.jp\0"
-"net.la\0"
-"furubira.hokkaido.jp\0net.lb\0"
-"net.lc\0historicalsociety.museum\0"
-"cesenaforli.it\0"
-"kagami.kochi.jp\0"
-"gobo.wakayama.jp\0"
-"net.ky\0loppa.no\0"
-"net.kz\0"
-"net.lk\0gs.tr.no\0arts.ro\0"
-"castres.museum\0r\xc3\xb8""d\xc3\xb8y.no\0"
-"net.ma\0"
-"net.lr\0"
-"is-a-landscaper.com\0"
-"net.me\0"
-"imizu.toyama.jp\0net.lv\0"
-"birkenes.no\0"
-"net.ly\0va.no\0"
-"net.mk\0"
-"hikimi.shimane.jp\0net.ml\0"
-"uri.arpa\0ltd.gi\0net.mo\0depot.museum\0smolensk.ru\0jlc\0"
-"showa.gunma.jp\0kawanishi.hyogo.jp\0"
-"klepp.no\0"
-"net.ms\0honefoss.no\0"
-"net.mt\0"
-"net.mu\0"
-"yazu.tottori.jp\0net.mv\0net.nf\0gen.tr\0"
-"w.bg\0net.mw\0net.ng\0"
-"net.mx\0"
-"net.my\0"
-"tos.it\0toya.hokkaido.jp\0"
-"sakura\0"
-"assedic.fr\0aid.pl\0"
-"ltd.hk\0"
-"isernia.it\0net.nr\0"
-"botany.museum\0"
-"aramco\0"
-"net.nz\0"
-"ostrowwlkp.pl\0"
-"hotel.lk\0net.om\0voting\0"
-"\xe4\xbc\x81\xe4\xb8\x9a\0"
-"virginia.museum\0googlecode.com\0"
-"stj\xc3\xb8rdalshalsen.no\0net.pa\0adygeya.ru\0"
-"arai.shizuoka.jp\0arts.nf\0"
-"americanart.museum\0habmer.no\0net.pe\0"
-"lib.pr.us\0"
-"net.ph\0"
-"net.pk\0"
-"net.pl\0"
-"morioka.iwate.jp\0net.pn\0"
-"net.qa\0"
-"kanuma.tochigi.jp\0net.pr\0"
-"gjerdrum.no\0net.ps\0"
-"inawashiro.fukushima.jp\0yamatotakada.nara.jp\0net.pt\0"
-"shimizu.shizuoka.jp\0wielun.pl\0"
-"net.py\0"
-"asahi.chiba.jp\0"
-"os\xc3\xb8yro.no\0"
-"kijo.miyazaki.jp\0\xe7\xbd\x91\xe5\x9d\x80\0"
-"b.se\0rhcloud.com\0"
-"kamikitayama.nara.jp\0jot\0"
-"toyotomi.hokkaido.jp\0"
-"from.hr\0"
-"portlligat.museum\0joy\0"
-"saijo.ehime.jp\0fin.tn\0yandex\0"
-"other.nf\0"
-"bruxelles.museum\0"
-"utsunomiya.tochigi.jp\0gyeongbuk.kr\0"
-"tools\0"
-"ltd.lk\0net.sa\0"
-"ikata.ehime.jp\0net.sb\0"
-"catering.aero\0net.sc\0"
-"health.nz\0net.sd\0"
-"net.ru\0"
-"tsuno.kochi.jp\0shimane.shimane.jp\0"
-"net.rw\0net.sg\0is-very-evil.org\0"
-"i.ph\0net.sh\0"
-"kosuge.yamanashi.jp\0"
-"\xc3\xb8ystre-slidre.no\0"
-"net.sl\0"
-"info.ht\0maizuru.kyoto.jp\0shinjo.nara.jp\0yorii.saitama.jp\0"
-"info.hu\0m\xc3\xa5s\xc3\xb8y.no\0press.se\0net.so\0"
-"po.it\0"
-"s\xc3\xb8r-varanger.no\0"
-"net.st\0"
-"hotel.hu\0oppegard.no\0"
-"net.th\0"
-"nsw.au\0net.sy\0githubusercontent.com\0"
-"kanagawa.jp\0net.tj\0"
-"roma.museum\0"
-"contemporaryart.museum\0net.tm\0va.us\0"
-"info.et\0net.tn\0"
-"net.to\0land-4-sale.us\0"
-"konan.aichi.jp\0\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0"
-"net.ua\0k12.vi.us\0"
-"alto-adige.it\0net.tr\0"
-"net.tt\0"
-"dyndns-web.com\0"
-"shiwa.iwate.jp\0nagai.yamagata.jp\0stargard.pl\0"
-"net.tw\0"
-"kasuya.fukuoka.jp\0nagaoka.niigata.jp\0"
-"!city.sapporo.jp\0"
-"tranoy.no\0net.uk\0"
-"pila.pl\0"
-"dyndns-home.com\0is-into-cartoons.com\0"
-"aizumisato.fukushima.jp\0"
-"\xe3\x81\xbf\xe3\x82\x93\xe3\x81\xaa\0"
-"clock.museum\0net.vc\0"
-"kamioka.akita.jp\0fujimi.nagano.jp\0ando.nara.jp\0tochigi.tochigi.jp\0"
-"lorenskog.no\0i.se\0net.ve\0"
-"vv.it\0kamishihoro.hokkaido.jp\0shiogama.miyagi.jp\0"
-"pilots.museum\0net.uy\0net.vi\0"
-"net.uz\0"
-"is-a-cubicle-slave.com\0"
-"cargo.aero\0salzburg.museum\0"
-"kitami.hokkaido.jp\0net.vn\0"
-"dyroy.no\0pa.us\0"
-"nagiso.nagano.jp\0"
+"ikawa.akita.jp\0\xc3\xa5mot.no\0credit\0"
+"art.ht\0midori.gunma.jp\0kazo.saitama.jp\0komatsushima.tokushima.jp\0"
+"edu.in\0pavia.it\0mihara.kochi.jp\0aridagawa.wakayama.jp\0transport.museum\0"
+"sodegaura.chiba.jp\0"
+"edu.iq\0edunet.tn\0"
+"edu.is\0lib.md.us\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0"
+"edu.it\0kawakita.ishikawa.jp\0"
+"go.ci\0\xe7\x9f\xb3\xe5\xb7\x9d.jp\0accountants\0"
+"act.edu.au\0"
+"xj.cn\0"
+"kurgan.ru\0"
+"s3-us-gov-west-1.amazonaws.com\0"
+"yashiro.hyogo.jp\0"
+"sa.cr\0alabama.museum\0pasadena.museum\0ro.im\0"
+"gs.svalbard.no\0"
+"go.cr\0"
+"edu.jo\0ap-northeast-2.compute.amazonaws.com\0"
+"sakai.fukui.jp\0"
+"ro.it\0miyama.fukuoka.jp\0"
+"extraspace\0"
+"memorial.museum\0"
+"at.it\0nl.eu.org\0"
+"edu.kg\0xxx\0\xd8\xa8\xd9\x8a\xd8\xaa\xd9\x83\0us-west-2.compute.amazonaws.com\0"
+"toya.hokkaido.jp\0edu.ki\0suldal.no\0kurgan.su\0"
+"enebakk.no\0groks-the.info\0"
+"edu.km\0tiffany\0\xe4\xbd\x9b\xe5\xb1\xb1\0"
+"edu.kn\0anthropology.museum\0baghdad.museum\0"
+"edu.kp\0"
+"edu.la\0"
+"edu.lb\0med.ly\0\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0"
+"edu.lc\0kafjord.no\0"
+"ueno.gunma.jp\0"
+"edu.ky\0vinnytsia.ua\0xyz\0"
+"edu.kz\0"
+"edu.lk\0"
+"misato.saitama.jp\0"
+"mus.br\0monza.it\0torahime.shiga.jp\0ichikai.tochigi.jp\0"
+"katori.chiba.jp\0"
+"edu.lr\0"
+"shikama.miyagi.jp\0vestnes.no\0banamex\0"
+"edu.me\0"
+"edu.lv\0"
+"edu.mg\0"
+"edu.ly\0"
+"orientexpress\0team\0"
+"edu.mk\0inder\xc3\xb8y.no\0ru.com\0se.com\0"
+"edu.ml\0"
+"taiki.hokkaido.jp\0"
+"edu.mn\0nyc.museum\0firm.ro\0from-fl.com\0"
+"varese.it\0edu.mo\0"
+"isumi.chiba.jp\0"
+"a.ssl.fastly.net\0"
+"edu.ms\0"
+"imari.saga.jp\0edu.mt\0"
+"edu.mv\0med.om\0"
+"edu.mw\0edu.ng\0"
+"edu.mx\0amot.no\0"
+"lom.it\0edu.my\0edu.ni\0"
+"hiji.oita.jp\0edu.mz\0med.pa\0"
+"goto.nagasaki.jp\0freebox-os.fr\0"
+"yamazoe.nara.jp\0"
+"\xe5\xa4\xa9\xe4\xb8\xbb\xe6\x95\x99\0"
+"nesoddtangen.no\0edu.nr\0\xe4\xb8\xad\xe4\xbf\xa1\0"
+"amakusa.kumamoto.jp\0"
+"ryazan.ru\0tech\0med.pl\0"
+"arai.shizuoka.jp\0\xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x9f\0"
+"isa.us\0"
+"edu.om\0"
+"donostia.museum\0"
+"go.id\0"
+"edu.pa\0edeka\0"
+"construction\0"
+"sc.cn\0"
+"ha.cn\0shibecha.hokkaido.jp\0edu.pe\0"
+"cody.museum\0palace.museum\0edu.pf\0lt.ua\0cc.tx.us\0\xd9\x85\xd8\xb5\xd8\xb1\0reit\0"
+"topology.museum\0edu.ph\0"
+"serveftp.com\0"
+"edu.pk\0"
+"edu.pl\0"
+"sa.it\0academy.museum\0edu.pn\0rnd.ru\0"
+"go.it\0nakatsugawa.gifu.jp\0"
+"av.it\0edu.qa\0"
+"vet.br\0edu.pr\0"
+"edu.ps\0"
+"eigersund.no\0edu.pt\0"
+"firm.nf\0art.pl\0"
+"wv.us\0ng.eu.org\0"
+"shacknet.nu\0"
+"md.us\0"
+"edu.py\0"
+"med.sa\0ar.us\0"
+"pisa.it\0tr.eu.org\0"
+"go.jp\0"
+"med.sd\0"
+"*.ext.githubcloud.com\0"
+"bihoro.hokkaido.jp\0"
+"potager.org\0"
+"tattoo\0you\0"
+"reggio-emilia.it\0"
+"mg.leg.br\0"
+"kawagoe.saitama.jp\0us-2.evennode.com\0"
+"samsclub\0is-saved.org\0"
+"shinanomachi.nagano.jp\0"
+"club.tw\0"
+"go.kr\0"
+"artcenter.museum\0komforb.se\0news\0"
+"whaling.museum\0edu.sa\0"
+"edu.sb\0"
+"edu.rs\0edu.sc\0"
+"lom.no\0edu.sd\0"
+"edu.ru\0"
+"info.ht\0sannan.hyogo.jp\0edu.rw\0edu.sg\0"
+"info.hu\0"
+"edu.sl\0"
+"edu.sn\0"
+"ambulance.museum\0"
+"kanra.gunma.jp\0academy\0next\0"
+"kokubunji.tokyo.jp\0"
+"nfshost.com\0"
+"kushiro.hokkaido.jp\0edu.st\0"
+"edu.sv\0toshiba\0"
+"info.et\0bd.se\0art.sn\0"
+"from-pa.com\0"
+"voronezh.ru\0edu.sy\0"
+"edu.tj\0"
+"kaneyama.yamagata.jp\0meraker.no\0game.tw\0"
+"swiss\0"
+"gs.oslo.no\0edu.tm\0"
+"aoki.nagano.jp\0ikoma.nara.jp\0"
+"edu.to\0"
+"joyo.kyoto.jp\0edu.ua\0"
+"newyork.museum\0edu.tr\0"
+"edu.tt\0is-a-hard-worker.com\0"
+"samegawa.fukushima.jp\0"
+"narvik.no\0rent\0"
+"soc.lk\0edu.tw\0"
+"lib.ar.us\0webcam\0"
+"sola.no\0"
+"flekkefjord.no\0"
+"gs.cn\0"
+"bj.cn\0lv.ua\0"
+"ketrzyn.pl\0cc.pa.us\0"
+"hitoyoshi.kumamoto.jp\0edu.vc\0"
+"edu.ve\0"
+"ilawa.pl\0"
+"tabayama.yamanashi.jp\0us-1.evennode.com\0"
+"edu.uy\0"
+"kumejima.okinawa.jp\0from-co.net\0"
+"bilbao.museum\0alfaromeo\0"
+"edu.vn\0"
+"kashima.ibaraki.jp\0agrinet.tn\0expert\0"
+"settsu.osaka.jp\0"
+"bus.museum\0h\xc3\xb8ylandet.no\0"
+"video\0"
+"pro.az\0"
+"kawanehon.shizuoka.jp\0edu.vu\0"
+"info.ec\0firenze.it\0murakami.niigata.jp\0"
+"nord-aurdal.no\0"
+"yachimata.chiba.jp\0"
+"pro.br\0"
+"yun\0elb.amazonaws.com\0"
+"chrome\0istmein.de\0"
+"itano.tokushima.jp\0mycd.eu\0"
+"go.pw\0edu.ws\0"
+"info.bb\0yamada.iwate.jp\0tawaramoto.nara.jp\0lgbt\0"
+"partners\0"
+"sc.kr\0balsfjord.no\0info.at\0"
+"info.au\0"
+"fairwinds\0"
+"beskidy.pl\0creditcard\0"
+"shingo.aomori.jp\0ouda.nara.jp\0"
+"info.az\0"
+"servemp3.com\0"
+"axis.museum\0lplfinancial\0"
+"sor-aurdal.no\0"
+"aosta-valley.it\0fujiidera.osaka.jp\0"
+"pro.cy\0pescara.it\0hiranai.aomori.jp\0"
+"sagamihara.kanagawa.jp\0"
+"gjemnes.no\0"
+"asakuchi.okayama.jp\0heritage.museum\0weber\0"
+"pro.ec\0venezia.it\0oguni.yamagata.jp\0"
+"kobayashi.miyazaki.jp\0"
+"kagawa.jp\0nango.fukushima.jp\0"
+"edu.za\0marriott\0"
+"info.co\0bill.museum\0fet.no\0\xe5\x9c\xa8\xe7\xba\xbf\0"
+"culture.museum\0nissedal.no\0"
+"olawa.pl\0rest\0"
+"bajddar.no\0"
+"journal.aero\0"
+"evenassi.no\0"
+"katano.osaka.jp\0"
+"penza.ru\0edu.zm\0"
+"kosaka.akita.jp\0"
+"s3-ap-southeast-2.amazonaws.com\0"
+"tome.miyagi.jp\0higashiyodogawa.osaka.jp\0on-the-web.tv\0"
+"go.th\0"
+"omachi.nagano.jp\0katowice.pl\0lib.hi.us\0isa-hockeynut.com\0"
+"ha.no\0go.tj\0"
+"verm\xc3\xb6gensberatung\0"
+"he.cn\0savannahga.museum\0"
+"kashima.kumamoto.jp\0penza.su\0"
+"is-a-chef.org\0"
+"av.tr\0solar\0zip\0"
+"kainan.wakayama.jp\0"
+"yamada.fukuoka.jp\0go.ug\0\xe5\xa8\xb1\xe4\xb9\x90\0"
+"oseto.nagasaki.jp\0coastaldefence.museum\0"
+"go.tz\0"
+"kadogawa.miyazaki.jp\0lease\0"
+"safety\0"
+"mielec.pl\0"
+"katashina.gunma.jp\0"
"sortland.no\0"
-"\xe5\xb1\xb1\xe6\xa2\xa8.jp\0"
-"volgograd.ru\0net.vu\0"
-"tsunan.niigata.jp\0"
-"takata.fukuoka.jp\0"
-"info.ec\0"
-"istanbul\0"
-"rel.ht\0"
-"dyndns-server.com\0"
-"\xe9\x9d\x92\xe6\xa3\xae.jp\0"
-"net.ws\0bauhaus\0"
-"forlicesena.it\0kfh\0"
-"pv.it\0norton\0"
-"cc.ny.us\0"
-"info.bb\0hashikami.aomori.jp\0"
-"seirou.niigata.jp\0info.at\0"
-"info.au\0lib.ee\0"
-"selfip.biz\0"
-"info.az\0tsukigata.hokkaido.jp\0"
-"trani-barletta-andria.it\0loan\0"
-"press.ma\0"
-"legnica.pl\0"
-"lavangen.no\0pors\xc3\xa1\xc5\x8bgu.no\0sk\xc3\xa5nland.no\0"
-"orsta.no\0"
-"hakusan.ishikawa.jp\0"
-"flight.aero\0hemnes.no\0moss.no\0sykkylven.no\0"
-"hirara.okinawa.jp\0"
-"ukiha.fukuoka.jp\0kyotango.kyoto.jp\0health.vn\0"
-"info.co\0bo.nordland.no\0tysv\xc3\xa6r.no\0fhsk.se\0"
-"\xe9\xb9\xbf\xe5\x85\x90\xe5\xb3\xb6.jp\0"
-"air-traffic-control.aero\0design.aero\0meland.no\0chtr.k12.ma.us\0"
-"matsumae.hokkaido.jp\0sakuragawa.ibaraki.jp\0nagano.nagano.jp\0motegi.tochigi.jp\0"
-"insurance.aero\0automotive.museum\0ullensaker.no\0p.se\0"
-"alessandria.it\0"
-"journalist.aero\0cody.museum\0"
-"bato.tochigi.jp\0misasa.tottori.jp\0"
-"polkowice.pl\0"
-"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0"
-"trentino-sued-tirol.it\0"
-"asahi.toyama.jp\0"
-"sogne.no\0orenburg.ru\0kim\0"
-"isa-geek.net\0"
-"tatarstan.ru\0"
-"kashiwa.chiba.jp\0kamimine.saga.jp\0"
-"contractors\0"
-"tagajo.miyagi.jp\0fujikawa.shizuoka.jp\0"
-"kudamatsu.yamaguchi.jp\0"
-"ltd.uk\0"
-"nantan.kyoto.jp\0"
-"r\xc3\xb8yrvik.no\0"
-"is-a-chef.net\0"
-"planetarium.museum\0langev\xc3\xa5g.no\0"
-"abbott\0"
-"club.aero\0"
+"qsl.br\0"
+"\xe5\xa4\xa7\xe9\x98\xaa.jp\0indiana.museum\0"
+"seika.kyoto.jp\0workshop.museum\0gallup\0"
+"linz.museum\0financial\0"
+"pro.ht\0"
+"surf\0"
+"konin.pl\0"
+"joetsu.niigata.jp\0"
+"l\xc3\xa6rdal.no\0"
+"shingu.fukuoka.jp\0miyama.mie.jp\0"
+"yoita.niigata.jp\0"
"ind.br\0"
-"from-nv.com\0"
-"tokushima.jp\0omaezaki.shizuoka.jp\0"
-"hongo.hiroshima.jp\0"
-"inderoy.no\0"
-"res.in\0"
-"\xe5\xb1\xb1\xe5\xbd\xa2.jp\0echizen.fukui.jp\0"
-"dr\xc3\xb8""bak.no\0s\xc3\xb8r-fron.no\0"
-"teo.br\0yokoze.saitama.jp\0"
-"sch.ae\0franziskaner.museum\0undersea.museum\0belau.pw\0"
-"kouyama.kagoshima.jp\0"
-"zarow.pl\0"
-"aviation.museum\0"
-"soeda.fukuoka.jp\0"
-"skydiving.aero\0teaches-yoga.com\0"
-"shinto.gunma.jp\0kure.hiroshima.jp\0"
-"yakumo.hokkaido.jp\0minobu.yamanashi.jp\0"
-"dclk\0"
-"ibaraki.jp\0"
-"naklo.pl\0"
-"yachimata.chiba.jp\0"
-"vanylven.no\0"
-"shimodate.ibaraki.jp\0"
-"union.aero\0toshiba\0from-ak.com\0"
-"kuju.oita.jp\0"
-"w.se\0"
-"rel.pl\0"
-"friuliv-giulia.it\0minamiashigara.kanagawa.jp\0"
-"togura.nagano.jp\0"
-"!www.ck\0b\xc3\xa1id\xc3\xa1r.no\0"
-"miyoshi.aichi.jp\0"
-"izumo.shimane.jp\0"
-"us-west-1.compute.amazonaws.com\0"
-"tsuruoka.yamagata.jp\0"
-"finland.museum\0"
-"barreau.bj\0tokashiki.okinawa.jp\0"
-"television.museum\0\xe0\xb8\x84\xe0\xb8\xad\xe0\xb8\xa1\0"
-"tuscany.it\0"
-"sport.hu\0fjell.no\0"
-"philadelphia.museum\0"
-"hasami.nagasaki.jp\0"
-"software.aero\0"
-"yufu.oita.jp\0"
-"kongsvinger.no\0boots\0"
-"chikuma.nagano.jp\0"
-"london.museum\0"
-"s3-ap-northeast-1.amazonaws.com\0"
-"ind.gt\0suzu.ishikawa.jp\0"
-"arteducation.museum\0eidsberg.no\0vevelstad.no\0"
-"\xe5\xb2\x90\xe9\x98\x9c.jp\0fujisato.akita.jp\0hanyu.saitama.jp\0"
-"bod\xc3\xb8.no\0"
-"is-a-therapist.com\0"
-"yoshikawa.saitama.jp\0"
-"r\xc3\xb8st.no\0"
-"rishiri.hokkaido.jp\0grajewo.pl\0"
-"3.bg\0"
-"kosai.shizuoka.jp\0kpn\0"
-"chuo.chiba.jp\0susono.shizuoka.jp\0"
+"sicily.it\0miyazaki.jp\0kawazu.shizuoka.jp\0\xe5\x95\x86\xe6\xa5\xad.tw\0"
+"ic.gov.pl\0za.net\0"
+"tondabayashi.osaka.jp\0astronomy.museum\0hgtv\0"
+"agrar.hu\0suginami.tokyo.jp\0rentals\0"
+"kariya.aichi.jp\0usgarden.museum\0\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9\0"
+"asn.au\0"
+"fujinomiya.shizuoka.jp\0"
+"isa.kagoshima.jp\0muenster.museum\0"
+"mp.br\0mashike.hokkaido.jp\0"
+"!city.kawasaki.jp\0"
+"townnews-staging.com\0"
+"novosibirsk.ru\0"
+"kunisaki.oita.jp\0from-sd.com\0"
+"ris\xc3\xb8r.no\0sanok.pl\0nikolaev.ua\0is-a-chef.com\0"
+"sandnessj\xc3\xb8""en.no\0"
+"rikuzentakata.iwate.jp\0"
+"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0"
+"shinyoshitomi.fukuoka.jp\0\xeb\x8b\xb7\xeb\x84\xb7\0"
+"sc.ug\0"
+"zhytomyr.ua\0"
+"abo.pa\0teva\0cloudns.asia\0"
+"sc.tz\0"
+"mn.it\0urausu.hokkaido.jp\0ee.eu.org\0"
+"nanae.hokkaido.jp\0"
+"bl.it\0pilots.museum\0zakopane.pl\0"
+"minato.tokyo.jp\0database.museum\0"
+"ohkura.yamagata.jp\0jessheim.no\0"
+"sc.us\0"
+"pro.na\0"
+"pro.mv\0"
+"psc.br\0tamayu.shimane.jp\0j\xc3\xb8lster.no\0"
+"ivano-frankivsk.ua\0"
+"motorcycles\0"
+"eu.meteorapp.com\0cable-modem.org\0"
+"muika.niigata.jp\0"
+"sener\0"
+"com.ac\0kami.kochi.jp\0leangaviika.no\0"
+"oppeg\xc3\xa5rd.no\0uk.eu.org\0"
+"com.af\0otsuka\0"
+"com.ag\0nakamichi.yamanashi.jp\0"
+"ind.gt\0"
+"com.ai\0bike\0"
+"com.al\0"
+"\xe7\xbb\x84\xe7\xbb\x87.hk\0kiyosu.aichi.jp\0karatsu.saga.jp\0"
+"nishio.aichi.jp\0"
+"com.ba\0inf.br\0sirdal.no\0pro.om\0"
+"com.ar\0com.bb\0info.ve\0"
+"diet\0"
+"com.au\0k12.or.us\0"
+"com.aw\0"
+"com.bh\0\xe7\xa6\x8f\xe4\xba\x95.jp\0minokamo.gifu.jp\0tver.ru\0"
+"com.bi\0from-ky.com\0freeboxos.fr\0"
+"com.az\0"
+"info.vn\0"
+"mining.museum\0vevelstad.no\0"
+"com.bm\0"
+"com.bo\0family.museum\0shangrila\0int.eu.org\0"
"fla.no\0"
-"roma.it\0kudoyama.wakayama.jp\0global.prod.fastly.net\0"
-"gamo.shiga.jp\0"
-"gildesk\xc3\xa5l.no\0cloudcontrolled.com\0"
-"ind.in\0futsu.nagasaki.jp\0"
-"furudono.fukushima.jp\0kashiwara.osaka.jp\0"
-"minoh.osaka.jp\0"
-"akrehamn.no\0"
-"nosegawa.nara.jp\0"
-"baths.museum\0likes-pie.com\0"
-"krd\0lat\0"
-"seki.gifu.jp\0togakushi.nagano.jp\0ens.tn\0"
-"rana.no\0law\0"
-"juedisches.museum\0national.museum\0"
-"sande.m\xc3\xb8re-og-romsdal.no\0"
-"bozen.it\0"
-"furniture.museum\0malvik.no\0"
-"hjelmeland.no\0"
-"loabat.no\0"
-"info.ve\0"
-"kamagaya.chiba.jp\0"
-"betainabox.com\0"
-"fosnes.no\0from-tn.com\0"
-"sakae.chiba.jp\0"
-"sohu\0"
-"mb.ca\0"
-"wanouchi.gifu.jp\0hidaka.kochi.jp\0torahime.shiga.jp\0info.vn\0"
-"mari-el.ru\0"
-"tsukumi.oita.jp\0"
-"sch.id\0kota.aichi.jp\0"
-"snillfjord.no\0"
-"akkeshi.hokkaido.jp\0"
-"kanegasaki.iwate.jp\0takaoka.toyama.jp\0"
-"ostre-toten.no\0novosibirsk.ru\0selfip.com\0"
-"molise.it\0"
-"barrel-of-knowledge.info\0"
-"sch.ir\0"
-"fuoisku.no\0"
-"lds\0"
-"oguchi.aichi.jp\0"
-"omsk.ru\0"
-"nogata.fukuoka.jp\0"
-"sch.jo\0guide\0"
-"sunagawa.hokkaido.jp\0info.tn\0"
-"turystyka.pl\0a.ssl.fastly.net\0"
-"nishiarita.saga.jp\0info.tr\0"
-"mortgage\0"
+"com.br\0ind.in\0"
+"com.bs\0"
+"com.bt\0inf.cu\0lavagis.no\0"
+"kawai.iwate.jp\0"
+"pro.pr\0"
+"klodzko.pl\0"
+"\xe5\x85\xac\xe5\x8f\xb8.cn\0saigawa.fukuoka.jp\0kawatana.nagasaki.jp\0on-aptible.com\0"
+"com.by\0com.ci\0s3-fips-us-gov-west-1.amazonaws.com\0"
+"com.bz\0"
+"tanabe.kyoto.jp\0"
+"sk.ca\0winb.gov.pl\0"
+"nb.ca\0com.cm\0"
+"com.cn\0fiat\0"
+"com.co\0"
+"higashiizu.shizuoka.jp\0"
+"larsson.museum\0"
+"lib.sc.us\0"
+"br\xc3\xb8nn\xc3\xb8ysund.no\0lib.nj.us\0"
+"com.cu\0\xe5\x85\xac\xe5\x8f\xb8.hk\0hapmir.no\0lib.gu.us\0com.de\0"
+"is-a-rockstar.com\0"
+"com.cw\0aca.pro\0"
+"com.cy\0"
+"carraramassa.it\0"
+"hi.cn\0oiso.kanagawa.jp\0info.tn\0bing\0"
+"com.dm\0"
+"com.do\0info.tr\0"
+"rad\xc3\xb8y.no\0"
"info.tt\0"
-"\xe5\x8f\xb0\xe7\x81\xa3\0"
-"muroran.hokkaido.jp\0"
-"tendo.yamagata.jp\0"
-"nanbu.tottori.jp\0info.tz\0"
-"go.dyndns.org\0"
-"is-very-nice.org\0"
-"hammarfeasta.no\0"
-"williamsburg.museum\0dyndns-wiki.com\0"
-"tagawa.fukuoka.jp\0"
-"kurotaki.nara.jp\0xerox\0"
-"lib.ma.us\0"
-"sch.lk\0"
-"arkhangelsk.ru\0"
-"trentino-s-tirol.it\0"
-"\xc3\xa1lt\xc3\xa1.no\0info.ro\0"
-"ab.ca\0askoy.no\0"
-"malopolska.pl\0"
-"aogaki.hyogo.jp\0info.sd\0"
-"km.ua\0"
-"sch.ly\0"
-"onjuku.chiba.jp\0"
-"muncie.museum\0"
-"kawaminami.miyazaki.jp\0"
-"cn-north-1.compute.amazonaws.cn\0"
-"vads\xc3\xb8.no\0"
-"ushuaia.museum\0vista\0"
-"kaminokawa.tochigi.jp\0"
-"olbiatempio.it\0shiga.jp\0"
-"sener\0"
-"sch.ng\0kddi\0endoftheinternet.org\0"
-"ichikai.tochigi.jp\0"
-"lund.no\0lib.ga.us\0style\0"
-"info.pk\0tsaritsyn.ru\0"
-"info.pl\0"
-"jevnaker.no\0"
-"fst.br\0ainan.ehime.jp\0"
-"california.museum\0sony\0"
-"oketo.hokkaido.jp\0"
-"is-a-bruinsfan.org\0"
+"com.ec\0"
+"si.it\0"
+"com.ee\0"
+"verbania.it\0"
+"com.eg\0bn.it\0info.tz\0"
+"com.dz\0kamigori.hyogo.jp\0"
+"yamatsuri.fukushima.jp\0"
+"pharmaciens.km\0portland.museum\0"
+"michigan.museum\0"
+"az.us\0"
+"is-a-linux-user.org\0"
+"com.es\0couchpotatofries.org\0"
+"com.et\0"
+"voyage\0"
+"finn\xc3\xb8y.no\0"
+"kumenan.okayama.jp\0fido\0"
+"aomori.jp\0"
+"info.ro\0"
+"minamiashigara.kanagawa.jp\0"
+"info.sd\0"
+"com.fr\0kasai.hyogo.jp\0ski.museum\0"
+"leg.br\0com.ge\0"
+"com.gh\0pro.tt\0"
+"com.gi\0"
+"targi.pl\0"
+"elvendrell.museum\0"
+"com.gl\0"
+"com.gn\0tingvoll.no\0nationwide\0sakura\0\xe5\x95\x86\xe5\xba\x97\0"
+"com.gp\0matsusaka.mie.jp\0asn.lv\0stcgroup\0"
+"com.gr\0"
+"com.gt\0"
+"tonsberg.no\0"
+"namie.fukushima.jp\0info.pk\0"
+"com.gy\0info.pl\0bounty-full.com\0"
+"com.hk\0southcarolina.museum\0"
+"media.aero\0bjarkoy.no\0folldal.no\0forex\0"
+"vadso.no\0"
+"com.hn\0daejeon.kr\0"
"info.pr\0"
-"nt.edu.au\0"
-"carrier.museum\0newport.museum\0"
-"promo\0"
-"mb.it\0mima.tokushima.jp\0"
-"info.na\0jan-mayen.no\0"
-"narita.chiba.jp\0"
-"info.mv\0info.nf\0"
-"fuso.aichi.jp\0gmina.pl\0"
-"manx.museum\0\xd9\x85\xd9\x84\xd9\x8a\xd8\xb3\xd9\x8a\xd8\xa7\0"
-"show.aero\0moskenes.no\0sch.qa\0lib.nh.us\0"
-"fnd.br\0cieszyn.pl\0"
-"properties\0ru.com\0se.com\0"
-"info.nr\0"
-"madrid.museum\0love\0"
-"hakone.kanagawa.jp\0kita.osaka.jp\0"
-"from-de.com\0"
-"siena.it\0tateshina.nagano.jp\0"
-"cricket\0\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\0"
-"numata.hokkaido.jp\0"
-"brussel.museum\0hitra.no\0pyatigorsk.ru\0"
-"rifu.miyagi.jp\0ind.tn\0"
-"judygarland.museum\0"
-"mp.br\0"
-"higashitsuno.kochi.jp\0"
+"myfritz.net\0"
+"okazaki.aichi.jp\0"
+"com.hr\0pro.vn\0"
+"com.ht\0"
+"urbino-pesaro.it\0"
+"\xe5\xae\xae\xe5\xb4\x8e.jp\0"
+"shijonawate.osaka.jp\0saitama.saitama.jp\0\xe5\x98\x89\xe9\x87\x8c\0"
+"magazine.aero\0duckdns.org\0"
+"com.im\0choshi.chiba.jp\0mosvik.no\0"
+"info.na\0rana.no\0"
+"com.io\0mashiki.kumamoto.jp\0lib.nh.us\0azurewebsites.net\0"
+"com.iq\0"
+"com.is\0info.mv\0info.nf\0career\0"
+"schlesisches.museum\0"
+"urn.arpa\0uw.gov.pl\0"
+"hk.cn\0info.ni\0"
+"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0theguardian\0"
+"odawara.kanagawa.jp\0"
+"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0statebank\0"
+"jaguar\0weather\0"
+"hole.no\0warman\0"
+"com.jo\0info.nr\0"
+"vodka\0"
+"sande.more-og-romsdal.no\0apple\0"
+"kvits\xc3\xb8y.no\0"
+"higashihiroshima.hiroshima.jp\0sauda.no\0"
+"yoshikawa.saitama.jp\0com.kg\0"
+"humanities.museum\0ask\xc3\xb8y.no\0"
+"com.ki\0mn.us\0"
+"gu.us\0"
+"plc.co.im\0com.km\0"
"info.la\0"
-"fr.it\0"
-"zone\0"
-"si.it\0elblag.pl\0"
-"baikal.ru\0"
-"toyotsu.fukuoka.jp\0"
-"building.museum\0sorfold.no\0"
-"is-a-geek.com\0"
-"eidsvoll.no\0sch.sa\0"
-"institute\0"
-"dazaifu.fukuoka.jp\0"
-"chukotka.ru\0rivne.ua\0domains\0from-sd.com\0ro.com\0"
-"mihara.kochi.jp\0asahi.nagano.jp\0"
-"stockholm.museum\0chernigov.ua\0"
-"potenza.it\0"
-"pagespeedmobilizer.com\0"
-"shoo.okayama.jp\0"
-"bible.museum\0sherbrooke.museum\0"
-"nesset.no\0"
-"chloe\0"
-"anpachi.gifu.jp\0aibetsu.hokkaido.jp\0wlocl.pl\0"
-"mi.it\0"
-"elverum.no\0"
-"fredrikstad.no\0markets\0"
-"iglesias-carbonia.it\0"
-"nikaho.akita.jp\0miyashiro.saitama.jp\0"
-"asmatart.museum\0"
-"tsushima.nagasaki.jp\0"
-"hekinan.aichi.jp\0"
-"lib.ms.us\0lib.nc.us\0"
-"inazawa.aichi.jp\0"
-"info.ki\0agdenes.no\0"
-"medizinhistorisches.museum\0furniture\0"
-"ozora.hokkaido.jp\0wakayama.wakayama.jp\0"
-"gyokuto.kumamoto.jp\0"
-"fishing\0"
-"hyogo.jp\0"
-"stj\xc3\xb8rdal.no\0"
-"kutno.pl\0"
-"ulvik.no\0"
-"ofunato.iwate.jp\0restaurant\0"
-"americanantiques.museum\0paderborn.museum\0"
-"sp.it\0yokaichiba.chiba.jp\0"
-"kurgan.ru\0"
-"hakata.fukuoka.jp\0man\0"
-"entomology.museum\0"
-"otoyo.kochi.jp\0"
-"lel.br\0"
-"zoology.museum\0samnanger.no\0"
-"obama.nagasaki.jp\0"
-"oshu.iwate.jp\0miasa.nagano.jp\0"
-"rnrt.tn\0"
-"money.museum\0"
-"\xe5\xb1\xb1\xe5\x8f\xa3.jp\0"
-"yahiko.niigata.jp\0kadena.okinawa.jp\0"
-"\xc3\xb8ygarden.no\0"
-"v\xc3\xa5gan.no\0"
-"trentino.it\0"
-"\xc3\xb8rskog.no\0"
-"hoyanger.no\0sb.ua\0"
-"vestby.no\0"
-"yurihonjo.akita.jp\0"
-"fjaler.no\0cc.ks.us\0"
-"\xd9\x82\xd8\xb7\xd8\xb1\0"
-"ltd\0"
-"rockart.museum\0"
-"lib.as.us\0"
-"hashima.gifu.jp\0"
-"agano.niigata.jp\0ath.cx\0"
-"gangaviika.no\0"
-"hammerfest.no\0"
-"saskatchewan.museum\0est-mon-blogueur.com\0"
-"hoylandet.no\0stockholm\0"
-"tatsuno.nagano.jp\0"
-"georgia.museum\0"
-"kherson.ua\0"
-"shiroishi.miyagi.jp\0tomi.nagano.jp\0"
-"computerhistory.museum\0"
-"kofu.yamanashi.jp\0"
-"meo\0"
-"setagaya.tokyo.jp\0prochowice.pl\0"
-"farm.museum\0"
-"fujikawa.yamanashi.jp\0"
-"\xe9\xa3\x9e\xe5\x88\xa9\xe6\xb5\xa6\0dontexist.net\0"
-"workshop.museum\0toray\0"
-"kosaka.akita.jp\0shijonawate.osaka.jp\0takanezawa.tochigi.jp\0"
-"k12.ak.us\0"
-"nakamura.kochi.jp\0ochi.kochi.jp\0iizuna.nagano.jp\0"
-"midtre-gauldal.no\0"
-"k12.md.us\0"
-"inuyama.aichi.jp\0"
-"kumatori.osaka.jp\0"
-"ako.hyogo.jp\0"
-"tgory.pl\0"
-"ato.br\0higashikawa.hokkaido.jp\0akagi.shimane.jp\0bbs.tr\0"
-"newspaper.museum\0oregontrail.museum\0"
-"gb.net\0"
-"\xe7\xb6\xb2\xe8\xb7\xaf.tw\0"
-"ap.it\0"
-"zaporizhzhia.ua\0"
-"taka.hyogo.jp\0"
-"karate.museum\0is-a-geek.org\0"
-"from-ks.com\0"
-"fage\0misconfused.org\0"
-"hn.cn\0"
-"palana.ru\0"
+"design.museum\0"
+"com.kp\0"
+"com.la\0"
+"ono.hyogo.jp\0com.lb\0oregontrail.museum\0"
+"\xe4\xba\xac\xe9\x83\xbd.jp\0com.lc\0"
+"takayama.gunma.jp\0cyou\0bnr.la\0"
+"ebina.kanagawa.jp\0kawachinagano.osaka.jp\0"
+"gotpantheon.com\0"
+"takata.fukuoka.jp\0tarama.okinawa.jp\0"
+"com.ky\0"
+"com.kz\0inf.mk\0"
+"com.lk\0"
"kisarazu.chiba.jp\0"
-"vaapste.no\0"
-"namie.fukushima.jp\0ichikawa.hyogo.jp\0"
-"cn.com\0"
-"stpetersburg.museum\0nord-fron.no\0iamallama.com\0"
-"fam.pk\0"
-"skjervoy.no\0"
-"beskidy.pl\0"
-"siellak.no\0"
-"mi.th\0"
-"mil\0"
-"culturalcenter.museum\0tsk.ru\0odessa.ua\0"
-"otama.fukushima.jp\0"
-"ishikawa.fukushima.jp\0"
-"nu.ca\0"
-"omiya.saitama.jp\0"
-"bike\0"
-"hirono.iwate.jp\0digital\0read\0"
-"exhibition.museum\0"
-"tn.it\0hita.oita.jp\0"
-"inder\xc3\xb8y.no\0"
-"fail\0"
-"otsuka\0"
-"k-uralsk.ru\0"
-"tamaki.mie.jp\0florist\0"
-"mi.us\0place\0"
-"yono.saitama.jp\0movistar\0"
-"sn\xc3\xa5""ase.no\0k12.ma.us\0"
-"ashibetsu.hokkaido.jp\0mizusawa.iwate.jp\0isa.kagoshima.jp\0"
-"farsund.no\0"
-"haebaru.okinawa.jp\0"
-"gs.aa.no\0"
-"hyllestad.no\0"
-"itako.ibaraki.jp\0"
-"pics\0"
-"godo.gifu.jp\0"
-"fauske.no\0frei.no\0dyndns.info\0"
-"bg.it\0"
-"matsumoto.nagano.jp\0"
-"kids.museum\0gaivuotna.no\0"
-"dell\0"
-"cc.ma.us\0"
-"\xe5\xb2\xa9\xe6\x89\x8b.jp\0yamagata.ibaraki.jp\0"
-"austevoll.no\0mma\0"
-"br.com\0"
-"fuchu.hiroshima.jp\0ostrowiec.pl\0podlasie.pl\0"
-"nature.museum\0"
-"usdecorativearts.museum\0bing\0"
-"matsudo.chiba.jp\0niimi.okayama.jp\0"
-"federation.aero\0brussels\0"
-"ancona.it\0piaget\0"
-"k12.ga.us\0"
-"jorpeland.no\0camera\0"
-"preservation.museum\0"
-"vibo-valentia.it\0"
-"tochigi.jp\0"
-"salerno.it\0"
-"iwade.wakayama.jp\0kiwi.nz\0"
-"pvt.ge\0gifts\0globo\0"
-"honai.ehime.jp\0"
-"childrensgarden.museum\0spreadbetting\0"
-"hannan.osaka.jp\0"
-"raholt.no\0cc.ga.us\0from-ut.com\0"
-"cartier\0maif\0"
-"kolobrzeg.pl\0"
-"moe\0"
-"bungotakada.oita.jp\0"
-"moi\0"
-"otaru.hokkaido.jp\0\xe8\xb0\xb7\xe6\xad\x8c\0"
-"akita.jp\0"
-"carboniaiglesias.it\0"
-"d.bg\0"
-"mov\0"
-"gs.ah.no\0marnardal.no\0fans\0"
-"tysnes.no\0mordovia.ru\0"
-"bearalv\xc3\xa1hki.no\0engineering\0compute-1.amazonaws.com\0"
-"is-a-nascarfan.com\0"
-"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0"
-"friuli-venezia-giulia.it\0bn.it\0udono.mie.jp\0"
-"oslo.no\0"
-"nu.it\0mormon\0"
-"freiburg.museum\0hamar.no\0"
-"kita.tokyo.jp\0"
-"minamifurano.hokkaido.jp\0"
-"bible\0"
-"esp.br\0"
-"is-a-democrat.com\0"
-"narusawa.yamanashi.jp\0"
-"uonuma.niigata.jp\0wien\0"
-"on-the-web.tv\0"
-"karm\xc3\xb8y.no\0"
-"mosjoen.no\0"
-"koya.wakayama.jp\0"
-"chernovtsy.ua\0holiday\0from-mi.com\0"
-"square.museum\0is-a-patsfan.org\0"
-"mihama.fukui.jp\0"
-"clothing\0"
-"reit\0"
-"historichouses.museum\0gjovik.no\0desi\0"
-"cam.it\0asuke.aichi.jp\0"
-"kizu.kyoto.jp\0"
-"syzran.ru\0eu-central-1.compute.amazonaws.com\0"
-"ama.shimane.jp\0"
-"farm\0"
-"jaworzno.pl\0"
-"emp.br\0"
-"k12.ar.us\0"
-"oto.fukuoka.jp\0takahagi.ibaraki.jp\0elk.pl\0"
-"k12.mo.us\0"
-"soo.kagoshima.jp\0umaji.kochi.jp\0"
-"farmequipment.museum\0github.io\0"
-"mashiki.kumamoto.jp\0"
-"k.bg\0"
-"mtn\0"
-"skole.museum\0deals\0"
-"is-a-student.com\0"
-"friuli-ve-giulia.it\0"
-"force.museum\0nec\0"
-"fast\0walter\0"
-"pharmacien.fr\0ce.it\0hakuba.nagano.jp\0"
-"s3-eu-west-1.amazonaws.com\0"
-"lucca.it\0"
-"nakadomari.aomori.jp\0"
-"antiques.museum\0resistance.museum\0cc.mo.us\0"
-"troandin.no\0vyatka.ru\0"
-"net\0microsoft\0"
-"civilisation.museum\0"
-"komatsushima.tokushima.jp\0"
-"bronnoysund.no\0new\0"
-"nanbu.yamanashi.jp\0"
-"vic.au\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0"
-"shitara.aichi.jp\0kamikawa.hokkaido.jp\0nogi.tochigi.jp\0"
-"tn.us\0pink\0"
-"yokote.akita.jp\0"
-"oz.au\0k12.tx.us\0physio\0"
-"\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0"
-"stalbans.museum\0productions\0"
-"fvg.it\0"
-"riik.ee\0aland.fi\0"
-"okazaki.aichi.jp\0"
-"gs.tm.no\0"
-"*.sapporo.jp\0"
-"children.museum\0dali.museum\0"
-"ngo\0"
-"ritto.shiga.jp\0"
-"wiki\0dyndns-at-home.com\0"
-"vc.it\0"
-"rent\0"
-"berlevag.no\0"
-"bryne.no\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0nhk\0"
-"eng.br\0carrara-massa.it\0"
-"penza.ru\0"
-"lib.in.us\0"
-"onomichi.hiroshima.jp\0"
-"k12.oh.us\0"
-"ebino.miyazaki.jp\0"
-"deatnu.no\0lib.wi.us\0"
-"wa.au\0r.bg\0us.org\0"
-"univ.sn\0"
-"seiro.niigata.jp\0"
-"brindisi.it\0"
-"is-a-hard-worker.com\0"
-"rankoshi.hokkaido.jp\0"
-"archi\0"
-"dnsdojo.org\0from-ia.com\0"
-"kimitsu.chiba.jp\0"
-"chernihiv.ua\0"
-"cl.it\0toride.ibaraki.jp\0"
-"bjarkoy.no\0"
-"bu.no\0"
-"pc.it\0"
-"karasjok.no\0"
-"ol.no\0"
-"kesennuma.miyagi.jp\0katsuragi.nara.jp\0"
-"tourism.tn\0"
-"bolzano.it\0"
-"act.au\0trondheim.no\0"
-"trentinosuedtirol.it\0suwalki.pl\0"
-"bahccavuotna.no\0abo.pa\0"
-"yamagata.gifu.jp\0canon\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\0horse\0"
-"viajes\0"
-"repair\0\xe6\x89\x8b\xe8\xa1\xa8\0"
-"history.museum\0"
-"gs.hm.no\0"
-"\xe7\xa6\x8f\xe4\xba\x95.jp\0"
-"inashiki.ibaraki.jp\0"
-"us.na\0osoyro.no\0fedje.no\0"
-"sakai.fukui.jp\0"
-"air-surveillance.aero\0engineer.aero\0pri.ee\0"
-"is.it\0namikata.ehime.jp\0"
-"warabi.saitama.jp\0"
-"strand.no\0"
-"lecco.it\0"
-"tatar\0"
-"shinjo.yamagata.jp\0"
-"sakahogi.gifu.jp\0"
-"aarborte.no\0cityeats\0"
-"\xe7\xbe\xa4\xe9\xa6\xac.jp\0rest\0"
-"skien.no\0"
-"kasai.hyogo.jp\0hitachinaka.ibaraki.jp\0"
-"costume.museum\0photography.museum\0froya.no\0grozny.ru\0simbirsk.ru\0"
-"barletta-trani-andria.it\0sells-it.net\0"
-"y.bg\0"
-"art.museum\0"
-"karpacz.pl\0"
-"sanok.pl\0"
-"gs.nt.no\0"
-"fortworth.museum\0murmansk.ru\0"
-"mansion.museum\0"
-"cs.it\0"
-"nishiokoppe.hokkaido.jp\0yaese.okinawa.jp\0"
-"santacruz.museum\0googleapis.com\0"
-"servebbs.net\0"
-"cc.nm.us\0"
-"asso.fr\0lupin\0"
-"eigersund.no\0"
-"sukumo.kochi.jp\0ketrzyn.pl\0"
-"compute.amazonaws.com\0"
-"nagara.chiba.jp\0"
-"bokn.no\0"
-"mino.gifu.jp\0"
-"author.aero\0"
-"erni\0"
-"asso.gp\0iz.hr\0"
-"otsuki.yamanashi.jp\0"
-"posts-and-telecommunications.museum\0marker.no\0"
-"is-into-cars.com\0"
-"flynnhub.com\0"
-"kr\xc3\xa5""anghke.no\0"
-"nakamichi.yamanashi.jp\0"
-"tokke.no\0"
-"pc.pl\0"
-"etne.no\0community\0"
-"hol.no\0"
-"asso.ht\0tatsuno.hyogo.jp\0tokamachi.niigata.jp\0"
-"valer.ostfold.no\0d.se\0"
-"agrar.hu\0"
-"nagareyama.chiba.jp\0niigata.niigata.jp\0"
-"ap-northeast-1.compute.amazonaws.com\0"
-"qh.cn\0sardinia.it\0tozawa.yamagata.jp\0"
-"oe.yamagata.jp\0"
-"scotland.museum\0kalmykia.ru\0wedding\0"
-"med.br\0"
-"nra\0"
-"asso.bj\0tabayama.yamanashi.jp\0"
-"obi\0"
-"cci.fr\0ome.tokyo.jp\0"
-"sakuho.nagano.jp\0"
-"per.la\0s\xc3\xa1l\xc3\xa1t.no\0"
-"murata.miyagi.jp\0"
-"airport.aero\0"
-"cz.it\0"
-"friulive-giulia.it\0koeln\0"
-"asso.ci\0birthplace.museum\0nrw\0"
-"naka.hiroshima.jp\0shiranuka.hokkaido.jp\0"
-"bamble.no\0"
-"jx.cn\0mibu.tochigi.jp\0"
-"watchandclock.museum\0g\xc3\xa1ls\xc3\xa1.no\0"
-"shibata.niigata.jp\0!teledata.mz\0"
-"nanmoku.gunma.jp\0"
-"med.ec\0aquarium.museum\0il.us\0outsystemscloud.com\0"
-"med.ee\0mandal.no\0verran.no\0"
-"kumamoto.jp\0is-a-geek.net\0"
-"flekkefjord.no\0"
-"shinonsen.hyogo.jp\0fudai.iwate.jp\0"
-"\xe4\xbf\xa1\xe6\x81\xaf\0"
-"nishiaizu.fukushima.jp\0"
-"sumy.ua\0"
-"per.nf\0"
-"chiba.jp\0ntt\0"
-"asso.dz\0"
-"badaddja.no\0cc.id.us\0\xd8\xa8\xd8\xa7\xd8\xb2\xd8\xa7\xd8\xb1\0"
-"k.se\0"
-"niki.hokkaido.jp\0higashikagawa.kagawa.jp\0"
-"koeln.museum\0"
-"andoy.no\0"
-"frana.no\0\xd9\x83\xd9\x88\xd9\x85\0"
-"katashina.gunma.jp\0"
-"tourism.pl\0"
-"aremark.no\0"
-"chita.ru\0"
-"tarumizu.kagoshima.jp\0"
-"\xe7\xbd\x91\xe7\xb5\xa1.hk\0orkanger.no\0"
-"tempioolbia.it\0saotome.st\0"
-"kawakita.ishikawa.jp\0"
-"karikatur.museum\0uz.ua\0hermes\0"
-"friuli-vgiulia.it\0"
-"textile.museum\0"
-"iwatsuki.saitama.jp\0"
-"cc.ok.us\0"
-"med.ht\0"
-"\xe8\xaf\xba\xe5\x9f\xba\xe4\xba\x9a\0"
-"tsushima.aichi.jp\0ide.kyoto.jp\0"
-"abira.hokkaido.jp\0actor\0"
-"\xe7\xb5\x84\xe7\xbb\x87.hk\0"
-"tsuchiura.ibaraki.jp\0"
-"dep.no\0"
-"republican\0"
-"vefsn.no\0"
-"luxembourg.museum\0"
+"com.lr\0"
+"marylhurst.museum\0"
+"com.lv\0from-ia.com\0"
+"piedmont.it\0goshiki.hyogo.jp\0com.mg\0zero\0"
+"mizusawa.iwate.jp\0"
+"com.ly\0"
+"com.mk\0"
+"com.ml\0sandoy.no\0"
+"atlanta.museum\0george\0"
+"imperia.it\0com.mo\0"
+"com.na\0"
+"ind.tn\0"
+"com.ms\0is-very-sweet.org\0"
+"com.mt\0"
+"com.mu\0"
+"naka.ibaraki.jp\0com.mv\0com.nf\0"
+"giessen.museum\0com.mw\0com.ng\0film\0"
+"com.mx\0"
+"vic.edu.au\0com.my\0com.ni\0sa-east-1.compute.amazonaws.com\0"
+"hakui.ishikawa.jp\0"
+"chikujo.fukuoka.jp\0"
+"okuizumo.shimane.jp\0"
+"kota.aichi.jp\0"
+"com.nr\0"
+"nf.ca\0"
+"kids.museum\0"
+"fukagawa.hokkaido.jp\0"
+"info.ki\0"
+"dish\0"
+"tana.no\0"
+"mr.no\0"
+"kerryproperties\0"
+"com.om\0"
+"hiphop\0"
+"com.pa\0"
+"cc.ut.us\0"
+"sdn.gov.pl\0"
+"com.pe\0"
+"com.pf\0"
+"com.ph\0"
+"gs.vf.no\0"
+"showtime\0"
+"mt.it\0makinohara.shizuoka.jp\0com.pk\0"
+"nishikata.tochigi.jp\0com.pl\0"
+"br.it\0cb.it\0"
+"numata.hokkaido.jp\0"
+"com.qa\0rubtsovsk.ru\0"
+"com.pr\0"
+"zgora.pl\0com.ps\0s3-external-2.amazonaws.com\0"
+"com.pt\0certmgr.org\0"
+"etajima.hiroshima.jp\0"
+"com.py\0"
+"cn.eu.org\0"
+"mobi.gp\0"
+"ichikawa.hyogo.jp\0uchihara.ibaraki.jp\0"
+"psi.br\0nittedal.no\0"
+"hayakawa.yamanashi.jp\0yorkshire.museum\0"
+"valleeaoste.it\0"
+"\xe5\xba\x83\xe5\xb3\xb6.jp\0tanabe.wakayama.jp\0com.re\0chloe\0"
+"balashov.su\0loans\0"
+"selbu.no\0"
+"niigata.niigata.jp\0"
+"paris.museum\0vantaa.museum\0"
+"kembuchi.hokkaido.jp\0"
+"com.ro\0"
+"com.sa\0poltava.ua\0mymediapc.net\0"
+"com.sb\0"
+"trentino-sud-tirol.it\0com.sc\0"
+"com.sd\0"
+"pmn.it\0com.ru\0com.se\0"
+"com.rw\0com.sg\0homes\0"
+"com.sh\0"
+"naie.hokkaido.jp\0"
+"fussa.tokyo.jp\0"
+"com.sl\0"
+"com.sn\0"
+"com.so\0fire\0servegame.com\0"
+"leclerc\0"
+"holmestrand.no\0dedyn.io\0"
+"com.st\0"
+"com.sv\0"
+"bio.br\0ternopil.ua\0"
+"githubcloud.com\0"
+"com.sy\0"
+"trentino-alto-adige.it\0com.tj\0"
+"blockbuster\0"
+"com.tm\0"
+"com.tn\0\xe7\xbd\x91\xe5\x9d\x80\0"
+"joboji.iwate.jp\0com.to\0"
+"handson.museum\0society.museum\0com.ua\0dyndns-free.com\0"
+"com.tr\0fish\0"
+"miyakonojo.miyazaki.jp\0"
+"nishi.fukuoka.jp\0com.tt\0"
+"nichinan.tottori.jp\0lib.mt.us\0lib.nd.us\0is-a-chef.net\0"
+"shimotsuma.ibaraki.jp\0kamikitayama.nara.jp\0com.tw\0com.ug\0"
+"tsugaru.aomori.jp\0"
+"xz.cn\0"
+"vegas\0"
+"kuju.oita.jp\0"
+"kunohe.iwate.jp\0"
+"takarazuka.hyogo.jp\0geek.nz\0"
+"stv.ru\0"
+"com.vc\0"
+"so.it\0com.ve\0"
+"anamizu.ishikawa.jp\0semine.miyagi.jp\0itoman.okinawa.jp\0"
+"ama.aichi.jp\0"
+"bt.it\0"
+"iwanai.hokkaido.jp\0com.uy\0com.vi\0"
+"kunst.museum\0com.uz\0"
+"nyuzen.toyama.jp\0"
+"dontexist.net\0"
+"com.vn\0"
+"kitaura.miyazaki.jp\0"
+"hi.us\0"
+"brussel.museum\0"
+"austevoll.no\0"
+"com.vu\0"
+"oygarden.no\0"
+"tomika.gifu.jp\0kumatori.osaka.jp\0lidl\0"
"chikuho.fukuoka.jp\0"
+"cy.eu.org\0"
+"philips\0"
+"kawai.nara.jp\0"
+"forum\0"
+"com.ws\0"
+"munakata.fukuoka.jp\0tokuyama.yamaguchi.jp\0dyr\xc3\xb8y.no\0"
+"deloitte\0"
+"gemological.museum\0"
+"airport.aero\0"
+"\xc3\xa1laheadju.no\0northwesternmutual\0"
+"higashikagura.hokkaido.jp\0glade\0"
+"toei.aichi.jp\0mombetsu.hokkaido.jp\0"
+"press\0za.org\0"
+"servegame.org\0"
+"k12.vi.us\0life\0"
+"shimokawa.hokkaido.jp\0ritto.shiga.jp\0"
+"!city.sapporo.jp\0"
+"cz.eu.org\0"
+"leitungsen.de\0worse-than.tv\0"
+"yokoshibahikari.chiba.jp\0miyoshi.saitama.jp\0"
+"feedback\0"
+"kaszuby.pl\0"
+"pesaro-urbino.it\0"
+"moriya.ibaraki.jp\0"
+"furudono.fukushima.jp\0"
+"tateyama.toyama.jp\0"
+"\xe5\xb3\xb6\xe6\xa0\xb9.jp\0brandywinevalley.museum\0sogndal.no\0"
+"tachikawa.tokyo.jp\0alaheadju.no\0vestvagoy.no\0"
+"\xe5\xae\xb6\xe9\x9b\xbb\0"
+"zentsuji.kagawa.jp\0"
+"oita.jp\0\xc3\xa1lt\xc3\xa1.no\0dyndns-ip.com\0"
+"workinggroup.aero\0com.zm\0"
+"corvette.museum\0for-more.biz\0"
+"rimini.it\0mihama.chiba.jp\0"
+"hm.no\0"
+"sm.ua\0\xe9\xa6\x99\xe6\xb8\xaf\0"
+"ath.cx\0"
+"bungotakada.oita.jp\0lutsk.ua\0dk.eu.org\0"
+"hirara.okinawa.jp\0"
+"media.hu\0bharti\0"
+"ta.it\0ipiranga\0"
+"is-slick.com\0"
+"nico\0"
+"marumori.miyagi.jp\0"
+"arts.co\0tsuruta.aomori.jp\0lancome\0"
+"gliding.aero\0inatsuki.fukuoka.jp\0"
+"nome.pt\0familyds.net\0"
+"naruto.tokushima.jp\0mt.us\0nd.us\0"
+"kakinoki.shimane.jp\0"
+"is-an-entertainer.com\0"
+"port.fr\0gotdns.ch\0"
+"bydgoszcz.pl\0"
+"r\xc3\xb8st.no\0"
+"ranzan.saitama.jp\0"
+"marburg.museum\0komi.ru\0"
+"wellbeingzone.co.uk\0"
+"chikuzen.fukuoka.jp\0hjartdal.no\0"
+"ikeda.fukui.jp\0"
+"contemporaryart.museum\0"
+"ostroleka.pl\0like\0"
+"\xc3\xb8vre-eiker.no\0dyndns-server.com\0"
+"ishikawa.fukushima.jp\0"
+"um.gov.pl\0industries\0"
+"b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0"
+"koga.fukuoka.jp\0tsukui.kanagawa.jp\0"
+"sumida.tokyo.jp\0info.zm\0"
+"tohma.hokkaido.jp\0shika.ishikawa.jp\0"
+"ilovecollege.info\0"
+"gojome.akita.jp\0tsuchiura.ibaraki.jp\0"
+"shikokuchuo.ehime.jp\0"
+"pulawy.pl\0"
+"dr\xc3\xb8""bak.no\0muos\xc3\xa1t.no\0"
+"cremona.it\0"
+"de.eu.org\0"
+"\xe5\x98\x89\xe9\x87\x8c\xe5\xa4\xa7\xe9\x85\x92\xe5\xba\x97\0"
+"mx.na\0"
+"oster\xc3\xb8y.no\0"
+"nl.ca\0"
+"minami.fukuoka.jp\0r\xc3\xb8yken.no\0"
+"t\xc3\xb8nsberg.no\0"
+"mihama.fukui.jp\0kodaira.tokyo.jp\0limo\0"
+"bv.nl\0lind\xc3\xa5s.no\0"
+"livorno.it\0"
+"yn.cn\0"
+"ascolipiceno.it\0sm\xc3\xb8la.no\0\xe6\x96\xb0\xe9\x97\xbb\0"
+"is-not-certified.com\0"
+"kanmaki.nara.jp\0honda\0"
+"link\0"
+"roma.it\0nowruz\0"
+"prof.pr\0"
+"dallas.museum\0"
+"iron.museum\0futbol\0hk.org\0"
+"ss.it\0"
"nasu.tochigi.jp\0"
-"intelligence.museum\0nyc\0"
-"is-an-actress.com\0"
-"\xe7\xa6\x8f\xe5\xb2\xa1.jp\0"
-"vda.it\0"
-"\xe6\xbb\x8b\xe8\xb3\x80.jp\0worse-than.tv\0"
-"gliding.aero\0notaires.km\0lea\xc5\x8bgaviika.no\0"
-"r.se\0per.sg\0"
-"taxi.br\0"
-"elvendrell.museum\0"
-"kariwa.niigata.jp\0"
-"science.museum\0from-ms.com\0from-nc.com\0"
-"cesena-forli.it\0"
-"dc.us\0dontexist.org\0"
-"kishiwada.osaka.jp\0"
-"yoshioka.gunma.jp\0"
-"k12.dc.us\0"
-"toyoake.aichi.jp\0seranishi.hiroshima.jp\0noda.iwate.jp\0"
-"cagliari.it\0buyshouses.net\0"
-"aso.kumamoto.jp\0"
-"sauda.no\0"
-"\xe5\x85\xb5\xe5\xba\xab.jp\0nisshin.aichi.jp\0"
-"vegarshei.no\0"
-"m\xc4\x81ori.nz\0"
-"overhalla.no\0voagat.no\0"
-"indian.museum\0railroad.museum\0nsk.ru\0is-leet.com\0"
-"inf.br\0nakama.fukuoka.jp\0"
-"readmyblog.org\0"
-"bergamo.it\0\xe5\xa5\x88\xe8\x89\xaf.jp\0"
-"ushiku.ibaraki.jp\0"
-"med.ly\0"
-"tahara.aichi.jp\0"
-"ringsaker.no\0cc.or.us\0"
-"aga.niigata.jp\0"
-"property\0"
-"hinohara.tokyo.jp\0"
-"ac\0"
-"ad\0kuji.iwate.jp\0kinder\0compute.amazonaws.cn\0"
+"other.nf\0"
+"ch.it\0sykkylven.no\0loginto.me\0"
+"author\0"
+"aid.pl\0pics\0"
+"us.gov.pl\0kustanai.ru\0"
+"nkz.ru\0"
+"yaroslavl.ru\0"
+"koeln\0"
+"padova.it\0"
+"vard\xc3\xb8.no\0"
+"shiga.jp\0"
+"gaular.no\0rennesoy.no\0"
+"panama.museum\0"
+"yonezawa.yamagata.jp\0media.pl\0ciscofreak.com\0"
+"tosa.kochi.jp\0ogawa.nagano.jp\0holt\xc3\xa5len.no\0"
+"itayanagi.aomori.jp\0nakamura.kochi.jp\0askvoll.no\0"
+"batsfjord.no\0"
+"yosemite.museum\0homeip.net\0"
+"nike\0"
+"tempioolbia.it\0sandvikcoromant\0"
+"iwade.wakayama.jp\0"
+"kaufen\0"
+"shinjuku.tokyo.jp\0presidio.museum\0gloppen.no\0is-a-celticsfan.org\0"
+"bahccavuotna.no\0lezajsk.pl\0"
+"minamisanriku.miyagi.jp\0"
+"*.sapporo.jp\0"
+"tomi.nagano.jp\0"
+"friuliveneziagiulia.it\0bando.ibaraki.jp\0"
+"meiwa.gunma.jp\0"
+"k12.fl.us\0"
+"sos.pl\0gotdns.org\0"
+"bashkiria.ru\0"
+"troitsk.su\0"
+"kuban.ru\0"
+"nakhodka.ru\0"
+"moriyama.shiga.jp\0motorcycle.museum\0"
+"crew.aero\0"
+"luster.no\0podhale.pl\0hockey\0"
+"bahn.museum\0"
+"tas.gov.au\0"
+"izumizaki.fukushima.jp\0"
+"b\xc3\xa1jddar.no\0*.magentosite.cloud\0"
+"bashkiria.su\0"
+"satosho.okayama.jp\0kvam.no\0discount\0"
+"cosenza.it\0"
+"orkanger.no\0"
+"v\xc3\xa5ler.hedmark.no\0"
+"tobishima.aichi.jp\0"
+"vang.no\0"
+"higashine.yamagata.jp\0lib.mn.us\0"
+"arao.kumamoto.jp\0center.museum\0"
+"doomdns.com\0"
+"n\xc3\xb8tter\xc3\xb8y.no\0arts.ve\0"
+"\xc3\xa5lesund.no\0mobi.tt\0pamperedchef\0"
+"valleaosta.it\0"
+"kunstunddesign.museum\0gdynia.pl\0"
+"valer.ostfold.no\0rich\0"
+"mobi.tz\0"
+"te.it\0udono.mie.jp\0"
+"abarth\0"
+"bz.it\0"
+"ca.eu.org\0"
+"\xe3\x82\xb3\xe3\x83\xa0\0"
+"sondrio.it\0for-some.biz\0"
+"wa.gov.au\0agro.pl\0"
+"hanno.saitama.jp\0asahi.toyama.jp\0"
+"taka.hyogo.jp\0nh.us\0"
+"noda.iwate.jp\0"
+"hongo.hiroshima.jp\0omiya.saitama.jp\0\xd0\xb1\xd0\xb5\xd0\xbb\0"
+"cuneo.it\0yachiyo.chiba.jp\0"
+"troandin.no\0"
+"is-a-cpa.com\0"
+"mikasa.hokkaido.jp\0"
+"\xe9\x95\xb7\xe5\xb4\x8e.jp\0smola.no\0glass\0"
+"kanoya.kagoshima.jp\0"
+"int.ar\0"
+"tel.tr\0"
+"live\0"
+"mitake.gifu.jp\0"
+"nakano.nagano.jp\0"
+"is-a-nurse.com\0"
+"int.az\0matera.it\0hs.kr\0\xc3\xb8rskog.no\0"
+"yuzawa.niigata.jp\0"
+"lowicz.pl\0"
+"int.bo\0grondar.za\0"
+"eu-2.evennode.com\0"
+"volgograd.ru\0"
+"mazowsze.pl\0"
+"is-into-games.com\0"
+"is-found.org\0"
+"vossevangen.no\0"
+"int.ci\0yonabaru.okinawa.jp\0"
+"resistance.museum\0"
+"ginan.gifu.jp\0tiaa\0"
+"ayase.kanagawa.jp\0ise.mie.jp\0chichibu.saitama.jp\0athleta\0"
+"int.co\0"
+"langev\xc3\xa5g.no\0"
+"oguni.kumamoto.jp\0"
+"sec.ps\0"
+"chita.aichi.jp\0"
+"nakagyo.kyoto.jp\0cloudcontrolled.com\0"
+"inderoy.no\0"
+"monmouth.museum\0dep.no\0mazury.pl\0"
+"gliwice.pl\0"
+"jan-mayen.no\0arts.ro\0"
+"ohira.miyagi.jp\0"
+"\xe5\xa5\x88\xe8\x89\xaf.jp\0law.pro\0"
+"riik.ee\0mobi.na\0volda.no\0"
+"shisui.chiba.jp\0"
+"kyuragi.saga.jp\0\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0home.dyndns.org\0"
+"rotorcraft.aero\0mobi.ng\0nl.no\0"
+"kasuga.hyogo.jp\0"
+"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0ping\0"
+"jfk.museum\0"
+"vestv\xc3\xa5g\xc3\xb8y.no\0fam.pk\0healthcare\0pink\0"
+"rome.it\0fukushima.hokkaido.jp\0nord-fron.no\0"
+"magadan.ru\0"
+"nakayama.yamagata.jp\0"
+"val-daosta.it\0"
+"kiyose.tokyo.jp\0"
+"notodden.no\0"
+"cl.it\0miami\0"
+"modena.it\0"
+"hitachiomiya.ibaraki.jp\0"
+"kyowa.hokkaido.jp\0yakage.okayama.jp\0"
+"\xe6\x96\xb0\xe6\xbd\x9f.jp\0mer\xc3\xa5ker.no\0simple-url.com\0"
+"cd.eu.org\0"
+"nj.us\0schwarz\0"
+"ia.us\0eu-1.evennode.com\0"
+"oldnavy\0"
+"vladivostok.ru\0"
+"barrel-of-knowledge.info\0"
+"hirosaki.aomori.jp\0"
+"aeroclub.aero\0navigation.aero\0"
+"santafe.museum\0"
+"dellogliastra.it\0\xe6\x94\xbf\xe5\xba\x9c\0"
+"asnes.no\0"
+"vao.it\0yugawa.fukushima.jp\0"
+"chuo.osaka.jp\0arts.nf\0tokyo\0"
+"ap-southeast-1.compute.amazonaws.com\0"
+"notogawa.shiga.jp\0"
+"tennis\0us.com\0"
+"holdings\0"
+"beats\0lifestyle\0"
+"redumbrella\0issmarterthanyou.com\0"
+"britishcolumbia.museum\0"
+"maizuru.kyoto.jp\0"
+"k12.va.us\0"
+"encyclopedic.museum\0posts-and-telecommunications.museum\0k12.pr.us\0"
+"youth.museum\0"
+"barletta-trani-andria.it\0"
+"kai.yamanashi.jp\0"
+"riodejaneiro.museum\0"
+"nyny.museum\0"
+"software.aero\0yamato.kanagawa.jp\0"
+"obira.hokkaido.jp\0"
+"int.is\0"
+"review\0"
+"mishima.shizuoka.jp\0"
+"aizubange.fukushima.jp\0vestby.no\0"
+"akita.jp\0"
+"budejju.no\0"
+"hosting\0"
+"kuwana.mie.jp\0"
+"\xe4\xb8\x96\xe7\x95\x8c\0"
+"te.ua\0"
+"\xe5\xa4\xa7\xe5\x88\x86.jp\0"
+"tako.chiba.jp\0moareke.no\0"
+"associates\0"
+"m\xc3\xa1latvuopmi.no\0windows\0"
+"mail.pl\0augustow.pl\0"
+"int.la\0"
+"!city.kobe.jp\0"
+"cn.it\0sanfrancisco.museum\0"
+"sakado.saitama.jp\0s3-ap-southeast-1.amazonaws.com\0"
+"principe.st\0okinawa\0"
+"drive\0"
+"jogasz.hu\0misato.shimane.jp\0kuroiso.tochigi.jp\0"
+"int.lk\0"
+"higashikagawa.kagawa.jp\0"
+"groks-this.info\0"
+"arkhangelsk.ru\0"
+"yawatahama.ehime.jp\0"
+"pa.leg.br\0"
+"chigasaki.kanagawa.jp\0minami-alps.yamanashi.jp\0osoyro.no\0"
+"tone.ibaraki.jp\0matsuda.kanagawa.jp\0tenri.nara.jp\0"
+"nogata.fukuoka.jp\0"
+"omachi.saga.jp\0\xc3\xb8rsta.no\0"
+"lucca.it\0yanaizu.fukushima.jp\0"
+"africa.com\0"
+"wakuya.miyagi.jp\0"
+"arkhangelsk.su\0"
+"eurovision\0"
+"manx.museum\0askim.no\0"
+"sakegawa.yamagata.jp\0"
+"int.mv\0b\xc3\xa1hccavuotna.no\0"
+"int.mw\0"
+"int.ni\0"
+"sakaki.nagano.jp\0nakano.tokyo.jp\0"
+"blog\0"
+"tinn.no\0ostroda.pl\0mydrobo.com\0"
+"pb.leg.br\0"
+"gonohe.aomori.jp\0starostwo.gov.pl\0edu.krd\0"
+"marugame.kagawa.jp\0"
+"nt.au\0"
+"sekigahara.gifu.jp\0"
+"plaza.museum\0"
+"leasing.aero\0tjeldsund.no\0"
+"sunagawa.hokkaido.jp\0"
+"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0from-nh.com\0"
+"nt.ca\0"
+"bellevue.museum\0"
+"lib.oh.us\0"
+"tysfjord.no\0"
+"otsuki.kochi.jp\0co.krd\0"
+"k12.ec\0porsangu.no\0"
+"yukuhashi.fukuoka.jp\0"
+"int.pt\0"
+"soundandvision.museum\0nesna.no\0"
+"read-books.org\0"
+"khmelnitskiy.ua\0"
+"br\xc3\xb8nn\xc3\xb8y.no\0"
+"tm.cy\0fedje.no\0"
+"monzabrianza.it\0"
+"ami.ibaraki.jp\0marker.no\0cloudfront.net\0"
+"naganohara.gunma.jp\0forsand.no\0"
+"\xe6\xbe\xb3\xe9\x96\x80\0volkswagen\0"
+"tosu.saga.jp\0raisa.no\0yokohama\0"
+"aip.ee\0"
+"foggia.it\0"
+"takinoue.hokkaido.jp\0realm.cz\0"
+"coldwar.museum\0lancaster\0"
+"wassamu.hokkaido.jp\0ro.eu.org\0"
+"tomari.hokkaido.jp\0locus\0"
+"stjordal.no\0"
+"aga.niigata.jp\0americanart.museum\0"
+"campobasso.it\0shimoda.shizuoka.jp\0"
+"adult\0pharmacy\0"
+"telekommunikation.museum\0"
+"ac\0kopervik.no\0"
+"ad\0witd.gov.pl\0int.ru\0"
"ae\0"
-"af\0uchinomi.kagawa.jp\0kashihara.nara.jp\0"
-"ag\0snasa.no\0"
-"ai\0"
-"inf.cu\0wa.us\0"
-"al\0tomioka.gunma.jp\0"
-"am\0"
-"an\0"
-"ao\0k12.wi.us\0"
-"traniandriabarletta.it\0"
-"aq\0ba\0"
-"ar\0bb\0"
-"as\0uslivinghistory.museum\0"
-"at\0"
-"au\0be\0"
-"bf\0tomisato.chiba.jp\0tajimi.gifu.jp\0"
-"aw\0bg\0is-a-knight.org\0"
+"af\0mytis.ru\0int.rw\0abudhabi\0"
+"ag\0"
+"ai\0raholt.no\0"
+"oshima.yamaguchi.jp\0"
+"al\0"
+"am\0latino\0tips\0"
+"reklam.hu\0jewish.museum\0rakkestad.no\0"
+"ao\0higashimatsushima.miyagi.jp\0\xe5\xa4\xa7\xe6\x8b\xbf\0elasticbeanstalk.com\0"
+"aq\0ba\0chernivtsi.ua\0blogsite.org\0from-id.com\0"
+"ar\0bb\0jobs.tt\0"
+"as\0tm.fr\0yamagata.yamagata.jp\0dontexist.org\0"
+"at\0obanazawa.yamagata.jp\0"
+"air-surveillance.aero\0au\0be\0"
+"bf\0"
+"aw\0bg\0carrara-massa.it\0"
"ax\0bh\0"
-"bi\0"
-"az\0bj\0"
-"bm\0nebraska.museum\0one\0"
-"bo\0ong\0s3-sa-east-1.amazonaws.com\0"
-"ca\0med.om\0"
-"br\0gold\0"
-"bs\0cc\0y.se\0"
-"bt\0cd\0nakai.kanagawa.jp\0golf\0onl\0"
-"med.pa\0cc.vi.us\0"
-"bv\0cf\0shinanomachi.nagano.jp\0"
-"bw\0cg\0york.museum\0"
-"ch\0nishihara.kumamoto.jp\0"
+"bi\0heroy.more-og-romsdal.no\0int.tj\0"
+"az\0bj\0myftp.org\0"
+"aogaki.hyogo.jp\0blue\0"
+"bm\0"
+"kawamata.fukushima.jp\0aurskog-h\xc3\xb8land.no\0scholarships\0"
+"bo\0romskog.no\0flir\0"
+"honbetsu.hokkaido.jp\0"
+"ca\0pors\xc3\xa1\xc5\x8bgu.no\0"
+"br\0"
+"bs\0cc\0idf.il\0int.tt\0"
+"bt\0cd\0"
+"bv\0cf\0"
+"bw\0cg\0k12.il\0"
+"ch\0"
"by\0ci\0"
"bz\0"
-"firestone\0"
-"cl\0chikusei.ibaraki.jp\0"
-"cm\0frosta.no\0"
-"cn\0"
-"co\0tingvoll.no\0isa.us\0\xe5\x95\x86\xe5\xba\x97\0"
-"sic.it\0kasuga.hyogo.jp\0med.pl\0"
-"cr\0!city.yokohama.jp\0maori.nz\0"
-"shiroi.chiba.jp\0amagasaki.hyogo.jp\0flsmidth\0"
-"cu\0de\0soc.lk\0gloppen.no\0holdings\0loans\0"
-"cv\0funabashi.chiba.jp\0kaizuka.osaka.jp\0"
-"cw\0ooo\0"
-"cx\0\xe1\x83\x92\xe1\x83\x94\0financial\0"
-"stada\0"
-"cz\0dj\0bedzin.pl\0"
-"dk\0\xd8\xa8\xd9\x8a\xd8\xaa\xd9\x83\0"
-"wodzislaw.pl\0"
-"dm\0"
-"otaki.chiba.jp\0saroma.hokkaido.jp\0poker\0"
-"do\0lviv.ua\0"
-"bibai.hokkaido.jp\0aridagawa.wakayama.jp\0"
-"arezzo.it\0"
-"ec\0civilization.museum\0vestnes.no\0"
-"ee\0communications.museum\0"
-"pmn.it\0"
-"eg\0"
-"dz\0final\0"
-"sarufutsu.hokkaido.jp\0nagawa.nagano.jp\0accountant\0"
-"muenchen.museum\0"
-"\xd1\x83\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0"
-"pisa.it\0"
-"linde\0"
-"es\0audnedaln.no\0narvik.no\0"
-"et\0geometre-expert.fr\0livorno.it\0tra.kp\0"
-"eu\0med.sa\0lib.sd.us\0goog\0"
-"5.bg\0krager\xc3\xb8.no\0gratis\0"
-"med.sd\0"
-"fi\0luxury\0"
-"nanjo.okinawa.jp\0"
-"askim.no\0aurskog-holand.no\0asso.re\0\xd9\x85\xd8\xb5\xd8\xb1\0"
-"wada.nagano.jp\0"
+"hangout\0moscow\0"
+"cl\0"
+"cm\0aostavalley.it\0prudential\0"
+"cn\0oirase.aomori.jp\0"
+"co\0\xc3\xa5mli.no\0"
+"chikugo.fukuoka.jp\0"
+"cr\0yaizu.shizuoka.jp\0"
+"int.ve\0"
+"cu\0de\0shiraoi.hokkaido.jp\0iruma.saitama.jp\0lib.nv.us\0"
+"of.by\0cv\0tm.hu\0teshikaga.hokkaido.jp\0lib.ia.us\0lawyer\0university\0"
+"cw\0yamaga.kumamoto.jp\0"
+"b.bg\0cx\0si.eu.org\0"
+"cz\0dj\0"
+"dk\0"
+"dm\0cc.vt.us\0int.vn\0"
+"furano.hokkaido.jp\0"
+"do\0cn.ua\0"
+"consultant.aero\0kasama.ibaraki.jp\0"
+"lecce.it\0frana.no\0"
+"\xe9\x9b\xbb\xe8\xa8\x8a\xe7\x9b\x88\xe7\xa7\x91\0"
+"b.br\0ec\0"
+"ee\0"
+"higashitsuno.kochi.jp\0"
+"eg\0s3-ap-northeast-1.amazonaws.com\0"
+"cr.it\0defense.tn\0"
+"dz\0"
+"tokoname.aichi.jp\0"
+"cargo.aero\0frankfurt.museum\0"
+"yamakita.kanagawa.jp\0"
+"es\0yakutia.ru\0"
+"et\0torino.it\0"
+"eu\0noshiro.akita.jp\0"
+"fr\xc3\xb8ya.no\0\xe6\xbe\xb3\xe9\x97\xa8\0"
+"fi\0"
"fm\0"
-"fo\0org\0"
-"fm.br\0agro.pl\0"
-"ga\0"
-"fr\0gb\0kazo.saitama.jp\0"
-"gd\0ogawa.ibaraki.jp\0"
-"ge\0us-east-1.amazonaws.com\0"
-"gf\0"
-"gg\0mer\xc3\xa5ker.no\0from-ok.com\0"
-"gh\0kuwana.mie.jp\0"
+"tm.km\0"
+"fo\0"
+"blogdns.org\0"
+"ga\0for-better.biz\0"
+"fr\0gb\0iinet\0is-a-democrat.com\0"
+"kurate.fukuoka.jp\0"
+"gd\0"
+"ge\0nakijin.okinawa.jp\0"
+"gf\0miyoshi.tokushima.jp\0"
+"gg\0"
+"gh\0"
"gi\0"
-"mashike.hokkaido.jp\0"
-"is-a-celticsfan.org\0"
-"gl\0ogawa.nagano.jp\0"
-"gm\0"
+"oyama.tochigi.jp\0"
+"kanan.osaka.jp\0"
+"gl\0hannan.osaka.jp\0"
+"gm\0tranby.no\0"
"gn\0"
-"arendal.no\0"
-"sd.cn\0gp\0"
+"familyds.org\0"
+"gp\0"
"gq\0"
-"gr\0\xe5\xbe\xb3\xe5\xb3\xb6.jp\0"
-"gs\0claims\0"
-"gt\0"
-"gw\0lib.md.us\0"
-"int.ar\0"
+"gr\0trentinostirol.it\0sande.vestfold.no\0"
+"gs\0kanna.gunma.jp\0"
+"gt\0tm.mc\0k12.ak.us\0insurance\0"
+"virgin\0"
+"gw\0"
+"tm.mg\0sk.eu.org\0"
"gy\0"
-"hk\0colonialwilliamsburg.museum\0associates\0"
+"hk\0amli.no\0"
"hm\0"
-"hn\0"
-"int.az\0karumai.iwate.jp\0"
-"hr\0zao.miyagi.jp\0anan.tokushima.jp\0"
-"gov.ac\0"
-"ht\0id\0tsuiki.fukuoka.jp\0ikoma.nara.jp\0chungnam.kr\0mail.pl\0"
-"gov.ae\0int.bo\0hu\0ie\0bergen.no\0kh.ua\0is-lost.org\0"
-"gov.af\0"
-"kurobe.toyama.jp\0green\0"
-"yk.ca\0"
-"tonami.toyama.jp\0"
-"gov.al\0"
-"md.ci\0im\0histoire.museum\0salem.museum\0"
-"in\0rm.it\0vercelli.it\0"
-"int.ci\0io\0music.museum\0"
-"bieszczady.pl\0gmail\0"
-"gov.ba\0iq\0"
-"gov.ar\0gov.bb\0ir\0"
-"gov.as\0is\0\xc3\xa1laheadju.no\0samsung\0"
-"it\0dnsdojo.net\0"
-"gov.au\0int.co\0je\0game-server.cc\0"
-"gov.bf\0"
-"kragero.no\0"
-"gov.bh\0"
-"asso.nc\0"
-"gov.az\0"
-"gov.bm\0voss.no\0"
-"gov.bo\0jo\0insure\0"
-"chirurgiens-dentistes.fr\0gorizia.it\0jp\0ovh\0"
-"inf.mk\0"
-"gov.br\0"
-"gov.bs\0\xc3\xb8ksnes.no\0"
-"gov.bt\0gov.cd\0"
-"flora.no\0"
-"kg\0khakassia.ru\0"
-"gov.by\0ki\0"
-"gov.bz\0shinkamigoto.nagasaki.jp\0"
-"sk.ca\0\xc3\xa5lesund.no\0"
-"gov.cl\0fukaya.saitama.jp\0wloclawek.pl\0"
-"gov.cm\0km\0tynset.no\0chuvashia.ru\0tec.ve\0"
-"gov.cn\0kn\0"
-"gov.co\0journalism.museum\0netbank\0"
-"basilicata.it\0susaki.kochi.jp\0ogawara.miyagi.jp\0kp\0"
-"la\0kvitsoy.no\0"
-"kr\0lb\0"
-"lc\0alaheadju.no\0"
-"gd.cn\0"
-"gov.cu\0"
-"fujiidera.osaka.jp\0"
-"gov.cx\0"
-"ky\0li\0oceanographique.museum\0viking.museum\0jessheim.no\0forgot.her.name\0"
-"kz\0kitchen\0"
-"lk\0"
-"minamiawaji.hyogo.jp\0nikko.tochigi.jp\0"
-"gov.dm\0"
-"kakuda.miyagi.jp\0"
-"gov.do\0"
-"kasuga.fukuoka.jp\0"
-"ma\0r\xc3\xa1isa.no\0"
-"lr\0"
-"gov.ec\0ls\0mc\0"
-"fukuoka.jp\0lt\0md\0"
-"gov.ee\0lu\0me\0"
+"hn\0shonai.yamagata.jp\0"
+"bible\0"
+"hr\0"
+"pagespeedmobilizer.com\0"
+"ht\0id\0trentino-s-tirol.it\0kppsp.gov.pl\0"
+"hu\0ie\0"
+"yamatokoriyama.nara.jp\0visa\0"
+"assedic.fr\0seihi.nagasaki.jp\0\xd0\xb0\xd0\xba.\xd1\x81\xd1\x80\xd0\xb1\0"
+"higashiosaka.osaka.jp\0"
+"digital\0"
+"il\0"
+"im\0"
+"in\0nagasaki.jp\0alstom\0"
+"io\0"
+"tm.no\0"
+"iq\0shimonoseki.yamaguchi.jp\0nt.no\0protection\0"
+"ir\0"
+"d.bg\0is\0"
+"zj.cn\0it\0vrn.ru\0"
+"je\0macys\0"
+"nx.cn\0"
+"grane.no\0"
+"no-ip.co.uk\0"
+"santacruz.museum\0aaa.pro\0"
+"shiranuka.hokkaido.jp\0"
+"surrey.museum\0"
+"misato.miyagi.jp\0ngo.lk\0baikal.ru\0careers\0sharp\0"
+"jo\0aizumi.tokushima.jp\0"
+"to.it\0jp\0palana.ru\0"
+"lombardia.it\0markets\0"
+"im.it\0gs.fm.no\0latrobe\0"
+"ct.it\0pi.leg.br\0"
+"sannohe.aomori.jp\0mizumaki.fukuoka.jp\0"
+"kg\0guernsey.museum\0\xe7\xb6\xb2\xe8\xb7\xaf.tw\0"
+"educational.museum\0"
+"ki\0kwp.gov.pl\0"
+"soma.fukushima.jp\0dvrcam.info\0"
+"km\0tm.pl\0"
+"kn\0"
+"med.pro\0"
+"ota.tokyo.jp\0kp\0"
+"la\0"
+"kr\0lb\0bradesco\0"
+"lc\0dynv6.net\0"
+"its.me\0"
+"molde.no\0"
+"viva\0"
+"hofu.yamaguchi.jp\0ru.eu.org\0se.eu.org\0"
+"nakatombetsu.hokkaido.jp\0susaki.kochi.jp\0ky\0li\0"
+"kz\0chattanooga.museum\0"
+"kunitachi.tokyo.jp\0lk\0marnardal.no\0apps.fbsbx.com\0"
+"is-an-artist.com\0ch.eu.org\0"
+"ovre-eiker.no\0"
+"aeroport.fr\0kuromatsunai.hokkaido.jp\0"
+"naturalhistory.museum\0"
+"shobara.hiroshima.jp\0ma\0""1kapp.com\0"
+"taa.it\0lr\0"
+"ls\0mc\0grue.no\0"
+"lt\0md\0vivo\0"
+"kiryu.gunma.jp\0lu\0me\0"
"lv\0"
-"gov.eg\0mg\0"
-"vet.br\0mh\0"
+"mg\0gratangen.no\0nat.tn\0"
+"mh\0"
"ly\0"
-"gov.dz\0"
-"mk\0"
-"zama.kanagawa.jp\0ml\0pid\0"
-"trade\0isa-hockeynut.com\0"
+"mk\0k12.wi.us\0"
+"ml\0"
+"betainabox.com\0"
"mn\0"
-"mo\0komvux.se\0"
-"mp\0"
-"mq\0na\0from-al.com\0"
-"fm.it\0futtsu.chiba.jp\0mr\0"
-"ms\0nc\0"
-"gov.et\0yasaka.nagano.jp\0mt\0"
-"mu\0ne\0ltda\0"
-"kazuno.akita.jp\0mv\0nf\0pin\0"
-"mw\0ng\0"
-"mishima.fukushima.jp\0mx\0"
-"steam.museum\0my\0"
-"group.aero\0\xe5\x80\x8b\xe4\xba\xba.hk\0"
-"matsuyama.ehime.jp\0nl\0"
-"no\0trana.no\0"
-"minamitane.kagoshima.jp\0nr\0"
-"schoenbrunn.museum\0wv.us\0"
-"mombetsu.hokkaido.jp\0"
-"gov.ge\0boston.museum\0schweiz.museum\0nu\0dyndns-pics.com\0"
-"ureshino.mie.jp\0"
-"aseral.no\0snz.ru\0"
-"gov.gh\0thruhere.net\0"
-"gov.gi\0"
+"mo\0global\0"
+"mp\0tm.ro\0"
+"mq\0na\0nt.ro\0"
+"yotsukaido.chiba.jp\0mr\0"
+"nishiokoppe.hokkaido.jp\0ms\0nc\0"
+"kira.aichi.jp\0mt\0"
+"mu\0ne\0"
+"mv\0nf\0tm.se\0"
+"miyawaka.fukuoka.jp\0mw\0ng\0"
+"mx\0servebbs.net\0"
+"my\0"
+"mz\0kraanghke.no\0"
+"ngo.ph\0hzc.io\0"
+"planetarium.museum\0nl\0onthewifi.com\0"
+"k12.tr\0"
+"toyako.hokkaido.jp\0"
+"no\0"
+"adm.br\0"
+"samnanger.no\0nr\0"
+"wolterskluwer\0"
+"nu\0"
+"midatlantic.museum\0"
+"tsuruoka.yamagata.jp\0"
+"radio.br\0"
"nz\0"
-"gjesdal.no\0"
-"om\0"
-"gov.gn\0"
-"s3.amazonaws.com\0"
-"friulivgiulia.it\0tokyo.jp\0"
-"kvinesdal.no\0pa\0"
-"gov.gr\0"
-"asso.km\0hagebostad.no\0"
-"adachi.tokyo.jp\0"
-"pe\0"
-"pf\0"
-"bushey.museum\0"
-"lt.it\0seoul.kr\0ph\0kaszuby.pl\0"
-"civilaviation.aero\0int.is\0"
-"genoa.it\0teshikaga.hokkaido.jp\0kawanabe.kagoshima.jp\0"
-"gov.hk\0pk\0bharti\0"
-"friulivegiulia.it\0ebetsu.hokkaido.jp\0pl\0"
-"pm\0"
-"kanonji.kagawa.jp\0pn\0star\0"
-"shisui.chiba.jp\0"
-"qa\0"
-"tenri.nara.jp\0pr\0"
-"ps\0s3-website-us-west-2.amazonaws.com\0"
-"nago.okinawa.jp\0pt\0"
-"gov.ie\0alstahaug.no\0"
-"pw\0blogspot.com\0"
-"aya.miyazaki.jp\0tamano.okayama.jp\0"
-"asso.mc\0py\0"
-"cuisinella\0"
-"moriyoshi.akita.jp\0ikeda.gifu.jp\0berlin\0"
-"gov.in\0geek.nz\0"
-"okuizumo.shimane.jp\0konskowola.pl\0"
-"gov.iq\0circle\0"
-"gov.ir\0"
-"gov.is\0"
-"gov.it\0"
-"nb.ca\0re\0kv.ua\0"
-"zagan.pl\0"
-"int.la\0v\xc3\xa5g\xc3\xa5.no\0\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\0"
-"newhampshire.museum\0fm.no\0"
-"hiji.oita.jp\0"
-"gov.jo\0ro\0"
-"press.aero\0int.lk\0sa\0"
-"yoichi.hokkaido.jp\0kumenan.okayama.jp\0sb\0"
-"rs\0sc\0is-a-linux-user.org\0"
-"leg.br\0sd\0"
-"jur.pro\0ru\0se\0"
-"gov.kg\0rw\0sg\0"
-"brescia.it\0akishima.tokyo.jp\0sh\0"
-"gov.ki\0basel.museum\0si\0shacknet.nu\0"
-"ami.ibaraki.jp\0sj\0"
+"kicks-ass.net\0"
+"of.no\0rade.no\0wloclawek.pl\0legal\0"
+"om\0lib.ct.us\0"
+"f.bg\0uchinada.ishikawa.jp\0"
+"trogstad.no\0"
+"pa\0gsm.pl\0"
+"od.ua\0"
+"k12.vi\0"
+"pe\0wsa.gov.pl\0cr.ua\0"
+"minamitane.kagoshima.jp\0pf\0pomorskie.pl\0homeunix.net\0"
+"ph\0"
+"khmelnytskyi.ua\0"
+"fukushima.fukushima.jp\0miki.hyogo.jp\0"
+"pk\0"
+"b\xc3\xb8.nordland.no\0pl\0"
+"pm\0panerai\0"
+"newmexico.museum\0pn\0"
+"qa\0*.ex.ortsinfo.at\0"
+"alstahaug.no\0pr\0schaeffler\0"
+"otobe.hokkaido.jp\0ps\0"
+"como.it\0pt\0"
+"oystre-slidre.no\0racing\0"
+"trapani.it\0"
+"pw\0"
+"bayern\0"
+"py\0"
+"naamesjevuemie.no\0"
+"abogado\0"
+"space\0"
+"svelvik.no\0"
+"re\0"
+"shirako.chiba.jp\0kvitsoy.no\0"
+"hachinohe.aomori.jp\0"
+"padua.it\0"
+"kurogi.fukuoka.jp\0kanuma.tochigi.jp\0aure.no\0"
+"entertainment.aero\0"
+"soeda.fukuoka.jp\0"
+"moseushi.hokkaido.jp\0ro\0boats\0"
+"oksnes.no\0"
+"sa\0"
+"sb\0"
+"rs\0sc\0pe.leg.br\0"
+"isehara.kanagawa.jp\0sd\0"
+"perso.ht\0ru\0se\0"
+"otaki.chiba.jp\0"
+"rw\0sg\0"
+"sh\0k12.ky.us\0from-ga.com\0"
+"scienceandindustry.museum\0si\0budapest\0"
+"zushi.kanagawa.jp\0sj\0"
"sk\0"
-"sl\0"
-"gov.km\0sandefjord.no\0sm\0"
-"gov.kn\0sn\0"
+"sl\0graphics\0"
+"sm\0"
+"sn\0"
"so\0"
-"yahaba.iwate.jp\0gov.kp\0"
-"gov.la\0pharmacy\0"
-"kunitachi.tokyo.jp\0gov.lb\0sr\0"
-"gov.lc\0tc\0"
-"hidaka.saitama.jp\0st\0td\0"
-"convent.museum\0nyny.museum\0floro.no\0su\0"
-"kurate.fukuoka.jp\0sv\0tf\0"
-"altai.ru\0tg\0"
-"ibigawa.gifu.jp\0kakogawa.hyogo.jp\0nagaokakyo.kyoto.jp\0sx\0th\0"
-"gov.ky\0sy\0"
-"gov.kz\0sz\0tj\0"
-"gov.lk\0tk\0"
-"int.mv\0tl\0"
-"int.mw\0herad.no\0tm\0"
-"oarai.ibaraki.jp\0tn\0"
-"to\0"
-"tp\0"
-"gov.ma\0ua\0dnsalias.com\0"
-"gov.lr\0tr\0"
-"sor-fron.no\0"
-"hb.cn\0gov.lt\0tt\0"
-"gov.me\0healthcare\0"
-"\xe9\x9d\x99\xe5\xb2\xa1.jp\0inagawa.hyogo.jp\0gov.lv\0tv\0"
-"gov.mg\0tw\0ug\0"
-"ad.jp\0miura.kanagawa.jp\0"
-"gov.ly\0"
-"tz\0"
-"gov.mk\0uk\0"
-"\xe4\xbd\x90\xe8\xb3\x80.jp\0okinawa.okinawa.jp\0gov.ml\0"
-"archaeology.museum\0"
-"biz.bb\0gov.mn\0"
-"gov.mo\0"
-"biz.at\0"
+"beardu.no\0"
+"sr\0"
+"tc\0durban\0"
+"st\0td\0"
+"su\0"
+"works.aero\0valer.hedmark.no\0sv\0tf\0"
+"kikugawa.shizuoka.jp\0tg\0"
+"obihiro.hokkaido.jp\0joso.ibaraki.jp\0sx\0th\0"
+"sy\0media\0"
+"sz\0tj\0"
+"tk\0"
+"tl\0"
+"trading.aero\0tm\0at.eu.org\0"
+"nieruchomosci.pl\0tn\0"
+"to\0dyn-o-saur.com\0"
+"ua\0"
+"nakagusuku.okinawa.jp\0tr\0tm.za\0myftp.biz\0"
+"kashima.saga.jp\0andasuolo.no\0"
+"tt\0s3-eu-central-1.amazonaws.com\0"
+"toride.ibaraki.jp\0lighting\0"
+"b.se\0tv\0"
+"tw\0ug\0"
+"artsandcrafts.museum\0bievat.no\0"
+"h.bg\0divtasvuodna.no\0dominic.ua\0"
+"shizuoka.jp\0mitane.akita.jp\0tz\0booking\0"
+"eidfjord.no\0uk\0"
+"city.hu\0"
+"oki.fukuoka.jp\0"
+"shinjo.okayama.jp\0oracle\0"
"va\0"
-"iglesiascarbonia.it\0satte.saitama.jp\0gov.mr\0"
-"gov.ms\0us\0vc\0"
-"isshiki.aichi.jp\0"
-"gov.mu\0ve\0"
-"biz.az\0obira.hokkaido.jp\0gov.mv\0"
-"gov.mw\0gov.ng\0vg\0"
-"gov.my\0uy\0vi\0"
+"nozawaonsen.nagano.jp\0"
+"schoenbrunn.museum\0us\0vc\0"
+"stjordalshalsen.no\0"
+"ve\0from-wa.com\0"
+"ts.it\0"
+"vg\0"
+"gs.ah.no\0uy\0vi\0gallery\0"
"uz\0"
-"gs.rl.no\0"
-"corvette.museum\0"
+"unj\xc3\xa1rga.no\0"
"vn\0"
-"marburg.museum\0swiss\0"
-"lyngdal.no\0"
-"taiki.hokkaido.jp\0gov.nr\0"
-"sandoy.no\0"
-"otoineppu.hokkaido.jp\0"
-"vu\0"
-"sr.it\0misugi.mie.jp\0wf\0"
-"orland.no\0pro\0"
-"can.museum\0servebbs.org\0"
-"int.pt\0"
-"services\0"
-"s\xc3\xb8mna.no\0gov.om\0"
-"higashi.fukuoka.jp\0"
-"taobao\0"
-"lombardia.it\0tsuwano.shimane.jp\0"
-"biei.hokkaido.jp\0"
-"meraker.no\0ws\0"
+"nv.us\0"
+"ct.us\0\xe5\xb9\xbf\xe4\xb8\x9c\0sells-for-less.com\0"
+"hikawa.shimane.jp\0vu\0"
+"wf\0"
+"kamisu.ibaraki.jp\0grajewo.pl\0rsc.cdn77.org\0"
+"yamanakako.yamanashi.jp\0red.sv\0"
+"uruma.okinawa.jp\0ryuoh.shiga.jp\0tree.museum\0hotel.tz\0play\0"
+"komaki.aichi.jp\0"
+"ogliastra.it\0elburg.museum\0"
+"averoy.no\0"
+"fuchu.toyama.jp\0koenig.ru\0"
+"umb.it\0hitachinaka.ibaraki.jp\0alvdal.no\0ws\0"
+"berg.no\0ngo.za\0"
+"cooking\0"
+"okaya.nagano.jp\0"
+"kuroishi.aomori.jp\0gwangju.kr\0"
+"osakasayama.osaka.jp\0nationalfirearms.museum\0"
+"trana.no\0"
+"kamogawa.chiba.jp\0prime\0"
+"union.aero\0newjersey.museum\0k12.ks.us\0coupon\0"
+"nagahama.shiga.jp\0"
+"settlement.museum\0"
+"siracusa.it\0"
+"ac.leg.br\0"
+"s\xc3\xb8r-aurdal.no\0adygeya.su\0kep.tr\0"
+"os\xc3\xb8yro.no\0"
+"kouzushima.tokyo.jp\0malatvuopmi.no\0"
+"lavangen.no\0"
+"carrier.museum\0"
+"uslivinghistory.museum\0homedns.org\0"
+"hamada.shimane.jp\0"
+"vallee-aoste.it\0vega.no\0yt\0"
+"ishigaki.okinawa.jp\0"
+"kv\xc3\xa6""fjord.no\0"
+"emergency.aero\0on.ca\0m\xc3\xa1tta-v\xc3\xa1rjjat.no\0tj\xc3\xb8me.no\0"
+"politie\0"
+"zm\0cloud\0"
+"washingtondc.museum\0"
+"tromsa.no\0xen.prgmr.com\0"
+"urakawa.hokkaido.jp\0d.se\0"
+"chihayaakasaka.osaka.jp\0"
+"j.bg\0stjohn.museum\0audio\0"
+"qld.edu.au\0kitanakagusuku.okinawa.jp\0\xe7\xbd\x91\xe7\xab\x99\0"
+"tw.cn\0"
+"no-ip.info\0"
+"kusu.oita.jp\0"
+"veneto.it\0namikata.ehime.jp\0higashikurume.tokyo.jp\0iide.yamagata.jp\0"
+"ddr.museum\0"
+"cv.ua\0"
+"cc.ga.us\0"
+"kyotango.kyoto.jp\0"
+"seto.aichi.jp\0"
+"takaharu.miyazaki.jp\0"
+"is.it\0"
+"cz.it\0\xe4\xbd\x90\xe8\xb3\x80.jp\0"
+"yoshinogari.saga.jp\0kristiansand.no\0zarow.pl\0no-ip.org\0"
+"drangedal.no\0amfam\0"
+"trd.br\0adygeya.ru\0\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0frontier\0"
+"tamano.okayama.jp\0"
+"oh.us\0"
+"assassination.museum\0"
+"afjord.no\0"
+"napoli.it\0komatsu.ishikawa.jp\0pr.leg.br\0"
+"shishikui.tokushima.jp\0"
+"taranto.it\0!city.yokohama.jp\0higashiomi.shiga.jp\0"
+"erimo.hokkaido.jp\0opole.pl\0"
+"berlin\0"
+"kamisato.saitama.jp\0rindal.no\0"
+"trustee.museum\0stada\0"
+"accident-investigation.aero\0"
+"hokuto.yamanashi.jp\0"
+"ownprovider.com\0"
+"trainer.aero\0"
+"koshu.yamanashi.jp\0countryestate.museum\0astrakhan.ru\0"
+"hotel.lk\0direct\0does-it.net\0"
+"hatoyama.saitama.jp\0"
+"asahi.ibaraki.jp\0norilsk.ru\0"
+"pizza\0"
+"stryn.no\0"
+"\xd0\xb5\xd1\x8e\0"
+"audnedaln.no\0supply\0"
+"shimamoto.osaka.jp\0"
+"saito.miyazaki.jp\0"
+"stord.no\0"
+"nonoichi.ishikawa.jp\0likescandy.com\0"
+"valled-aosta.it\0"
+"biratori.hokkaido.jp\0"
+"trentinosued-tirol.it\0"
+"television.museum\0"
+"heimatunduhren.museum\0minnesota.museum\0"
+"narashino.chiba.jp\0aejrie.no\0"
+"f.se\0"
+"ol.no\0"
+"l.bg\0ruovat.no\0"
+"yatsuka.shimane.jp\0"
+"tsushima.aichi.jp\0"
+"upow.gov.pl\0"
+"nantan.kyoto.jp\0"
+"airguard.museum\0"
+"lecco.it\0"
+"gorlice.pl\0"
+"lorenskog.no\0"
+"kursk.ru\0"
+"perm.ru\0"
+"\xe7\xa6\x8f\xe5\xb3\xb6.jp\0oga.akita.jp\0kiyosato.hokkaido.jp\0ouchi.saga.jp\0aaa\0"
+"tjome.no\0"
+"wakkanai.hokkaido.jp\0\xe8\x87\xba\xe7\x81\xa3\0"
+"is-very-nice.org\0""3utilities.com\0"
+"compute-1.amazonaws.com\0"
+"crotone.it\0"
+"toyohashi.aichi.jp\0soja.okayama.jp\0"
+"rel.ht\0abb\0"
+"abc\0"
+"chikusei.ibaraki.jp\0tunes\0"
+"hotel.hu\0bofa\0dnsdojo.org\0"
+"mamurogawa.yamagata.jp\0"
+"bindal.no\0kv\xc3\xa6nangen.no\0"
+"medical.museum\0"
+"sarufutsu.hokkaido.jp\0"
+"2000.hu\0n\xc3\xa6r\xc3\xb8y.no\0"
+"fukui.jp\0vipsinaapp.com\0"
+"oharu.aichi.jp\0"
+"lebtimnetz.de\0"
+"bushey.museum\0"
+"kashiwazaki.niigata.jp\0london\0"
+"francaise.museum\0k12.wa.us\0"
+"s3.ap-northeast-2.amazonaws.com\0"
+"desa.id\0railroad.museum\0"
+"r\xc3\xb8ros.no\0"
+"pb.ao\0"
+"bologna.it\0"
+"aco\0"
+"or.at\0"
+"gratis\0"
+"anpachi.gifu.jp\0"
+"uenohara.yamanashi.jp\0"
+"or.bi\0"
+"\xe4\xb8\xad\xe5\x9b\xbd\0"
+"from-mt.com\0from-nd.com\0"
+"hobol.no\0perso.sn\0attorney\0"
+"mitaka.tokyo.jp\0"
+"ads\0kinder\0"
+"h.se\0"
+"or.ci\0s\xc3\xb8gne.no\0aeg\0"
+"veg\xc3\xa5rshei.no\0\xe4\xb8\xad\xe5\x9c\x8b\0"
+"n.bg\0ureshino.mie.jp\0"
+"buzen.fukuoka.jp\0"
+"ora.gunma.jp\0"
+"unjarga.no\0au.eu.org\0be.eu.org\0"
+"powiat.pl\0"
+"perso.tn\0"
+"kawaminami.miyazaki.jp\0dnipropetrovsk.ua\0"
+"or.cr\0osteroy.no\0"
+"ooshika.nagano.jp\0boehringer\0"
+"kaho.fukuoka.jp\0missoula.museum\0lur\xc3\xb8y.no\0cc.al.us\0"
+"docs\0"
+"klabu.no\0"
+"chita.ru\0"
+"s3.cn-north-1.amazonaws.com.cn\0"
+"foundation.museum\0l\xc3\xa1hppi.no\0comsec\0mcdonalds\0"
+"afl\0"
+"pesarourbino.it\0asahi.chiba.jp\0"
+"iris.arpa\0inagawa.hyogo.jp\0takatsuki.osaka.jp\0"
+"shiso.hyogo.jp\0"
+"chofu.tokyo.jp\0viking.museum\0"
+"\xc3\xa1k\xc5\x8boluokta.no\0"
+"higashinaruse.akita.jp\0"
+"vaapste.no\0yachts\0"
+"friuli-vegiulia.it\0andria-barletta-trani.it\0grandrapids.museum\0"
+"taiki.mie.jp\0dyndns.tv\0"
+"gob.ar\0tools\0"
+"mup.gov.pl\0"
+"uto.kumamoto.jp\0palmsprings.museum\0"
+"\xd1\x80\xd1\x84\0"
+"akrehamn.no\0"
+"caserta.it\0"
+"mordovia.su\0"
+"sld.do\0"
+"farmers\0search\0"
+"gob.bo\0nishikatsura.yamanashi.jp\0davvesiida.no\0"
+"bialowieza.pl\0k12.la.us\0"
+"frogn.no\0g\xc3\xa1ls\xc3\xa1.no\0sinaapp.com\0"
+"vic.gov.au\0aero.tt\0aig\0"
+"\xe8\xb0\xb7\xe6\xad\x8c\0"
+"rel.pl\0"
+"annaka.gunma.jp\0izumi.osaka.jp\0"
+"tobetsu.hokkaido.jp\0ina.saitama.jp\0blogdns.net\0bg.eu.org\0"
+"gob.cl\0capebreton.museum\0"
+"embroidery.museum\0"
+"miyako.fukuoka.jp\0"
+"weibo\0"
+"pol.dz\0mjondalen.no\0doha\0ptplus.fit\0"
+"plus\0"
+"yoshimi.saitama.jp\0\xe7\xa7\xbb\xe5\x8a\xa8\0is-a-republican.com\0al.leg.br\0"
+"aero.mv\0"
+"labour.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\0bond\0"
+"kaluga.ru\0"
+"koka.shiga.jp\0kicks-ass.org\0"
+"ono.fukushima.jp\0takasago.hyogo.jp\0asahi.nagano.jp\0kadoma.osaka.jp\0gives\0dyndns.ws\0"
+"gob.do\0"
+"or.id\0tosashimizu.kochi.jp\0"
+"bel.tr\0"
+"p.bg\0"
+"gob.ec\0"
+"kindle\0"
+"zp.ua\0"
+"homeunix.org\0"
+"miyota.nagano.jp\0"
+"cc.ri.us\0"
+"medecin.km\0kaluga.su\0"
+"aisho.shiga.jp\0"
+"mordovia.ru\0"
+"nowaruda.pl\0"
+"book\0"
+"or.it\0"
+"is-a-patsfan.org\0"
+"sigdal.no\0"
+"gob.es\0"
+"\xe7\xa6\x8f\xe5\xb2\xa1.jp\0"
+"lindas.no\0"
+"potenza.it\0"
+"nsk.ru\0"
+"tsuiki.fukuoka.jp\0"
+"or.jp\0"
+"sk\xc3\xa1nit.no\0"
+"b\xc3\xa1id\xc3\xa1r.no\0"
+"lea\xc5\x8bgaviika.no\0"
+"rifu.miyagi.jp\0"
+"ibaraki.jp\0crown\0is-a-knight.org\0"
+"mincom.tn\0"
+"diamonds\0"
+"coach\0"
+"pol.ht\0"
+"nemuro.hokkaido.jp\0"
+"or.kr\0"
+"rost.no\0"
+"fuel.aero\0gob.gt\0kitagata.saga.jp\0"
+"is-a-student.com\0"
+"incheon.kr\0"
+"idv.hk\0muroto.kochi.jp\0"
+"valle-d-aosta.it\0modum.no\0"
+"gob.hn\0"
+"servecounterstrike.com\0"
+"repbody.aero\0ed.ao\0vagan.no\0"
+"himeshima.oita.jp\0"
+"tajimi.gifu.jp\0takamori.nagano.jp\0"
+"wif.gov.pl\0"
+"anz\0"
+"aol\0hr.eu.org\0"
+"or.na\0"
+"gildesk\xc3\xa5l.no\0"
+"yahiko.niigata.jp\0"
+"or.mu\0"
+"rep.kp\0"
+"shimada.shizuoka.jp\0"
+"yokkaichi.mie.jp\0"
+"santabarbara.museum\0republican\0*.cns.joyent.com\0"
+"l.se\0"
+"r.bg\0ed.ci\0surgut.ru\0"
+"app\0"
+"fjell.no\0"
+"kurashiki.okayama.jp\0"
+"york.museum\0"
+"konskowola.pl\0dn.ua\0"
+"green\0"
+"ed.cr\0"
+"backplaneapp.io\0"
+"higashimurayama.tokyo.jp\0servebbs.org\0"
+"yokosuka.kanagawa.jp\0tsaritsyn.ru\0"
+"ot.it\0pd.it\0livinghistory.museum\0sandcats.io\0"
+"bar\0"
+"bbc\0"
+"shima.mie.jp\0"
+"shimonita.gunma.jp\0philadelphia.museum\0"
+"show.aero\0carboniaiglesias.it\0koryo.nara.jp\0"
+"giehtavuoatna.no\0"
+"nadex\0"
+"cieszyn.pl\0catholic\0"
+"yamatotakada.nara.jp\0lebesby.no\0art\0bbt\0"
+"or.pw\0"
+"uconnect\0"
+"paleo.museum\0bcg\0\xe9\x80\x9a\xe8\xb2\xa9\0"
+"vibovalentia.it\0nobeoka.miyazaki.jp\0tsurugashima.saitama.jp\0"
+"basilicata.it\0\xd0\xba\xd0\xb0\xd1\x82\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xba\0"
+"agric.za\0bcn\0"
+"frogans\0"
+"babia-gora.pl\0"
+"sld.pa\0cruise\0"
+"minamiechizen.fukui.jp\0rmit\0"
+"walter\0"
+"pug.it\0tono.iwate.jp\0joshkar-ola.ru\0"
+"gob.mx\0hadsel.no\0hashbang.sh\0"
+"gob.ni\0"
+"fst.br\0"
+"pyatigorsk.ru\0"
+"masaki.ehime.jp\0"
+"emp.br\0"
+"fitjar.no\0"
+"ashibetsu.hokkaido.jp\0uzhgorod.ua\0komatsu\0xfinity\0cloudcontrolapp.com\0"
+"jorpeland.no\0"
+"parti.se\0"
+"dr.na\0h\xc3\xa1""bmer.no\0"
+"biella.it\0"
+"oristano.it\0"
+"atsugi.kanagawa.jp\0"
+"coal.museum\0stordal.no\0"
+"gob.pa\0"
+"grosseto.it\0bet\0"
+"viterbo.it\0jobs\0rollag.no\0"
+"or.th\0"
+"shonai.fukuoka.jp\0yono.saitama.jp\0kunstsammlung.museum\0gob.pe\0n.se\0"
+"dontexist.com\0"
+"t.bg\0"
+"horse\0"
+"kashiwa.chiba.jp\0gob.pk\0zt.ua\0"
+"cc.wv.us\0"
+"food\0health\0"
+"vladimir.su\0dp.ua\0cc.md.us\0no-ip.net\0"
+"cc.ar.us\0"
+"tas.au\0\xe5\xb1\xb1\xe6\xa2\xa8.jp\0or.ug\0"
+"tomisato.chiba.jp\0ibaraki.osaka.jp\0farmers.museum\0"
+"\xe6\xbb\x8b\xe8\xb3\x80.jp\0yokote.akita.jp\0ine.kyoto.jp\0"
+"or.tz\0"
+"monticello.museum\0"
+"sakawa.kochi.jp\0nakagawa.tokushima.jp\0"
+"saitama.jp\0"
+"ozu.ehime.jp\0college\0"
+"pharmacy.museum\0"
+"press.museum\0r\xc3\xb8yrvik.no\0gist.githubcloud.com\0"
+"slattum.no\0"
+"umi.fukuoka.jp\0"
+"or.us\0axa\0"
+"usa.oita.jp\0drammen.no\0"
+"aws\0"
+"e164.arpa\0"
+"ed.jp\0"
+"spjelkavik.no\0brasilia.me\0"
+"trani-andria-barletta.it\0kasumigaura.ibaraki.jp\0studio\0"
+"\xe3\x82\xaf\xe3\x83\xa9\xe3\x82\xa6\xe3\x83\x89\0"
+"travelers\0"
+"swiebodzin.pl\0"
+"kure.hiroshima.jp\0"
+"molise.it\0bid\0"
+"iwatsuki.saitama.jp\0"
+"pup.gov.pl\0"
+"nhlfan.net\0"
+"pol.tr\0"
+"kyowa.akita.jp\0oum.gov.pl\0yolasite.com\0"
+"bio\0"
+"ford\0"
+"rygge.no\0vladimir.ru\0"
+"k12.wy.us\0servesarcasm.com\0"
+"toyooka.hyogo.jp\0"
+"nabari.mie.jp\0"
+"gob.sv\0"
+"biz\0nachikatsuura.wakayama.jp\0"
+"*.kitakyushu.jp\0loan\0azure-mobile.net\0"
+"chuo.fukuoka.jp\0satsumasendai.kagoshima.jp\0"
+"compute.amazonaws.com\0"
+"oz.au\0"
+"badaddja.no\0"
+"akabira.hokkaido.jp\0"
+"kashiwara.osaka.jp\0idv.tw\0"
+"itakura.gunma.jp\0"
+"association.museum\0is-a-personaltrainer.com\0"
+"ringerike.no\0"
+"p.se\0lib.or.us\0"
+"folkebibl.no\0"
+"v.bg\0"
+"uwajima.ehime.jp\0maserati\0"
+"oskol.ru\0gob.ve\0z-2.compute-1.amazonaws.com\0"
+"urasoe.okinawa.jp\0"
+"kumagaya.saitama.jp\0warszawa.pl\0"
+"dr.tr\0"
+"can.museum\0"
+"skanit.no\0"
+"ap-northeast-1.compute.amazonaws.com\0"
+"atsuma.hokkaido.jp\0mitou.yamaguchi.jp\0"
+"va.it\0isesaki.gunma.jp\0"
+"rhcloud.com\0"
+"mitsue.nara.jp\0"
+"columbia.museum\0"
+"shimizu.hokkaido.jp\0\xd9\x87\xd9\x85\xd8\xb1\xd8\xa7\xd9\x87\0"
+"cadaques.museum\0"
+"is-a-bruinsfan.org\0sells-it.net\0"
+"chungnam.kr\0"
+"akashi.hyogo.jp\0"
+"nsw.au\0"
+"barum.no\0"
+"ms.leg.br\0"
+"bms\0"
+"dnsdojo.net\0"
+"yomitan.okinawa.jp\0"
+"bmw\0"
+"\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0"
+"villas\0"
+"endofinternet.net\0"
+"haibara.shizuoka.jp\0bnl\0"
+"ed.pw\0"
+"yamaguchi.jp\0"
+"medecin.fr\0"
+"suzuka.mie.jp\0"
+"tamaki.mie.jp\0"
+"nirasaki.yamanashi.jp\0"
+"catanzaro.it\0"
+"nordre-land.no\0"
+"ustka.pl\0"
+"bom\0"
+"nic.in\0"
+"froya.no\0k12.mi.us\0boo\0"
+"station.museum\0is-a-blogger.com\0"
+"coffee\0loft\0"
+"mt.leg.br\0"
+"tires\0"
+"iwamizawa.hokkaido.jp\0bot\0"
+"box\0"
+"kamo.niigata.jp\0nativeamerican.museum\0"
+"friuli-ve-giulia.it\0from-or.com\0"
+"ohira.tochigi.jp\0"
+"bomlo.no\0\xd8\xa7\xd8\xa8\xd9\x88\xd8\xb8\xd8\xa8\xd9\x8a\0"
+"cab\0"
+"nagai.yamagata.jp\0"
+"czeladz.pl\0"
+"tonaki.okinawa.jp\0"
+"dentist\0"
+"communication.museum\0fusa.no\0condos\0host\0"
+"lib.vi.us\0cal\0ufcfan.org\0"
+"emr.it\0va.no\0r.se\0cam\0"
+"gushikami.okinawa.jp\0sayama.saitama.jp\0"
+"sosa.chiba.jp\0geology.museum\0"
+"x.bg\0"
+"fyresdal.no\0cba\0noip.us\0"
+"car\0"
+"\xe7\xbe\xa4\xe9\xa6\xac.jp\0minobu.yamanashi.jp\0"
+"cat\0js.cn\0"
+"publ.pt\0"
+"assabu.hokkaido.jp\0cafe\0"
+"sumoto.kumamoto.jp\0ar.com\0from-vt.com\0"
+"vc.it\0chiyoda.tokyo.jp\0"
+"cbn\0"
+"cbs\0"
+"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0"
+"asmatart.museum\0shell\0"
+"yamato.kumamoto.jp\0azure\0compare\0"
+"*.nagoya.jp\0music.museum\0farsund.no\0"
+"il.eu.org\0"
+"\xe6\xa0\x83\xe6\x9c\xa8.jp\0tanagura.fukushima.jp\0mibu.tochigi.jp\0"
+"\xc3\xb8rland.no\0"
+"nt.edu.au\0"
+"s3-ap-northeast-2.amazonaws.com\0"
+"tama.tokyo.jp\0"
+"kosai.shizuoka.jp\0from-in.com\0"
+"forsale\0alpha-myqnapcloud.com\0"
+"nagano.nagano.jp\0taira.toyama.jp\0schmidt\0"
+"trade\0"
+"ceb\0"
+"meloy.no\0"
+"casino.hu\0tatar\0"
+"auction\0"
+"reviews\0"
+"s\xc3\xb8r-fron.no\0vaksdal.no\0"
+"yabu.hyogo.jp\0hu.eu.org\0ie.eu.org\0"
+"hopto.org\0"
+"kasukabe.saitama.jp\0"
+"ceo\0logoip.de\0"
+"soo.kagoshima.jp\0cfa\0"
+"hiroshima.jp\0daito.osaka.jp\0baltimore.museum\0"
+"minamioguni.kumamoto.jp\0"
+"tarui.gifu.jp\0*.sch.uk\0cfd\0"
+"matsushima.miyagi.jp\0"
+"kerrylogistics\0"
+"numata.gunma.jp\0"
+"buy\0"
+"hachioji.tokyo.jp\0us.na\0"
+"flanders.museum\0irkutsk.ru\0seven\0"
+"matta-varjjat.no\0"
+"fr\xc3\xa6na.no\0chtr.k12.ma.us\0"
+"blanco\0emerson\0"
+"matsubushi.saitama.jp\0t.se\0"
+"shintoku.hokkaido.jp\0"
+"z.bg\0"
+"vinnica.ua\0"
+"\xe7\xbb\x84\xe7\xbb\x87\xe6\x9c\xba\xe6\x9e\x84\0"
"soka.saitama.jp\0"
-"wildlife.museum\0lib.tx.us\0"
-"shonai.fukuoka.jp\0gov.ph\0"
-"sakaki.nagano.jp\0"
-"copenhagen.museum\0gov.pk\0"
-"gov.pl\0"
-"blue\0christmas\0"
-"gov.pn\0"
+"cal.it\0"
+"cc.sc.us\0"
+"wroclaw.pl\0"
+"*.cryptonomic.net\0"
+"sejny.pl\0deals\0\xd9\x85\xd9\x88\xd8\xa8\xd8\xa7\xd9\x8a\xd9\x84\xd9\x8a\0"
+"ve.it\0\xe7\xa7\x8b\xe7\x94\xb0.jp\0matsubara.osaka.jp\0americanantiques.museum\0"
+"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0"
+"ham-radio-op.net\0"
+"forum.hu\0otaru.hokkaido.jp\0s\xc3\xa1l\xc3\xa1t.no\0skjervoy.no\0"
+"mitsuke.niigata.jp\0jevnaker.no\0iki.fi\0"
+"company\0"
+"kami.miyagi.jp\0"
+"va.us\0is-a-green.com\0"
+"call\0"
+"ballooning.aero\0hirogawa.wakayama.jp\0taipei\0"
+"aogashima.tokyo.jp\0nationalheritage.museum\0aarp\0"
+"lund.no\0loten.no\0tirol\0"
+"dell-ogliastra.it\0"
+"dental\0"
+"kitamoto.saitama.jp\0"
+"aseral.no\0"
+"miyake.nara.jp\0orenburg.ru\0"
+"kamaishi.iwate.jp\0camp\0"
+"bzh\0"
+"nic.tj\0"
+"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0"
+"is-a-designer.com\0"
+"fylkesbibl.no\0"
+"tochigi.jp\0"
+"sevastopol.ua\0k12.me.us\0"
+"from-ks.com\0"
+"k12.as.us\0"
+"sobetsu.hokkaido.jp\0oyamazaki.kyoto.jp\0\xd9\xbe\xd8\xa7\xd9\x83\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0"
+"nhs.uk\0"
+"awaji.hyogo.jp\0"
+"\xe6\xb2\x96\xe7\xb8\x84.jp\0"
+"trysil.no\0"
+"kariwa.niigata.jp\0"
+"tajiri.osaka.jp\0"
+"calvinklein\0genting\0fbx-os.fr\0"
+"pp.az\0"
+"traeumtgerade.de\0"
+"nedre-eiker.no\0amica\0"
+"bykle.no\0"
+"tsuwano.shimane.jp\0arteducation.museum\0"
+"tanohata.iwate.jp\0nose.osaka.jp\0"
+"pohl\0z-1.compute-1.amazonaws.com\0"
+"tromso.no\0"
+"venice.it\0noip.me\0"
+"builders\0"
+"eu.com\0"
+"asso.eu.org\0"
+"toray\0"
+"nagaokakyo.kyoto.jp\0"
+"flights\0"
+"kumamoto.kumamoto.jp\0"
+"cc.az.us\0"
+"journalism.museum\0"
+"\xe8\xaf\xba\xe5\x9f\xba\xe4\xba\x9a\0"
+"omi.niigata.jp\0"
+"lodi.it\0pn.it\0"
+"usuki.oita.jp\0helsinki.museum\0"
+"\xed\x95\x9c\xea\xb5\xad\0"
+"moriyoshi.akita.jp\0"
+"ikeda.nagano.jp\0"
+"care\0"
+"naturhistorisches.museum\0"
+"friuli-vgiulia.it\0cruises\0"
+"hikone.shiga.jp\0"
+"paragliding.aero\0hirata.fukushima.jp\0chiyoda.gunma.jp\0sumoto.hyogo.jp\0"
+"noda.chiba.jp\0texas.museum\0love\0"
+"scientist.aero\0hurum.no\0"
+"casa\0ubank\0"
+"esurance\0goip.de\0"
+"sakaiminato.tottori.jp\0burghof.museum\0cars\0"
+"shiogama.miyagi.jp\0"
+"case\0"
+"webhop.info\0gr.eu.org\0"
+"com\0\xe3\x82\xb9\xe3\x83\x88\xe3\x82\xa2\0"
+"school.na\0cash\0"
+"toyoake.aichi.jp\0"
+"discovery.museum\0"
+"uppo.gov.pl\0"
+"frosta.no\0"
+"author.aero\0"
+"gotemba.shizuoka.jp\0nesodden.no\0"
+"asker.no\0fhv.se\0\xe7\xbd\x91\xe5\xba\x97\0"
+"obuse.nagano.jp\0aarborte.no\0"
+"museet.museum\0golffan.us\0"
+"altai.ru\0komvux.se\0\xd0\xbe\xd0\xbd\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd\0"
+"marche.it\0guovdageaidnu.no\0"
+"grong.no\0"
+"*.kawasaki.jp\0"
+"itoigawa.niigata.jp\0travel.pl\0"
+"pfizer\0"
+"\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb8\0"
+"dad\0"
+"hanggliding.aero\0shimabara.nagasaki.jp\0environment.museum\0"
+"etc.br\0"
+"school.nz\0statefarm\0"
+"satte.saitama.jp\0gol.no\0"
+"cherkassy.ua\0"
+"lier.no\0"
+"laz.it\0"
+"matsuyama.ehime.jp\0kamchatka.ru\0wales\0"
+"shiroishi.saga.jp\0"
+"tokke.no\0"
+"dyndns-web.com\0"
+"day\0"
+"quebec\0"
+"cri.nz\0x.se\0report\0"
+"lib.fl.us\0able\0"
+"l\xc3\xb8ten.no\0"
+"art.museum\0crs\0csc\0"
+"pl.ua\0samsung\0"
+"cc.mn.us\0securitytactics.com\0"
+"yonaguni.okinawa.jp\0rennebu.no\0cc.gu.us\0"
+"vi.it\0"
+"*.alwaysdata.net\0"
+"en.it\0wedding\0"
+"mutuelle\0"
+"sorum.no\0kiev.ua\0"
+"office-on-the.net\0"
+"hadano.kanagawa.jp\0krager\xc3\xb8.no\0"
+"journalist.aero\0ogata.akita.jp\0"
+"sciencecenters.museum\0"
+"barcelona\0kuokgroup\0"
+"shingu.wakayama.jp\0"
+"trentinoaltoadige.it\0gallery.museum\0game\0"
+"\xe6\x94\xbf\xe5\xba\x9c.hk\0"
+"dds\0"
+"uvic.museum\0from-me.org\0"
+"odo.br\0\xe7\xbd\x91\xe7\xbb\x9c.cn\0\xe9\x9d\x99\xe5\xb2\xa1.jp\0nordreisa.no\0engineer\0"
+"kaizuka.osaka.jp\0trolley.museum\0"
+"travel.tt\0"
+"vda.it\0"
+"bible.museum\0"
+"miyoshi.hiroshima.jp\0kg.kr\0"
+"dabur\0"
+"toyoura.hokkaido.jp\0udmurtia.ru\0"
+"leksvik.no\0bentley\0jprs\0"
+"dev\0"
+"trader.aero\0kochi.kochi.jp\0"
+"kamifurano.hokkaido.jp\0"
+"australia.museum\0k12.ma.us\0"
+"tenkawa.nara.jp\0"
+"bizen.okayama.jp\0"
+"oumu.hokkaido.jp\0"
+"from-ma.com\0"
+"wiki.br\0porn\0"
+"vads\xc3\xb8.no\0"
+"leirvik.no\0"
+"yasu.shiga.jp\0"
+"tank.museum\0k\xc3\xa5""fjord.no\0"
+"yufu.oita.jp\0"
+"se.net\0hopto.me\0"
+"okinoshima.shimane.jp\0"
+"mino.gifu.jp\0bo.telemark.no\0"
+"fukuroi.shizuoka.jp\0"
+"nes.akershus.no\0post\0"
+"lib.va.us\0"
+"z.se\0"
+"uryu.hokkaido.jp\0"
+"dhl\0"
+"gon.pk\0"
+"fin.ec\0adult.ht\0"
+"doesntexist.com\0"
+"kaisei.kanagawa.jp\0"
+"sk\xc3\xa5nland.no\0"
+"versailles.museum\0olayan\0"
+"tendo.yamagata.jp\0"
+"pr.it\0gs.mr.no\0"
+"room\0"
+"serveexchange.com\0"
+"beauxarts.museum\0"
+"dynns.com\0"
+"baidu\0"
+"\xe7\xbd\x91\xe7\xbb\x9c.hk\0"
+"newspaper.museum\0"
+"historical.museum\0\xe7\xbd\x91\xe7\xbb\x9c\0"
+"odate.akita.jp\0diy\0"
+"railway.museum\0masoy.no\0"
+"is-a-player.com\0"
+"sport.hu\0sciencecenter.museum\0"
+"saltdal.no\0"
+"playstation\0"
+"atami.shizuoka.jp\0"
+"download\0"
+"chambagri.fr\0sar.it\0hvaler.no\0"
+"haboro.hokkaido.jp\0tranoy.no\0"
+"lapy.pl\0"
+"iselect\0yamaxun\0"
+"vestre-toten.no\0phone\0"
+"bryansk.su\0"
+"navuotna.no\0"
+"dscloud.me\0"
+"oyer.no\0bielawa.pl\0"
+"pp.ru\0pp.se\0volvo\0"
+"kuki.saitama.jp\0free\0"
+"newport.museum\0"
+"fujiyoshida.yamanashi.jp\0"
+"amsterdam\0"
+"sund.no\0"
+"urayasu.chiba.jp\0"
+"nflfan.org\0"
+"uki.kumamoto.jp\0"
+"etisalat\0"
+"fuchu.hiroshima.jp\0"
+"logoip.com\0"
+"gop.pk\0"
+"asago.hyogo.jp\0higashimatsuyama.saitama.jp\0cbre\0"
+"pp.ua\0"
+"nakagawa.fukuoka.jp\0luxembourg.museum\0"
+"cc.hi.us\0"
+"dnp\0"
+"kurotaki.nara.jp\0ogose.saitama.jp\0\xd0\xbe\xd0\xb1\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0"
+"naha.okinawa.jp\0"
+"pt.it\0kasamatsu.gifu.jp\0"
+"dog\0"
+"minamiminowa.nagano.jp\0"
+"tcm.museum\0is-uberleet.com\0"
+"depot.museum\0"
+"bryansk.ru\0"
+"vi.us\0"
+"gov.ac\0web.co\0anquan\0"
+"maibara.shiga.jp\0dot\0"
+"gov.ae\0kyotanabe.kyoto.jp\0"
+"gov.af\0tadaoka.osaka.jp\0codes\0"
+"keymachine.de\0"
+"gov.al\0"
+"from-ct.com\0from-la.net\0"
+"kofu.yamanashi.jp\0"
+"baseball.museum\0"
+"gov.ba\0"
+"gov.ar\0gov.bb\0fujikawa.yamanashi.jp\0"
+"gov.as\0web.do\0"
+"\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0rexroth\0"
+"gov.au\0"
+"gov.bf\0"
+"hamburg.museum\0"
+"gov.bh\0copenhagen.museum\0"
+"namsos.no\0"
+"gov.az\0saku.nagano.jp\0"
+"gov.bm\0"
+"shimane.jp\0"
+"gov.bo\0"
+"k12.nm.us\0"
+"gov.br\0"
+"gov.bs\0film.museum\0maif\0yodobashi\0"
+"gov.bt\0gov.cd\0eat\0"
+"gbiz\0"
+"eti.br\0"
+"gov.by\0"
+"ecn.br\0gov.bz\0"
+"wa.au\0"
+"gov.cl\0"
+"gov.cm\0tsuno.kochi.jp\0"
+"gov.cn\0endofinternet.org\0"
+"gov.co\0maison\0"
+"\xc3\xb8ygarden.no\0"
+"rogers\0"
+"iwafune.tochigi.jp\0"
+"photo\0"
+"gov.cu\0\xd8\xa8\xd8\xa7\xd8\xb2\xd8\xa7\xd8\xb1\0"
+"calabria.it\0fuso.aichi.jp\0"
+"g\xc3\xa1ivuotna.no\0"
+"council.aero\0gov.cx\0"
+"gov.cy\0kusatsu.gunma.jp\0kikonai.hokkaido.jp\0"
+"kitayama.wakayama.jp\0"
+"shinshinotsu.hokkaido.jp\0\xe7\xb5\x84\xe7\xb9\x94.tw\0"
+"gov.dm\0timekeeping.museum\0"
+"communications.museum\0"
+"gov.do\0pacific.museum\0eco\0"
+"imabari.ehime.jp\0"
+"gov.ec\0"
+"qh.cn\0gov.ee\0"
+"salangen.no\0"
+"gov.eg\0"
+"boleslawiec.pl\0"
+"cc.mt.us\0cc.nd.us\0"
+"gov.dz\0"
+"computerhistory.museum\0nes.buskerud.no\0"
+"eidsvoll.no\0"
+"pv.it\0\xe5\x95\x86\xe6\xa0\x87\0"
+"gs.hm.no\0"
+"qld.au\0gov.et\0"
+"edu\0scotland.museum\0"
+"takatsuki.shiga.jp\0dtv\0"
+"web.id\0"
+"pr.us\0pantheonsite.io\0"
+"kirov.ru\0"
+"fujioka.gunma.jp\0"
+"nesseby.no\0"
+"narita.chiba.jp\0"
+"hurdal.no\0"
+"travelersinsurance\0"
+"baidar.no\0"
+"\xc3\xb8yer.no\0"
+"gov.ge\0n\xc3\xa5\xc3\xa5mesjevuemie.no\0"
+"writesthisblog.com\0"
+"gov.gh\0"
+"gov.gi\0california.museum\0"
+"kushima.miyazaki.jp\0"
+"house\0zuerich\0"
+"shinjo.yamagata.jp\0"
+"gov.gn\0"
+"servebbs.com\0"
+"crafts.museum\0"
+"gov.gr\0dvr\0"
+"photos\0"
+"dwg\0town\0"
+"friuliv-giulia.it\0accenture\0"
+"gov.gy\0gujo.gifu.jp\0minamiaiki.nagano.jp\0"
+"konan.shiga.jp\0"
+"gov.hk\0lamer\0"
+"okoppe.hokkaido.jp\0grocery\0"
+"honjyo.akita.jp\0"
+"catering.aero\0eniwa.hokkaido.jp\0adac\0"
+"higashiizumo.shimane.jp\0oyabe.toyama.jp\0"
+"\xc3\xa5rdal.no\0"
+"alpha.bounty-full.com\0"
+"pgafan.net\0"
+"sanofi\0"
+"gov.ie\0osaka\0"
+"\xc3\xa5s.no\0"
+"minamata.kumamoto.jp\0is.gov.pl\0"
+"scrapping.cc\0"
+"skaun.no\0"
+"pictet\0"
+"gov.il\0fin.tn\0"
+"gov.in\0"
+"web.lk\0"
+"shiroi.chiba.jp\0"
+"gov.iq\0"
+"gov.ir\0"
+"gov.is\0"
+"gov.it\0"
+"fukudomi.saga.jp\0boston.museum\0frog.museum\0moskenes.no\0"
+"gamagori.aichi.jp\0fuchu.tokyo.jp\0vote\0"
+"lib.pr.us\0"
+"toys\0"
+"gov.jo\0birthplace.museum\0"
+"minamiuonuma.niigata.jp\0"
+"huissier-justice.fr\0luxury\0"
+"voto\0"
+"community.museum\0silk.museum\0namsskogan.no\0"
+"higashiagatsuma.gunma.jp\0"
+"gov.kg\0\xe4\xbc\x81\xe4\xb8\x9a\0"
+"gov.ki\0"
+"web.nf\0"
+"aramco\0"
+"gov.km\0web.ni\0"
+"gov.kn\0bodo.no\0dyndns-pics.com\0"
+"makurazaki.kagoshima.jp\0"
+"fukusaki.hyogo.jp\0gov.kp\0"
+"cesena-forli.it\0gov.la\0"
+"mifune.kumamoto.jp\0gov.lb\0"
+"gov.lc\0systems\0"
+"tr\xc3\xa6na.no\0"
+"gov.ky\0salem.museum\0"
+"saroma.hokkaido.jp\0gov.kz\0"
+"gov.lk\0"
+"kunneppu.hokkaido.jp\0pila.pl\0fareast.ru\0"
+"gaivuotna.no\0"
+"investments\0\xe3\x81\xbf\xe3\x82\x93\xe3\x81\xaa\0"
+"shibata.niigata.jp\0kongsvinger.no\0"
+"gov.ma\0tickets\0"
+"gov.lr\0"
+"mulhouse.museum\0nuernberg.museum\0"
+"gov.lt\0b\xc3\xa1hcavuotna.no\0"
+"gov.me\0"
+"gov.lv\0"
+"gov.mg\0kommunalforbund.se\0is-very-evil.org\0"
+"l\xc3\xb8""dingen.no\0"
+"gov.ly\0"
+"gov.mk\0"
+"gov.ml\0"
+"total\0"
+"gov.mn\0"
+"gov.mo\0web.pk\0"
+"gov.mr\0\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0"
+"gov.ms\0jefferson.museum\0"
+"tuscany.it\0"
+"friulivegiulia.it\0kitahata.saga.jp\0gov.mu\0"
+"gov.mv\0"
+"gov.mw\0gov.ng\0zgrad.ru\0physio\0"
+"istanbul\0secure\0"
+"isahaya.nagasaki.jp\0gov.my\0lebork.pl\0"
+"veterinaire.km\0gov.mz\0"
+"kanagawa.jp\0"
+"sado.niigata.jp\0fineart.museum\0"
+"kashihara.nara.jp\0"
+"gov.nr\0"
+"narviika.no\0"
+"kunigami.okinawa.jp\0agakhan\0"
+"alessandria.it\0"
+"tolga.no\0"
+"izumisano.osaka.jp\0contact\0"
+"\xe5\xaf\x8c\xe5\xb1\xb1.jp\0namegawa.saitama.jp\0"
+"miyoshi.aichi.jp\0finearts.museum\0"
+"gov.om\0"
+"zone\0"
+"neues.museum\0"
+"syzran.ru\0bargains\0"
+"daegu.kr\0"
+"lib.wi.us\0"
+"ambulance.aero\0gov.ph\0"
+"hsbc\0icbc\0"
+"kusatsu.shiga.jp\0gov.pk\0"
+"gov.pl\0krasnoyarsk.ru\0fr.eu.org\0"
+"fj.cn\0"
+"showa.fukushima.jp\0gov.pn\0km.ua\0"
+"cc.nh.us\0"
"gov.qa\0"
-"sanagochi.tokushima.jp\0gov.pr\0author\0"
-"vestv\xc3\xa5g\xc3\xb8y.no\0gov.ps\0"
-"yamanashi.jp\0gov.pt\0"
-"yakage.okayama.jp\0"
-"holt\xc3\xa5len.no\0"
-"gov.py\0"
-"pub\0"
-"int.ru\0"
-"hi.cn\0notaires.fr\0"
-"int.rw\0"
-"trentino-altoadige.it\0osaka.jp\0"
-"loten.no\0"
-"biz.et\0odate.akita.jp\0"
-"niepce.museum\0"
-"rollag.no\0"
-"yt\0"
-"sd.us\0click\0"
-"lib.oh.us\0doesntexist.org\0"
-"immobilien\0"
-"stor-elvdal.no\0from-ri.com\0"
-"fribourg.museum\0finnoy.no\0"
-"diet\0"
-"int.tj\0"
+"gov.pr\0jp.net\0poznan.pl\0"
+"gov.ps\0safe\0"
+"mil.ac\0archaeological.museum\0gov.pt\0r.cdn77.net\0"
+"vs.it\0"
+"mil.ae\0pz.it\0"
+"guardian\0"
+"c.cdn77.org\0"
+"gov.py\0airtel\0"
+"gjerdrum.no\0"
+"mil.al\0"
+"web.tj\0"
+"veterinaire.fr\0chanel\0"
+"mil.ba\0"
+"mil.ar\0"
+"lviv.ua\0"
+"web.tr\0"
+"kiwi.nz\0"
+"sand\xc3\xb8y.no\0"
+"mil.az\0\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0"
+"sarpsborg.no\0fan\0"
+"mil.bo\0poivron.org\0"
"gov.sa\0"
"gov.sb\0"
-"gov.rs\0gov.sc\0"
+"mil.br\0gov.rs\0gov.sc\0"
"gov.sd\0"
-"gov.ru\0lt.ua\0"
-"shell.museum\0saratov.ru\0gov.rw\0gov.sg\0"
-"aikawa.kanagawa.jp\0gov.sh\0"
-"tours\0"
-"aosta-valley.it\0gr.it\0buzen.fukuoka.jp\0int.tt\0"
-"res.aero\0v\xc3\xa6r\xc3\xb8y.no\0"
-"kawamata.fukushima.jp\0gov.sl\0"
-"minami.fukuoka.jp\0suzuka.mie.jp\0genkai.saga.jp\0"
-"shika.ishikawa.jp\0"
-"yao.osaka.jp\0gov.st\0"
-"gr.jp\0mitake.gifu.jp\0sejny.pl\0"
-"md.us\0"
-"gov.sx\0"
-"gov.sy\0nagoya\0"
-"kurume.fukuoka.jp\0gov.tj\0"
-"int.ve\0"
+"gov.ru\0lanxess\0"
+"gov.rw\0gov.sg\0is-a-socialist.com\0"
+"gov.sh\0intuit\0"
+"web.ve\0"
+"mil.by\0"
+"gov.sl\0"
+"mil.cl\0gangwon.kr\0rivne.ua\0"
+"shimamaki.hokkaido.jp\0glas.museum\0"
+"mil.cn\0"
+"ac.ae\0mil.co\0honai.ehime.jp\0"
+"narusawa.yamanashi.jp\0k12.ms.us\0k12.nc.us\0"
+"k12.il.us\0\xe9\xa6\x99\xe6\xa0\xbc\xe9\x87\x8c\xe6\x8b\x89\0"
+"gov.st\0"
+"services.aero\0gov.sx\0"
+"gov.sy\0"
+"gov.tj\0"
"gov.tl\0"
"gov.tm\0"
-"mitaka.tokyo.jp\0gov.tn\0"
-"gov.to\0"
-"biz.id\0my.id\0"
-"trogstad.no\0gov.ua\0"
-"gov.tr\0"
-"ass.km\0budejju.no\0"
-"gov.tt\0int.vn\0"
-"aogashima.tokyo.jp\0gets-it.net\0"
-"plants.museum\0gov.tw\0"
-"store.nf\0"
-"gov.uk\0"
-"ar.it\0"
-"schlesisches.museum\0"
-"unzen.nagasaki.jp\0"
-"gaular.no\0koenig.ru\0"
-"epson\0"
-"sld.do\0mr.no\0gov.vc\0"
-"ptz.ru\0gov.ve\0"
-"build\0"
-"tw.cn\0"
-"from-mn.com\0"
-"og.ao\0namsskogan.no\0"
-"yamato.kumamoto.jp\0"
-"moseushi.hokkaido.jp\0gov.vn\0"
-"rocks\0"
-"biz.ki\0"
-"nes.buskerud.no\0\xe7\xb5\x84\xe7\xb9\x94.tw\0"
-"schwarz\0"
-"pruszkow.pl\0"
-"r\xc3\xb8mskog.no\0bargains\0"
-"vardo.no\0mk.ua\0"
-"house\0"
-"hashimoto.wakayama.jp\0"
-"cc.fl.us\0gov.ws\0"
-"chosei.chiba.jp\0shimosuwa.nagano.jp\0"
-"donna.no\0"
-"tp.it\0"
-"cc.sc.us\0"
-"meet\0"
-"sologne.museum\0"
-"obu.aichi.jp\0"
-"ardal.no\0"
-"meldal.no\0is-a-republican.com\0"
-"maintenance.aero\0"
-"haboro.hokkaido.jp\0hatoyama.saitama.jp\0rich\0"
-"gateway.museum\0"
-"kikonai.hokkaido.jp\0kosa.kumamoto.jp\0"
-"yasuoka.nagano.jp\0"
-"village.museum\0"
-"kyoto.jp\0hanamaki.iwate.jp\0"
-"tomsk.ru\0"
-"\xe7\xa7\x8b\xe7\x94\xb0.jp\0toyohashi.aichi.jp\0shiso.hyogo.jp\0"
-"hadsel.no\0google\0firebaseapp.com\0"
-"biz.mv\0"
-"biz.mw\0"
-"bi.it\0"
-"otobe.hokkaido.jp\0"
-"kvam.no\0vindafjord.no\0mine.nu\0"
-"omuta.fukuoka.jp\0ogasawara.tokyo.jp\0biz.nr\0"
-"frosinone.it\0kainan.wakayama.jp\0"
-"higashiyoshino.nara.jp\0"
-"\xe5\xa4\xa7\xe9\x98\xaa.jp\0"
-"delmenhorst.museum\0"
-"iwanuma.miyagi.jp\0"
-"khmelnitskiy.ua\0"
-"kanan.osaka.jp\0"
-"uwajima.ehime.jp\0toyonaka.osaka.jp\0"
-"transport.museum\0"
-"sklep.pl\0"
-"figueres.museum\0"
-"shimogo.fukushima.jp\0nishinomiya.hyogo.jp\0"
-"oumu.hokkaido.jp\0habikino.osaka.jp\0nakano.tokyo.jp\0ohkura.yamagata.jp\0"
-"qld.edu.au\0on.ca\0vacations\0"
-"berkeley.museum\0collection.museum\0biz.pk\0"
-"biz.pl\0pulawy.pl\0"
-"yabuki.fukushima.jp\0"
+"gov.tn\0"
+"ac.at\0gov.to\0"
+"ac.be\0mil.do\0steigen.no\0"
+"gov.ua\0esq\0vacations\0"
+"taki.mie.jp\0gov.tr\0"
+"mil.ec\0tsuruga.fukui.jp\0stockholm.museum\0gov.tt\0"
+"gov.tw\0"
+"mil.eg\0landes.museum\0"
+"murayama.yamagata.jp\0"
+"b\xc3\xb8.telemark.no\0"
+"kanzaki.saga.jp\0gov.uk\0"
+"mypsx.net\0"
+"per.la\0"
+"lib.ky.us\0baseball\0"
+"miyada.nagano.jp\0lib.ak.us\0gov.vc\0"
+"1.bg\0ac.ci\0jeonbuk.kr\0"
+"gov.ve\0is-lost.org\0"
+"tushu\0\xe4\xbf\xa1\xe6\x81\xaf\0"
+"ac.cn\0nasushiobara.tochigi.jp\0hyundai\0"
+"cc.nj.us\0"
+"cc.ia.us\0"
+"exhibition.museum\0"
+"ac.cr\0"
+"gov.vn\0ferrari\0lilly\0"
+"fortmissoula.museum\0"
+"gs.nl.no\0bearalv\xc3\xa1hki.no\0passagens\0"
+"lc.it\0missile.museum\0"
+"eus\0sale\0select\0"
+"ac.cy\0hasvik.no\0"
+"andebu.no\0web.za\0memorial\0"
+"mil.ge\0"
+"marshalls\0"
+"mil.gh\0wa.us\0"
+"shirakawa.gifu.jp\0"
+"spreadbetting\0yahoo\0"
+"coloradoplateau.museum\0"
+"medizinhistorisches.museum\0loab\xc3\xa1t.no\0"
+"\xe7\xb5\x84\xe7\xb9\x94.hk\0theater.museum\0\xe8\x81\x94\xe9\x80\x9a\0"
+"zao.miyagi.jp\0taketomi.okinawa.jp\0from-ak.com\0"
+"gov.ws\0"
+"nakaniikawa.toyama.jp\0per.nf\0"
+"mil.gt\0bungoono.oita.jp\0bo.nordland.no\0"
+"skodje.no\0dnsfor.me\0"
+"westfalen.museum\0"
+"naples.it\0\xe5\x8d\x83\xe8\x91\x89.jp\0toyotomi.hokkaido.jp\0tsuyama.okayama.jp\0bugatti\0"
+"mil.hn\0"
+"kadena.okinawa.jp\0"
+"balat.no\0"
+"mil.id\0"
+"gildeskal.no\0"
+"promo\0"
+"l\xc3\xa4ns.museum\0k12.ne.us\0"
+"homeunix.com\0"
+"mil.in\0tara.saga.jp\0"
+"gov.za\0"
+"mil.iq\0war.museum\0"
+"dynalias.com\0"
+"yanagawa.fukuoka.jp\0skoczow.pl\0misconfused.org\0"
+"jolster.no\0"
+"ac.gn\0minamimaki.nagano.jp\0iwi.nz\0fh.se\0"
+"g12.br\0clock.museum\0"
+"is-a-landscaper.com\0"
+"gov.zm\0"
+"shiojiri.nagano.jp\0hotmail\0"
+"mil.jo\0\xe5\xbe\xb3\xe5\xb3\xb6.jp\0lierne.no\0"
+"dyndns.info\0"
+"arakawa.saitama.jp\0"
+"fit\0"
+"dubai\0"
+"ethnology.museum\0\xe3\x82\xb0\xe3\x83\xbc\xe3\x82\xb0\xe3\x83\xab\0"
+"mil.kg\0"
+"rocher\0"
+"salvadordali.museum\0"
+"sapo\0"
+"mil.km\0"
+"3.bg\0ac.id\0aa.no\0"
+"karasuyama.tochigi.jp\0"
+"mil.kr\0"
+"abiko.chiba.jp\0daiwa.hiroshima.jp\0"
+"bas.it\0oryol.ru\0"
+"ac.il\0shimokitayama.nara.jp\0"
+"ac.im\0"
+"ac.in\0"
+"mil.kz\0"
+"ac.ir\0le.it\0"
+"school.za\0gripe\0"
+"svizzera.museum\0"
"b\xc3\xa6rum.no\0"
-"kanazawa.ishikawa.jp\0"
-"reklam.hu\0emerck\0"
-"\xe5\xae\xae\xe5\xb4\x8e.jp\0oita.oita.jp\0biz.pr\0"
-"cyou\0"
-"kiyokawa.kanagawa.jp\0yonago.tottori.jp\0"
-"cards\0"
-"discount\0"
-"ak.us\0"
-"iide.yamagata.jp\0exposed\0"
-"store.ve\0de.com\0"
-"seljord.no\0sula.no\0"
-"skiptvet.no\0k12.mt.us\0"
-"friuliveneziagiulia.it\0ikeda.nagano.jp\0"
-"corporation.museum\0"
-"f.bg\0gj\xc3\xb8vik.no\0immo\0"
-"name.hr\0"
-"southwest.museum\0"
-"sekikawa.niigata.jp\0"
-"sciencecenters.museum\0"
-"tienda\0"
-"motoyama.kochi.jp\0"
-"plantation.museum\0kyoto\0"
-"izena.okinawa.jp\0"
-"mo\xc3\xa5reke.no\0"
-"og.it\0"
-"ap-southeast-1.compute.amazonaws.com\0s3-ap-southeast-1.amazonaws.com\0"
-"name.et\0"
-"kihoku.ehime.jp\0"
-"meme\0co.com\0"
-"prof.pr\0"
-"foggia.it\0kamisunagawa.hokkaido.jp\0"
-"historical.museum\0"
-"s3-ap-southeast-2.amazonaws.com\0"
-"biz.tj\0"
-"perm.ru\0"
-"tamayu.shimane.jp\0nanyo.yamagata.jp\0"
-"folldal.no\0"
-"matsuda.kanagawa.jp\0"
-"pe.ca\0"
-"etajima.hiroshima.jp\0mitsue.nara.jp\0biz.tr\0"
-"localhistory.museum\0rodeo\0doesntexist.com\0"
-"biz.tt\0"
-"iris.arpa\0zp.ua\0"
-"showa.yamanashi.jp\0"
-"urn.arpa\0sld.pa\0"
-"menu\0"
-"ar.us\0"
-"yusuhara.kochi.jp\0red\0"
-"glass.museum\0bygland.no\0"
-"ginoza.okinawa.jp\0\xd0\xba\xd0\xbe\xd0\xbc\0"
-"\xe7\xbd\x91\xe5\xba\x97\0"
-"store.ro\0"
-"higashikagura.hokkaido.jp\0"
-"selbu.no\0"
-"ohda.shimane.jp\0"
-"name.eg\0"
-"ren\0"
-"m.bg\0architecture.museum\0"
-"biz.vn\0"
-"satsumasendai.kagoshima.jp\0mazury.pl\0"
-"gojome.akita.jp\0"
+"gyeongbuk.kr\0"
+"saskatchewan.museum\0per.sg\0mysecuritycamera.net\0"
+"la.us\0"
+"mil.lv\0"
+"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0nagato.yamaguchi.jp\0mil.mg\0"
+"takehara.hiroshima.jp\0sarl\0"
+"ac.jp\0"
+"gjovik.no\0"
+"historyofscience.museum\0"
+"chiryu.aichi.jp\0broadway\0"
+"not.br\0"
+"mil.mv\0"
+"mil.ng\0"
+"nis.za\0fly\0"
+"yaotsu.gifu.jp\0osaki.miyagi.jp\0mil.my\0mil.ni\0"
+"kagami.kochi.jp\0mil.mz\0"
+"davvenj\xc3\xa1rga.no\0no-ip.biz\0"
+"ac.kr\0"
+"hazu.aichi.jp\0"
+"mil.no\0kobierzyce.pl\0boutique\0"
+"\xe4\xb8\x80\xe5\x8f\xb7\xe5\xba\x97\0"
+"ac.lk\0lanbib.se\0"
+"\xe5\xb2\x90\xe9\x98\x9c.jp\0"
+"k12.mo.us\0"
+"isa-geek.org\0"
+"operaunite.com\0"
+"seiro.niigata.jp\0mil.nz\0"
+"ofunato.iwate.jp\0ac.ma\0"
+"nara.jp\0"
+"modalen.no\0"
+"ac.me\0"
+"epost\0"
+"alta.no\0"
+"mil.pe\0"
+"freemasonry.museum\0"
+"mil.ph\0"
+"\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0dyndns-at-work.com\0"
+"shimoji.okinawa.jp\0"
+"mil.pl\0"
+"barlettatraniandria.it\0"
+"foo\0"
+"ac.mu\0stargard.pl\0"
+"schokoladen.museum\0ac.mw\0mil.qa\0"
+"verdal.no\0save\0"
+"\xe7\x86\x8a\xe6\x9c\xac.jp\0ac.ni\0"
+"ac.mz\0naturbruksgymn.se\0"
+"b\xc3\xa5tsfjord.no\0\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xae\0"
+"fox\0"
+"tysv\xc3\xa6r.no\0"
+"5.bg\0mil.py\0"
+"eidsberg.no\0"
+"barcelona.museum\0"
+"ks.ua\0"
+"dni.us\0"
+"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0ac.nz\0embaixada.st\0gov.nc.tr\0"
+"mutsu.aomori.jp\0figueres.museum\0"
+"tsukumi.oita.jp\0diskstation.me\0"
+"ujiie.tochigi.jp\0"
+"halsa.no\0"
+"flakstad.no\0ac.pa\0gal\0"
+"realtor\0dyndns-remote.com\0"
+"gap\0"
+"inawashiro.fukushima.jp\0ks.us\0"
+"\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0"
+"tsunan.niigata.jp\0"
+"lg.jp\0"
+"mil.ru\0"
+"tvedestrand.no\0"
+"mil.rw\0"
+"asso.fr\0mil.sh\0"
+"village.museum\0"
+"minakami.gunma.jp\0"
+"frl\0"
+"ac.pr\0saxo\0"
+"hidaka.wakayama.jp\0"
+"kamiizumi.saitama.jp\0"
+"jar.ru\0"
+"gouv.fr\0"
+"kahoku.ishikawa.jp\0habikino.osaka.jp\0"
+"mil.st\0"
+"etne.no\0verm\xc3\xb6gensberater\0"
+"asso.gp\0kani.gifu.jp\0prod\0"
+"uk.com\0"
+"allstate\0international\0prof\0"
+"mil.sy\0"
+"mil.tj\0wang\0\xe6\x97\xb6\xe5\xb0\x9a\0"
+"mil.tm\0"
+"milan.it\0xihuan\0is-a-libertarian.com\0"
+"mil.to\0\xe6\x9c\xba\xe6\x9e\x84\0"
+"milano.it\0"
+"imamat\0"
+"mil.tr\0"
+"nakama.fukuoka.jp\0malopolska.pl\0"
+"noboribetsu.hokkaido.jp\0cultural.museum\0mil.tw\0from-md.com\0"
+"nishinoshima.shimane.jp\0"
+"kazuno.akita.jp\0celtic.museum\0"
+"asso.ht\0mil.tz\0"
+"yokaichiba.chiba.jp\0"
+"shizukuishi.iwate.jp\0ac.rs\0gdn\0"
+"natura\0"
+"durham.museum\0ac.ru\0ac.se\0"
+"gea\0"
+"ac.rw\0ftr\0"
+"gouv.ht\0"
+"tokai.ibaraki.jp\0mil.vc\0apartments\0"
+"kouhoku.saga.jp\0mil.ve\0"
+"gen.in\0"
+"mil.uy\0"
+"piemonte.it\0krokstadelva.no\0enterprises\0"
+"reggioemilia.it\0duck\0"
+"sayama.osaka.jp\0fun\0"
+"hyuga.miyazaki.jp\0"
+"localhistory.museum\0lib.wa.us\0"
+"asso.bj\0koto.shiga.jp\0doesntexist.org\0"
+"lib.ks.us\0pimienta.org\0"
+"ac.th\0"
+"barefoot\0pgfog.com\0"
+"7.bg\0gj\xc3\xb8vik.no\0ac.sz\0ac.tj\0"
+"stavropol.ru\0"
+"suifu.ibaraki.jp\0"
+"gouv.bj\0illustration.museum\0"
+"sn\xc3\xa5sa.no\0"
+"asso.ci\0hatogaya.saitama.jp\0maryland.museum\0dnshome.de\0"
+"dev-myqnapcloud.com\0"
+"ac.ug\0neat-url.com\0"
+"li.it\0"
+"virginia.museum\0kosher\0"
+"ag.it\0ac.tz\0"
+"ac.uk\0watches\0"
+"\xd0\xba\xd0\xbe\xd0\xbc\0"
+"gouv.ci\0"
+"hasura-app.io\0"
+"galsa.no\0kddi\0teaches-yoga.com\0"
+"freeboxos.com\0"
+"fl.us\0rackmaze.com\0"
+"jur.pro\0"
+"tozsde.hu\0sp.leg.br\0"
+"collection.museum\0"
+"\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\0"
+"ac.vn\0"
+"!city.sendai.jp\0convent.museum\0suzuki\0"
+"kamo.kyoto.jp\0"
+"morioka.iwate.jp\0"
+"asso.dz\0"
+"mil.za\0"
+"kawaue.gifu.jp\0"
+"email\0fitness\0"
+"film.hu\0"
+"chirurgiens-dentistes.fr\0fidelity\0"
+"monster\0"
+"skien.no\0"
+"fyi\0"
+"aero\0nrw.museum\0wolomin.pl\0"
+"project.museum\0"
+"eng.pro\0"
+"k12.ok.us\0\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0mil.zm\0"
+"k12.id.us\0"
+"k12.ca.us\0"
+"saotome.st\0"
+"honjo.saitama.jp\0"
+"h\xc3\xb8nefoss.no\0"
+"b\xc3\xb8mlo.no\0"
+"living.museum\0"
+"dnsiskinky.com\0"
+"lig.it\0"
+"auto.pl\0"
+"niikappu.hokkaido.jp\0"
+"seaport.museum\0"
+"vibo-valentia.it\0"
+"mari.ru\0homeftp.org\0"
+"costume.museum\0sydney\0"
+"gen.nz\0"
+"aioi.hyogo.jp\0"
+"oguchi.aichi.jp\0alaska.museum\0pinb.gov.pl\0"
+"nnov.ru\0"
+"ac.za\0"
+"lib.la.us\0"
+"isa-geek.com\0"
+"9.bg\0hokkaido.jp\0kitadaito.okinawa.jp\0technology.museum\0fuettertdasnetz.de\0"
+"gangaviika.no\0"
+"gd.cn\0samukawa.kanagawa.jp\0bahcavuotna.no\0"
+"miasta.pl\0lg.ua\0gle\0shopping\0de.com\0"
+"money.museum\0jpmorgan\0"
+"ac.zm\0"
+"kumiyama.kyoto.jp\0izumo.shimane.jp\0agency\0"
+"linde\0"
+"kamikawa.saitama.jp\0"
+"asuke.aichi.jp\0gs.tm.no\0"
+"gs.nt.no\0juegos\0"
+"ltda\0"
+"fr.it\0fishing\0"
+"is-a-financialadvisor.com\0"
+"kitagawa.miyazaki.jp\0plc.ly\0workisboring.com\0"
+"*.sendai.jp\0"
+"tohnosho.chiba.jp\0"
+"wi.us\0"
+"blogdns.com\0"
+"ozora.hokkaido.jp\0\xe7\x8f\xa0\xe5\xae\x9d\0"
+"davvenjarga.no\0"
+"shichinohe.aomori.jp\0meiwa.mie.jp\0gmo\0"
+"yao.osaka.jp\0kms.ru\0"
+"otake.hiroshima.jp\0"
+"somna.no\0tours\0publishproxy.com\0"
+"chintai\0"
+"s3-sa-east-1.amazonaws.com\0"
+"toyotsu.fukuoka.jp\0busan.kr\0df.leg.br\0"
+"botanical.museum\0gmx\0"
+"fbxos.fr\0"
+"hekinan.aichi.jp\0"
+"philately.museum\0"
+"dodge\0"
+"otaki.saitama.jp\0"
+"kinokawa.wakayama.jp\0"
+"trentino-sudtirol.it\0motosu.gifu.jp\0cern\0"
+"asahi.yamagata.jp\0from-il.com\0"
+"lasalle\0"
+"hitachiota.ibaraki.jp\0"
+"student.aero\0"
+"kakuda.miyagi.jp\0"
+"mmafan.biz\0"
+"florist\0goo\0"
+"gop\0pramerica\0"
+"omuta.fukuoka.jp\0got\0"
+"gov\0"
+"indianapolis.museum\0"
+"finland.museum\0likes-pie.com\0"
+"gotsu.shimane.jp\0"
+"sling\0"
+"gen.tr\0"
+"r\xc3\xb8""d\xc3\xb8y.no\0"
+"hokksund.no\0"
+"\xe5\x92\x8c\xe6\xad\x8c\xe5\xb1\xb1.jp\0"
+"am.br\0duns\0"
+"odesa.ua\0myeffect.net\0"
+"sch.ae\0"
+"es.eu.org\0"
+"realestate.pl\0"
+"telecity\0"
+"harvestcelebration.museum\0"
+"etnedal.no\0krasnodar.su\0"
+"hirakata.osaka.jp\0"
+"castres.museum\0"
+"lucania.it\0tainai.niigata.jp\0"
+"gs.of.no\0hemne.no\0skype\0"
+"matsuzaki.shizuoka.jp\0\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0"
+"saga.jp\0"
+"ieee\0"
+"amursk.ru\0"
+"hbo\0"
+"akita.akita.jp\0netbank\0"
+"ky.us\0"
+"nov.ru\0"
+"omega\0"
+"fudai.iwate.jp\0furniture\0"
+"sanagochi.tokushima.jp\0turen.tn\0dvag\0"
+"asakawa.fukushima.jp\0"
+"egyptian.museum\0"
+"natuurwetenschappen.museum\0"
+"xperia\0est-mon-blogueur.com\0"
+"cymru.museum\0"
+"moroyama.saitama.jp\0hikari.yamaguchi.jp\0"
+"nov.su\0"
+"hagebostad.no\0"
+"trentino.it\0shirahama.wakayama.jp\0"
+"fauske.no\0"
+"sopot.pl\0"
+"plc.uk\0"
+"usa.museum\0"
+"chernovtsy.ua\0"
+"vefsn.no\0"
+"asso.re\0android\0"
+"iveco\0"
+"latina.it\0kitaaiki.nagano.jp\0"
+"tsuno.miyazaki.jp\0fund\0"
+"unnan.shimane.jp\0"
+"philadelphiaarea.museum\0"
+"nomi.ishikawa.jp\0sumita.iwate.jp\0"
+"lugansk.ua\0"
+"mansion.museum\0"
+"media.museum\0"
"chungbuk.kr\0"
-"\xe7\xbd\x91\xe7\xbb\x9c.cn\0nakasatsunai.hokkaido.jp\0takikawa.hokkaido.jp\0"
-"tokushima.tokushima.jp\0"
-"store.st\0"
-"name.az\0cnt.br\0johana.toyama.jp\0"
-"s3-website-eu-west-1.amazonaws.com\0"
-"social\0"
-"kvits\xc3\xb8y.no\0"
-"association.museum\0"
-"rikuzentakata.iwate.jp\0"
-"environment.museum\0indianmarket.museum\0hi.us\0"
-"ishikari.hokkaido.jp\0"
-"heimatunduhren.museum\0lib.de.us\0"
-"eti.br\0"
-"lunner.no\0estate\0"
-"lewismiller.museum\0\xec\x82\xbc\xec\x84\xb1\0"
-"komaki.aichi.jp\0"
-"naumburg.museum\0"
-"misato.wakayama.jp\0tsuru.yamanashi.jp\0"
-"haus\0"
-"kawagoe.mie.jp\0"
-"dance\0"
-"kadoma.osaka.jp\0"
-"ve.it\0"
-"vana\0"
-"museumcenter.museum\0"
-"\xc3\xb8stre-toten.no\0philips\0"
-"volyn.ua\0"
-"rio\0"
-"rip\0"
-"hiraya.nagano.jp\0skoczow.pl\0"
-"latrobe\0"
-"t.bg\0info\0homeftp.org\0"
-"shingu.hyogo.jp\0"
-"mykolaiv.ua\0"
-"loab\xc3\xa1t.no\0\xe7\xbd\x91\xe7\xab\x99\0"
-"prd.fr\0incheon.kr\0"
-"joburg\0"
-"\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"oizumi.gunma.jp\0"
-"grp.lk\0"
-"cn.it\0kitamoto.saitama.jp\0"
-"silk.museum\0"
-"swinoujscie.pl\0"
-"\xe7\xbd\x91\xe7\xbb\x9c.hk\0sauherad.no\0komatsu\0"
-"pe.it\0datsun\0"
-"drangedal.no\0cc.nh.us\0versicherung\0"
-"date.fukushima.jp\0"
-"jl.cn\0mitane.akita.jp\0ozu.ehime.jp\0"
-"is-with-theband.com\0"
-"yoro.gifu.jp\0"
-"kamo.kyoto.jp\0azure-mobile.net\0"
-"aizuwakamatsu.fukushima.jp\0hasuda.saitama.jp\0targi.pl\0"
-"ddr.museum\0kiwi\0"
-"niyodogawa.kochi.jp\0"
-"snaase.no\0"
-"sumida.tokyo.jp\0"
-"emr.it\0"
-"prato.it\0surf\0"
-"iron.museum\0pittsburgh.museum\0us-gov-west-1.compute.amazonaws.com\0"
-"church\0futbol\0"
-"in.na\0"
-"moriyama.shiga.jp\0"
-"ehime.jp\0"
-"watch-and-clock.museum\0"
-"kushima.miyazaki.jp\0fussa.tokyo.jp\0"
-"qc.ca\0"
-"bmd.br\0shakotan.hokkaido.jp\0nyuzen.toyama.jp\0pe.kr\0"
-"skjerv\xc3\xb8y.no\0"
-"tree.museum\0"
-"egersund.no\0"
-"gratangen.no\0luxe\0"
-"\xe7\xb5\x84\xe7\xb9\x94.hk\0valer.hedmark.no\0"
-"stcgroup\0"
-"\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93.jp\0higashisumiyoshi.osaka.jp\0"
-"accountants\0"
-"is-uberleet.com\0"
-"kitaaiki.nagano.jp\0"
-"test.tj\0"
-"bomlo.no\0"
-"gs.of.no\0"
-"obanazawa.yamagata.jp\0yamanashi.yamanashi.jp\0"
-"prd.km\0"
-"from-wa.com\0"
-"agrigento.it\0"
-"casino.hu\0"
-"tawaramoto.nara.jp\0babia-gora.pl\0\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0credit\0"
-"dontexist.com\0"
-"yatsushiro.kumamoto.jp\0"
-"h\xc3\xa5.no\0"
-"js.cn\0niikappu.hokkaido.jp\0"
-"gallery\0training\0"
-"oguni.kumamoto.jp\0"
-"\xe5\xaf\x8c\xe5\xb1\xb1.jp\0"
-"homebuilt.aero\0"
-"lowicz.pl\0"
-"sokndal.no\0"
-"prd.mg\0"
-"kakinoki.shimane.jp\0"
-"farmstead.museum\0active\0"
-"adm.br\0"
-"alibaba\0"
-"kunigami.okinawa.jp\0"
-"forgot.his.name\0"
-"\xc3\xa5mot.no\0test.ru\0"
-"bari.it\0"
-"fukuchi.fukuoka.jp\0sap\0"
-"in.rs\0"
-"doshi.yamanashi.jp\0"
-"monticello.museum\0"
-"f.se\0"
-"vs.it\0"
-"cpa.pro\0"
-"oygarden.no\0"
-"tarui.gifu.jp\0"
-"inzai.chiba.jp\0arida.wakayama.jp\0"
-"sca\0"
-"hokuto.hokkaido.jp\0okutama.tokyo.jp\0scb\0"
-"sbs\0"
-"name.vn\0"
+"gausdal.no\0slupsk.pl\0"
+"troms\xc3\xb8.no\0"
+"gent\0hobby-site.com\0"
+"vaga.no\0"
+"stackspace.space\0"
+"fresenius\0"
+"ullensvang.no\0gouv.rw\0"
+"us.eu.org\0"
+"sor-odal.no\0"
+"cc.nv.us\0"
+"fujikawaguchiko.yamanashi.jp\0gouv.sn\0global.prod.fastly.net\0"
+"inashiki.ibaraki.jp\0sebastopol.ua\0cc.ct.us\0"
+"togitsu.nagasaki.jp\0omaha.museum\0buzz\0"
+"tateshina.nagano.jp\0edu.eu.org\0"
+"lo.it\0"
+"goodhands\0"
+"mysecuritycamera.org\0"
+"tysvar.no\0"
+"democrat\0"
+"adachi.tokyo.jp\0"
+"delivery\0"
+"\xe8\x8c\xa8\xe5\x9f\x8e.jp\0"
+"greta.fr\0szkola.pl\0"
+"iitate.fukushima.jp\0hida.gifu.jp\0"
+"sch.id\0tonami.toyama.jp\0"
+"asso.nc\0odda.no\0"
+"dgca.aero\0"
+"kommune.no\0"
+"build\0scor\0"
+"scot\0"
+"kimitsu.chiba.jp\0lunner.no\0salat.no\0\xd2\x9b\xd0\xb0\xd0\xb7\0coupons\0"
+"sch.ir\0"
+"hiv\0"
+"gotdns.com\0"
+"koza.wakayama.jp\0"
+"ro.com\0"
+"otsuchi.iwate.jp\0k12.ny.us\0"
+"edogawa.tokyo.jp\0"
+"sch.jo\0algard.no\0"
+"hasama.oita.jp\0"
+"hara.nagano.jp\0"
+"kitakata.miyazaki.jp\0elblag.pl\0"
+"horology.museum\0"
+"arboretum.museum\0sciencehistory.museum\0"
+"commbank\0"
+"kounosu.saitama.jp\0"
+"arq.br\0"
+"ikeda.osaka.jp\0"
+"conference.aero\0"
+"shinonsen.hyogo.jp\0hkt\0"
+"tynset.no\0"
+"okawa.kochi.jp\0"
+"meland.no\0"
+"\xc3\xa5seral.no\0"
+"kl\xc3\xa6""bu.no\0"
"lib.wy.us\0"
-"in.th\0"
-"dubai\0"
-"magnitka.ru\0vegas\0"
-"otofuke.hokkaido.jp\0"
-"taipei\0"
-"trentinoa-adige.it\0"
-"in.ua\0"
-"ozu.kumamoto.jp\0"
-"from-id.com\0"
-"psi.br\0koshu.yamanashi.jp\0"
-"capetown\0"
-"fylkesbibl.no\0cc.nv.us\0pvt.k12.ma.us\0"
-"hachioji.tokyo.jp\0"
-"western.museum\0"
-"store.bb\0kasama.ibaraki.jp\0"
-"trentino-alto-adige.it\0terni.it\0kawaba.gunma.jp\0"
-"name.tj\0"
-"in.us\0"
-"katagami.akita.jp\0kawazu.shizuoka.jp\0"
-"mizunami.gifu.jp\0"
-"tank.museum\0lib.ri.us\0"
-"name.tr\0"
-"kiwa.mie.jp\0name.tt\0"
-"sm\xc3\xb8la.no\0"
-"nakaniikawa.toyama.jp\0"
-"online.museum\0hk.org\0"
-"miyoshi.saitama.jp\0"
-"asaminami.hiroshima.jp\0"
-"cn.ua\0"
-"fr\xc3\xb8ya.no\0"
-"!city.kawasaki.jp\0fukuroi.shizuoka.jp\0"
-"sew\0"
-"izunokuni.shizuoka.jp\0sex\0"
-"exeter.museum\0nesoddtangen.no\0"
-"tsukuba.ibaraki.jp\0"
-"m.se\0dreamhosters.com\0"
-"yame.fukuoka.jp\0ouchi.saga.jp\0"
-"amakusa.kumamoto.jp\0realtor\0"
-"symantec\0"
-"gyeonggi.kr\0"
-"ooshika.nagano.jp\0isla.pr\0"
-"eun.eg\0sund.no\0lib.ky.us\0"
+"canada.museum\0"
+"sch.lk\0"
+"protonet.io\0"
+"haga.tochigi.jp\0allfinanz\0"
+"shiroishi.miyagi.jp\0jetzt\0"
+"miyazu.kyoto.jp\0"
+"tagawa.fukuoka.jp\0zoology.museum\0"
+"prd.fr\0mishima.fukushima.jp\0"
+"choyo.kumamoto.jp\0cc.oh.us\0"
+"kharkiv.ua\0"
+"yatsushiro.kumamoto.jp\0"
+"sch.ly\0fi.eu.org\0"
+"business\0"
+"estate\0"
+"ao.it\0bari.it\0antiques.museum\0"
+"property\0"
+"!city.kitakyushu.jp\0"
+"svalbard.no\0"
+"happou.akita.jp\0skedsmokorset.no\0"
+"kumakogen.ehime.jp\0"
+"taketa.oita.jp\0"
+"sch.ng\0ak.us\0"
+"graz.museum\0krakow.pl\0"
+"meet\0"
+"ulsan.kr\0"
+"asso.km\0cartoonart.museum\0"
"teramo.it\0"
-"natori.miyagi.jp\0goto.nagasaki.jp\0"
-"notteroy.no\0"
-"sue.fukuoka.jp\0"
-"beardu.no\0naamesjevuemie.no\0"
-"iida.nagano.jp\0"
-"skj\xc3\xa5k.no\0"
-"ino.kochi.jp\0"
-"valle-d-aosta.it\0"
-"pz.it\0"
-"eastafrica.museum\0"
-"\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\0"
-"minamiminowa.nagano.jp\0"
-"name.qa\0"
-"name.pr\0"
-"jamison.museum\0"
-"kai.yamanashi.jp\0"
-"guitars\0"
-"farmers.museum\0"
-"ntr.br\0kamitonda.wakayama.jp\0"
-"name.na\0"
-"hanno.saitama.jp\0matsuzaki.shizuoka.jp\0"
-"leclerc\0"
-"napoli.it\0"
-"inatsuki.fukuoka.jp\0name.mv\0"
-"name.ng\0pl.ua\0police.uk\0"
-"oxford.museum\0name.my\0"
-"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0kashima.saga.jp\0fuchu.tokyo.jp\0"
-"coal.museum\0bridgestone\0software\0"
-"campania.it\0rep.kp\0"
-"sor-odal.no\0t.se\0"
-"kyonan.chiba.jp\0hikawa.shimane.jp\0suginami.tokyo.jp\0"
-"medical.museum\0cc.ut.us\0"
-"kitakami.iwate.jp\0pa.gov.pl\0"
-"ecn.br\0aizumi.tokushima.jp\0"
-"amur.ru\0de.us\0"
-"kikugawa.shizuoka.jp\0yoshida.shizuoka.jp\0"
-"r\xc3\xa5holt.no\0"
-"k12.de.us\0"
-"international\0"
-"sande.vestfold.no\0"
-"\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0"
-"sky\0from-fl.com\0"
-"seiyo.ehime.jp\0ariake.saga.jp\0"
-"shiojiri.nagano.jp\0"
-"koori.fukushima.jp\0bond\0"
-"nakagyo.kyoto.jp\0"
-"academy.museum\0"
-"ra.it\0abeno.osaka.jp\0"
-"eidskog.no\0"
-"shirahama.wakayama.jp\0"
-"dudinka.ru\0"
-"bnpparibas\0"
-"rybnik.pl\0\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0"
-"lazio.it\0gdynia.pl\0"
-"name.mk\0"
-"\xe5\xae\xae\xe5\x9f\x8e.jp\0nagi.okayama.jp\0"
-"is-an-artist.com\0"
-"racing\0"
-"hatsukaichi.hiroshima.jp\0sakai.ibaraki.jp\0chizu.tottori.jp\0"
-"0.bg\0"
-"nore-og-uvdal.no\0"
-"ichinomiya.chiba.jp\0lezajsk.pl\0"
-"bashkiria.ru\0"
-"name.jo\0sciencehistory.museum\0"
-"lucerne.museum\0vinnytsia.ua\0"
-"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0s3-website-us-east-1.amazonaws.com\0is-an-anarchist.com\0"
-"annaka.gunma.jp\0"
-"florence.it\0tajiri.osaka.jp\0"
-"shikabe.hokkaido.jp\0"
-"uchinada.ishikawa.jp\0"
-"from-pr.com\0hobby-site.com\0"
-"higashine.yamagata.jp\0"
-"society.museum\0"
-"soy\0"
-"anamizu.ishikawa.jp\0"
-"lom.it\0pohl\0"
-"\xc3\xa5seral.no\0"
-"kira.aichi.jp\0"
-"pizza\0"
-"ethnology.museum\0malselv.no\0"
-"bayern\0tab\0"
-"contact\0"
-"tozsde.hu\0saves-the-whales.com\0"
-"hokuto.yamanashi.jp\0"
-"org.ac\0"
-"ayabe.kyoto.jp\0"
-"org.ae\0time.no\0cc.ct.us\0"
-"org.af\0sobetsu.hokkaido.jp\0takinoue.hokkaido.jp\0sayama.osaka.jp\0"
-"org.ag\0moscow\0"
-"fukushima.jp\0hirado.nagasaki.jp\0"
+"matsumoto.kagoshima.jp\0"
+"iheya.okinawa.jp\0"
+"\xd9\xbe\xd8\xa7\xda\xa9\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0"
+"gouv.km\0"
+"is-into-anime.com\0"
+"yawara.ibaraki.jp\0"
+"sic.it\0"
+"rovno.ua\0"
+"asahikawa.hokkaido.jp\0nagatoro.saitama.jp\0hot\0"
+"how\0"
+"everbank\0"
+"asso.mc\0getmyip.com\0"
+"campania.it\0"
+"capital\0"
+"kawanishi.yamagata.jp\0rsvp\0"
+"\xe9\xb9\xbf\xe5\x85\x90\xe5\xb3\xb6.jp\0"
+"glogow.pl\0recht.pro\0sch.qa\0"
+"jpn.com\0"
+"is-a-candidate.org\0"
+"i234.me\0"
+"ws.na\0"
+"gouv.ml\0"
+"mydissent.net\0"
+"prd.km\0"
+"qld.gov.au\0"
+"bc.ca\0"
+"ogi.saga.jp\0"
+"arts.museum\0mosj\xc3\xb8""en.no\0isa-geek.net\0"
+"is-a-caterer.com\0"
+"lib.mi.us\0gb.com\0"
+"katsushika.tokyo.jp\0naustdal.no\0"
+"nanao.ishikawa.jp\0"
+"yoshida.shizuoka.jp\0ibm\0"
+"\xd0\xbc\xd0\xba\xd0\xb4\0"
+"austin.museum\0outsystemscloud.com\0"
+"ichihara.chiba.jp\0"
+"cookingchannel\0"
+"sch.sa\0corsica\0"
+"ice\0"
+"kiso.nagano.jp\0"
+"gs.ol.no\0from-wi.com\0"
+"friuli-venezia-giulia.it\0mc.it\0"
+"prd.mg\0software\0"
+"aq.it\0ba.it\0"
+"toho.fukuoka.jp\0"
+"fjaler.no\0"
+"hareid.no\0"
+"dnsalias.com\0"
+"stange.no\0"
+"htc\0"
+"nanto.toyama.jp\0icu\0"
+"kristiansund.no\0"
+"yekaterinburg.ru\0"
+"certification.aero\0"
+"harstad.no\0"
+"ichinomiya.aichi.jp\0"
+"ibestad.no\0"
+"logistics.aero\0"
+"arendal.no\0"
+"yaese.okinawa.jp\0hoylandet.no\0midsund.no\0"
+"endoftheinternet.org\0"
+"ohtawara.tochigi.jp\0"
+"koeln.museum\0"
+"kyonan.chiba.jp\0"
+"meme\0to.leg.br\0"
+"hashikami.aomori.jp\0"
+"k12.tx.us\0"
+"association.aero\0"
+"k12.dc.us\0"
+"gorizia.it\0dealer\0"
+"miho.ibaraki.jp\0kotoura.tottori.jp\0"
+"takazaki.miyazaki.jp\0"
+"asaminami.hiroshima.jp\0skierva.no\0ifm\0"
+"homeftp.net\0"
+"naval.museum\0"
+"histoire.museum\0mango\0"
+"bristol.museum\0"
+"vologda.su\0"
+"ontario.museum\0"
+"\xd0\xbc\xd0\xbe\xd0\xbd\0"
+"*.compute.estate\0"
+"higashiyoshino.nara.jp\0alt.za\0"
+"chino.nagano.jp\0"
+"gjerstad.no\0menu\0"
+"rl.no\0"
+"\xe3\x82\xbb\xe3\x83\xbc\xe3\x83\xab\0zappos\0s3-external-1.amazonaws.com\0from-sc.com\0"
+"chelyabinsk.ru\0"
+"haram.no\0"
+"fujikawa.shizuoka.jp\0"
+"microlight.aero\0"
+"automotive.museum\0virtual.museum\0"
+"yurihonjo.akita.jp\0akiruno.tokyo.jp\0plantation.museum\0"
+"myqnapcloud.com\0"
+"rn.it\0tuxfamily.org\0"
+"lu.it\0me.it\0noto.ishikawa.jp\0laakesvuemie.no\0"
+"bokn.no\0"
+"takaoka.toyama.jp\0"
+"is-an-anarchist.com\0"
+"yakumo.hokkaido.jp\0ogano.saitama.jp\0"
+"bestbuy\0"
+"ayabe.kyoto.jp\0ma.us\0theater\0"
+"mosjoen.no\0"
+"rissa.no\0"
+"amagasaki.hyogo.jp\0"
+"taishi.osaka.jp\0snillfjord.no\0vologda.ru\0s3-us-west-2.amazonaws.com\0"
+"macerata.it\0"
+"stj\xc3\xb8rdalshalsen.no\0"
+"dazaifu.fukuoka.jp\0"
+"\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0"
+"sch.zm\0ventures\0"
+"florence.it\0brasil.museum\0"
+"rzeszow.pl\0homedepot\0"
+"piw.gov.pl\0design\0"
+"sardegna.it\0alibaba\0"
+"arna.no\0"
+"tsuga.tochigi.jp\0"
+"shichikashuku.miyagi.jp\0"
+"ddns.me\0"
+"kumano.hiroshima.jp\0nakatane.kagoshima.jp\0k12.de.us\0seat\0"
+"pa.gov.pl\0"
+"rennes\xc3\xb8y.no\0"
+"nishiaizu.fukushima.jp\0"
+"avellino.it\0"
+"cnt.br\0eu.int\0bolzano.it\0"
+"kiyama.saga.jp\0\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0"
+"heroy.nordland.no\0"
+"ggee\0"
+"from-ne.com\0"
+"chuo.chiba.jp\0kyoto\0"
+"shinto.gunma.jp\0"
+"network\0"
+"*.platform.sh\0"
+"science\0"
+"hasami.nagasaki.jp\0"
+"lib.me.us\0"
+"marine.ru\0"
+"rackmaze.net\0"
+"baths.museum\0uscountryestate.museum\0damnserver.com\0"
+"ing\0"
+"kvinnherad.no\0siellak.no\0"
+"chat\0"
+"net.ac\0tambov.ru\0ink\0"
+"net.ae\0toyono.osaka.jp\0nishiazai.shiga.jp\0"
+"net.af\0niki.hokkaido.jp\0"
+"net.ag\0r\xc3\xa1isa.no\0\xd1\x83\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0"
+"net.ai\0"
+"harima.hyogo.jp\0"
+"net.al\0int\0dinosaur.museum\0"
+"liguria.it\0"
+"net.ba\0health.nz\0seek\0"
+"net.ar\0net.bb\0"
+"net.au\0router.management\0"
+"net.bh\0"
+"net.az\0"
+"tabuse.yamaguchi.jp\0ae.org\0"
+"tokai.aichi.jp\0khv.ru\0"
+"net.bm\0zoological.museum\0"
+"net.bo\0wegrow.pl\0"
+"fantasyleague.cc\0"
+"net.br\0"
+"net.bs\0"
+"net.bt\0"
+"fortworth.museum\0"
+"net.ci\0"
+"net.bz\0luxe\0"
+"serveblog.net\0"
+"pistoia.it\0"
+"net.cm\0uchiko.ehime.jp\0"
+"net.cn\0"
+"net.co\0izena.okinawa.jp\0iwata.shizuoka.jp\0"
+"r\xc3\xa6lingen.no\0zp.gov.pl\0"
+"nagano.jp\0"
+"net.cu\0monzaedellabrianza.it\0k12.co.us\0\xec\x82\xbc\xec\x84\xb1\0"
+"tube\0"
+"net.cw\0"
+"net.cy\0time.no\0"
+"aerobatic.aero\0"
+"net.dm\0"
+"press.cy\0net.do\0"
+"komono.mie.jp\0"
+"cim.br\0"
+"net.ec\0"
+"kagoshima.jp\0rochester.museum\0plo.ps\0myvnc.com\0"
+"net.eg\0"
+"ruhr\0"
+"leka.no\0"
+"net.dz\0obu.aichi.jp\0jcb\0"
+"and.museum\0"
+"krym.ua\0"
+"ako.hyogo.jp\0"
+"oketo.hokkaido.jp\0"
+"helsinki\0"
+"net.et\0misato.akita.jp\0bbs.tr\0"
+"sd.cn\0kostroma.ru\0"
+"\xe5\xae\xae\xe5\x9f\x8e.jp\0jcp\0"
+"hb.cn\0"
+"ist\0"
+"onyourside\0"
+"ba.leg.br\0"
+"mi.it\0toyama.jp\0me.tz\0"
+"aver\xc3\xb8y.no\0k-uralsk.ru\0me.uk\0"
+"net.ge\0bg.it\0"
+"net.gg\0hyllestad.no\0"
+"singles\0"
+"yasaka.nagano.jp\0"
+"security\0from-az.net\0"
+"net.gl\0sardinia.it\0sakai.osaka.jp\0me.us\0"
+"ushiku.ibaraki.jp\0r\xc3\xa5holt.no\0"
+"net.gn\0as.us\0itv\0"
+"net.gp\0"
+"educator.aero\0net.gr\0dsmynas.org\0"
+"net.gt\0technology\0"
+"vennesla.no\0dunlop\0"
+"takayama.gifu.jp\0"
+"net.gy\0"
+"\xe5\xb2\xa1\xe5\xb1\xb1.jp\0"
+"net.hk\0"
+"\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0\xc3\xa5lg\xc3\xa5rd.no\0ferrero\0"
+"net.hn\0"
+"minamiyamashiro.kyoto.jp\0"
+"unicom\0"
+"massa-carrara.it\0"
+"net.ht\0net.id\0"
+"health.vn\0"
+"iwc\0"
+"net.il\0hizen.saga.jp\0"
+"net.im\0owani.aomori.jp\0k12.tn.us\0"
+"net.in\0os.hedmark.no\0"
+"trieste.it\0mc.eu.org\0"
+"net.iq\0"
+"net.ir\0"
+"passenger-association.aero\0net.is\0"
+"stokke.no\0"
+"net.je\0us.org\0"
+"sweetpepper.org\0"
+"iwakura.aichi.jp\0"
+"lardal.no\0"
+"lancashire.museum\0eidskog.no\0"
+"blogsyte.com\0"
+"net.jo\0"
+"broke-it.net\0"
+"channel\0from-ok.com\0"
+"net.kg\0"
+"net.ki\0vista\0"
+"sakyo.kyoto.jp\0"
+"akaiwa.okayama.jp\0verisign\0"
+"lib.ma.us\0"
+"net.kn\0is-into-cars.com\0"
+"lib.as.us\0lt.eu.org\0"
+"grainger\0"
+"maniwa.okayama.jp\0net.la\0"
+"net.lb\0"
+"net.lc\0"
+"usui.fukuoka.jp\0nagi.okayama.jp\0"
+"cc.or.us\0"
+"amur.ru\0tom.ru\0jio\0"
+"ryugasaki.ibaraki.jp\0jeju.kr\0sko.gov.pl\0"
+"net.ky\0"
+"asti.it\0net.kz\0"
+"net.lk\0"
+"montreal.museum\0"
+"sibenik.museum\0"
+"gr.it\0sakuragawa.ibaraki.jp\0"
+"bi.it\0"
+"net.ma\0oceanographique.museum\0"
+"net.lr\0"
+"kamioka.akita.jp\0"
+"ikaruga.nara.jp\0epson\0"
+"net.me\0wy.us\0"
+"net.lv\0hoyanger.no\0"
+"net.ly\0"
+"lakas.hu\0gr.jp\0takagi.nagano.jp\0net.mk\0"
+"net.ml\0"
+"stadt.museum\0school\0"
+"kahoku.yamagata.jp\0karmoy.no\0"
+"net.mo\0"
+"kawajima.saitama.jp\0"
+"treviso.it\0kamiamakusa.kumamoto.jp\0net.ms\0pittsburgh.museum\0"
+"net.mt\0"
+"koganei.tokyo.jp\0net.mu\0"
+"net.mv\0net.nf\0\xe3\x83\x95\xe3\x82\xa1\xe3\x83\x83\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0"
+"net.mw\0net.ng\0"
+"yazu.tottori.jp\0net.mx\0"
+"net.my\0net.ni\0"
+"net.mz\0"
+"jlc\0"
+"hichiso.gifu.jp\0tatarstan.ru\0"
+"am.leg.br\0"
+"shinichi.hiroshima.jp\0onagawa.miyagi.jp\0net.nr\0"
+"jll\0"
+"togo.aichi.jp\0"
+"lipsy\0"
+"net.nz\0k12.in.us\0"
+"ishikawa.jp\0net.om\0"
+"naklo.pl\0globo\0"
+"gv.ao\0"
+"net.pa\0"
+"yamanouchi.nagano.jp\0koebenhavn.museum\0"
+"gv.at\0net.pe\0"
+"mihama.mie.jp\0net.ph\0jmp\0"
+"theatre\0"
+"sa.edu.au\0"
+"net.pk\0"
+"wildlife.museum\0vanylven.no\0net.pl\0"
+"sagae.yamagata.jp\0botany.museum\0"
+"net.pn\0abbott\0"
+"nishikawa.yamagata.jp\0"
+"selfip.net\0"
+"net.qa\0"
+"net.pr\0aigo\0jnj\0"
+"net.ps\0ryukyu\0"
+"austrheim.no\0net.pt\0"
+"takahashi.okayama.jp\0"
+"mi.th\0lib.sd.us\0"
+"nishiawakura.okayama.jp\0net.py\0"
+"sh.cn\0"
+"mo.cn\0tempio-olbia.it\0gamo.shiga.jp\0weir\0"
+"org.ac\0sb.ua\0"
+"org.ae\0hotels\0"
+"org.af\0"
+"org.ag\0fetsund.no\0"
+"takatori.nara.jp\0"
"org.ai\0"
-"org.al\0"
-"org.an\0"
-"tax\0"
-"org.ba\0soundandvision.museum\0trust.museum\0"
-"org.ar\0org.bb\0takasago.hyogo.jp\0"
-"engine.aero\0"
-"org.au\0kursk.ru\0is-very-bad.org\0"
-"\xe6\x94\xbf\xe5\xba\x9c\0"
-"org.bh\0"
-"7.bg\0org.bi\0sola.no\0is-a-socialist.com\0"
-"org.az\0"
-"hitachi.ibaraki.jp\0"
+"orange\0"
+"mihama.wakayama.jp\0tuva.su\0"
+"org.al\0seoul.kr\0"
+"active\0"
+"lerdal.no\0servehumour.com\0"
+"jot\0"
+"org.ba\0ingatlan.hu\0"
+"org.ar\0org.bb\0"
+"po.gov.pl\0"
+"yasugi.shimane.jp\0is-an-actor.com\0"
+"org.au\0net.sa\0barclays\0joy\0"
+"net.sb\0mi.us\0"
+"net.sc\0"
+"org.bh\0echizen.fukui.jp\0net.sd\0nissan\0"
+"org.bi\0net.ru\0"
+"org.az\0\xe7\xb5\x84\xe7\xbb\x87.hk\0"
+"net.rw\0net.sg\0"
+"a\xc3\xa9roport.ci\0net.sh\0"
"org.bm\0"
+"tateyama.chiba.jp\0"
"org.bo\0"
-"rome.it\0"
-"tci\0"
-"org.br\0tsukiyono.gunma.jp\0"
-"org.bs\0ulm.museum\0"
+"uji.kyoto.jp\0net.sl\0"
+"org.br\0mantova.it\0"
+"org.bs\0s\xc3\xb8r-odal.no\0net.so\0nissay\0"
"org.bt\0"
-"padova.it\0iyo.ehime.jp\0"
"org.bw\0"
-"sa.edu.au\0org.ci\0"
-"org.bz\0shintoku.hokkaido.jp\0"
-"stc\0"
-"detroit.museum\0geelvinck.museum\0"
-"org.cn\0"
-"org.co\0sande.more-og-romsdal.no\0"
-"sakata.yamagata.jp\0"
-"sicily.it\0"
-"org.cu\0lib.ak.us\0"
+"aosta.it\0net.st\0*.triton.zone\0"
+"org.ci\0"
+"org.bz\0hakusan.ishikawa.jp\0kudoyama.wakayama.jp\0leirfjord.no\0"
+"tos.it\0space.museum\0"
+"ikeda.hokkaido.jp\0net.th\0iamallama.com\0"
+"net.sy\0"
+"org.cn\0langevag.no\0net.tj\0"
+"org.co\0hirono.iwate.jp\0"
+"shunan.yamaguchi.jp\0net.tm\0"
+"rikubetsu.hokkaido.jp\0net.tn\0inc.hk\0"
+"net.to\0ap.leg.br\0"
+"org.cu\0kameyama.mie.jp\0net.ua\0"
+"iwaizumi.iwate.jp\0losangeles.museum\0hob\xc3\xb8l.no\0net.tr\0"
"org.cw\0"
-"vang.no\0"
-"maritimo.museum\0"
+"net.tt\0"
+"org.cy\0"
+"afamilycompany\0"
+"ggf.br\0tuva.ru\0net.tw\0"
+"wada.nagano.jp\0"
"org.dm\0"
-"lapy.pl\0"
-"org.do\0lom.no\0\xd0\xbc\xd0\xbe\xd0\xbd\0"
-"stranda.no\0"
-"sicilia.it\0takasu.hokkaido.jp\0kunitomi.miyazaki.jp\0sugito.saitama.jp\0"
-"org.ec\0"
-"tel\0"
-"org.ee\0"
-"nishimera.miyazaki.jp\0"
-"org.eg\0"
-"aichi.jp\0koto.tokyo.jp\0"
-"org.dz\0"
-"maryland.museum\0"
-"minami.kyoto.jp\0homeftp.net\0"
-"giving\0"
-"ro.it\0turin.it\0wroclaw.pl\0"
-"cc.pr.us\0"
-"org.es\0from-mt.com\0from-nd.com\0"
-"org.et\0\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0"
-"langevag.no\0"
-"yamanouchi.nagano.jp\0"
-"r\xc3\xa6lingen.no\0fairwinds\0est-a-la-masion.com\0"
-"hakui.ishikawa.jp\0"
-"kuzumaki.iwate.jp\0sharp\0"
-"toyono.osaka.jp\0saitama.saitama.jp\0"
-"singles\0"
-"military.museum\0"
-"eniwa.hokkaido.jp\0"
-"jerusalem.museum\0k12.wy.us\0is-a-designer.com\0"
-"itayanagi.aomori.jp\0"
-"trustee.museum\0"
+"schweiz.museum\0"
+"org.do\0net.uk\0nikon\0"
+"govt.nz\0\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\0"
+"org.ec\0sexy\0"
+"org.ee\0chesapeakebay.museum\0bingo\0"
+"org.eg\0kamijima.ehime.jp\0net.vc\0"
+"tenei.fukushima.jp\0\xc3\xa5""fjord.no\0net.ve\0"
+"org.dz\0izumiotsu.osaka.jp\0"
+"yamagata.ibaraki.jp\0obninsk.su\0"
+"net.uy\0net.vi\0"
+"kuji.iwate.jp\0net.uz\0"
+"net.vn\0hdfcbank\0ftpaccess.cc\0"
+"org.es\0"
+"org.et\0"
+"trentinosudtirol.it\0nakasatsunai.hokkaido.jp\0"
+"franziskaner.museum\0sf.no\0lib.nm.us\0"
+"net.vu\0"
+"shibuya.tokyo.jp\0funahashi.toyama.jp\0"
+"gx.cn\0"
+"press.se\0mk.ua\0"
+"esashi.hokkaido.jp\0"
+"gamvik.no\0"
+"abr.it\0"
"org.ge\0"
-"amami.kagoshima.jp\0"
-"parachuting.aero\0org.gg\0"
-"org.gh\0ostroleka.pl\0"
-"org.gi\0jondal.no\0stuff-4-sale.org\0"
-"org.gn\0"
-"servebbs.com\0"
-"org.gp\0urawa.saitama.jp\0"
-"org.gr\0lo.it\0"
-"h\xc3\xb8nefoss.no\0"
-"org.gt\0"
-"from-nj.com\0"
-"cc.wi.us\0"
+"gs.va.no\0"
+"org.gg\0net.ws\0"
+"org.gh\0mo.it\0lomza.pl\0zhitomir.ua\0cupcake.is\0"
+"org.gi\0"
+"beiarn.no\0"
+"org.gl\0"
+"is-by.us\0"
+"ip6.arpa\0org.gn\0"
+"org.gp\0sd.us\0"
+"org.gr\0otofuke.hokkaido.jp\0"
+"org.gt\0kfh\0"
+"alsace\0exposed\0"
+"nogi.tochigi.jp\0london.museum\0"
+"aircraft.aero\0org.gy\0"
+"courses\0"
"org.hk\0"
"org.hn\0"
-"oystre-slidre.no\0k12.fl.us\0"
-"nat.tn\0"
-"encyclopedic.museum\0lib.nm.us\0"
-"minamiaiki.nagano.jp\0"
-"kv\xc3\xa6nangen.no\0oppdal.no\0k12.ri.us\0"
+"dlugoleka.pl\0"
+"sorreisa.no\0mk.eu.org\0"
"org.ht\0"
-"org.hu\0dagestan.ru\0"
-"gangwon.kr\0"
-"rad\xc3\xb8y.no\0"
-"*.yokohama.jp\0mochizuki.nagano.jp\0shimoda.shizuoka.jp\0"
-"org.im\0"
-"org.in\0kunneppu.hokkaido.jp\0"
-"marriott\0"
-"org.iq\0"
-"org.ir\0lodi.it\0shirakawa.gifu.jp\0kumamoto.kumamoto.jp\0"
-"org.is\0alabama.museum\0photo\0"
-"org.je\0"
-"porn\0"
-"kristiansand.no\0from-nh.com\0"
-"rokunohe.aomori.jp\0"
-"org.jo\0"
-"la.us\0"
-"chichibu.saitama.jp\0"
-"afjord.no\0"
-"tel.tr\0"
-"asn.au\0k12.ky.us\0"
-"org.kg\0"
-"okawa.fukuoka.jp\0"
-"org.ki\0"
-"za.net\0"
-"badajoz.museum\0"
-"tenkawa.nara.jp\0post\0"
+"org.hu\0nishiizu.shizuoka.jp\0net.za\0"
+"shimizu.shizuoka.jp\0"
+"shiwa.iwate.jp\0natori.miyagi.jp\0haebaru.okinawa.jp\0"
+"eu-central-1.compute.amazonaws.com\0"
+"bern.museum\0"
+"org.il\0mihara.hiroshima.jp\0"
+"org.im\0higashishirakawa.gifu.jp\0aviation.museum\0"
+"org.in\0"
+"from-mn.com\0"
+"org.iq\0net.zm\0"
+"org.ir\0"
+"org.is\0"
+"jewelry\0static.land\0"
+"org.je\0youtube\0"
+"trentinosuedtirol.it\0"
+"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0"
+"donetsk.ua\0\xd0\xbe\xd1\x80\xd0\xb3\0"
+"salerno.it\0shoo.okayama.jp\0stockholm\0"
+"shibata.miyagi.jp\0"
+"kia\0"
+"beeldengeluid.museum\0"
+"org.jo\0levanger.no\0"
+"touch.museum\0"
+"tsukigata.hokkaido.jp\0no-ip.ca\0qa2.com\0"
+"takahata.yamagata.jp\0"
+"shirosato.ibaraki.jp\0"
+"org.kg\0mlbfan.org\0"
+"abashiri.hokkaido.jp\0higashisumiyoshi.osaka.jp\0"
+"org.ki\0kim\0"
"org.km\0"
-"org.kn\0"
-"ohi.fukui.jp\0org.kp\0"
-"org.la\0"
-"\xe6\xa0\x83\xe6\x9c\xa8.jp\0org.lb\0"
-"org.lc\0"
-"caltanissetta.it\0"
-"monza.it\0"
-"vega.no\0"
-"grosseto.it\0"
-"council.aero\0org.ky\0pictures\0"
-"org.kz\0"
-"org.lk\0s3-website-ap-southeast-2.amazonaws.com\0"
-"togo.aichi.jp\0wajima.ishikawa.jp\0tado.mie.jp\0"
-"org.ma\0"
-"org.lr\0dyndns.biz\0"
-"org.ls\0"
-"saga.jp\0"
-"org.me\0h\xc3\xb8yanger.no\0"
-"narashino.chiba.jp\0org.lv\0"
-"org.mg\0and.museum\0"
-"sos.pl\0"
-"org.ly\0lib.mt.us\0lib.nd.us\0"
-"tohnosho.chiba.jp\0poznan.pl\0"
-"org.mk\0"
-"org.ml\0"
-"s3-website-ap-southeast-1.amazonaws.com\0"
-"org.mn\0tmall\0"
+"org.kn\0boldlygoingnowhere.org\0"
+"org.kp\0"
+"org.la\0vikna.no\0"
+"org.lb\0"
+"org.lc\0porsgrunn.no\0consulado.st\0"
+"tsubata.ishikawa.jp\0"
+"tur.ar\0gz.cn\0org.ky\0rv.ua\0"
+"org.kz\0cc.va.us\0"
+"org.lk\0press.ma\0"
+"camera\0"
+"org.ma\0\xc3\xb8ystre-slidre.no\0yalta.ua\0"
+"org.lr\0"
+"na.it\0org.ls\0lu.eu.org\0me.eu.org\0"
+"bo.it\0org.me\0sauherad.no\0"
+"org.lv\0"
+"org.mg\0"
+"columbus.museum\0kazimierz-dolny.pl\0e12.ve\0cloudns.pro\0"
+"tur.br\0toon.ehime.jp\0org.ly\0"
+"org.mk\0watchandclock.museum\0kvafjord.no\0"
+"seirou.niigata.jp\0org.ml\0"
+"org.mn\0rj.leg.br\0"
"org.mo\0"
-"cheltenham.museum\0org.na\0sor-aurdal.no\0"
-"kusatsu.shiga.jp\0"
+"mine.nu\0"
+"org.na\0"
+"bifuka.hokkaido.jp\0volkenkunde.museum\0"
"org.ms\0"
-"am.br\0toyone.aichi.jp\0org.mt\0"
-"org.mu\0plumbing\0"
-"org.mv\0bielawa.pl\0"
+"org.mt\0"
+"org.mu\0"
+"org.mv\0dyndns.biz\0"
"org.mw\0org.ng\0"
-"org.mx\0"
-"org.my\0"
-"work\0"
-"toyama.jp\0"
-"fh.se\0"
-"pol.dz\0"
-"gripe\0wales\0"
-"tenei.fukushima.jp\0iwakuni.yamaguchi.jp\0po.gov.pl\0"
-"family.museum\0"
-"org.nr\0"
-"bilbao.museum\0sf.no\0"
-"hida.gifu.jp\0"
-"lyngen.no\0"
-"yokoshibahikari.chiba.jp\0"
-"kamchatka.ru\0"
-"nirasaki.yamanashi.jp\0top\0"
-"brunel.museum\0"
-"org.nz\0"
-"meiwa.gunma.jp\0"
-"org.om\0"
-"hino.tottori.jp\0boleslawiec.pl\0"
-"hareid.no\0"
-"taa.it\0"
-"org.pa\0"
-"tagami.niigata.jp\0"
-"komi.ru\0"
-"kurogi.fukuoka.jp\0nakatombetsu.hokkaido.jp\0naha.okinawa.jp\0"
+"urbinopesaro.it\0org.mx\0fedex\0"
+"org.my\0org.ni\0varggat.no\0"
+"org.mz\0"
+"lindesnes.no\0mandal.no\0"
+"volyn.ua\0"
+"aoste.it\0"
+"hakone.kanagawa.jp\0org.nr\0"
+"date.hokkaido.jp\0money\0nokia\0lv.eu.org\0"
+"toga.toyama.jp\0"
+"yamanobe.yamagata.jp\0org.nz\0"
+"itako.ibaraki.jp\0skole.museum\0"
+"maritimo.museum\0org.om\0"
+"from-ny.net\0"
+"nosegawa.nara.jp\0org.pa\0"
"org.pe\0"
-"wakuya.miyagi.jp\0org.pf\0"
-"org.ph\0"
-"org.pk\0"
-"higashi.fukushima.jp\0kushiro.hokkaido.jp\0org.pl\0"
-"\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x81\xd1\x80\xd0\xb1\0is-a-llama.com\0"
-"desa.id\0org.pn\0"
-"leksvik.no\0"
-"org.qa\0"
-"shirako.chiba.jp\0org.pr\0"
-"org.ps\0"
-"org.pt\0"
-"gamvik.no\0org.py\0"
-"ikawa.akita.jp\0"
-"aircraft.aero\0"
-"obama.fukui.jp\0"
-"england.museum\0graz.museum\0lib.mo.us\0"
-"akita.akita.jp\0nakagawa.hokkaido.jp\0"
-"davvenj\xc3\xa1rga.no\0"
-"embaixada.st\0"
-"ambulance.aero\0"
-"pol.ht\0"
-"chuo.osaka.jp\0"
-"l\xc3\xb8ten.no\0ubs\0"
-"limited\0"
-"bergbau.museum\0h\xc3\xa6gebostad.no\0"
-"savona.it\0"
-"org.ro\0uk.com\0"
-"ski.museum\0org.sa\0"
+"org.pf\0"
+"kamitsue.oita.jp\0blogspot.com.cy\0"
+"satx.museum\0org.ph\0"
+"zgorzelec.pl\0"
+"mill.museum\0"
+"ishikari.hokkaido.jp\0minami.tokushima.jp\0org.pk\0better-than.tv\0"
+"org.pl\0gift\0"
+"\xe4\xb8\xaa\xe4\xba\xba.hk\0"
+"org.pn\0"
+"*.api.githubcloud.com\0"
+"watch\0"
+"meldal.no\0org.qa\0"
+"org.pr\0is-a-bulls-fan.com\0"
+"org.ps\0blogspot.com.ee\0"
+"org.pt\0events\0"
+"finance\0blogspot.com.eg\0"
+"codespot.com\0"
+"beppu.oita.jp\0bytom.pl\0"
+"org.py\0"
+"izhevsk.ru\0"
+"h\xc3\xa1pmir.no\0"
+"blogspot.com.ar\0"
+"sn.cn\0"
+"mw.gov.pl\0education\0blogspot.com.au\0"
+"hl.cn\0"
+"circus.museum\0"
+"shinshiro.aichi.jp\0"
+"suwalki.pl\0"
+"kijo.miyazaki.jp\0sunndal.no\0snz.ru\0kpn\0"
+"citi\0target\0"
+"exchange\0"
+"uchinomi.kagawa.jp\0"
+"ms.it\0"
+"shiki.saitama.jp\0org.ro\0"
+"ca.it\0tokashiki.okinawa.jp\0blogspot.com.br\0"
+"org.sa\0cn-north-1.compute.amazonaws.com.cn\0"
"org.sb\0"
-"ushistory.museum\0org.rs\0org.sc\0"
-"org.sd\0"
-"org.ru\0org.se\0amsterdam\0"
-"coop.ht\0"
-"usarts.museum\0org.sg\0"
-"org.sh\0"
-"iwate.iwate.jp\0"
-"tuva.ru\0"
-"org.sl\0"
-"stadt.museum\0"
+"org.rs\0org.sc\0"
+"moma.museum\0org.sd\0"
+"yugawara.kanagawa.jp\0org.ru\0org.se\0"
+"org.sg\0mo.us\0blogspot.com.by\0"
+"mad.museum\0even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0org.sh\0"
+"yatomi.aichi.jp\0"
+"limanowa.pl\0"
+"city\0"
+"org.sl\0ddns.net\0"
+"recreation.aero\0blogspot.com.co\0"
"org.sn\0"
-"org.so\0"
-"kisosaki.mie.jp\0"
-"shunan.yamaguchi.jp\0"
-"ohira.miyagi.jp\0wake.okayama.jp\0kyuragi.saga.jp\0org.st\0"
-"kumano.mie.jp\0org.sv\0"
-"porsanger.no\0org.sy\0"
-"trentino-sudtirol.it\0org.sz\0org.tj\0gda.pl\0"
-"tj\xc3\xb8me.no\0"
-"museum.tt\0"
-"org.tm\0lifestyle\0"
+"horokanai.hokkaido.jp\0org.so\0"
+"krd\0lat\0"
+"bolt.hu\0ojiya.niigata.jp\0"
+"childrensgarden.museum\0law\0"
+"fribourg.museum\0org.st\0"
+"org.sv\0"
+"kaminoyama.yamagata.jp\0dali.museum\0"
+"higashiura.aichi.jp\0org.sy\0"
+"rieti.it\0org.sz\0org.tj\0"
+"v\xc3\xa6r\xc3\xb8y.no\0"
+"taiji.wakayama.jp\0ms.kr\0"
+"machida.tokyo.jp\0org.tm\0"
"org.tn\0"
-"org.to\0"
-"altoadige.it\0"
-"org.ua\0tui\0"
+"neyagawa.osaka.jp\0org.to\0"
+"wiw.gov.pl\0"
+"org.ua\0"
"org.tr\0"
-"r\xc3\xb8yken.no\0m\xc3\xa1tta-v\xc3\xa1rjjat.no\0"
-"coop.br\0org.tt\0"
-"brumunddal.no\0rv.ua\0gr.com\0"
-"ingatlan.hu\0org.tw\0org.ug\0finance\0"
-"itakura.gunma.jp\0"
-"mt.it\0semboku.akita.jp\0minami-alps.yamanashi.jp\0"
-"uvic.museum\0org.uk\0"
-"nishikata.tochigi.jp\0"
-"hk.cn\0"
-"namegawa.saitama.jp\0"
-"rentals\0"
-"volda.no\0org.vc\0"
+"zagan.pl\0mex.com\0"
+"org.tt\0"
+"org.tw\0org.ug\0caseih\0"
+"tec.ve\0"
+"ikusaka.nagano.jp\0"
+"jeonnam.kr\0org.uk\0"
+"ascoli-piceno.it\0"
+"homesecuritymac.com\0"
+"miyako.iwate.jp\0yoshino.nara.jp\0"
+"lupin\0blogspot.com.es\0"
+"org.vc\0"
+"is-a-anarchist.com\0"
"org.ve\0"
-"kariya.aichi.jp\0asn.lv\0"
-"jp.net\0"
-"museumvereniging.museum\0philately.museum\0project.museum\0stordal.no\0lib.nv.us\0org.uy\0org.vi\0"
-"org.uz\0football\0"
-"!city.sendai.jp\0"
-"lebesby.no\0vladimir.ru\0"
-"org.vn\0"
-"games.hu\0"
-"kawakami.nara.jp\0"
-"priv.hu\0"
-"takamatsu.kagawa.jp\0foundation\0"
-"fetsund.no\0org.vu\0"
-"yotsukaido.chiba.jp\0"
-"lv.ua\0"
-"osen.no\0"
-"soma.fukushima.jp\0fujisawa.kanagawa.jp\0"
-"reggioemilia.it\0"
-"\xed\x95\x9c\xea\xb5\xad\0"
-"bando.ibaraki.jp\0"
-"leka.no\0"
-"oshima.tokyo.jp\0"
-"presidio.museum\0st.no\0org.ws\0"
-"space-to-rent.com\0"
-"delaware.museum\0"
-"kiyama.saga.jp\0"
-"omaha.museum\0azure\0"
-"matsukawa.nagano.jp\0kannami.shizuoka.jp\0"
-"nakhodka.ru\0"
-"suifu.ibaraki.jp\0"
-"safety.aero\0songdalen.no\0"
-"utazas.hu\0guge\0"
-"kahoku.ishikawa.jp\0"
-"gotsu.shimane.jp\0koge.tottori.jp\0"
-"home.dyndns.org\0"
-"trentinostirol.it\0kobayashi.miyazaki.jp\0"
-"sm.ua\0"
-"at.it\0monza-e-della-brianza.it\0"
-"ishigaki.okinawa.jp\0musashimurayama.tokyo.jp\0"
-"defense.tn\0"
-"kosei.shiga.jp\0"
-"nichinan.tottori.jp\0"
-"\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0"
-"surgut.ru\0"
-"taito.tokyo.jp\0"
-"isleofman.museum\0"
-"oksnes.no\0"
-"volkenkunde.museum\0"
-"minamimaki.nagano.jp\0"
-"cologne\0"
-"call\0"
+"chizu.tottori.jp\0monash\0"
+"dscloud.biz\0"
+"tananger.no\0"
+"org.uy\0org.vi\0"
+"org.uz\0"
+"ca.na\0myshopblocks.com\0"
+"ing.pa\0org.vn\0"
+"stalbans.museum\0lds\0"
+"kr.eu.org\0"
+"isernia.it\0"
+"matsue.shimane.jp\0org.vu\0dev.static.land\0"
+"tomobe.ibaraki.jp\0"
+"xenapponazure.com\0"
+"hn.cn\0farmequipment.museum\0"
+"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0"
+"org.ws\0forgot.her.name\0"
+"catania.it\0"
+"fukumitsu.toyama.jp\0koya.wakayama.jp\0"
+"agents.aero\0"
+"bs.it\0"
+"hidaka.kochi.jp\0"
+"konsulat.gov.pl\0"
+"aso.kumamoto.jp\0walmart\0"
+"froland.no\0"
+"hughes\0"
+"ne.jp\0onga.fukuoka.jp\0"
+"yamanashi.yamanashi.jp\0"
+"presse.km\0"
+"watarai.mie.jp\0"
+"ass.km\0"
+"h\xc3\xa6gebostad.no\0"
+"bandai.fukushima.jp\0"
+"org.za\0"
+"is-into-cartoons.com\0"
+"tochio.niigata.jp\0"
+"futaba.fukushima.jp\0"
+"production.aero\0ne.kr\0"
+"monzaebrianza.it\0"
+"lel.br\0"
+"frosinone.it\0is-a-therapist.com\0"
+"org.zm\0"
+"futtsu.chiba.jp\0"
+"tamakawa.fukushima.jp\0"
+"nankoku.kochi.jp\0fuji.shizuoka.jp\0"
+"dsmynas.net\0"
+"myphotos.cc\0"
+"\xe4\xb8\x89\xe9\x87\x8d.jp\0presse.ml\0pvt.k12.ma.us\0"
+"bnpparibas\0"
+"karuizawa.nagano.jp\0"
+"irish\0"
+"*.transurl.be\0"
+"hitachi.ibaraki.jp\0kalisz.pl\0"
+"beep.pl\0"
+"kushimoto.wakayama.jp\0cc.na\0"
+"yk.ca\0"
+"kawanishi.nara.jp\0"
+"nanbu.yamanashi.jp\0"
+"tagajo.miyagi.jp\0"
+"chikushino.fukuoka.jp\0ikeda.gifu.jp\0eu-west-1.compute.amazonaws.com\0cloudns.org\0"
+"lib.ne.us\0"
+"lib.il.us\0"
+"hl.no\0akdn\0liaison\0"
+"ota.gunma.jp\0\xd8\xa7\xd8\xaa\xd8\xb5\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\0"
+"suedtirol.it\0shitara.aichi.jp\0jinsekikogen.hiroshima.jp\0"
+"szczytno.pl\0nc.tr\0"
+"usculture.museum\0sochi.su\0"
+"rr.leg.br\0"
+"shaw\0"
+"blogspot.com.mt\0"
+"sp.it\0"
+"flesberg.no\0blogspot.com.ng\0"
+"ce.it\0olsztyn.pl\0"
+"achi.nagano.jp\0"
+"go.dyndns.org\0"
+"shoes\0"
+"geometre-expert.fr\0ms.us\0nc.us\0"
+"ca.us\0"
+"virtueeldomein.nl\0"
+"online\0"
+"alto-adige.it\0opencraft.hosting\0"
+"naturalhistorymuseum.museum\0"
+"\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0"
+"\xe5\x81\xa5\xe5\xba\xb7\0"
+"!www.ck\0valle-aosta.it\0ne.pw\0rns.tn\0"
+"cincinnati.museum\0"
+"rs.leg.br\0sc.leg.br\0*.transurl.eu\0"
+"gateway.museum\0"
+"roan.no\0"
+"togakushi.nagano.jp\0oshima.tokyo.jp\0"
+"higashi.fukushima.jp\0musashimurayama.tokyo.jp\0"
+"is-certified.com\0"
+"kaga.ishikawa.jp\0quicksytes.com\0"
+"k12.ut.us\0"
+"christiansburg.museum\0vindafjord.no\0k12.pa.us\0"
+"kazan.ru\0blogspot.com.tr\0"
+"claims\0knightpoint.systems\0"
+"ueda.nagano.jp\0ringebu.no\0"
+"leikanger.no\0"
+"lol\0works\0"
+"chiba.jp\0science-fiction.museum\0murmansk.su\0world\0"
+"nago.okinawa.jp\0"
+"jelenia-gora.pl\0goldpoint\0"
+"nahari.kochi.jp\0estate.museum\0"
+"mysecuritycamera.com\0"
+"hanamaki.iwate.jp\0ube.yamaguchi.jp\0sorfold.no\0"
+"fermo.it\0"
+"lincoln\0"
+"lpl\0"
+"country\0"
+"whoswho\0"
+"hioki.kagoshima.jp\0musashino.tokyo.jp\0muosat.no\0lib.ms.us\0lib.nc.us\0"
+"my.id\0"
+"bu.no\0"
+"north.museum\0is-a-soxfan.org\0"
+"blackfriday\0"
+"parma.it\0"
+"group\0"
+"cc.vi.us\0"
+"masfjorden.no\0"
+"trentino-sued-tirol.it\0\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0"
+"iizuna.nagano.jp\0sor-varanger.no\0engineering\0"
+"man\0"
+"nishihara.kumamoto.jp\0"
+"sveio.no\0ne.ug\0map\0microsoft\0"
+"her\xc3\xb8y.nordland.no\0mba\0"
+"sr.it\0kouyama.kagoshima.jp\0"
+"ne.tz\0"
+"canon\0"
+"kasugai.aichi.jp\0"
+"guitars\0"
+"oarai.ibaraki.jp\0selfip.org\0serveminecraft.net\0"
+"teo.br\0kochi.jp\0berlev\xc3\xa5g.no\0ne.us\0"
+"murmansk.ru\0"
+"mel\xc3\xb8y.no\0shia\0"
+"grp.lk\0"
+"mcd\0"
+"ome.tokyo.jp\0"
+"izunokuni.shizuoka.jp\0"
+"dyndns-work.com\0"
+"rnu.tn\0"
+"okawa.fukuoka.jp\0misaki.okayama.jp\0"
+"hakuba.nagano.jp\0"
+"owariasahi.aichi.jp\0s\xc3\xb8rfold.no\0"
+"rn.leg.br\0"
+"clinique\0"
+"gmail\0ltd\0"
+"state.museum\0"
+"readmyblog.org\0"
+"blogspot.com.uy\0"
+"niiza.saitama.jp\0"
+"v\xc3\xa5gan.no\0williamhill\0"
+"rawa-maz.pl\0"
"historisches.museum\0"
-"asker.no\0hornindal.no\0from-tx.com\0"
-"jgora.pl\0"
-"barrell-of-knowledge.info\0"
-"l\xc3\xa6rdal.no\0"
-"rzeszow.pl\0"
-"izu.shizuoka.jp\0"
-"jewish.museum\0aejrie.no\0"
-"blogspot.co.at\0priv.at\0"
-"lombardy.it\0"
-"minamiise.mie.jp\0school\0"
-"botanicalgarden.museum\0freemasonry.museum\0lur\xc3\xb8y.no\0"
-"omihachiman.shiga.jp\0"
-"tr.it\0hokkaido.jp\0miyoshi.hiroshima.jp\0klodzko.pl\0camp\0"
-"suisse.museum\0\xe5\x81\xa5\xe5\xba\xb7\0"
-"denmark.museum\0"
-"in.net\0"
-"trysil.no\0is-a-green.com\0"
-"lib.ia.us\0"
+"abira.hokkaido.jp\0"
+"audible\0med\0"
+"from-mi.com\0"
+"insurance.aero\0hita.oita.jp\0"
+"is-a-techie.com\0"
+"id.au\0"
+"men\0"
+"kr\xc3\xa5""anghke.no\0meo\0"
+"ro.leg.br\0"
+"takaishi.osaka.jp\0www.ro\0"
+"himeji.hyogo.jp\0"
+"sakuho.nagano.jp\0*.transurl.nl\0"
+"priv.hu\0"
+"aki.kochi.jp\0"
+"arida.wakayama.jp\0"
+"nm.cn\0"
+"kawagoe.mie.jp\0"
+"pubol.museum\0"
+"cc.pr.us\0mini\0"
+"square.museum\0chernihiv.ua\0"
+"church\0"
+"spb.ru\0"
+"contractors\0"
+"ci.it\0ulan-ude.ru\0"
+"avoues.fr\0mint\0"
+"trentino-stirol.it\0"
+"lincoln.museum\0"
+"tottori.jp\0"
+"campidano-medio.it\0oamishirasato.chiba.jp\0spb.su\0"
+"aichi.jp\0"
+"hisamitsu\0"
+"kurobe.toyama.jp\0mopar\0drud.io\0"
+"hisayama.fukuoka.jp\0"
+"time.museum\0"
+"skjerv\xc3\xb8y.no\0from-de.com\0"
+"ehime.jp\0biei.hokkaido.jp\0"
+"koriyama.fukushima.jp\0"
+"mugi.tokushima.jp\0idrett.no\0"
+"mil\0"
+"shop\0\xd8\xb9\xd8\xb1\xd8\xa8\0"
+"mit\0"
+"show\0us-gov-west-1.compute.amazonaws.com\0"
+"takko.aomori.jp\0"
+"kamoenai.hokkaido.jp\0tadotsu.kagawa.jp\0kiwi\0"
+"jamison.museum\0dupont\0"
+"flora.no\0"
+"tokushima.jp\0"
+"bounceme.net\0"
+"garden.museum\0paderborn.museum\0hjelmeland.no\0"
+"priv.at\0"
+"glass.museum\0plumbing\0"
+"training\0compute.amazonaws.com.cn\0"
+"*.yokohama.jp\0g\xc3\xa1\xc5\x8bgaviika.no\0"
+"stj\xc3\xb8rdal.no\0v\xc3\xa5gs\xc3\xb8y.no\0"
+"vlaanderen\0"
+"rebun.hokkaido.jp\0cyon.site\0"
+"hiraya.nagano.jp\0mlb\0hu.com\0"
+"sakae.nagano.jp\0"
+"kitashiobara.fukushima.jp\0"
+"chernigov.ua\0"
+"ce.leg.br\0"
+"st.no\0lib.mo.us\0radio\0za.bz\0"
+"engineer.aero\0matsuura.nagasaki.jp\0toyosato.shiga.jp\0"
+"lib.ca.us\0"
+"bunkyo.tokyo.jp\0\xd1\x80\xd1\x83\xd1\x81\0"
+"sx.cn\0"
+"cloudns.eu\0"
+"keisen.fukuoka.jp\0webhop.me\0"
+"mma\0"
+"actor\0mls\0"
+"karpacz.pl\0is-a-conservative.com\0"
+"ninja\0"
+"misasa.tottori.jp\0rightathome\0"
+"id.ir\0sv.it\0"
+"buyshouses.net\0"
+"oceanographic.museum\0aurskog-holand.no\0"
+"uonuma.niigata.jp\0"
+"\xe9\xa3\x9e\xe5\x88\xa9\xe6\xb5\xa6\0"
+"telefonica\0"
+"monza-e-della-brianza.it\0snasa.no\0"
+"kozagawa.wakayama.jp\0"
+"kragero.no\0"
+"isteingeek.de\0"
+"sandiego.museum\0"
+"agematsu.nagano.jp\0"
+"kitahiroshima.hokkaido.jp\0toyonaka.osaka.jp\0"
+"bergbau.museum\0"
+"moe\0"
+"trentino-suedtirol.it\0ralingen.no\0"
+"jewelry.museum\0lenug.su\0"
+"presse.ci\0"
+"shirakawa.fukushima.jp\0takashima.shiga.jp\0moi\0wroc.pl\0"
+"norton\0"
+"mom\0"
+"takino.hyogo.jp\0kviteseid.no\0waw.pl\0"
+"google\0"
+"dvrdns.org\0is-leet.com\0"
+"market\0"
+"co.ae\0"
+"lenvik.no\0"
+,
+
+"co.ag\0hanawa.fukushima.jp\0"
+"gmina.pl\0"
+"mov\0"
+"kihoku.ehime.jp\0bir.ru\0cloudns.in\0"
+"onna.okinawa.jp\0"
+"bygland.no\0"
+"far.br\0kongsberg.no\0"
+"co.ao\0act.au\0id.lv\0"
+"aetna\0"
+"co.bb\0id.ly\0"
+"co.at\0"
+"nab\0"
+"utashinai.hokkaido.jp\0"
+"obama.nagasaki.jp\0elverum.no\0"
+"co.bi\0ato.br\0soni.nara.jp\0"
+"homelinux.com\0"
+"omitama.ibaraki.jp\0"
+"motobu.okinawa.jp\0cloudns.cc\0"
+"fujisawa.kanagawa.jp\0boots\0co.ca\0"
+"bauern.museum\0"
+"nba\0"
+"se.leg.br\0"
+"co.bw\0lib.id.us\0starhub\0support\0"
+"co.ci\0"
+"tj.cn\0seki.gifu.jp\0"
+"co.cl\0yuza.yamagata.jp\0"
+"co.cm\0"
+"scienceandhistory.museum\0"
+"co.cr\0alesund.no\0from-va.com\0"
+"abu.yamaguchi.jp\0"
+"presse.fr\0shiriuchi.hokkaido.jp\0"
+"storage\0"
+"county.museum\0"
+"no.it\0tula.su\0msd\0"
+"yamanashi.jp\0bod\xc3\xb8.no\0"
+"nagareyama.chiba.jp\0larvik.no\0co.cz\0"
+"konyvelo.hu\0co.dk\0"
+"from.hr\0laspezia.it\0"
+"chuvashia.ru\0"
+"m\xc3\xa5s\xc3\xb8y.no\0"
+"sakata.yamagata.jp\0"
+"kishiwada.osaka.jp\0synology.me\0"
+"suli.hu\0sakai.ibaraki.jp\0pisz.pl\0"
+"ally\0"
+"susono.shizuoka.jp\0"
+"komae.tokyo.jp\0"
+"takasaki.gunma.jp\0"
+"nature.museum\0"
+"mtn\0"
+"valle-daosta.it\0"
+"black\0"
+"mtr\0xerox\0"
+"nec\0"
+"tokyo.jp\0shimosuwa.nagano.jp\0hamaroy.no\0drud.us\0"
+"nichinan.miyazaki.jp\0"
+"championship.aero\0surnadal.no\0"
+"jor.br\0ichiba.tokushima.jp\0"
+"yandex\0"
+"tsukuba.ibaraki.jp\0"
+"sa.com\0"
+"honefoss.no\0"
+"biz.bb\0"
+"museum.tt\0"
+"lewismiller.museum\0biz.at\0"
+"skierv\xc3\xa1.no\0\xd9\x85\xd9\x88\xd9\x82\xd8\xb9\0"
+"co.gg\0net\0tula.ru\0"
+"fhsk.se\0new\0"
+"biz.az\0niimi.okayama.jp\0orland.no\0"
+"co.gl\0shimane.shimane.jp\0silk\0"
+"capetown\0"
+"iwakuni.yamaguchi.jp\0"
+"pordenone.it\0nfl\0"
+"gifu.gifu.jp\0"
+"sula.no\0"
+"pointto.us\0"
+"orskog.no\0porsanger.no\0"
+"co.gy\0hemnes.no\0"
+"ns.ca\0tonosho.kagawa.jp\0"
+"realty\0"
+"fujisato.akita.jp\0"
+"comunica\xc3\xa7\xc3\xb5""es.museum\0"
+"lib.ok.us\0"
+"ngo\0sina\0"
+"co.id\0"
+"co.hu\0hiraizumi.iwate.jp\0mitoyo.kagawa.jp\0firmdale\0"
+"toyota\0"
+"inabe.mie.jp\0karelia.ru\0"
+"cq.cn\0cc.wa.us\0"
+"biz.cy\0"
+"naoshima.kagawa.jp\0rzgw.gov.pl\0ck.ua\0"
+"co.il\0iijima.nagano.jp\0biz.dk\0"
+"co.im\0historicalsociety.museum\0"
+"co.in\0nhk\0"
+"numazu.shizuoka.jp\0\xd1\x81\xd1\x80\xd0\xb1\0observer\0"
+"szczecin.pl\0ricoh\0"
+"co.ir\0wodzislaw.pl\0"
+"iida.nagano.jp\0zaporizhzhe.ua\0"
+"co.it\0"
+"co.je\0horonobe.hokkaido.jp\0"
+"est-le-patron.com\0"
+"\xe5\xb2\xa9\xe6\x89\x8b.jp\0karelia.su\0"
+"atm.pl\0"
+"is-a-doctor.com\0"
+"kainan.tokushima.jp\0"
+"himi.toyama.jp\0nm.us\0barrell-of-knowledge.info\0"
+"utazu.kagawa.jp\0id.us\0\xe6\xb7\xa1\xe9\xa9\xac\xe9\x94\xa1\0"
+"tomioka.gunma.jp\0russia.museum\0kutno.pl\0"
+"tran\xc3\xb8y.no\0"
+"co.jp\0lillehammer.no\0"
"minamiboso.chiba.jp\0"
-"karmoy.no\0k12.nm.us\0"
-"mil.ac\0a.bg\0film\0"
-"liaison\0"
-"mil.ae\0"
-"bologna.it\0museum.mv\0from-co.net\0"
-"museum.mw\0"
-"kaneyama.fukushima.jp\0"
-"mil.al\0"
-"val-daosta.it\0"
-"okaya.nagano.jp\0pol.tr\0"
-"mil.ba\0museum.no\0business\0uno\0"
-"mil.ar\0macerata.it\0"
-"government.aero\0cc.me.us\0"
-"toba.mie.jp\0watarai.mie.jp\0meguro.tokyo.jp\0help\0"
-"shiksha\0"
-"mil.az\0abruzzo.it\0"
-"barclaycard\0"
-"uol\0"
-"mil.bo\0museum.om\0lib.ca.us\0"
-"naval.museum\0"
-"mil.br\0abashiri.hokkaido.jp\0"
-"dyndns-work.com\0"
-"fot.br\0"
-"s\xc3\xb8rfold.no\0"
-"mus.br\0"
-"mil.by\0website\0from-dc.com\0"
-"\xe6\x96\xb0\xe6\xbd\x9f.jp\0"
-"mil.cl\0"
-"scholarships\0"
-"mil.cn\0"
-"aero\0mil.co\0"
-"avocat.fr\0kawahara.tottori.jp\0"
-"heroy.nordland.no\0"
-"arakawa.tokyo.jp\0"
-"care\0"
-"austrheim.no\0her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0"
-"tur.ar\0"
-"humanities.museum\0"
-"showa.fukushima.jp\0monash\0"
-"tr.no\0"
-"yoita.niigata.jp\0"
-"mil.do\0"
-"nakatsugawa.gifu.jp\0"
-"mil.ec\0mt.us\0nd.us\0casa\0"
-"sirdal.no\0cars\0iki.fi\0"
-"mil.eg\0youth.museum\0k12.mn.us\0sa.com\0"
-"tur.br\0cash\0"
-"h.bg\0"
-"tsubame.niigata.jp\0"
-"davvenjarga.no\0"
-"shimizu.hokkaido.jp\0"
-"budapest\0"
-"sagae.yamagata.jp\0"
-"kirov.ru\0"
-"br.it\0cb.it\0mie.jp\0"
-"bd.se\0"
-"\xe6\x9d\xb1\xe4\xba\xac.jp\0"
-"game-host.org\0"
-"yachiyo.ibaraki.jp\0"
-"h\xc3\xa1pmir.no\0"
-"otake.hiroshima.jp\0"
-"blogspot.co.il\0"
-"marylhurst.museum\0"
-"mil.ge\0"
-"shikama.miyagi.jp\0"
-"mini\0"
-"mil.gh\0tobishima.aichi.jp\0podzone.net\0"
-"avoues.fr\0"
-"here\0lifeinsurance\0is-an-engineer.com\0"
-"komagane.nagano.jp\0fish\0endofinternet.net\0"
-"lajolla.museum\0"
-"dlugoleka.pl\0"
-"mol.it\0"
-"mil.gt\0"
-"museum\0castle.museum\0udm.ru\0"
-"katsuura.chiba.jp\0"
-"arts.museum\0"
-"kuromatsunai.hokkaido.jp\0minowa.nagano.jp\0"
-"hadano.kanagawa.jp\0lawyer\0"
-"oryol.ru\0guru\0"
-"mil.hn\0mifune.kumamoto.jp\0"
-"yaizu.shizuoka.jp\0"
-"lecce.it\0"
-"mil.id\0"
-"m\xc3\xa1latvuopmi.no\0\xe5\x9c\xa8\xe7\xba\xbf\0"
-"vet\0"
-"olecko.pl\0"
-"newjersey.museum\0"
-"celtic.museum\0delivery\0"
-"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0"
-"mil.in\0"
-"k12.ok.us\0supplies\0\xd0\xbe\xd1\x80\xd0\xb3\0"
-"mil.iq\0"
-"ouda.nara.jp\0chihayaakasaka.osaka.jp\0iwi.nz\0"
-"o.bg\0skjak.no\0"
-"travel.pl\0"
+"news.hu\0"
+"group.aero\0"
+"tochigi.tochigi.jp\0maritime.museum\0"
+"biz.et\0net.eu.org\0"
+"kibichuo.okayama.jp\0"
+"management\0dyndns-home.com\0"
+"ina.nagano.jp\0service.gov.uk\0"
+"shriram\0"
+"from-ar.com\0"
+"co.kr\0"
+"co.lc\0"
+"wien\0"
+"mukawa.hokkaido.jp\0bedzin.pl\0express\0"
+"hokuto.hokkaido.jp\0"
+"nakadomari.aomori.jp\0"
+"frontdoor\0"
+"amami.kagoshima.jp\0kisosaki.mie.jp\0"
+"birdart.museum\0seljord.no\0"
+"artgallery.museum\0"
+"co.ma\0"
+"co.ls\0dating\0reliance\0"
+"mckinsey\0"
+"obama.fukui.jp\0kaneyama.fukushima.jp\0co.me\0"
+"omihachiman.shiga.jp\0co.mg\0"
+"ushuaia.museum\0"
+"morimachi.shizuoka.jp\0namdalseid.no\0"
+"iwanuma.miyagi.jp\0limited\0"
+"hellas.museum\0cloudns.us\0"
+"co.na\0\xc3\xa5snes.no\0"
+"yasuda.kochi.jp\0"
+"miharu.fukushima.jp\0"
+"nu.ca\0biz.id\0co.mu\0preservation.museum\0"
+"amex\0"
+"minamiise.mie.jp\0co.mw\0nerdpol.ovh\0"
+"co.ni\0"
+"co.mz\0gniezno.pl\0archi\0"
+"lib.ny.us\0co.nl\0"
+"a.bg\0co.no\0"
+"res.aero\0aremark.no\0"
+"air-traffic-control.aero\0aizumisato.fukushima.jp\0"
+"exeter.museum\0priv.pl\0"
+"if.ua\0"
+"cc.la.us\0infiniti\0site\0"
+"blogspot.com\0"
+"yamato.fukushima.jp\0"
+"co.nz\0"
+"iiyama.nagano.jp\0"
+"botanicgarden.museum\0co.om\0"
+"minoh.osaka.jp\0gs.aa.no\0"
"for-our.info\0"
-"mobi.gp\0embetsu.hokkaido.jp\0"
-"rennesoy.no\0"
-"aomori.jp\0hiroshima.jp\0"
-"monzaedellabrianza.it\0"
-"mil.jo\0"
-"ci.it\0trento.it\0coop.tt\0"
-"cc.al.us\0academy\0"
-"seika.kyoto.jp\0hyuga.miyazaki.jp\0"
-"design.museum\0cc.ms.us\0cc.nc.us\0is-certified.com\0"
-"\xe5\xa8\xb1\xe4\xb9\x90\0"
-"mil.kg\0za.org\0"
-"norfolk.museum\0"
-"mil.km\0"
-"naturalhistory.museum\0lib.dc.us\0"
-"wales.museum\0"
-"mil.kr\0coop.mv\0"
-"coop.mw\0"
-"nagasaki.nagasaki.jp\0"
-"toyokawa.aichi.jp\0imari.saga.jp\0landrover\0"
-"fhv.se\0"
-"mil.kz\0"
-"roros.no\0java\0"
-"toki.gifu.jp\0ina.saitama.jp\0"
-"for-more.biz\0"
-"vip\0"
-"\xe4\xb8\xaa\xe4\xba\xba.hk\0careers\0"
-"idrett.no\0kustanai.ru\0"
-"mil.lv\0"
-"mil.mg\0"
-"chofu.tokyo.jp\0\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0"
-"writesthisblog.com\0"
-"oirase.aomori.jp\0olkusz.pl\0"
-"com.ac\0ballooning.aero\0"
-"com.af\0\xe7\xbd\x91\xe7\xbb\x9c\0"
-"airline.aero\0com.ag\0"
-"nakijin.okinawa.jp\0"
-"com.ai\0vossevangen.no\0"
-"shinichi.hiroshima.jp\0marumori.miyagi.jp\0"
-"com.al\0mil.mv\0"
-"mil.ng\0"
-"com.an\0"
-"\xe6\x94\xbf\xe5\xba\x9c.hk\0mil.my\0paris\0tips\0"
-"trentinos-tirol.it\0kashima.ibaraki.jp\0"
-"com.ba\0v.bg\0degree\0"
-"com.ar\0com.bb\0caserta.it\0tranibarlettaandria.it\0"
-"lebtimnetz.de\0"
-"joboji.iwate.jp\0takatsuki.osaka.jp\0gniezno.pl\0travel.tt\0"
-"com.au\0mil.no\0"
-"in-the-band.net\0"
-"com.aw\0"
-"com.bh\0"
-"com.bi\0"
-"com.az\0mito.ibaraki.jp\0"
-"coop.py\0"
-"kashima.kumamoto.jp\0pomorskie.pl\0"
-"com.bm\0"
-"shiki.saitama.jp\0sandvikcoromant\0"
-"com.bo\0cc.as.us\0"
-"minato.tokyo.jp\0mil.nz\0"
-"labour.museum\0coffee\0"
-"com.br\0pg.it\0shintomi.miyazaki.jp\0"
-"com.bs\0cc.nj.us\0"
-"com.bt\0bytom.pl\0"
-"ichiba.tokushima.jp\0"
-"qc.com\0"
-"kakamigahara.gifu.jp\0"
-"com.by\0com.ci\0"
-"com.bz\0ichihara.chiba.jp\0"
-"mil.pe\0"
-"uji.kyoto.jp\0"
-"com.cm\0nesna.no\0"
-"com.cn\0mil.ph\0"
-"com.co\0\xc4\x8d\xc3\xa1hcesuolo.no\0k12.id.us\0\xe8\x87\xba\xe7\x81\xa3\0melbourne\0"
-"kahoku.yamagata.jp\0"
-"mil.pl\0"
-"selje.no\0"
-"tatebayashi.gunma.jp\0shinjo.okayama.jp\0\xe9\x9b\x86\xe5\x9b\xa2\0"
-"com.cu\0com.de\0"
-"higashikurume.tokyo.jp\0"
-"com.cw\0mil.qa\0club.tw\0"
-"v\xc3\xa5ler.hedmark.no\0"
-"town.museum\0"
-"nagasu.kumamoto.jp\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0"
-"com.dm\0"
-"ninomiya.kanagawa.jp\0so.gov.pl\0\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0"
-"com.do\0coop.km\0mil.py\0"
-"elasticbeanstalk.com\0"
-"nachikatsuura.wakayama.jp\0"
-"com.ec\0"
-"cim.br\0ogata.akita.jp\0"
-"com.ee\0"
-"komoro.nagano.jp\0"
-"com.eg\0a.se\0"
-"priv.pl\0"
-"com.dz\0yuki.ibaraki.jp\0utazu.kagawa.jp\0geisei.kochi.jp\0"
-"city.hu\0dovre.no\0energy\0"
-"ny.us\0"
-"com.es\0"
-"com.et\0tsurugi.ishikawa.jp\0nakagusuku.okinawa.jp\0"
-"bajddar.no\0shouji\0"
-"blogspot.co.uk\0"
-"meeres.museum\0mil.ru\0"
-"chita.aichi.jp\0"
-"mil.rw\0naturbruksgymn.se\0"
-"mil.sh\0"
-"seto.aichi.jp\0vision\0"
-"agents.aero\0"
-"com.fr\0verbania.it\0"
-"com.ge\0"
-"shiriuchi.hokkaido.jp\0"
-"cc.az.us\0"
-"com.gh\0creditcard\0"
-"com.gi\0"
-"pn.it\0mil.st\0"
-"maritime.museum\0priv.no\0"
-"jus.br\0genova.it\0"
-"haugesund.no\0"
-"com.gn\0pesaro-urbino.it\0"
-"rubtsovsk.ru\0mil.sy\0"
-"com.gp\0kyowa.hokkaido.jp\0mil.tj\0"
-"com.gr\0"
-"mil.tm\0"
-"com.gt\0ishikawa.jp\0android\0"
-"kazan.ru\0mil.to\0"
-"k12.ia.us\0"
-"izumi.kagoshima.jp\0mil.tr\0"
-"com.gy\0is-a-libertarian.com\0"
-"noshiro.akita.jp\0"
-"com.hk\0"
-"mil.tw\0"
-"com.hn\0est.pr\0management\0se.net\0"
-"mil.tz\0"
-"com.hr\0"
-"grane.no\0"
-"experts-comptables.fr\0com.ht\0"
-"bauern.museum\0nkz.ru\0"
-"webcam\0"
-"iwanai.hokkaido.jp\0okinoshima.shimane.jp\0"
-"mil.vc\0"
-"hamura.tokyo.jp\0"
-"sorreisa.no\0mil.ve\0"
-"com.im\0brussels.museum\0juif.museum\0cc.ia.us\0sa-east-1.compute.amazonaws.com\0"
-"com.io\0h.se\0mil.uy\0"
-"com.iq\0priv.me\0cc.tx.us\0from-ca.com\0"
-"hitoyoshi.kumamoto.jp\0"
-"com.is\0"
-"salvadordali.museum\0"
-"ishikawa.okinawa.jp\0"
-"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0algard.no\0ris\xc3\xb8r.no\0"
-"k12.ca.us\0"
-"homeip.net\0"
-"k12.or.us\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0docs\0frogans\0"
-"com.jo\0groks-the.info\0"
-"askvoll.no\0aver\xc3\xb8y.no\0"
-"ogose.saitama.jp\0gliwice.pl\0"
-"sakhalin.ru\0\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0"
-"otsuchi.iwate.jp\0"
-"com.kg\0"
-"keisen.fukuoka.jp\0"
-"com.ki\0"
-"yonaguni.okinawa.jp\0"
-"from-ma.com\0"
-"wed\0"
-"com.km\0"
-"kv\xc3\xa6""fjord.no\0cherkassy.ua\0cc.ca.us\0"
-"chikuzen.fukuoka.jp\0com.kp\0"
-"com.la\0nyc.museum\0"
-"pu.it\0hirata.fukushima.jp\0suzaka.nagano.jp\0com.lb\0"
-"com.lc\0cc.oh.us\0"
-"dnsalias.net\0"
-"zhitomir.ua\0"
-"midori.gunma.jp\0kawai.nara.jp\0"
-"com.ky\0masfjorden.no\0"
-"wazuka.kyoto.jp\0gotemba.shizuoka.jp\0com.kz\0"
-"com.lk\0"
-"fujieda.shizuoka.jp\0opole.pl\0"
-"lib.fl.us\0homelinux.com\0"
-"sar.it\0bydgoszcz.pl\0"
-"bristol.museum\0parts\0photos\0"
-"ogawa.saitama.jp\0"
-"com.lr\0"
-"shibetsu.hokkaido.jp\0"
-"party\0"
-"liguria.it\0com.lv\0"
-"com.mg\0m\xc3\xa5lselv.no\0herokussl.com\0"
-"adv.br\0oga.akita.jp\0"
-"com.ly\0"
-"com.mk\0north.museum\0"
-"com.ml\0agrinet.tn\0prod\0"
-"gs.vf.no\0"
-"prof\0"
-"com.mo\0yolasite.com\0"
-"com.na\0"
-"com.ms\0"
-"com.mt\0"
-"com.mu\0ar.com\0"
-"com.mv\0com.nf\0"
-"com.mw\0com.ng\0o.se\0"
-"com.mx\0swidnica.pl\0"
-"com.my\0"
-"yamada.iwate.jp\0"
-"landes.museum\0stathelle.no\0doha\0"
-"togitsu.nagasaki.jp\0"
-"trani-andria-barletta.it\0sr.gov.pl\0"
-"asakawa.fukushima.jp\0joyo.kyoto.jp\0"
-"laz.it\0com.nr\0"
-"usculture.museum\0"
-"yamaguchi.jp\0"
-"tottori.jp\0ota.gunma.jp\0"
-"midsund.no\0"
-"sannohe.aomori.jp\0"
-"lancashire.museum\0com.om\0"
-"olsztyn.pl\0"
-"com.pa\0\xd9\x87\xd9\x85\xd8\xb1\xd8\xa7\xd9\x87\0"
-"eisenbahn.museum\0paroch.k12.ma.us\0s3-us-gov-west-1.amazonaws.com\0no.com\0from-vt.com\0"
-"dgca.aero\0com.pe\0vn.ua\0"
-"com.pf\0win\0blogspot.co.nz\0"
-"bykle.no\0"
-"oshima.yamaguchi.jp\0com.ph\0"
-"honjo.saitama.jp\0nishikawa.yamagata.jp\0"
-"lakas.hu\0com.pk\0"
-"*.nagoya.jp\0fuji.shizuoka.jp\0com.pl\0"
-"com.qa\0"
-"xj.cn\0tomari.hokkaido.jp\0com.pr\0"
-"j\xc3\xb8lster.no\0com.ps\0"
-"sumoto.hyogo.jp\0com.pt\0"
-"kuriyama.hokkaido.jp\0nasushiobara.tochigi.jp\0"
-"barcelona.museum\0aurskog-h\xc3\xb8land.no\0"
-"com.py\0marketing\0s3-website-sa-east-1.amazonaws.com\0"
-"kayabe.hokkaido.jp\0"
-"minamata.kumamoto.jp\0shima.mie.jp\0"
-"mulhouse.museum\0gs.svalbard.no\0"
-"red.sv\0"
-"ngo.lk\0com.re\0"
-"hachirogata.akita.jp\0kanoya.kagoshima.jp\0"
-"massacarrara.it\0anjo.aichi.jp\0chijiwa.nagasaki.jp\0"
-"from-hi.com\0"
-"is-into-games.com\0"
-"\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0"
-"ina.ibaraki.jp\0"
-"com.ro\0"
-"com.sa\0"
-"com.sb\0mobi.tt\0"
-"com.sc\0neat-url.com\0"
-"com.sd\0"
-"drobak.no\0lillehammer.no\0com.ru\0com.se\0"
+"ogimi.okinawa.jp\0"
+"usarts.museum\0nextdirect\0"
+"oi.kanagawa.jp\0"
+"university.museum\0museum.mv\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0"
+"pharmacien.fr\0museum.mw\0andoy.no\0pictures\0taifun-dns.de\0"
+"delta\0"
+"newhampshire.museum\0"
+"biz.ki\0"
+"rec.br\0co.pl\0"
+"puglia.it\0"
+"co.pn\0"
+"nanyo.yamagata.jp\0museum.no\0"
+"nikaho.akita.jp\0"
+"handa.aichi.jp\0"
+"priv.no\0co.pw\0"
+"rec.co\0herokussl.com\0"
+"mo\xc3\xa5reke.no\0now\0viajes\0go.leg.br\0"
+"okayama.okayama.jp\0museum.om\0"
+"wiki\0"
+"aguni.okinawa.jp\0"
+"computer.museum\0"
+"jp.eu.org\0"
+"k12.al.us\0club\0"
+"ozu.kumamoto.jp\0"
+"og.ao\0"
+"hayashima.okayama.jp\0"
+"karasjohka.no\0"
+"co.rs\0"
+"usdecorativearts.museum\0nra\0"
+"wajima.ishikawa.jp\0"
+"yahaba.iwate.jp\0biz.mv\0co.rw\0"
+"biz.mw\0"
+"zama.kanagawa.jp\0kr.com\0"
+"biz.ni\0"
+"malvik.no\0obi\0"
+"priv.me\0"
+"ujitawara.kyoto.jp\0malselv.no\0orsta.no\0doctor\0"
+"matsushige.tokushima.jp\0"
+"biz.nr\0"
+"co.st\0"
+"dance\0"
+"yoshida.saitama.jp\0"
+"co.th\0"
+"kamisunagawa.hokkaido.jp\0from-ri.com\0"
+"c.bg\0co.sz\0co.tj\0nrw\0"
+"wine\0"
+"co.tm\0"
+"cc.ks.us\0co.ua\0"
+"sicilia.it\0catering\0"
+"okegawa.saitama.jp\0"
+"elk.pl\0co.tt\0"
+"assisi.museum\0nagoya\0"
"kiho.mie.jp\0"
-"com.rw\0com.sg\0"
-"com.sh\0mobi.tz\0xbox\0"
-"k12.co.us\0"
-"lease\0"
-"com.sl\0"
-"wme\0"
-"com.sn\0"
-"l\xc3\xb8renskog.no\0com.so\0"
-"com.st\0"
-"cosenza.it\0com.sv\0"
-"masoy.no\0"
-"sasaguri.fukuoka.jp\0"
-"com.sy\0"
-"assabu.hokkaido.jp\0kanmaki.nara.jp\0com.tj\0"
-"zaporizhzhe.ua\0"
-"tamakawa.fukushima.jp\0faith\0"
-"com.tm\0"
-"ug.gov.pl\0com.tn\0"
-"com.to\0cc.co.us\0"
-"voronezh.ru\0com.ua\0"
-"rc.it\0com.tr\0"
-"hokksund.no\0\xc3\xa1k\xc5\x8boluokta.no\0"
-"com.tt\0"
-"mel\xc3\xb8y.no\0"
-"\xe6\x84\x9b\xe5\xaa\x9b.jp\0shichinohe.aomori.jp\0"
-"com.tw\0com.ug\0"
-"kisofukushima.nagano.jp\0"
-"kepno.pl\0"
-"artgallery.museum\0zgrad.ru\0"
-"nome.pt\0"
-"inc.hk\0"
-"control.aero\0"
-"gamagori.aichi.jp\0ngo.ph\0"
-"sa.au\0""2.bg\0com.vc\0"
-"biratori.hokkaido.jp\0matsushige.tokushima.jp\0"
-"topology.museum\0com.ve\0"
-"ichinomiya.aichi.jp\0"
-"semine.miyagi.jp\0saarland\0"
-"com.uy\0com.vi\0"
-"valle-aosta.it\0nakayama.yamagata.jp\0com.uz\0"
-"dn.ua\0"
-"ws.na\0"
-"com.vn\0"
-"act.edu.au\0durham.museum\0"
-"reggio-emilia.it\0bizen.okayama.jp\0yamada.toyama.jp\0"
-"mansions.museum\0podzone.org\0"
-"tomobe.ibaraki.jp\0minamiyamashiro.kyoto.jp\0matsubushi.saitama.jp\0"
-"glas.museum\0"
-"lc.it\0rikubetsu.hokkaido.jp\0engineer\0"
-"com.vu\0"
-"nishitosa.kochi.jp\0"
-"yaroslavl.ru\0"
-"fj.cn\0"
-"makinohara.shizuoka.jp\0"
-"saka.hiroshima.jp\0"
-"mobi.na\0vagsoy.no\0sevastopol.ua\0"
-"sa.cr\0"
-"lib.mi.us\0com.ws\0"
-"naoshima.kagawa.jp\0"
-"mobi.ng\0hobby-site.org\0"
-"tokai.ibaraki.jp\0"
-"catania.it\0shinagawa.tokyo.jp\0"
-"sannan.hyogo.jp\0"
-"rotorcraft.aero\0amot.no\0"
-"sanofi\0"
-"tas.gov.au\0"
-"fc.it\0kochi.kochi.jp\0"
-"kemerovo.ru\0"
-"leangaviika.no\0"
-"gyeongnam.kr\0consulado.st\0"
-"leirfjord.no\0"
-"hayashima.okayama.jp\0koka.shiga.jp\0"
-"autos\0is-by.us\0"
-"smile\0"
-"conf.au\0"
-"9.bg\0wtc\0"
-"wtf\0"
-"nsw.edu.au\0aurland.no\0chrome\0"
-"otaki.saitama.jp\0"
-"yosemite.museum\0parti.se\0"
-"kawanishi.nara.jp\0"
-"baltimore.museum\0yoga\0"
-"es.kr\0"
-"heroy.more-og-romsdal.no\0"
-"omotego.fukushima.jp\0"
-"british.museum\0"
-"ishinomaki.miyagi.jp\0"
-"game.tw\0cc.vt.us\0"
-"umi.fukuoka.jp\0ikusaka.nagano.jp\0"
-"sh.cn\0"
-"judaica.museum\0gjemnes.no\0itau\0"
-"slupsk.pl\0"
-"musashino.tokyo.jp\0"
-"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0"
-"malatvuopmi.no\0from-pa.com\0"
-"tomakomai.hokkaido.jp\0"
-"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0"
-"unbi.ba\0nid.io\0"
-"szex.hu\0"
-"wassamu.hokkaido.jp\0naka.ibaraki.jp\0"
-"kawasaki.miyagi.jp\0"
-"daiwa.hiroshima.jp\0"
-"is-very-sweet.org\0"
-"naganohara.gunma.jp\0"
-"solund.no\0"
-"gose.nara.jp\0"
-"juegos\0"
-"sa.it\0"
-"emergency.aero\0hawaii.museum\0"
-"\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0\0"
-"medio-campidano.it\0hiroo.hokkaido.jp\0"
-"svizzera.museum\0doomdns.org\0"
-"hioki.kagoshima.jp\0"
-"edu.ac\0"
-"yokosuka.kanagawa.jp\0"
-"ipiranga\0"
-"edu.af\0tono.iwate.jp\0takagi.nagano.jp\0"
-"edu.al\0nuoro.it\0\xe5\xb3\xb6\xe6\xa0\xb9.jp\0inagi.tokyo.jp\0"
-"sogndal.no\0room\0endofinternet.org\0"
-"edu.an\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0yuasa.wakayama.jp\0"
-"berlev\xc3\xa5g.no\0"
-"edu.ba\0"
-"edu.ar\0edu.bb\0taketomi.okinawa.jp\0"
-"crimea.ua\0"
-"edu.au\0"
-"video\0"
-"edu.bh\0"
-"edu.bi\0"
-"edu.az\0"
-"anthropology.museum\0is-a-anarchist.com\0"
-"kartuzy.pl\0xin\0"
-"edu.bm\0"
-"watari.miyagi.jp\0"
-"edu.bo\0flatanger.no\0roan.no\0"
-"edu.br\0"
-"edu.bs\0homedns.org\0"
-"edu.bt\0"
-"imabari.ehime.jp\0"
-"edu.ci\0\xd1\x80\xd1\x83\xd1\x81\0"
-"edu.bz\0kumiyama.kyoto.jp\0"
-"is-a-financialadvisor.com\0"
-"izhevsk.ru\0"
-"edu.cn\0"
-"edu.co\0sandnessj\xc3\xb8""en.no\0"
-"sardegna.it\0"
-"awaji.hyogo.jp\0"
-"soni.nara.jp\0"
-"edu.cu\0"
-"edu.cw\0clinton.museum\0\xc3\xa5mli.no\0ks.ua\0"
-"\xe7\xbb\x84\xe7\xbb\x87\xe6\x9c\xba\xe6\x9e\x84\0"
-"gol.no\0"
-"pisz.pl\0"
-"monmouth.museum\0"
-"edu.dm\0z-1.compute-1.amazonaws.com\0"
-"edu.do\0"
-"ah.cn\0"
-"edu.ec\0"
-"mo.cn\0izumiotsu.osaka.jp\0"
-"edu.ee\0"
-"dental\0"
-"edu.eg\0cartoonart.museum\0"
-"trentinoalto-adige.it\0"
-"ks.us\0"
-"edu.dz\0homelinux.net\0"
-"epilepsy.museum\0"
-"nakanoto.ishikawa.jp\0shiraoka.saitama.jp\0"
-"stateofdelaware.museum\0k12.ks.us\0"
-"izumozaki.niigata.jp\0"
-"kamisu.ibaraki.jp\0"
-"edu.es\0discovery.museum\0"
-"edu.et\0airtel\0"
-"palermo.it\0"
-"yura.wakayama.jp\0"
-"\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb8\0"
-"go.ci\0romsa.no\0"
-"omigawa.chiba.jp\0niihama.ehime.jp\0"
-"villas\0"
-"edu.ge\0"
-"pug.it\0matsuura.nagasaki.jp\0"
-"comunica\xc3\xa7\xc3\xb5""es.museum\0dyndns-ip.com\0"
-"edu.gh\0"
-"edu.gi\0br\xc3\xb8nn\xc3\xb8y.no\0rahkkeravju.no\0sn\xc3\xa5sa.no\0"
-"go.cr\0ulsan.kr\0"
-"agency\0"
-"edu.gn\0"
-"stavanger.no\0"
-"edu.gp\0"
-"edu.gr\0"
-"artcenter.museum\0"
-"edu.gt\0"
-"fitjar.no\0"
-"aosta.it\0"
-"yoshino.nara.jp\0publ.pt\0"
-"edu.hk\0"
-"edu.hn\0higashiizu.shizuoka.jp\0"
-"nf.ca\0investments\0"
-"trentinosued-tirol.it\0imakane.hokkaido.jp\0"
-"naie.hokkaido.jp\0"
-"illustration.museum\0"
-"edu.ht\0fujiyoshida.yamanashi.jp\0"
-"chiyoda.gunma.jp\0"
-"science-fiction.museum\0"
-"so.it\0"
-"kamikoani.akita.jp\0"
-"edu.in\0"
-"gv.ao\0"
-"kyotanabe.kyoto.jp\0nabari.mie.jp\0"
-"edu.iq\0"
-"edu.is\0"
-"gv.at\0edu.it\0"
+"tn.it\0co.ug\0"
+"nu.it\0"
+"ismaili\0"
+"cs.it\0co.tz\0"
+"co.uk\0"
+"decorativearts.museum\0naumburg.museum\0biz.pk\0"
+"botanicalgarden.museum\0biz.pl\0"
+"computer\0"
+"\xe6\x95\x99\xe8\x82\xb2.hk\0"
"stuff-4-sale.us\0"
-"yamagata.yamagata.jp\0"
-"pasadena.museum\0"
-"kawai.iwate.jp\0ryuoh.shiga.jp\0"
-"saltdal.no\0stokke.no\0"
-"tychy.pl\0makeup\0"
-"surnadal.no\0gos.pk\0"
-"edu.jo\0"
-"fermo.it\0fujimi.saitama.jp\0"
-"wakkanai.hokkaido.jp\0"
-"nara.nara.jp\0"
-"edu.kg\0\xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x9f\0"
-"edu.ki\0aa.no\0"
-"mo.it\0"
-"kvinnherad.no\0"
-"oamishirasato.chiba.jp\0sumita.iwate.jp\0"
-"edu.km\0from-nm.com\0"
-"edu.kn\0"
-"cc.wy.us\0"
-"fukui.fukui.jp\0koryo.nara.jp\0edu.kp\0"
-"edu.la\0"
-"edu.lb\0"
-"edu.lc\0"
-"kounosu.saitama.jp\0fuchu.toyama.jp\0"
-"dominic.ua\0lib.ar.us\0"
-"\xe7\xae\x87\xe4\xba\xba.hk\0edu.ky\0"
-"edu.kz\0"
-"edu.lk\0"
-"go.id\0mantova.it\0funahashi.toyama.jp\0"
+"biz.pr\0co.us\0"
+"co.ve\0caravan\0"
+"ntt\0"
+"co.vi\0"
+"toyo.kochi.jp\0co.uz\0"
+"izumozaki.niigata.jp\0sel.no\0"
+"uzs.gov.pl\0"
+"quebec.museum\0"
+"funagata.yamagata.jp\0"
+"yoka.hyogo.jp\0"
+"brand.se\0"
+"ryokami.saitama.jp\0dscloud.mobi\0"
+"uy.com\0"
+"trentino-aadige.it\0ide.kyoto.jp\0saarland\0"
+"off\0"
+"aland.fi\0"
+"rocks\0"
+"slask.pl\0"
+"nore-og-uvdal.no\0"
+"semboku.akita.jp\0"
+"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0"
+"\xd8\xa7\xd9\x84\xd8\xb9\xd9\x84\xd9\x8a\xd8\xa7\xd9\x86\0"
+"chijiwa.nagasaki.jp\0"
+"eastafrica.museum\0radom.pl\0"
+"motegi.tochigi.jp\0"
+"aya.miyazaki.jp\0ariake.saga.jp\0spy.museum\0"
+"shinagawa.tokyo.jp\0"
+"utsunomiya.tochigi.jp\0"
+"higashi.fukuoka.jp\0izumi.kagoshima.jp\0solund.no\0"
+"kagoshima.kagoshima.jp\0"
+"homelinux.net\0"
+"cloudns.pw\0"
+"olbia-tempio.it\0"
+"from-ms.com\0from-nc.com\0"
+"soccer\0"
+"biz.tj\0"
+"egersund.no\0yuzhno-sakhalinsk.ru\0"
+"science.museum\0"
+"bryne.no\0paroch.k12.ma.us\0"
+"s3.eu-central-1.amazonaws.com\0"
+"co.za\0"
+"biz.ua\0"
+"yoro.gifu.jp\0biz.tr\0"
+"spydeberg.no\0"
+"e.bg\0biz.tt\0"
+"nyc\0"
+"conf.au\0"
+"cleaning\0"
+"yuki.ibaraki.jp\0"
+"cc.fl.us\0co.zm\0"
+"wellbeingzone.eu\0"
+"tp.it\0"
+"og.it\0"
+"parliament.nz\0"
+"gmbh\0"
+"ando.nara.jp\0"
+"\xe6\x95\x8e\xe8\x82\xb2.hk\0"
+"biz.vn\0"
+"rec.nf\0"
+"jerusalem.museum\0selfip.biz\0"
+"azumino.nagano.jp\0grimstad.no\0"
+"kamikawa.hyogo.jp\0wiih.gov.pl\0"
+"olbiatempio.it\0"
+"sango.nara.jp\0"
+"store\0"
+"notaires.km\0"
+"inuyama.aichi.jp\0"
+"is-gone.com\0"
+"shakotan.hokkaido.jp\0"
+"\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93.jp\0"
+"jus.br\0fhapp.xyz\0"
+"rovigo.it\0yamagata.jp\0"
+"reg.dk\0"
+"k12.vt.us\0"
+"kamitonda.wakayama.jp\0turystyka.pl\0"
+"children.museum\0"
+"c.la\0"
+"kyiv.ua\0"
+"weatherchannel\0"
+"okinawa.okinawa.jp\0"
+"lotte\0"
+"in.na\0"
+"ivgu.no\0from-nj.com\0"
+"basketball\0"
+"is-a-hunter.com\0"
+"imageandsound.museum\0"
+"lotto\0one\0"
+"in.ni\0osen.no\0"
+"ong\0"
+"krodsherad.no\0"
+"lib.tx.us\0"
+"a.se\0"
+"arita.saga.jp\0biz.zm\0"
+"kamishihoro.hokkaido.jp\0onl\0lib.de.us\0"
+"g.bg\0omigawa.chiba.jp\0"
+"nagaoka.niigata.jp\0"
+"belgorod.ru\0"
+"cc.wi.us\0neustar\0"
+"fuoisku.no\0"
+"namegata.ibaraki.jp\0"
+"sakahogi.gifu.jp\0takahagi.ibaraki.jp\0rec.ro\0"
+"omura.nagasaki.jp\0"
+"tokigawa.saitama.jp\0"
+"tr.it\0hoteles\0"
+"hanamigawa.chiba.jp\0"
+"mortgage\0"
+"ooo\0"
+"eu.org\0"
+"tn.us\0"
+"il.us\0rodeo\0"
+"dc.us\0shouji\0"
+"tamatsukuri.ibaraki.jp\0"
+"blogspot.co.at\0"
+"caa.aero\0"
+"ski.no\0"
+"steiermark.museum\0"
+"civilization.museum\0"
+"blogspot.vn\0"
+"kitagata.gifu.jp\0utsira.no\0"
+"ono.fukui.jp\0imdb\0"
+"lefrak\0*.githubcloudusercontent.com\0"
+"fukuchiyama.kyoto.jp\0cloudns.info\0"
+"symantec\0"
+"giving\0"
+"firestone\0quest\0"
+"tjmaxx\0"
+"shintomi.miyazaki.jp\0"
+"org\0"
+"grozny.su\0pay\0"
+"floro.no\0"
+"rec.ve\0"
+"it.ao\0"
+"tv.bb\0"
+"biev\xc3\xa1t.no\0in.rs\0"
+"takahama.fukui.jp\0"
+"ebiz.tw\0chirurgiens-dentistes-en-france.fr\0"
+"higashikawa.hokkaido.jp\0"
+"wallonie.museum\0dovre.no\0"
+"lipetsk.ru\0"
+"tv.bo\0\xd1\x83\xd0\xba\xd1\x80\0"
+"broker.aero\0skin\0"
+"tv.br\0"
+"fredrikstad.no\0hobby-site.org\0"
+"sano.tochigi.jp\0"
+"arezzo.it\0q-a.eu.org\0"
+"metlife\0"
+"gokase.miyazaki.jp\0tr.no\0aurland.no\0c.se\0in.th\0"
+"lib.dc.us\0"
+"i.bg\0"
+"is-a-cubicle-slave.com\0blogspot.re\0"
+"akune.kagoshima.jp\0"
+"gucci\0from-wv.com\0js.org\0"
+"tt.im\0in.ua\0"
+"cc.ky.us\0"
+"matsudo.chiba.jp\0kiwa.mie.jp\0e-burg.ru\0"
+"viking\0"
+"ott\0"
+"ud.it\0blogspot.ro\0"
+"karate.museum\0royrvik.no\0"
+"prochowice.pl\0warmia.pl\0smart\0"
+"nanbu.tottori.jp\0"
+"hino.tottori.jp\0americana.museum\0grozny.ru\0blogspot.rs\0"
+"erotica.hu\0trentinoalto-adige.it\0"
+"blogspot.ru\0blogspot.se\0"
+"steinkjer.no\0blogspot.sg\0"
+"blogspot.si\0"
+"vgs.no\0in.us\0"
+"wzmiuw.gov.pl\0de.us\0blogspot.sk\0"
"chippubetsu.hokkaido.jp\0"
-"hamburg.museum\0\xc3\xa5snes.no\0"
-"tsuga.tochigi.jp\0"
-"sciences.museum\0"
-"edu.lr\0"
-"luster.no\0vinnica.ua\0"
-"edu.me\0"
-"edu.lv\0"
-"edu.mg\0"
-"edu.ly\0cultural.museum\0ftpaccess.cc\0"
-"kagamino.okayama.jp\0"
-"edu.mk\0rygge.no\0"
-"go.it\0hirono.fukushima.jp\0daito.osaka.jp\0edu.ml\0"
-"salangen.no\0tromsa.no\0reviews\0"
-"edu.mn\0"
-"edu.mo\0"
-"sv.it\0"
-"cymru.museum\0e-burg.ru\0cc.ri.us\0"
-"tsumagoi.gunma.jp\0gorlice.pl\0"
-"edu.ms\0"
-"nm.cn\0\xe5\x8d\x83\xe8\x91\x89.jp\0nonoichi.ishikawa.jp\0edu.mt\0"
-"ayagawa.kagawa.jp\0edu.mv\0"
-"edu.mw\0edu.ng\0b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0poltava.ua\0"
-"go.jp\0edu.mx\0"
-"edu.my\0ma.us\0k12.al.us\0"
-"kyotamba.kyoto.jp\0"
-"k12.mi.us\0"
-"onna.okinawa.jp\0"
-"stryn.no\0"
-"pescara.it\0edu.nr\0"
-"county.museum\0"
-"\xe5\x95\x86\xe6\xa0\x87\0"
-"tm.fr\0komae.tokyo.jp\0"
-"msk.ru\0"
-"bialowieza.pl\0"
-"haram.no\0\xd1\x81\xd1\x80\xd0\xb1\0sells-for-u.com\0"
-"go.kr\0"
-"trapani.it\0takahama.fukui.jp\0nayoro.hokkaido.jp\0ibaraki.ibaraki.jp\0"
-"forde.no\0edu.om\0"
-"ao.it\0"
-"ah.no\0edu.pa\0"
-"trentino-suedtirol.it\0"
-"mesaverde.museum\0cc.ky.us\0"
-"taishin.fukushima.jp\0erimo.hokkaido.jp\0"
-"edu.pe\0"
-"como.it\0edu.pf\0"
-"edu.ph\0"
-"yamada.fukuoka.jp\0"
-"edu.pk\0ga.us\0"
-"edu.pl\0"
-"edu.pn\0"
-"production.aero\0sk\xc3\xa1nit.no\0"
-"lucania.it\0"
-"sandnes.no\0edu.qa\0"
-"edu.pr\0garden\0"
-"nt.au\0edu.ps\0"
-"mar.it\0edu.pt\0"
-"fukagawa.hokkaido.jp\0toyosato.shiga.jp\0"
-"tm.hu\0edu.py\0"
-"friulivenezia-giulia.it\0hiphop\0"
-"coastaldefence.museum\0"
-"chiyoda.tokyo.jp\0mragowo.pl\0"
-"nt.ca\0"
-"valle-daosta.it\0"
-"hinode.tokyo.jp\0"
-"lacaixa\0"
-"watches\0"
-"xxx\0"
-"field.museum\0missoula.museum\0d\xc3\xb8nna.no\0science\0hu.com\0"
-"tadaoka.osaka.jp\0"
-"hayakawa.yamanashi.jp\0"
-"dnsalias.org\0"
-"edu.sa\0"
-"edu.sb\0"
-"edu.rs\0edu.sc\0lib.id.us\0"
-"ogori.fukuoka.jp\0notogawa.shiga.jp\0edu.sd\0"
-"repbody.aero\0id.au\0edu.ru\0k12.nj.us\0"
-"loyalist.museum\0edu.rw\0edu.sg\0"
-"xyz\0"
-"moka.tochigi.jp\0dynathome.net\0"
-"kimino.wakayama.jp\0edu.sl\0nissan\0"
-"veterinaire.km\0"
-"kokubunji.tokyo.jp\0edu.sn\0"
-"os.hordaland.no\0"
-"tm.km\0artsandcrafts.museum\0is-a-musician.com\0"
-"*.kitakyushu.jp\0iitate.fukushima.jp\0"
-"edu.st\0"
-"av.it\0urayasu.chiba.jp\0edu.sv\0"
-"florida.museum\0ninja\0"
-"edu.sy\0"
-"nemuro.hokkaido.jp\0edu.tj\0"
+"\xe7\xbd\x91\xe7\xb5\xa1.hk\0pet\0blogspot.sn\0"
+"\xe9\xb3\xa5\xe5\x8f\x96.jp\0drobak.no\0"
+"ovh\0"
+"za.com\0blogspot.td\0"
+"ichinomiya.chiba.jp\0ikata.ehime.jp\0yuasa.wakayama.jp\0"
+"degree\0"
+"takasu.hokkaido.jp\0herokuapp.com\0"
+"miners.museum\0"
+"fukuoka.jp\0moriguchi.osaka.jp\0lodingen.no\0"
+"selje.no\0"
+"trentinoaadige.it\0minowa.nagano.jp\0rnrt.tn\0"
+"mat.br\0verran.no\0"
+"is.eu.org\0"
+"bar.pro\0"
+"cards\0"
+"friulivgiulia.it\0cdn77-ssl.net\0"
+"kawakami.nagano.jp\0blogspot.co.id\0"
+"epilepsy.museum\0blogspot.tw\0blogspot.ug\0"
+"schule\0\xe7\x82\xb9\xe7\x9c\x8b\0"
+"aizuwakamatsu.fukushima.jp\0"
+"isla.pr\0capitalone\0selfip.com\0"
+"hornindal.no\0tychy.pl\0"
+"blogspot.co.il\0"
+"yachiyo.ibaraki.jp\0phd\0"
+"nara.nara.jp\0redstone\0"
+"iglesias-carbonia.it\0blogspot.mr\0"
+"osakikamijima.hiroshima.jp\0kimino.wakayama.jp\0"
+"kids.us\0no.com\0"
+"mar.it\0"
+"mochizuki.nagano.jp\0"
+"blogspot.mx\0"
+"blogspot.my\0"
+"terni.it\0tra.kp\0"
+"casino\0blogspot.nl\0"
+"kmpsp.gov.pl\0"
+"pid\0"
+"blogspot.no\0"
+"tatsuno.hyogo.jp\0"
+"it.eu.org\0"
+"sakura.tochigi.jp\0staples\0from-oh.com\0"
+"pin\0"
+"cymru\0dynalias.net\0"
+"togane.chiba.jp\0e.se\0"
+"klepp.no\0"
+"k.bg\0"
+"inazawa.aichi.jp\0"
+"moss.no\0"
+"khabarovsk.ru\0"
+"tv.im\0"
+"blogspot.pe\0"
+"forde.no\0so.gov.pl\0website\0"
+"space-to-rent.com\0"
+"indianmarket.museum\0\xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\0"
+"tv.it\0"
+"tobe.ehime.jp\0"
+"aisai.aichi.jp\0hinode.tokyo.jp\0v\xc3\xa1rgg\xc3\xa1t.no\0us-west-1.compute.amazonaws.com\0"
+"miyagi.jp\0delaware.museum\0"
+"aerodrome.aero\0immo\0"
+"ollo\0blogspot.qa\0"
+"ny.us\0blogspot.pt\0"
+"hatsukaichi.hiroshima.jp\0kvinesdal.no\0"
+"kalmykia.su\0"
+"nishigo.fukushima.jp\0"
+"otsu.shiga.jp\0"
+"r\xc3\xb8mskog.no\0"
+"gyokuto.kumamoto.jp\0"
+"lifeinsurance\0"
+"games.hu\0kotohira.kagawa.jp\0"
+"brumunddal.no\0"
+"blogspot.is\0"
+"blogspot.it\0"
+"civilisation.museum\0"
+"saijo.ehime.jp\0"
+"nishinomiya.hyogo.jp\0"
+"kuzumaki.iwate.jp\0stor-elvdal.no\0"
+"blogspot.jp\0"
+"in.eu.org\0"
+"solutions\0"
"s\xc3\xb8rum.no\0"
-"yawatahama.ehime.jp\0oyamazaki.kyoto.jp\0moroyama.saitama.jp\0"
-"edu.tm\0"
-"shinyoshitomi.fukuoka.jp\0\xd1\x80\xd1\x84\0"
-"fuel.aero\0hellas.museum\0go.pw\0edu.to\0"
-"edu.ua\0"
-"edu.tr\0"
-"zlg.br\0edu.tt\0"
-"tm.mc\0edu.tw\0fitness\0s3-us-west-2.amazonaws.com\0"
-"iwaizumi.iwate.jp\0kitakata.miyazaki.jp\0"
-"hembygdsforbund.museum\0"
-"kumano.hiroshima.jp\0"
-"tm.mg\0sec.ps\0"
-"cremona.it\0"
-"railway.museum\0"
-"r\xc3\xa5""de.no\0is-a-lawyer.com\0"
-"nishiizu.shizuoka.jp\0wajiki.tokushima.jp\0"
-"edu.vc\0"
-"shimonoseki.yamaguchi.jp\0"
-"edu.ve\0"
-"tt.im\0edu.uy\0bingo\0"
-"ibestad.no\0"
-"komatsu.ishikawa.jp\0meiwa.mie.jp\0\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0"
-"cadaques.museum\0"
-"edu.vn\0"
-"cyber.museum\0"
-"ud.it\0aki.kochi.jp\0"
-"veterinaire.fr\0"
-"tm.no\0royrvik.no\0boats\0youtube\0"
-"toshima.tokyo.jp\0"
-"edu.vu\0"
-"hazu.aichi.jp\0yoka.hyogo.jp\0"
-"mo.us\0k12.az.us\0boldlygoingnowhere.org\0"
-"shimamaki.hokkaido.jp\0"
-"mizuho.tokyo.jp\0conf.lv\0go.th\0"
-"c.bg\0"
-"go.tj\0"
-"indiana.museum\0edu.ws\0"
-"kamifurano.hokkaido.jp\0ryugasaki.ibaraki.jp\0"
-"giske.no\0safe\0"
-"miyagi.jp\0"
-"matta-varjjat.no\0"
-"caa.aero\0firmdale\0"
-"ojiya.niigata.jp\0"
-"go.ug\0"
-"tm.pl\0"
-"go.tz\0"
-"sakegawa.yamagata.jp\0"
-"alvdal.no\0"
-"os.hedmark.no\0"
-"hizen.saga.jp\0"
-"pb.ao\0chicago.museum\0fuossko.no\0"
-"srv.br\0azurewebsites.net\0"
-"or.at\0"
-"br\xc3\xb8nn\xc3\xb8ysund.no\0"
-"or.bi\0"
-"higashimatsuyama.saitama.jp\0"
-"l\xc3\xa1hppi.no\0"
-"\xe5\x85\xac\xe5\x8f\xb8.cn\0koga.fukuoka.jp\0cern\0"
-"notodden.no\0"
-"katano.osaka.jp\0"
-"dinosaur.museum\0windmill.museum\0"
-"yonezawa.yamagata.jp\0"
-"id.ir\0kasahara.gifu.jp\0"
-"tm.ro\0"
-"sex.hu\0college\0"
-"or.ci\0starnberg.museum\0hm.no\0bloomberg\0"
-"cal.it\0rns.tn\0"
-"\xe5\x85\xac\xe5\x8f\xb8.hk\0tm.se\0"
-"web.co\0"
-"land\0"
-"saga.saga.jp\0"
-"or.cr\0"
-"navuotna.no\0"
-"onojo.fukuoka.jp\0"
-"global\0"
-"lib.va.us\0"
-"j.bg\0"
-"web.do\0"
-"kagoshima.jp\0misato.akita.jp\0"
-"webhop.info\0"
-"nagahama.shiga.jp\0"
-"bt.it\0taku.saga.jp\0"
-"kraanghke.no\0"
-"sakurai.nara.jp\0"
-"cc.mn.us\0"
-"culture.museum\0guernsey.museum\0nt.no\0"
-"tachiarai.fukuoka.jp\0"
-"plc.co.im\0historisch.museum\0"
-"aisho.shiga.jp\0"
-"coldwar.museum\0"
-"motobu.okinawa.jp\0ibaraki.osaka.jp\0"
-"news.hu\0sale\0"
-"id.lv\0"
-"anthro.museum\0"
-"sondrio.it\0"
-"id.ly\0lib.pa.us\0"
-"finearts.museum\0"
-"matsuno.ehime.jp\0yun\0"
-"t\xc3\xb8nsberg.no\0"
-"sciencecenter.museum\0baidar.no\0muosat.no\0"
-"lind\xc3\xa5s.no\0v\xc3\xa1rgg\xc3\xa1t.no\0kiev.ua\0"
-"scrapping.cc\0"
-"av.tr\0"
-"\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0"
-"kitagata.gifu.jp\0ota.tokyo.jp\0"
-"j\xc3\xb8rpeland.no\0"
-"krakow.pl\0"
-"zt.ua\0"
-"kirovograd.ua\0"
-"vb.it\0\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0kicks-ass.net\0"
-"telefonica\0"
-"fundacio.museum\0"
-"tomika.gifu.jp\0"
-"bodo.no\0"
-"cuneo.it\0!city.nagoya.jp\0"
-"neues.museum\0bryansk.ru\0nm.us\0"
-"mielno.pl\0"
-"elburg.museum\0"
-"american.museum\0"
-"skanit.no\0"
-"web.id\0sakawa.kochi.jp\0"
-"q.bg\0"
-"or.id\0"
-"lavagis.no\0tydal.no\0"
-"hachijo.tokyo.jp\0"
-"gs.nl.no\0vestvagoy.no\0yekaterinburg.ru\0"
-"uchihara.ibaraki.jp\0"
-"trentino-aadige.it\0pesarourbino.it\0masaki.ehime.jp\0sukagawa.fukushima.jp\0"
-"c.la\0"
-"nt.ro\0homelinux.org\0"
-"pordenone.it\0chuo.fukuoka.jp\0okegawa.saitama.jp\0"
-"\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0"
-"voyage\0\xe5\xa4\xa7\xe6\x8b\xbf\0"
-"or.it\0isumi.chiba.jp\0takehara.hiroshima.jp\0"
-"cc.ne.us\0"
-"soja.okayama.jp\0naruto.tokushima.jp\0"
-"\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0"
-"exchange\0"
-"kaho.fukuoka.jp\0tosa.kochi.jp\0"
-"asago.hyogo.jp\0kawatana.nagasaki.jp\0sex.pl\0kred\0"
-"or.jp\0zip\0"
-"sapo\0"
-"honjyo.akita.jp\0"
-"skaun.no\0knowsitall.info\0"
-"stuttgart.museum\0\xc3\xb8rsta.no\0k12.tn.us\0"
-"tcm.museum\0"
-"kani.gifu.jp\0"
-"eu.com\0"
-"pp.az\0milan.it\0hikari.yamaguchi.jp\0buzz\0"
-"gs.hl.no\0enterprises\0"
-"miho.ibaraki.jp\0"
-"codespot.com\0"
-"milano.it\0"
-"perso.ht\0"
-"kunstsammlung.museum\0od.ua\0"
-"oyama.tochigi.jp\0or.kr\0"
-"estate.museum\0"
-"cc.gu.us\0"
-"web.lk\0"
-"balsan.it\0vi.it\0shikaoi.hokkaido.jp\0"
-"quebec.museum\0"
-"sarl\0"
-"moriguchi.osaka.jp\0"
-"leikanger.no\0safety\0\xe6\x96\xb0\xe9\x97\xbb\0"
-"hangout\0"
-"yamashina.kyoto.jp\0yoshida.saitama.jp\0"
-"research.aero\0"
-"x.bg\0from-ct.com\0"
-"kimobetsu.hokkaido.jp\0"
-"artdeco.museum\0levanger.no\0"
-"b\xc3\xb8mlo.no\0skanland.no\0"
-"pro.az\0"
-"or.na\0"
-"kanie.aichi.jp\0"
-"web.nf\0"
-"or.mu\0donetsk.ua\0"
-"russia.museum\0"
-"pro.br\0cr.it\0mizumaki.fukuoka.jp\0"
-"*.nom.br\0hara.nagano.jp\0inami.wakayama.jp\0"
-"uscountryestate.museum\0"
-"pi.it\0ujiie.tochigi.jp\0"
-"is-a-guru.com\0"
-"creation.museum\0"
-"higashishirakawa.gifu.jp\0\xe5\x85\xab\xe5\x8d\xa6\0"
-"sciencesnaturelles.museum\0"
-"bonn.museum\0sondre-land.no\0s\xc3\xb8r-aurdal.no\0"
-"ham-radio-op.net\0"
-"id.us\0"
-"oki.fukuoka.jp\0"
-"b\xc3\xa1hccavuotna.no\0"
-"katowice.pl\0"
-"\xe5\xa4\xa7\xe5\x88\x86.jp\0takayama.nagano.jp\0nishinoshima.shimane.jp\0nyc.mn\0"
-"folkebibl.no\0vladivostok.ru\0"
-"halden.no\0"
-"ninohe.iwate.jp\0"
-"\xe6\x95\x99\xe8\x82\xb2.hk\0"
-"ebiz.tw\0"
-"gujo.gifu.jp\0rebun.hokkaido.jp\0dentist\0"
-"lindesnes.no\0"
-"s\xc3\xb8ndre-land.no\0"
-"tamamura.gunma.jp\0akashi.hyogo.jp\0toda.saitama.jp\0"
-"pro.ec\0web.pk\0blackfriday\0"
-"zara\0"
-"for-the.biz\0"
-"vadso.no\0"
-"chocolate.museum\0c.se\0"
-"chikuhoku.nagano.jp\0"
-"or.pw\0"
-"e164.arpa\0tushu\0"
-"komono.mie.jp\0"
-"ok.us\0is-a-photographer.com\0"
-"nuernberg.museum\0is-slick.com\0"
-"\xe4\xba\xac\xe9\x83\xbd.jp\0tonosho.kagawa.jp\0"
-"k12.ec\0"
-"mikasa.hokkaido.jp\0"
-"tom.ru\0viva\0"
-"a\xc3\xa9roport.ci\0"
-"umb.it\0iwafune.tochigi.jp\0mazowsze.pl\0\xd1\x83\xd0\xba\xd1\x80\0"
-"bel.tr\0"
-"rakkestad.no\0"
-"bievat.no\0"
-"saxo\0"
-"fuefuki.yamanashi.jp\0"
-"research.museum\0"
-"ragusa.it\0nadex\0"
-"jar.ru\0"
-"busan.kr\0"
-"rovno.ua\0"
-"pilot.aero\0"
-"dell-ogliastra.it\0"
-"space.museum\0"
-"asakuchi.okayama.jp\0"
-"kafjord.no\0"
-"sakado.saitama.jp\0"
-"k12.ut.us\0"
-"matsushima.miyagi.jp\0"
-"or.th\0web.tj\0"
-"communication.museum\0naturalsciences.museum\0"
-"pro.ht\0rawa-maz.pl\0"
-"ashiya.hyogo.jp\0"
-"udmurtia.ru\0ck.ua\0"
-"eastcoast.museum\0gs.va.no\0motorcycles\0praxi\0"
-"web.tr\0"
+"sekikawa.niigata.jp\0comcast\0"
+"fnd.br\0kitaakita.akita.jp\0nakanoto.ishikawa.jp\0"
+"hof.no\0withyoutube.com\0"
+"store.nf\0pnc\0"
"cechire.com\0"
-"choshi.chiba.jp\0"
-"avellino.it\0kuchinotsu.nagasaki.jp\0"
-"or.ug\0"
-"or.tz\0"
-"ap-southeast-2.compute.amazonaws.com\0"
-"kusatsu.gunma.jp\0okawa.kochi.jp\0yamaga.kumamoto.jp\0hikone.shiga.jp\0"
-"selfip.info\0"
-"urausu.hokkaido.jp\0taki.mie.jp\0"
-"essex.museum\0"
-"group\0"
-"or.us\0web.ve\0"
-"tama.tokyo.jp\0"
-"l\xc3\xb8""dingen.no\0today\0likescandy.com\0"
-"iizuka.fukuoka.jp\0"
-"\xe4\xb8\xad\xe4\xbf\xa1\0"
-"takamori.kumamoto.jp\0"
-"kibichuo.okayama.jp\0"
-"kristiansund.no\0"
-"dallas.museum\0diamonds\0"
-"daegu.kr\0"
-"svalbard.no\0"
-"rocher\0"
-"chonan.chiba.jp\0"
-"evenassi.no\0"
-"cinema.museum\0bardu.no\0"
-"midori.chiba.jp\0starostwo.gov.pl\0"
+"mikawa.yamagata.jp\0blogspot.kr\0"
+"kalmykia.ru\0"
+"shikatsu.aichi.jp\0tv.na\0"
+"niepce.museum\0"
+"blogspot.li\0"
+"hirokawa.fukuoka.jp\0"
"balestrand.no\0"
-"homeunix.net\0"
-"forsand.no\0"
-"\xe3\x82\xb3\xe3\x83\xa0\0"
-"steiermark.museum\0"
-"kamiizumi.saitama.jp\0fukumitsu.toyama.jp\0"
-"from-ar.com\0"
-"gosen.niigata.jp\0"
-"s\xc3\xb8gne.no\0chernivtsi.ua\0vi.us\0"
-"takahama.aichi.jp\0kamiichi.toyama.jp\0"
-"memorial.museum\0k12.va.us\0"
-"hitachiota.ibaraki.jp\0taiwa.miyagi.jp\0"
-"odo.br\0minamiuonuma.niigata.jp\0\xe5\x85\xac\xe5\x8f\xb8\0"
-"shimada.shizuoka.jp\0"
-"mobi\0oyer.no\0cr.ua\0"
-"\xe6\xb2\x96\xe7\xb8\x84.jp\0"
-"pro.na\0b\xc3\xa1hcavuotna.no\0\xd7\xa7\xd7\x95\xd7\x9d\0"
-"ogano.saitama.jp\0"
-"\xe6\xb8\xb8\xe6\x88\x8f\0"
-"pro.mv\0"
-"environmentalconservation.museum\0"
-"takatsuki.shiga.jp\0"
-"www.ro\0"
-"furukawa.miyagi.jp\0"
-"balat.no\0cc.va.us\0"
-"h\xc3\xb8ylandet.no\0schule\0"
-"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0"
-"aostavalley.it\0ferrara.it\0kashiwazaki.niigata.jp\0"
-"consulting.aero\0n\xc3\xa5\xc3\xa5mesjevuemie.no\0"
-"k12.ct.us\0"
-"forli-cesena.it\0warszawa.pl\0"
-"media.aero\0moda\0"
-"kuki.saitama.jp\0"
-"b\xc3\xa1jddar.no\0vikna.no\0k12.pa.us\0"
-"pro.om\0boutique\0"
-"katsuragi.wakayama.jp\0"
-"esashi.hokkaido.jp\0urakawa.hokkaido.jp\0hamatama.saga.jp\0"
-"kg.kr\0"
-"appspot.com\0"
+"realestate\0"
+"faith\0"
+"hk.com\0"
+"saves-the-whales.com\0"
+"kawaguchi.saitama.jp\0blogspot.lt\0blogspot.md\0"
+"g.se\0blogspot.lu\0"
+"lib.co.us\0"
+"m.bg\0"
+"is-a-lawyer.com\0"
+"blogspot.mk\0"
+"tamba.hyogo.jp\0"
+"bosch\0"
+"moka.tochigi.jp\0cc.ak.us\0autos\0br.com\0from-ut.com\0"
+"i.ng\0"
+"ushistory.museum\0"
+"nanmoku.gunma.jp\0pruszkow.pl\0"
+"kokonoe.oita.jp\0"
+"woodside\0"
+"jondal.no\0blogspot.fi\0"
+"lahppi.no\0"
+"naturalsciences.museum\0"
+"ok.us\0"
+"utazas.hu\0"
+"hachijo.tokyo.jp\0googlecode.com\0"
+"trading\0blogspot.fr\0"
+"tsubetsu.hokkaido.jp\0creation.museum\0risor.no\0nyc.mn\0"
+"!city.nagoya.jp\0"
+"field.museum\0"
+"servequake.com\0"
+"sex.hu\0fujitsu\0"
+"is-a-painter.com\0"
+"kherson.ua\0"
+"minato.osaka.jp\0abbvie\0"
+"otsuki.yamanashi.jp\0circle\0blogspot.gr\0"
+"i.ph\0"
+"muenchen.museum\0"
+"pro\0"
+"us-east-1.amazonaws.com\0blogspot.hk\0"
+"oshu.iwate.jp\0"
+"pru\0richardli\0"
+"k12.ri.us\0"
+"blogspot.hr\0"
+"blogspot.hu\0blogspot.ie\0"
+"institute\0"
+"clothing\0"
+"berkeley.museum\0cipriani\0"
+"tv.sd\0"
+"rodoy.no\0"
+"homelinux.org\0blogspot.co.uk\0"
+"ssl.origin.cdn77-secure.org\0blogspot.in\0"
+"info\0conf.lv\0"
+"blogspot.ba\0"
+"aibetsu.hokkaido.jp\0blogspot.be\0"
+"adv.br\0sr.gov.pl\0\xe5\xb7\xa5\xe8\xa1\x8c\0"
+"blogspot.bg\0"
+"blogspot.bj\0"
+"pub\0"
+"fujimi.saitama.jp\0from-tn.com\0"
+"friulivenezia-giulia.it\0"
+"i.se\0"
+"blogspot.ca\0"
+"health.museum\0poker\0"
+"o.bg\0steam.museum\0"
+"fuossko.no\0"
+"berlevag.no\0"
+"giske.no\0blogspot.cf\0"
+"tomigusuku.okinawa.jp\0ashikaga.tochigi.jp\0tv.tr\0for-the.biz\0blogspot.ch\0"
+"stavanger.no\0"
+"store.ve\0blogspot.cl\0"
+"abeno.osaka.jp\0town.museum\0"
"mashiko.tochigi.jp\0"
-"kuban.ru\0"
-"kawanehon.shizuoka.jp\0"
-"africa\0"
-"suldal.no\0pp.ru\0pp.se\0cc.pa.us\0"
-"modena.it\0"
-"krym.ua\0"
-"pro.pr\0"
-"goshiki.hyogo.jp\0"
-"sasebo.nagasaki.jp\0"
-"marine.ru\0"
-"nanporo.hokkaido.jp\0"
-"sa.gov.au\0frogn.no\0is-a-cpa.com\0"
-"vaksdal.no\0"
-"tomiya.miyagi.jp\0"
-"orskog.no\0"
-"\xe5\x9f\xbc\xe7\x8e\x89.jp\0"
-"missile.museum\0theater.museum\0"
-"nanto.toyama.jp\0jeonbuk.kr\0"
-"unj\xc3\xa1rga.no\0"
-"crotone.it\0"
-"2000.hu\0\xe7\x8f\xa0\xe5\xae\x9d\0"
-"pp.ua\0"
-"broker\0"
-"kui.hiroshima.jp\0"
-"aerobatic.aero\0x.se\0lugansk.ua\0"
-"perso.sn\0"
-"palace.museum\0hob\xc3\xb8l.no\0plo.ps\0"
-"agriculture.museum\0"
-"nozawaonsen.nagano.jp\0mitsuke.niigata.jp\0parliament.nz\0"
-"hattfjelldal.no\0"
-"jeonnam.kr\0mielec.pl\0"
-"wallonie.museum\0"
-"shimabara.nagasaki.jp\0"
-"higashimurayama.tokyo.jp\0"
-"k12.pr.us\0works\0"
-"sado.niigata.jp\0world\0"
-"eid.no\0"
-"nishiwaki.hyogo.jp\0minamisanriku.miyagi.jp\0perso.tn\0"
-"hanamigawa.chiba.jp\0"
-"mikawa.yamagata.jp\0"
-"odesa.ua\0"
-"obuse.nagano.jp\0"
-"from-md.com\0"
-"en.it\0koga.ibaraki.jp\0"
-"lincoln.museum\0aure.no\0gildeskal.no\0belgorod.ru\0"
-"pro.tt\0"
-"sibenik.museum\0"
-"re.it\0"
-"storage\0"
-"kinokawa.wakayama.jp\0"
-"sci.eg\0"
-"manchester.museum\0"
-"rs.ba\0"
-"4.bg\0"
-"k12.tr\0"
-"minamioguni.kumamoto.jp\0"
-"pro.vn\0chat\0dyndns.tv\0"
-"dp.ua\0"
-"nom.ad\0"
-"nom.ag\0fed.us\0"
-"kanna.gunma.jp\0inabe.mie.jp\0izumi.osaka.jp\0re.kr\0"
-"dielddanuorri.no\0"
-"le.it\0"
-"firm.ht\0"
-"modalen.no\0"
-"hitachiomiya.ibaraki.jp\0taishi.osaka.jp\0"
-"kin.okinawa.jp\0"
-"windows\0"
-"sc.cn\0"
-"k12.vi\0"
-"qld.gov.au\0lib.al.us\0"
-"firm.in\0yashiro.hyogo.jp\0"
-"manno.kagawa.jp\0"
-"\xe9\xa4\x90\xe5\x8e\x85\0"
-"kuroiso.tochigi.jp\0"
-"abogado\0"
-"okinawa\0kicks-ass.org\0"
-"ford\0"
-"bellevue.museum\0"
-"shizuoka.jp\0"
-"misaki.osaka.jp\0"
-"fe.it\0karuizawa.nagano.jp\0"
-"wa.edu.au\0nom.co\0dyndns.ws\0"
-"miyako.fukuoka.jp\0earth\0"
-"film.hu\0"
-"takahashi.okayama.jp\0"
-"suita.osaka.jp\0"
-"\xe5\xb2\xa1\xe5\xb1\xb1.jp\0toyota.yamaguchi.jp\0"
-"firm.co\0"
-"xz.cn\0sakae.nagano.jp\0"
-"fareast.ru\0is-a-soxfan.org\0"
-"la-spezia.it\0tempio-olbia.it\0"
+"tv.tz\0is-a-geek.com\0"
+"pa.it\0progressive\0"
+"orkdal.no\0"
+"torino.museum\0"
+"notaires.fr\0corporation.museum\0otago.museum\0blogspot.de\0"
+"chase\0blogspot.cv\0"
+"blogspot.cz\0"
+"blogspot.dk\0"
+"parliament.cy\0bridgestone\0"
+"pwc\0dyndns-at-home.com\0"
+"essex.museum\0"
+"inzai.chiba.jp\0oita.oita.jp\0"
+"ringsaker.no\0"
+"genova.it\0"
"radoy.no\0"
-"shimofusa.chiba.jp\0"
-"issmarterthanyou.com\0"
-"okuma.fukushima.jp\0"
-"is-an-entertainer.com\0"
-"ustka.pl\0"
-"nexus\0"
-"is-into-anime.com\0"
-"kadogawa.miyazaki.jp\0"
-"gc.ca\0mj\xc3\xb8ndalen.no\0holmestrand.no\0divttasvuotna.no\0"
-"art.br\0puglia.it\0maniwa.okayama.jp\0"
-"workinggroup.aero\0"
-"yoshimi.saitama.jp\0"
-"channel\0"
-"ac.ae\0"
-"nom.es\0"
-"storfjord.no\0"
-"owariasahi.aichi.jp\0hotmail\0"
-"astronomy.museum\0"
-"losangeles.museum\0"
-"trentino-sud-tirol.it\0"
-"ac.at\0"
-"ac.be\0crafts.museum\0"
-"nom.fr\0rishirifuji.hokkaido.jp\0kamikawa.saitama.jp\0"
-"kouhoku.saga.jp\0akiruno.tokyo.jp\0"
-"art.do\0pubol.museum\0"
-"not.br\0vallee-aoste.it\0"
-"hanggliding.aero\0"
-"ravenna.it\0"
-"katsuyama.fukui.jp\0kitahata.saga.jp\0"
-"builders\0"
-"art.dz\0"
-"ac.ci\0"
-"choyo.kumamoto.jp\0"
-"ac.cn\0kawajima.saitama.jp\0"
-"shimoichi.nara.jp\0global.ssl.fastly.net\0"
-"rl.no\0"
-"ac.cr\0za.bz\0"
-"tobe.ehime.jp\0"
-"scor\0"
-"leasing.aero\0presse.km\0"
-"scot\0"
-"makurazaki.kagoshima.jp\0tome.miyagi.jp\0"
-"andriatranibarletta.it\0"
-"takarazuka.hyogo.jp\0"
-"air.museum\0"
-"kanra.gunma.jp\0"
-"sumoto.kumamoto.jp\0"
-"ambulance.museum\0"
-"motorcycle.museum\0isteingeek.de\0"
-"sc.kr\0"
-"journal.aero\0"
-"wiki.br\0mc.it\0kusu.oita.jp\0"
-"cloudcontrolapp.com\0"
-"inami.toyama.jp\0"
-"presse.ml\0"
-"broke-it.net\0"
-"assn.lk\0montreal.museum\0"
-"egyptian.museum\0"
-"legal\0"
-"nom.km\0its.me\0"
-"art.ht\0"
-"kotoura.tottori.jp\0"
-"lutsk.ua\0"
-"chino.nagano.jp\0"
-"mitou.yamaguchi.jp\0"
-"ujitawara.kyoto.jp\0yomitan.okinawa.jp\0"
-"rieti.it\0sera.hiroshima.jp\0joetsu.niigata.jp\0"
-"unjarga.no\0"
-"ac.gn\0watch\0"
-"nishihara.okinawa.jp\0*.platform.sh\0"
-"beauxarts.museum\0"
-"kviteseid.no\0rissa.no\0"
-"toei.aichi.jp\0"
-"nom.mg\0"
-"piedmont.it\0"
-"kongsberg.no\0"
-"kunstunddesign.museum\0flakstad.no\0rennebu.no\0"
-"campobasso.it\0nowaruda.pl\0gdansk.pl\0"
-"lib.hi.us\0"
-"events\0"
-"ac.id\0"
-"touch.museum\0narviika.no\0"
-"kamitsue.oita.jp\0"
-"gon.pk\0"
-"ac.im\0"
-"ac.in\0"
-"glass\0"
-"ac.ir\0"
-"firm.ve\0"
-"murakami.niigata.jp\0"
-"furano.hokkaido.jp\0"
-"melhus.no\0"
-"ha.cn\0andria-trani-barletta.it\0computer\0"
-"gives\0"
-"saku.nagano.jp\0"
-"sx.cn\0ac.jp\0"
-"coloradoplateau.museum\0livinghistory.museum\0is-a-candidate.org\0"
-"flog.br\0"
-"rsvp\0"
-"nom.pa\0"
-"nom.pe\0"
-"sweden.museum\0namsos.no\0"
-"tanabe.wakayama.jp\0"
-"beiarn.no\0"
-"\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d.jp\0handa.aichi.jp\0edogawa.tokyo.jp\0nom.pl\0"
-"snoasa.no\0"
-"ac.kr\0abb\0"
-"tokigawa.saitama.jp\0"
-"surgery\0"
-"nakanojo.gunma.jp\0takino.hyogo.jp\0"
-"construction\0"
-"tinn.no\0"
-"ta.it\0\xe6\x97\xb6\xe5\xb0\x9a\0"
-"kitadaito.okinawa.jp\0"
-"ac.ma\0"
-"vlog.br\0"
-"kirkenes.no\0"
-"urbino-pesaro.it\0town\0"
-"ac.me\0solutions\0"
-"gouv.fr\0novara.it\0"
-"gs.jan-mayen.no\0"
-"mat.br\0"
-"nom.re\0"
-"filatelia.museum\0"
-"aco\0"
-"pistoia.it\0"
-"versailles.museum\0"
-"community.museum\0rennes\xc3\xb8y.no\0nom.ro\0"
-"agr.br\0chikugo.fukuoka.jp\0"
-"ac.mu\0stavern.no\0homeunix.org\0"
-"ac.mw\0"
-"mutsuzawa.chiba.jp\0"
-"virtual.museum\0"
-"intl.tn\0art.pl\0"
-"dnepropetrovsk.ua\0"
-"ppg.br\0"
-"firm.ro\0"
-"tas.au\0kautokeino.no\0"
-"na.it\0"
-"kvanangen.no\0pub.sa\0sc.ug\0"
-"ads\0"
-"gx.cn\0sc.tz\0"
-"gouv.ht\0"
-"somna.no\0fl.us\0toys\0"
-"kutchan.hokkaido.jp\0ac.nz\0"
-"iveland.no\0nordkapp.no\0"
-"rovigo.it\0"
-"\xc3\xa5""fjord.no\0sc.us\0"
-"veneto.it\0report\0"
-"nalchik.ru\0lib.ok.us\0"
-"iwaki.fukushima.jp\0yatsuka.shimane.jp\0"
-"lindas.no\0tvedestrand.no\0ac.pa\0nom.tm\0k12.sc.us\0omega\0"
-"mjondalen.no\0"
-"obihiro.hokkaido.jp\0cri.nz\0"
-"matsumoto.kagoshima.jp\0"
-"state.museum\0fl\xc3\xa5.no\0rauma.no\0vennesla.no\0tires\0"
-"afl\0"
-"gouv.bj\0"
-"ac.pr\0"
-"usuki.oita.jp\0"
-"oregon.museum\0"
-"matsusaka.mie.jp\0tochio.niigata.jp\0lebork.pl\0"
-"stat.no\0"
-"balsfjord.no\0karlsoy.no\0"
-"mugi.tokushima.jp\0art.sn\0"
-"freight.aero\0gouv.ci\0"
-"coach\0"
-"marche.it\0nishiawakura.okayama.jp\0"
-"kids.us\0"
-"shimonita.gunma.jp\0kitagawa.miyazaki.jp\0"
-"tv.bb\0firm.nf\0"
+"supplies\0"
+"hamburg\0"
+"\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\0"
+"holtalen.no\0"
+"kimobetsu.hokkaido.jp\0"
+"virtuel.museum\0"
+"skiptvet.no\0"
+"kinko.kagoshima.jp\0sakhalin.ru\0"
+"komagane.nagano.jp\0"
+"finnoy.no\0homesecuritypc.com\0"
+"k12.az.us\0point2this.com\0"
+"florida.museum\0\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x81\xd1\x80\xd0\xb1\0"
+"sex.pl\0"
+"cloudns.club\0"
+"blogspot.co.ke\0"
+"uk.net\0"
+"minamiawaji.hyogo.jp\0"
+"habmer.no\0"
+"\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0"
+"pe.ca\0oregon.museum\0mutual\0flynnhub.com\0"
+"ug.gov.pl\0store.ro\0"
"udine.it\0"
-"nagasaki.jp\0"
-"dni.us\0"
-"luroy.no\0"
-"tv.bo\0education.museum\0cooking\0"
-"kagawa.jp\0"
-"ac.rs\0"
-"tv.br\0aq.it\0ba.it\0"
-"usgarden.museum\0ac.ru\0ac.se\0"
-"ac.rw\0aig\0"
-"panama.museum\0bahcavuotna.no\0stord.no\0"
-"shibuya.tokyo.jp\0"
+"*.nom.br\0"
+"lib.tn.us\0"
+"iz.hr\0k.se\0"
+"q.bg\0"
+"luzern.museum\0mobile\0"
+"jl.cn\0"
+"clinton.museum\0"
+"cc.ma.us\0blogspot.ae\0"
+"kanie.aichi.jp\0"
+"building.museum\0"
+"gs.rl.no\0store.st\0"
+"pc.it\0pub.sa\0cool\0blogspot.al\0"
+"podzone.net\0blogspot.am\0myds.me\0"
+"coop\0ogawa.saitama.jp\0gulen.no\0"
+"matsumae.hokkaido.jp\0public.museum\0"
+"sweden.museum\0"
+"mobily\0"
+"tx.us\0"
+"lyngen.no\0"
+"shibetsu.hokkaido.jp\0"
+"slg.br\0"
+"trentinosud-tirol.it\0"
+"halden.no\0"
+"shiiba.miyazaki.jp\0"
+"kartuzy.pl\0vision\0dsmynas.com\0"
+"holiday\0"
+"sanda.hyogo.jp\0"
+"kaita.hiroshima.jp\0"
+"photography.museum\0"
+"blogspot.co.nz\0"
+"askoy.no\0"
+"iglesiascarbonia.it\0bjark\xc3\xb8y.no\0"
+"sera.hiroshima.jp\0hidaka.hokkaido.jp\0"
+"uozu.toyama.jp\0cpa.pro\0"
+"omasvuotna.no\0"
+"mragowo.pl\0consulting\0"
+"\xe5\x85\xab\xe5\x8d\xa6\0"
"rehab\0"
-"consultant.aero\0harstad.no\0"
-"spjelkavik.no\0moareke.no\0"
-"ono.fukui.jp\0"
-"ac.th\0"
-"imageandsound.museum\0"
-"ac.sz\0ac.tj\0"
-"malbork.pl\0"
-"usa.oita.jp\0"
-"bahn.museum\0educational.museum\0"
-"stjordalshalsen.no\0"
-"kozagawa.wakayama.jp\0"
-"uozu.toyama.jp\0"
-"ac.ug\0s3-us-west-1.amazonaws.com\0"
-"education\0"
-"ac.tz\0"
-"pharmaciens.km\0ac.uk\0"
-"hachinohe.aomori.jp\0"
-"of.by\0ha.no\0"
-"qsl.br\0to.it\0okayama.jp\0higashi.okinawa.jp\0"
-"online\0"
-"maebashi.gunma.jp\0"
-"valleaosta.it\0kushimoto.wakayama.jp\0"
-"pomorze.pl\0"
-"salat.no\0"
-"surrey.museum\0"
-"ichinoseki.iwate.jp\0seat\0"
-"tokai.aichi.jp\0abiko.chiba.jp\0numata.gunma.jp\0for-better.biz\0"
-"tas.edu.au\0nationalheritage.museum\0"
-"ac.vn\0sopot.pl\0"
-"tambov.ru\0"
-"redstone\0"
-"mx.na\0est-le-patron.com\0"
-"amli.no\0"
-"higashiosaka.osaka.jp\0auto.pl\0"
-"omitama.ibaraki.jp\0"
-"dynalias.com\0"
-"no.it\0"
-"bir.ru\0"
-"haibara.shizuoka.jp\0"
-"suwa.nagano.jp\0"
-"recreation.aero\0jewishart.museum\0rade.no\0"
-"shingu.fukuoka.jp\0warmia.pl\0"
-"flesberg.no\0hemne.no\0"
-"minamidaito.okinawa.jp\0"
-"station.museum\0bo.telemark.no\0"
-"kitanakagusuku.okinawa.jp\0"
-"nesodden.no\0vologda.ru\0casino\0"
-"itoigawa.niigata.jp\0"
-"misawa.aomori.jp\0tsubata.ishikawa.jp\0maibara.shiga.jp\0"
-"exchange.aero\0"
-"tv.im\0seek\0"
-"toon.ehime.jp\0"
-"kyiv.ua\0"
-"tirol\0"
-"tv.it\0"
-"phoenix.museum\0"
-"stjordal.no\0"
-"yonabaru.okinawa.jp\0"
-"akabira.hokkaido.jp\0aguni.okinawa.jp\0"
-"yugawara.kanagawa.jp\0"
-"kiyose.tokyo.jp\0"
-"powiat.pl\0lomza.pl\0"
-"lans.museum\0mex.com\0"
-"gifu.gifu.jp\0"
-"sel.no\0lib.ut.us\0"
-"e.bg\0film.museum\0"
-"fortmissoula.museum\0"
-"itano.tokushima.jp\0yamanobe.yamagata.jp\0"
-"honjo.akita.jp\0ginan.gifu.jp\0"
+"air.museum\0hol.no\0"
+"privatizehealthinsurance.net\0"
+"shop.ht\0"
+"shop.hu\0"
+"\xe6\x94\xbf\xe5\x8a\xa1\0"
+"nsupdate.info\0"
+"africa\0"
+"sklep.pl\0"
+"zaporizhzhia.ua\0"
+"montblanc\0"
+"adv.mz\0"
+"koshigaya.saitama.jp\0m\xc4\x81ori.nz\0odessa.ua\0"
+"brunel.museum\0s3.amazonaws.com\0"
+"lillesand.no\0jaworzno.pl\0"
+"m.se\0panasonic\0"
+"oishida.yamagata.jp\0lib.in.us\0"
+"s.bg\0sciences.museum\0"
+"is-a-geek.org\0"
+"force.museum\0spacekit.io\0"
+"frei.no\0dnepropetrovsk.ua\0police.uk\0"
+"nisshin.aichi.jp\0"
+"katsuura.chiba.jp\0"
+"jgora.pl\0"
+"in.net\0"
+"pe.it\0taku.saga.jp\0"
+"isleofman.museum\0"
+"lixil\0"
+"hyogo.jp\0"
+"pa.us\0"
+"campidanomedio.it\0"
+"pc.pl\0"
+"yakumo.shimane.jp\0"
+"flickr\0"
+"ibara.okayama.jp\0"
+"lexus\0"
+"taito.tokyo.jp\0"
+"\xd0\xbe\xd0\xb4.\xd1\x81\xd1\x80\xd0\xb1\0hitachi\0"
+"cranbrook.museum\0khakassia.ru\0"
+"setagaya.tokyo.jp\0"
+"pe.kr\0voss.no\0"
+"res.in\0williamsburg.museum\0cuisinella\0"
+"toshima.tokyo.jp\0"
+"ancona.it\0koga.ibaraki.jp\0gold\0"
+"barclaycard\0directory\0"
+"golf\0"
+"omotego.fukushima.jp\0"
+"gifts\0"
+"maori.nz\0"
+"tarumizu.kagoshima.jp\0"
+"khakassia.su\0"
+"valdaosta.it\0"
+"melhus.no\0"
+"analytics\0"
+"stream\0"
+"wazuka.kyoto.jp\0"
+"warabi.saitama.jp\0"
+"red\0"
+"trani-barletta-andria.it\0nsn.us\0"
+"hokuryu.hokkaido.jp\0"
+"iyo.ehime.jp\0"
+"freight.aero\0agrigento.it\0"
+"futsu.nagasaki.jp\0"
+"ericsson\0mitsubishi\0ren\0"
+"iizuka.fukuoka.jp\0"
+"karlsoy.no\0"
+"vladikavkaz.ru\0"
+"sandnes.no\0qvc\0"
+"o.se\0webhop.biz\0"
+"ashiya.hyogo.jp\0h\xc3\xa5.no\0"
+"familyds.com\0"
+"u.bg\0lesja.no\0"
+"basel.museum\0pagefrontapp.com\0"
+"jewishart.museum\0"
+"vic.au\0"
+"gda.pl\0"
+"towada.aomori.jp\0cc.me.us\0"
+"vladikavkaz.su\0"
+"cc.as.us\0goog\0"
+"online.museum\0"
+"doomdns.org\0"
+"lamborghini\0is-an-actress.com\0"
+"pg.it\0bialystok.pl\0"
+"enna.it\0kunitomi.miyazaki.jp\0"
+"hakodate.hokkaido.jp\0*.kunden.ortsinfo.at\0"
+"es.leg.br\0"
+"friuli-veneziagiulia.it\0mimata.miyazaki.jp\0blogspot.co.za\0"
+"health-carereform.com\0"
+"reggio-calabria.it\0museum\0\xe5\x85\xac\xe5\x8f\xb8\0"
+"dielddanuorri.no\0"
+"perugia.it\0"
+"takikawa.hokkaido.jp\0"
+"laquila.it\0\xc4\x8d\xc3\xa1hcesuolo.no\0"
+"fukuyama.hiroshima.jp\0yokoze.saitama.jp\0pt.eu.org\0"
+"farmstead.museum\0"
+"ril\0"
+"oe.yamagata.jp\0"
+"store.bb\0rio\0is-a-liberal.com\0"
+"rip\0"
+"arakawa.tokyo.jp\0"
+"medio-campidano.it\0baby\0"
+"przeworsk.pl\0"
+"citadel\0"
+"kuriyama.hokkaido.jp\0doshi.yamanashi.jp\0"
+"entomology.museum\0"
+"merckmsd\0"
+"dyroy.no\0notteroy.no\0"
+"reggiocalabria.it\0mj\xc3\xb8ndalen.no\0"
+"hamura.tokyo.jp\0"
+"madrid\0thruhere.net\0"
+"saka.hiroshima.jp\0"
+"gunma.jp\0mito.ibaraki.jp\0mobi\0annefrank.museum\0nebraska.museum\0"
+"from-nm.com\0"
+"kozaki.chiba.jp\0aknoluokta.no\0\xe6\xb8\xb8\xe6\x88\x8f\0is-an-accountant.com\0is-very-good.org\0"
+"kosei.shiga.jp\0"
+"zippo\0"
+"urawa.saitama.jp\0"
+"togura.nagano.jp\0ama.shimane.jp\0"
+"avianca\0"
+"nayoro.hokkaido.jp\0vistaprint\0"
+"w.bg\0"
+"sennan.osaka.jp\0appspot.com\0"
+"tmall\0"
+"garden\0store.dk\0"
+"cc.wy.us\0"
+"federation.aero\0"
+"fie.ee\0takanabe.miyazaki.jp\0hinohara.tokyo.jp\0"
+"ishikawa.okinawa.jp\0"
+"uhren.museum\0undersea.museum\0moda\0"
+"halloffame.museum\0wskr.gov.pl\0cisco\0"
+"brescia.it\0vb.it\0"
+"pi.it\0cyon.link\0"
+"sugito.saitama.jp\0sncf\0dyndns-office.com\0"
+"szex.hu\0american.museum\0"
+"katsuragi.nara.jp\0"
+"sowa.ibaraki.jp\0kiyokawa.kanagawa.jp\0"
+"delmenhorst.museum\0"
+"mizuho.tokyo.jp\0trondheim.no\0"
+"flight.aero\0"
+"exchange.aero\0wa.edu.au\0furniture.museum\0dynalias.org\0"
+"hitra.no\0"
+"toscana.it\0"
+"wakayama.jp\0"
+"muni.il\0savona.it\0ikano\0"
+"miyazaki.miyazaki.jp\0"
+"vegarshei.no\0"
+"oy.lc\0"
+"emiliaromagna.it\0dy.fi\0"
+"hyatt\0"
+"\xe5\x85\xb5\xe5\xba\xab.jp\0"
+"from-hi.com\0"
+"carbonia-iglesias.it\0"
+"tkmaxx\0"
+"agdenes.no\0"
+"ebino.miyazaki.jp\0k12.md.us\0\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0nid.io\0"
+"kasahara.gifu.jp\0k12.ga.us\0"
+"k12.ar.us\0"
+"dolls.museum\0"
+"sandefjord.no\0"
"r\xc3\xa1hkker\xc3\xa1vju.no\0"
-"bar\0"
-"presse.ci\0bbc\0"
-"bo.it\0"
-"minakami.gunma.jp\0"
-"hapmir.no\0cc.mi.us\0is-a-teacher.com\0"
-"kasugai.aichi.jp\0"
-"jewelry.museum\0gulen.no\0dvag\0"
-"engerdal.no\0"
-"achi.nagano.jp\0serveftp.net\0"
-"khv.ru\0"
-"morotsuka.miyazaki.jp\0tarama.okinawa.jp\0ruhr\0"
-"laakesvuemie.no\0is-a-caterer.com\0"
-"onga.fukuoka.jp\0"
-"khmelnytskyi.ua\0"
-"messina.it\0bcn\0"
+"sherbrooke.museum\0rendalen.no\0"
+"fl\xc3\xa5.no\0"
"fhs.no\0"
-"berlin.museum\0alipay\0infiniti\0"
-"adult.ht\0"
-"tv.na\0name\0"
-"vao.it\0zachpomor.pl\0"
-"\xc3\xa5rdal.no\0herokuapp.com\0"
-"karatsu.saga.jp\0gov.nc.tr\0"
-"sydney\0uy.com\0"
-"imperia.it\0turen.tn\0"
-"time.museum\0"
-"\xd9\x85\xd9\x88\xd8\xa8\xd8\xa7\xd9\x8a\xd9\x84\xd9\x8a\0"
-"lighting\0"
-"matsubara.osaka.jp\0rnu.tn\0"
-"seaport.museum\0"
-"assassination.museum\0"
-"ikeda.fukui.jp\0iinet\0"
-"doosan\0"
-"it.ao\0idv.hk\0e12.ve\0"
-"shari.hokkaido.jp\0nahari.kochi.jp\0"
-"trader.aero\0nh.us\0"
-"takatori.nara.jp\0"
-"columbia.museum\0"
-"city\0is-a-player.com\0"
-"presse.fr\0shimoji.okinawa.jp\0numazu.shizuoka.jp\0upow.gov.pl\0"
-"arna.no\0"
-"muroto.kochi.jp\0"
-"l.bg\0"
-"kamogawa.chiba.jp\0"
-"mosvik.no\0"
-"frankfurt.museum\0mo-i-rana.no\0"
-"nichinan.miyazaki.jp\0"
-"kitagawa.kochi.jp\0"
-"kr\xc3\xb8""dsherad.no\0skierv\xc3\xa1.no\0us.com\0from-oh.com\0"
-"arao.kumamoto.jp\0"
-"ryazan.ru\0"
-"hurum.no\0"
-"kitashiobara.fukushima.jp\0ichinohe.iwate.jp\0"
-"louvre.museum\0moma.museum\0of.no\0"
-"\xe4\xb8\x89\xe9\x87\x8d.jp\0shingu.wakayama.jp\0"
-"cupcake.is\0"
-"limanowa.pl\0zuerich\0"
-"decorativearts.museum\0"
-"gouv.rw\0lib.ct.us\0"
-"andria-barletta-trani.it\0market\0"
-"nomi.ishikawa.jp\0nakano.nagano.jp\0"
-"irish\0"
-"logistics.aero\0molde.no\0axa\0industries\0"
-"nagano.jp\0gouv.sn\0"
-"technology.museum\0"
-"press.museum\0s3-fips-us-gov-west-1.amazonaws.com\0"
-"munakata.fukuoka.jp\0"
-"rodoy.no\0"
-"bolt.hu\0"
-"flor\xc3\xb8.no\0khabarovsk.ru\0"
-"yachiyo.chiba.jp\0miyama.fukuoka.jp\0"
-"sanuki.kagawa.jp\0"
-"im.it\0"
-"bid\0"
-"kitaura.miyazaki.jp\0tv.sd\0"
-"shizukuishi.iwate.jp\0"
-"corsica\0"
-"pavia.it\0usui.fukuoka.jp\0"
-"chesapeakebay.museum\0bio\0"
-"atami.shizuoka.jp\0"
-"nanae.hokkaido.jp\0"
-"saitama.jp\0"
-"ggf.br\0"
-"s.bg\0"
-"shobara.hiroshima.jp\0himi.toyama.jp\0"
-"biz\0takko.aomori.jp\0"
-"guovdageaidnu.no\0"
-"shishikui.tokushima.jp\0"
-"massa-carrara.it\0shimokawa.hokkaido.jp\0"
-"erotika.hu\0oppeg\xc3\xa5rd.no\0"
-"sayo.hyogo.jp\0"
-"bentley\0"
-"eidfjord.no\0hamaroy.no\0"
-"bv.nl\0tv.tr\0"
-"smola.no\0"
-"ohira.tochigi.jp\0"
-"botanicgarden.museum\0"
-"ot.it\0pd.it\0"
-"halsa.no\0troms\xc3\xb8.no\0\xd2\x9b\xd0\xb0\xd0\xb7\0"
-"fr\xc3\xa6na.no\0"
-"niigata.jp\0takayama.gifu.jp\0koshimizu.hokkaido.jp\0tv.tz\0"
+"fukaya.saitama.jp\0"
+"kwpsp.gov.pl\0kerryhotels\0"
+"hasuda.saitama.jp\0vanguard\0"
+"umaji.kochi.jp\0royken.no\0"
+"\xe5\x80\x8b\xe4\xba\xba.hk\0clinic\0"
+"ivanovo.ru\0"
+"is-a-nascarfan.com\0"
+"s.se\0lib.pa.us\0"
+"y.bg\0sap\0"
+"niyodogawa.kochi.jp\0"
+"intl.tn\0"
+"surgeonshall.museum\0sas\0"
+"funabashi.chiba.jp\0karumai.iwate.jp\0from-wy.com\0"
+"cc.mi.us\0"
+"sbi\0voting\0"
+"ogori.fukuoka.jp\0"
+"ivanovo.su\0"
+"turin.it\0"
+"ishinomaki.miyagi.jp\0"
+"sca\0"
+"nishi.osaka.jp\0ptz.ru\0scb\0"
+"aikawa.kanagawa.jp\0sbs\0"
+"ninomiya.kanagawa.jp\0"
+"daplie.me\0"
+"hammarfeasta.no\0"
+"trentino-a-adige.it\0"
+"al.eu.org\0"
+"bardu.no\0"
+"\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\0"
+"\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0"
+"ppg.br\0education.museum\0"
+"openair.museum\0"
+"higashichichibu.saitama.jp\0"
+"from-dc.com\0"
+"ashiya.fukuoka.jp\0"
+"brussels.museum\0s\xc3\xa1lat.no\0"
+"omsk.ru\0"
+"genkai.saga.jp\0dnsalias.net\0"
+"band\0"
+"mypets.ws\0shop.ro\0"
+"sucks\0"
+"sukagawa.fukushima.jp\0bamble.no\0bank\0"
+"kayabe.hokkaido.jp\0yura.wakayama.jp\0"
+"daigo.ibaraki.jp\0"
+"run\0"
+"esp.br\0"
+"eng.br\0mediocampidano.it\0is-a-photographer.com\0"
+"tarnobrzeg.pl\0"
+"cancerresearch\0ses\0"
+"southwest.museum\0accountant\0"
+"tokushima.tokushima.jp\0sande.m\xc3\xb8re-og-romsdal.no\0"
+"sew\0"
+"isshiki.aichi.jp\0sex\0"
+"andria-trani-barletta.it\0andriatranibarletta.it\0"
+"shop.pl\0"
+"seranishi.hiroshima.jp\0"
+"midori.chiba.jp\0"
+"sasebo.nagasaki.jp\0sfr\0"
+"kanonji.kagawa.jp\0"
+"yamashina.kyoto.jp\0rwe\0"
+"lib.ut.us\0"
+"u.se\0"
+"est-a-la-masion.com\0"
+"ibigawa.gifu.jp\0"
+"kameoka.kyoto.jp\0toba.mie.jp\0"
+"iveland.no\0arab\0"
+"sciencesnaturelles.museum\0"
+"cam.it\0"
+"cc.sd.us\0"
+"koge.tottori.jp\0cn.com\0"
+"wake.okayama.jp\0bjugn.no\0podzone.org\0"
+"gs.sf.no\0"
+"oppdal.no\0"
+"ito.shizuoka.jp\0"
+"psse.gov.pl\0"
+"sayo.hyogo.jp\0sydney.museum\0"
+"niigata.jp\0"
+"hashimoto.wakayama.jp\0"
+"hagi.yamaguchi.jp\0gb.net\0"
+"ichikawamisato.yamanashi.jp\0"
+"kamikoani.akita.jp\0legnica.pl\0"
+"msk.ru\0fage\0"
+"ohda.shimane.jp\0"
+"saiki.oita.jp\0"
+"yokawa.hyogo.jp\0"
+"lazio.it\0matsuno.ehime.jp\0shimodate.ibaraki.jp\0"
+"isen.kagoshima.jp\0"
+"onojo.fukuoka.jp\0"
+"siljan.no\0"
+"properties\0"
+"msk.su\0"
+"lubin.pl\0"
+"sandvik\0"
+"tottori.tottori.jp\0"
+"toyama.toyama.jp\0"
+"cinema.museum\0"
+"ski\0"
+"british.museum\0"
+"daisen.akita.jp\0"
+"fail\0"
+"ninohe.iwate.jp\0"
+"otama.fukushima.jp\0"
+"nakagawa.nagano.jp\0at-band-camp.net\0"
+"louvre.museum\0"
+"tsu.mie.jp\0"
+"sky\0"
+"kawanishi.hyogo.jp\0"
+"is-a-geek.net\0"
+"tas.edu.au\0"
+"fujixerox\0"
+"storfjord.no\0chukotka.ru\0"
+"ogawara.miyagi.jp\0lucerne.museum\0vf.no\0w.se\0"
+"saintlouis.museum\0"
+"forli-cesena.it\0tomakomai.hokkaido.jp\0swinoujscie.pl\0"
+"gok.pk\0"
+"maintenance.aero\0jx.cn\0"
+"zlg.br\0gub.uy\0"
+"sue.fukuoka.jp\0moto\0"
+"toyota.aichi.jp\0"
+"tamamura.gunma.jp\0evenes.no\0"
+"misugi.mie.jp\0watari.miyagi.jp\0artanddesign.museum\0donna.no\0"
+"stathelle.no\0knowsitall.info\0"
+"yoichi.hokkaido.jp\0hamamatsu.shizuoka.jp\0"
+"fukuchi.fukuoka.jp\0"
+"po.it\0"
+"airline.aero\0"
+"ut.us\0"
+"tokorozawa.saitama.jp\0"
+"novara.it\0"
+"s3-eu-west-1.amazonaws.com\0"
+"office\0"
+"kumano.mie.jp\0cambridge.museum\0"
+"myoko.niigata.jp\0"
+"otari.nagano.jp\0starnberg.museum\0"
+"bauhaus\0movie\0"
+"oppegard.no\0"
+"data\0"
+"iwate.jp\0"
+"kpmg\0soy\0"
+"stalowa-wola.pl\0"
+"hakata.fukuoka.jp\0miura.kanagawa.jp\0date\0"
+"stranda.no\0from-mo.com\0"
+"koori.fukushima.jp\0okutama.tokyo.jp\0"
+"matsumoto.nagano.jp\0interactive.museum\0k12.nj.us\0"
+"research.museum\0tab\0"
+"starachowice.pl\0"
+"umig.gov.pl\0fans\0reise\0"
+"safety.aero\0"
+"yusuhara.kochi.jp\0kudamatsu.yamaguchi.jp\0intelligence.museum\0"
"\xc3\xa5l.no\0"
-"solar\0"
-"belluno.it\0"
-"interactive.museum\0lib.co.us\0us-west-2.compute.amazonaws.com\0"
-"shikatsu.aichi.jp\0"
-"nobeoka.miyazaki.jp\0"
-"torsken.no\0"
-"\xe9\x95\xb7\xe9\x87\x8e.jp\0iki.nagasaki.jp\0"
-"express.aero\0"
-"nysa.pl\0"
-"miyawaka.fukuoka.jp\0gbiz\0"
-"catanzaro.it\0"
-"kiyosu.aichi.jp\0ikaruga.nara.jp\0"
-,
-
-"\xd0\xbe\xd0\xb1\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0"
-"kitahiroshima.hokkaido.jp\0"
-"\xe9\x95\xb7\xe5\xb4\x8e.jp\0"
-"student.aero\0kopervik.no\0hof.no\0"
-"tula.ru\0"
-"izumizaki.fukushima.jp\0"
-"g\xc3\xa1ivuotna.no\0cc.tn.us\0"
-"fyresdal.no\0bms\0media\0ryukyu\0"
-"miyakonojo.miyazaki.jp\0"
-"mosj\xc3\xb8""en.no\0nv.us\0bmw\0navy\0"
-"iwakura.aichi.jp\0"
-"\xe4\xbd\x9b\xe5\xb1\xb1\0"
-"bnl\0"
-"lib.wa.us\0"
-"sabae.fukui.jp\0motosu.gifu.jp\0"
-"z.bg\0"
-"miharu.fukushima.jp\0"
-"higashiyama.kyoto.jp\0"
-"skierva.no\0"
-"laspezia.it\0"
-"if.ua\0"
-"himeshima.oita.jp\0"
-"imb.br\0caravan\0"
-"ct.it\0utashinai.hokkaido.jp\0"
-"bom\0"
-"pictet\0"
-"boo\0"
-"biella.it\0"
-"gouv.km\0risor.no\0"
-"bot\0"
-"\xc3\xa5s.no\0gotdns.org\0"
-"oskol.ru\0dyndns-blog.com\0"
-"gokase.miyazaki.jp\0tonaki.okinawa.jp\0"
-"salon\0"
-"averoy.no\0press\0"
-"halloffame.museum\0h\xc3\xa1""bmer.no\0"
-"*.sendai.jp\0"
-"oseto.nagasaki.jp\0"
-"usantiques.museum\0"
-"cab\0"
-"download\0"
-"nord-odal.no\0"
-"unsa.ba\0museet.museum\0galsa.no\0gb.com\0"
-"muko.kyoto.jp\0"
-"zero\0"
-"yasugi.shimane.jp\0cal\0"
-"torino.museum\0"
-"kami.kochi.jp\0gouv.ml\0"
-"idv.tw\0cba\0network\0"
-"yokawa.hyogo.jp\0car\0"
-"cat\0"
-"americana.museum\0e.se\0"
+"balsan.it\0saratov.ru\0"
+"mihama.aichi.jp\0"
+"hair\0"
+"coop.ht\0netflix\0"
+"citic\0"
+"stat.no\0"
+"qc.ca\0broker\0"
+"tax\0"
+"oslo.no\0servepics.com\0"
+"iki.nagasaki.jp\0"
+"chitose.hokkaido.jp\0joburg\0"
+"misato.wakayama.jp\0srl\0"
+"gosen.niigata.jp\0y.se\0"
+"shikaoi.hokkaido.jp\0"
+"kanegasaki.iwate.jp\0sosnowiec.pl\0"
+"ap.gov.pl\0"
+"yorii.saitama.jp\0"
+"sohu\0"
+"srt\0"
+"vald-aosta.it\0tsubame.niigata.jp\0cc.mo.us\0"
+"togliatti.su\0tci\0sells-for-u.com\0"
+"kurume.fukuoka.jp\0"
+"servebeer.com\0"
+"coop.br\0"
+"americanexpress\0"
+"oyodo.nara.jp\0hamar.no\0stc\0"
+"watch-and-clock.museum\0"
+"niihama.ehime.jp\0open\0"
+"tmp.br\0"
+"statoil\0"
+"tdk\0"
+"emilia-romagna.it\0roros.no\0"
+"experts-comptables.fr\0"
+"farm\0"
+"toyota.yamaguchi.jp\0"
+"consulting.aero\0photography\0serveftp.net\0"
+"army\0"
+"m\xc3\xa5lselv.no\0"
+"cheap\0"
+"fundacio.museum\0organic\0ngrok.io\0"
+"stuttgart.museum\0"
+"sassari.it\0"
+"tel\0"
+"tysnes.no\0"
+"itabashi.tokyo.jp\0americanfamily\0"
+"law.za\0"
+"ichikawa.chiba.jp\0"
+"fast\0"
+"hammerfest.no\0"
+"sogne.no\0"
+"bozen.it\0vlaanderen.museum\0"
+"airtraffic.aero\0k12.sc.us\0myactivedirectory.com\0"
+"here-for-more.info\0"
+"arpa\0"
+"\xd5\xb0\xd5\xa1\xd5\xb5\0"
+"messina.it\0airforce\0"
+"ogaki.gifu.jp\0"
+"h\xc3\xa1mm\xc3\xa1rfeasta.no\0"
+"nuoro.it\0detroit.museum\0"
+"western.museum\0"
+"konan.aichi.jp\0"
+"s\xc3\xb8mna.no\0"
+"brindisi.it\0miasa.nagano.jp\0"
+"karasjok.no\0"
+"\xd7\xa7\xd7\x95\xd7\x9d\0"
+"yuu.yamaguchi.jp\0thd\0"
+"song\0"
+"podlasie.pl\0"
+"productions\0"
+"from-tx.com\0"
+"rybnik.pl\0mykolaiv.ua\0"
+"is-with-theband.com\0"
+"kawara.fukuoka.jp\0komoro.nagano.jp\0"
+"karm\xc3\xb8y.no\0"
+"kautokeino.no\0"
+"tr\xc3\xb8gstad.no\0"
+"showa.yamanashi.jp\0sony\0"
+"maebashi.gunma.jp\0onomichi.hiroshima.jp\0"
+"lukow.pl\0"
+"kanazawa.ishikawa.jp\0"
+"vik.no\0flowers\0"
+"services\0"
+"ukiha.fukuoka.jp\0dyndns-blog.com\0"
+"piacenza.it\0"
+"midtre-gauldal.no\0"
+"asda\0"
+"vardo.no\0"
+"kawahara.tottori.jp\0"
+"engine.aero\0deatnu.no\0arte\0"
+"ntr.br\0"
+"\xe6\x85\x88\xe5\x96\x84\0"
+"airbus\0"
+"tjx\0"
+"sellsyourhome.org\0"
+"\xe5\x95\x86\xe5\x9f\x8e\0"
+"avocat.pro\0"
+"caltanissetta.it\0massacarrara.it\0"
+"zapto.org\0"
+"saga.saga.jp\0overhalla.no\0"
+"l\xc3\xb8renskog.no\0"
+"chonan.chiba.jp\0"
+"cartier\0stuff-4-sale.org\0"
+"stavern.no\0"
+"friulive-giulia.it\0bbva\0"
+"misawa.aomori.jp\0"
+"hashima.gifu.jp\0"
+"groundhandling.aero\0from-pr.com\0"
+"fujimino.saitama.jp\0ulm.museum\0"
+"okuma.fukushima.jp\0shizuoka.shizuoka.jp\0vuelos\0"
+"zamami.okinawa.jp\0cloudns.biz\0"
+"bmoattachments.org\0geekgalaxy.com\0"
+"tachiarai.fukuoka.jp\0"
+"haus\0"
+"aquarium.museum\0manchester.museum\0"
+"gitlab.io\0"
+"chiropractic.museum\0olayangroup\0"
+"*.bd\0"
+"izu.shizuoka.jp\0"
+"fujieda.shizuoka.jp\0study\0"
+"labor.museum\0r\xc3\xa5""de.no\0"
+"uz.ua\0"
+"songdalen.no\0"
+"ostrowwlkp.pl\0kh.ua\0emerck\0"
+"cc.ms.us\0cc.nc.us\0"
+"*.bn\0s3-us-west-1.amazonaws.com\0"
+"sakurai.nara.jp\0haugesund.no\0cc.ca.us\0"
+"ltd.co.im\0"
+"pu.it\0architecture.museum\0sondre-land.no\0"
+"sakura.chiba.jp\0gs.hl.no\0est.pr\0"
+"fc.it\0\xc3\xb8ksnes.no\0"
+"ginoza.okinawa.jp\0v\xc3\xa5ler.\xc3\xb8stfold.no\0"
+"takamatsu.kagawa.jp\0"
+"asia\0*.ck\0"
+"hepforge.org\0"
+"\xe5\xa4\xa7\xe4\xbc\x97\xe6\xb1\xbd\xe8\xbd\xa6\0"
+"ardal.no\0top\0"
+"bruxelles.museum\0skj\xc3\xa5k.no\0"
+"is-an-engineer.com\0"
+"\xd9\x85\xd9\x84\xd9\x8a\xd8\xb3\xd9\x8a\xd8\xa7\0"
+"erni\0"
+"ashoro.hokkaido.jp\0pippu.hokkaido.jp\0dudinka.ru\0"
+"sologne.museum\0"
+"ap-southeast-2.compute.amazonaws.com\0"
+"akagi.shimane.jp\0aquarelle\0"
+"es.kr\0"
+"land\0"
+"yamal.ru\0"
+"4u.com\0"
+"shari.hokkaido.jp\0"
+"kvanangen.no\0"
+"sasaguri.fukuoka.jp\0tgory.pl\0"
+"yoga\0"
+"k12.nh.us\0juniper\0"
+"k12.gu.us\0"
+"*.er\0"
+"embetsu.hokkaido.jp\0"
+"trento.it\0shimogo.fukushima.jp\0castle.museum\0"
+"portlligat.museum\0"
+"tourism.tn\0"
+"eco.br\0"
+"*.fj\0"
+"*.fk\0"
+"kumamoto.jp\0"
+"sumy.ua\0"
+"eid.no\0"
+"modelling.aero\0kui.hiroshima.jp\0ubs\0"
+"mie.jp\0"
+"trv\0"
+"abruzzo.it\0java\0"
+"aomori.aomori.jp\0beta.bounty-full.com\0"
+"homebuilt.aero\0social\0"
+"shirataka.yamagata.jp\0"
+"f\xc3\xb8rde.no\0v\xc3\xa5g\xc3\xa5.no\0qpon\0repair\0"
+"gos.pk\0myasustor.com\0"
+"*.gu\0"
+"cc.ne.us\0"
+"nom.ad\0"
+"umbria.it\0movistar\0"
+"nom.ag\0rahkkeravju.no\0"
+"erotika.hu\0england.museum\0"
+"fe.it\0gs.bu.no\0"
+"serveirc.com\0"
+"\xe6\x84\x9b\xe5\xaa\x9b.jp\0"
+"\xe9\xa6\x99\xe5\xb7\x9d.jp\0"
+"tui\0"
+"bronnoysund.no\0"
+"page\0"
+"judaica.museum\0"
+"nanporo.hokkaido.jp\0"
+"lajolla.museum\0wales.museum\0name\0divttasvuotna.no\0"
+"coop.tt\0hermes\0"
+"ragusa.it\0game-server.cc\0"
+"fuefuki.yamanashi.jp\0"
+"friuli-v-giulia.it\0"
+"walbrzych.pl\0"
+"civilwar.museum\0"
+"*.jm\0"
+"\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d.jp\0uda.nara.jp\0"
+"cesenaforli.it\0"
+"rankoshi.hokkaido.jp\0"
+"shinkamigoto.nagasaki.jp\0tvs\0"
+"ekloges.cy\0kawakami.nara.jp\0"
+"coop.mv\0"
+"nom.co\0iwaki.fukushima.jp\0godo.gifu.jp\0*.ke\0coop.mw\0"
+"video.hu\0minami.kyoto.jp\0locker\0shiksha\0"
+"ichinohe.iwate.jp\0nerima.tokyo.jp\0"
+"*.kh\0"
+"servehalflife.com\0"
+"cityeats\0"
+"kitchen\0"
+"today\0work\0"
+"childrens.museum\0test.tj\0"
+"yamada.toyama.jp\0"
+"sa.gov.au\0ravenna.it\0"
+"kred\0"
+"crimea.ua\0"
+"avocat.fr\0*.kw\0"
+"ena.gifu.jp\0webhop.org\0"
+"bato.tochigi.jp\0kuzbass.ru\0"
+"bostik\0"
+"rauma.no\0"
+"dnsalias.org\0"
+"dclk\0"
+"nishimera.miyazaki.jp\0"
+"nord-odal.no\0tunk.org\0"
+"kisofukushima.nagano.jp\0pl.eu.org\0"
+"nom.es\0"
+"okinawa.jp\0wakayama.wakayama.jp\0"
+"lib.al.us\0restaurant\0"
+"*.mm\0"
+"hachirogata.akita.jp\0"
+"andriabarlettatrani.it\0minamiizu.shizuoka.jp\0"
+"vn.ua\0"
+"spot\0"
+"kamikawa.hokkaido.jp\0"
+"tsk.ru\0"
+"fi.cr\0akkeshi.hokkaido.jp\0"
+"hattfjelldal.no\0"
+"coop.py\0"
+"nom.fr\0"
"vr.it\0"
-"omi.niigata.jp\0"
-"togane.chiba.jp\0toyako.hokkaido.jp\0"
-"samara.ru\0"
-"nakagawa.fukuoka.jp\0urasoe.okinawa.jp\0cbn\0"
-"nordre-land.no\0"
-"aquila.it\0gonohe.aomori.jp\0fukusaki.hyogo.jp\0"
-"yodobashi\0"
-"rimini.it\0sakaiminato.tottori.jp\0"
-"plc.ly\0"
-"erotica.hu\0"
-"eurovision\0"
-"jefferson.museum\0gs.bu.no\0"
-"uki.kumamoto.jp\0augustow.pl\0"
-"gs.ol.no\0sexy\0"
-"v\xc3\xa5ler.\xc3\xb8stfold.no\0"
-"ayase.kanagawa.jp\0"
-"vard\xc3\xb8.no\0"
-"recipes\0"
-"varese.it\0asahi.mie.jp\0"
-"yuzhno-sakhalinsk.ru\0"
-"pr.it\0nango.fukushima.jp\0"
-"oharu.aichi.jp\0wakasa.fukui.jp\0"
-"avianca\0"
-"govt.nz\0"
-"ruovat.no\0"
-"kujukuri.chiba.jp\0"
-"weather\0"
-"ut.us\0"
-"odawara.kanagawa.jp\0"
-"shriram\0"
-"niiza.saitama.jp\0"
-"siljan.no\0"
-"ae.org\0"
-"latina.it\0iwamizawa.hokkaido.jp\0"
-"itami.hyogo.jp\0"
-"stange.no\0ceo\0"
-"gifu.jp\0yamato.fukushima.jp\0toyo.kochi.jp\0"
-"cfa\0"
+"temasek\0"
+"fg.it\0setouchi.okayama.jp\0test.ru\0"
+"uri.arpa\0center\0"
+"esan.hokkaido.jp\0*.np\0"
+"\xe9\xab\x98\xe7\x9f\xa5.jp\0asahi.mie.jp\0hawaii.museum\0"
+"ostrowiec.pl\0"
+"srv.br\0chel.ru\0"
+"tsuru.yamanashi.jp\0"
+"yame.fukuoka.jp\0"
+"chikuma.nagano.jp\0"
+"dreamhosters.com\0"
+"environmentalconservation.museum\0valley.museum\0"
+"\xe5\x85\xac\xe7\x9b\x8a\0"
+"mallorca.museum\0"
+"ichinoseki.iwate.jp\0"
+"prato.it\0"
+"tatsuno.nagano.jp\0"
+"anthro.museum\0*.pg\0"
+"yamamoto.miyagi.jp\0gets-it.net\0"
+"kagamino.okayama.jp\0"
+"coop.km\0"
+"ayagawa.kagawa.jp\0"
+"valle.no\0"
"kamakura.kanagawa.jp\0"
-"cfd\0"
-"otago.museum\0"
-"baghdad.museum\0"
-"buy\0"
+"discover\0"
+"yonago.tottori.jp\0"
+"s\xc3\xb8r-varanger.no\0"
+"honjo.akita.jp\0"
+"inami.wakayama.jp\0k12.mt.us\0raid\0"
+"cbg.ru\0"
+"kitami.hokkaido.jp\0shingu.hyogo.jp\0nishinoomote.kagoshima.jp\0ostre-toten.no\0"
+"gorge.museum\0"
+"kunimi.fukushima.jp\0"
+"kitakata.fukushima.jp\0cyber.museum\0"
+"nakanojo.gunma.jp\0misaki.osaka.jp\0"
+"bmd.br\0tranibarlettaandria.it\0tourism.pl\0"
+"inami.toyama.jp\0"
+"reisen\0"
+"nsw.edu.au\0"
+"torsken.no\0uno\0"
+"farm.museum\0"
+"ab.ca\0boston\0"
+"archaeology.museum\0"
+"nom.km\0museumvereniging.museum\0"
+"bloomberg\0"
+"0.bg\0"
+"belluno.it\0"
+"\xe9\x9d\x92\xe6\xa3\xae.jp\0nishiwaki.hyogo.jp\0lacaixa\0uol\0"
+"nagasu.kumamoto.jp\0"
+"tatamotors\0"
+"vt.it\0gs.st.no\0"
+"navy\0"
+"kr.it\0"
+"fi.it\0"
+"ballangen.no\0"
+"sor-fron.no\0\xe5\x8f\xb0\xe6\xb9\xbe\0"
+"mod.gi\0nom.mg\0j\xc3\xb8rpeland.no\0"
+"intel\0"
+"ups\0"
+"kemerovo.ru\0taobao\0"
+"honeywell\0"
+"varoy.no\0"
+"pars\0land-4-sale.us\0"
+"paris\0"
+"modern.museum\0s\xc3\xb8rreisa.no\0living\0"
+"katsuyama.fukui.jp\0nom.ni\0"
+"military.museum\0"
+"rokunohe.aomori.jp\0"
+"granvin.no\0"
+"ino.kochi.jp\0"
+"kasuya.fukuoka.jp\0"
"vicenza.it\0"
-"ip6.arpa\0"
-"skedsmo.no\0l.se\0"
-"okinawa.jp\0marugame.kagawa.jp\0"
-"\xc3\xb8yer.no\0"
+"furubira.hokkaido.jp\0loabat.no\0"
+"taishi.hyogo.jp\0"
+"travelchannel\0"
+"wlocl.pl\0"
+"mypep.link\0"
+"ohi.fukui.jp\0k12.mn.us\0"
+"otoineppu.hokkaido.jp\0githubusercontent.com\0"
+"tado.mie.jp\0"
+"final\0"
+"nom.pa\0jamal.ru\0"
+"amusement.aero\0ltd.cy\0"
+"nom.pe\0psp.gov.pl\0"
+"kirkenes.no\0"
+"kagamiishi.fukushima.jp\0"
+"val-d-aosta.it\0kannami.shizuoka.jp\0auspost\0"
+"nom.pl\0"
+"fosnes.no\0"
+"opoczno.pl\0"
+"firebaseapp.com\0"
+"cologne\0"
+"akishima.tokyo.jp\0"
+"lib.ee\0"
+"tagami.niigata.jp\0horten.no\0from-nv.com\0"
+"fm.br\0"
+"sabae.fukui.jp\0omi.nagano.jp\0"
+"insure\0"
+"lib.vt.us\0"
+"nagasaki.nagasaki.jp\0"
+"fukui.fukui.jp\0is-a-teacher.com\0"
+"2.bg\0"
+"gallo\0"
+"*.ye\0scrapper-site.net\0github.io\0"
+"guide\0"
+"co.com\0"
+"fujimi.nagano.jp\0nom.re\0"
+"research.aero\0oizumi.gunma.jp\0"
+"vv.it\0muroran.hokkaido.jp\0s\xc3\xb8ndre-land.no\0"
+"ullensaker.no\0"
+"sandnessjoen.no\0nannestad.no\0"
+"equipment\0vet\0"
+"nikko.tochigi.jp\0\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0\0"
+"nom.ro\0winners\0"
+"*.kobe.jp\0"
+"talk\0"
+"geelvinck.museum\0"
+"ltd.gi\0"
+"plants.museum\0"
+"omaezaki.shizuoka.jp\0"
+"fujishiro.ibaraki.jp\0"
+"place\0"
+"imizu.toyama.jp\0marketing\0"
+"monza-brianza.it\0*.zw\0"
+"nakai.kanagawa.jp\0ddnsking.com\0"
+"romsa.no\0"
+"ltd.hk\0"
+"bieszczady.pl\0"
+"toyokawa.aichi.jp\0"
"aukra.no\0"
-"luzern.museum\0"
-"mihama.mie.jp\0"
-"fukushima.hokkaido.jp\0kembuchi.hokkaido.jp\0\xe6\x85\x88\xe5\x96\x84\0"
-"gsm.pl\0"
-"savannahga.museum\0"
-"sanjo.niigata.jp\0\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0"
-"lesja.no\0vik.no\0"
-"minamiizu.shizuoka.jp\0"
-"tran\xc3\xb8y.no\0"
-"lgbt\0"
-"joshkar-ola.ru\0"
-"hemsedal.no\0sarpsborg.no\0"
-"gob.ar\0calabria.it\0kurashiki.okayama.jp\0"
-"irkutsk.ru\0"
-"osaki.miyagi.jp\0ginowan.okinawa.jp\0neustar\0"
-"higashinaruse.akita.jp\0taketa.oita.jp\0nagatoro.saitama.jp\0"
-"ventures\0from-mo.com\0"
-"mishima.shizuoka.jp\0"
-"vaga.no\0"
-"sano.tochigi.jp\0"
-"k12.in.us\0"
-"gob.bo\0partners\0"
-"mediocampidano.it\0kumakogen.ehime.jp\0"
-"dyr\xc3\xb8y.no\0lier.no\0groks-this.info\0"
-"tsuruta.aomori.jp\0"
-"tosu.saga.jp\0office-on-the.net\0"
-"bzh\0"
-"grong.no\0"
-"attorney\0"
-"oji.nara.jp\0"
-"gob.cl\0"
-"froland.no\0meloy.no\0"
-"taranto.it\0uk.net\0"
-"\xe8\x8c\xa8\xe5\x9f\x8e.jp\0"
-"school.museum\0cc.il.us\0"
-"s.se\0"
-"marketplace.aero\0plc.uk\0"
-"ontario.museum\0"
-"ranzan.saitama.jp\0"
-"ct.us\0"
-"memorial\0"
-"gob.do\0media.hu\0lib.ks.us\0"
-"reise\0"
-"horonobe.hokkaido.jp\0"
-"gob.ec\0"
-"yamal.ru\0"
-"yamato.kanagawa.jp\0"
-"dr.na\0"
-"spydeberg.no\0"
-"zgora.pl\0"
-"verona.it\0"
-"gob.es\0"
-"jeju.kr\0"
-"chiropractic.museum\0doomdns.com\0"
-"kozaki.chiba.jp\0"
-"monza-brianza.it\0isen.kagoshima.jp\0glogow.pl\0"
-"uchiko.ehime.jp\0yasu.shiga.jp\0"
-"sandvik\0eu-west-1.compute.amazonaws.com\0"
-"suedtirol.it\0czest.pl\0"
-"kashiba.nara.jp\0yuza.yamagata.jp\0"
-"tondabayashi.osaka.jp\0toyama.toyama.jp\0"
-"\xe6\x95\x8e\xe8\x82\xb2.hk\0k12.vt.us\0"
-"astrakhan.ru\0nfshost.com\0"
-"!city.kobe.jp\0\xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\0"
-"enebakk.no\0"
-"travel\0"
-"sandiego.museum\0yokohama\0"
-"valleeaoste.it\0parma.it\0kochi.jp\0kunohe.iwate.jp\0"
-"izumisano.osaka.jp\0szczecin.pl\0"
-"sellsyourhome.org\0"
-"gob.gt\0"
-"dyndns-remote.com\0"
-"pippu.hokkaido.jp\0"
-"com\0z.se\0is-a-bookkeeper.com\0"
-"kotohira.kagawa.jp\0"
-"is-found.org\0"
-"gob.hn\0radom.pl\0"
-"christiansburg.museum\0"
-"tomigusuku.okinawa.jp\0swiebodzin.pl\0"
-"bihoro.hokkaido.jp\0minato.osaka.jp\0"
-"firenze.it\0"
-"pr.us\0"
-"takanabe.miyazaki.jp\0"
-"jinsekikogen.hiroshima.jp\0"
-"computer.museum\0"
-"dad\0"
-"kikuchi.kumamoto.jp\0sakura.tochigi.jp\0"
-"otsu.shiga.jp\0"
-"larvik.no\0\xd0\xb0\xd0\xba.\xd1\x81\xd1\x80\xd0\xb1\0"
-"berg.no\0cc.dc.us\0"
-"tateyama.toyama.jp\0"
-"is-an-actor.com\0"
-"rg.it\0"
-"kep.tr\0from-la.net\0"
-"ln.cn\0"
-"from-wv.com\0is-a-hunter.com\0"
-"day\0"
-"kokonoe.oita.jp\0"
-"wi.us\0"
-"schmidt\0"
-"6.bg\0portland.museum\0k12.wa.us\0"
-"crs\0csc\0"
-"groundhandling.aero\0cahcesuolo.no\0"
-"francaise.museum\0dyndns-free.com\0"
-"media.pl\0"
-"dr.tr\0b.ssl.fastly.net\0"
-"everbank\0"
-"kitakata.fukushima.jp\0"
-"montblanc\0"
-"tanohata.iwate.jp\0nishi.osaka.jp\0reisen\0"
-"rindal.no\0hamburg\0"
-"koriyama.fukushima.jp\0ena.gifu.jp\0"
-"foundation.museum\0"
-"axis.museum\0"
-"helsinki.museum\0cc.wa.us\0myphotos.cc\0"
-"vic.edu.au\0"
-"cloudapp.net\0"
-"yamaxun\0"
-"trading\0"
-"viterbo.it\0lg.jp\0ise.mie.jp\0"
-"lillesand.no\0"
-"lib.me.us\0"
-"okoppe.hokkaido.jp\0oyodo.nara.jp\0"
-"shinshinotsu.hokkaido.jp\0tobetsu.hokkaido.jp\0"
-"magadan.ru\0tennis\0"
-"\xe5\xba\x83\xe5\xb3\xb6.jp\0mobara.chiba.jp\0"
-"ltd.co.im\0"
-"fet.no\0elb.amazonaws.com\0"
-"kamikawa.hyogo.jp\0sango.nara.jp\0gob.mx\0"
-"alta.no\0"
-"sowa.ibaraki.jp\0"
-"g\xc3\xa1\xc5\x8bgaviika.no\0"
-"tattoo\0"
-"fg.it\0konan.shiga.jp\0"
-"off.ai\0country\0"
-"dev\0"
-"rn.it\0samukawa.kanagawa.jp\0"
-"baidu\0"
-"port.fr\0carbonia-iglesias.it\0miyoshi.tokushima.jp\0tabuse.yamaguchi.jp\0sosnowiec.pl\0adult\0"
-"in-addr.arpa\0gran.no\0"
-"gob.pa\0serveftp.org\0"
-"hidaka.hokkaido.jp\0"
-"nesseby.no\0"
-"satosho.okayama.jp\0"
-"gob.pe\0"
-"flights\0"
-"andriabarlettatrani.it\0"
-"nagato.yamaguchi.jp\0host\0"
-"nes.akershus.no\0gob.pk\0dvrdns.org\0"
-"miyota.nagano.jp\0"
-"embroidery.museum\0karasjohka.no\0"
-"from-ky.com\0"
-"trieste.it\0ashoro.hokkaido.jp\0"
-"dealer\0"
-"saigawa.fukuoka.jp\0"
-"spiegel\0"
-"atlanta.museum\0romskog.no\0"
-"l\xc3\xa4ns.museum\0evje-og-hornnes.no\0"
-"valled-aosta.it\0karasuyama.tochigi.jp\0"
-"ing.pa\0"
-"siracusa.it\0minano.saitama.jp\0"
-"isahaya.nagasaki.jp\0hagi.yamaguchi.jp\0"
-"!city.kitakyushu.jp\0uto.kumamoto.jp\0forex\0"
-"murayama.yamagata.jp\0virgin\0"
-"norddal.no\0cherkasy.ua\0codes\0"
-"misato.saitama.jp\0"
-"\xd9\x85\xd9\x88\xd9\x82\xd8\xb9\0"
-"iwata.shizuoka.jp\0"
-"tjome.no\0mango\0"
-"greta.fr\0"
-"eu.int\0minokamo.gifu.jp\0oi.kanagawa.jp\0"
-"accident-prevention.aero\0"
-"hirokawa.fukuoka.jp\0"
-"kainan.tokushima.jp\0"
-"gob.sv\0"
-"gub.uy\0"
-"black\0"
-"noda.chiba.jp\0"
-"tanagura.fukushima.jp\0abu.yamaguchi.jp\0"
-"is-a-painter.com\0"
-"ikeda.hokkaido.jp\0"
-"mitoyo.kagawa.jp\0"
-"gausdal.no\0"
-"kvafjord.no\0"
-"philadelphiaarea.museum\0santafe.museum\0cruises\0"
-"ringerike.no\0"
-"ven.it\0kamisato.saitama.jp\0przeworsk.pl\0"
-"\xe7\x82\xb9\xe7\x9c\x8b\0"
-"ask\xc3\xb8y.no\0"
-"suli.hu\0is-an-accountant.com\0"
-"lu.it\0me.it\0\xe7\xa7\xbb\xe5\x8a\xa8\0"
-"flanders.museum\0"
-"anquan\0"
-"s\xc3\xb8rreisa.no\0"
-"gob.ve\0"
-"treviso.it\0"
-"crew.aero\0"
-"jaguar\0"
-"barlettatraniandria.it\0happou.akita.jp\0"
-"annefrank.museum\0is-a-bulls-fan.com\0"
-"medecin.km\0jamal.ru\0dyndns-mail.com\0"
-"toyota.aichi.jp\0"
-"\xe6\x9c\xba\xe6\x9e\x84\0"
-"muos\xc3\xa1t.no\0"
-"monzaebrianza.it\0"
-"lg.ua\0"
-"dnp\0"
-"archaeological.museum\0"
-"ichikawa.chiba.jp\0kami.miyagi.jp\0"
-"media.museum\0"
-"ge.it\0unnan.shimane.jp\0walbrzych.pl\0"
-"namdalseid.no\0dog\0"
-"australia.museum\0\xe3\x82\xb0\xe3\x83\xbc\xe3\x82\xb0\xe3\x83\xab\0"
-"shop.ht\0ascolipiceno.it\0"
-"trading.aero\0shop.hu\0tr\xc3\xa6na.no\0"
-"wroc.pl\0"
-"kharkiv.ua\0"
-"slattum.no\0"
-"zj.cn\0"
-"amursk.ru\0"
-"miyazaki.jp\0nishinoomote.kagoshima.jp\0"
-"\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0"
-"ora.gunma.jp\0"
-"chattanooga.museum\0naturalhistorymuseum.museum\0uhren.museum\0"
-"emilia-romagna.it\0\xe9\xa6\x99\xe5\xb7\x9d.jp\0"
-"spb.ru\0"
-"kiso.nagano.jp\0"
-"gop.pk\0vote\0"
-"krokstadelva.no\0leitungsen.de\0"
-"ogi.saga.jp\0"
-"broker.aero\0"
-"asaka.saitama.jp\0"
-"dnipropetrovsk.ua\0"
-"minamiechizen.fukui.jp\0kagamiishi.fukushima.jp\0"
-"voto\0"
-"ostroda.pl\0"
-"noheji.aomori.jp\0stalowa-wola.pl\0"
-"jolster.no\0"
-"iijima.nagano.jp\0"
-"blog.br\0gs.cn\0tainai.niigata.jp\0kouzushima.tokyo.jp\0cheap\0"
-"kharkov.ua\0cc.wv.us\0"
-"s3-website-us-gov-west-1.amazonaws.com\0"
-"tj.cn\0onagawa.miyagi.jp\0"
-"naples.it\0miyako.iwate.jp\0yaita.tochigi.jp\0eat\0"
-"nord-aurdal.no\0servegame.org\0"
-"money\0blogdns.org\0"
-"lib.mn.us\0"
-"aoste.it\0"
-"westfalen.museum\0"
-"kasaoka.okayama.jp\0"
-"bc.ca\0"
-"shia\0"
-"*.kawasaki.jp\0"
-"skodje.no\0"
-"\xe7\x86\x8a\xe6\x9c\xac.jp\0"
-"varoy.no\0"
-"kaga.ishikawa.jp\0cloudfront.net\0"
-"ss.it\0"
-"shimane.jp\0ryokami.saitama.jp\0yamanakako.yamanashi.jp\0durban\0"
-"randaberg.no\0"
-"jobs.tt\0"
-"bjugn.no\0z-2.compute-1.amazonaws.com\0"
-"futaba.fukushima.jp\0"
-"kms.ru\0"
-"zamami.okinawa.jp\0"
-"laquila.it\0"
-"mobily\0"
-"club\0"
-"edu\0"
-"a.prod.fastly.net\0"
-"tamatsukuri.ibaraki.jp\0"
-"kamoenai.hokkaido.jp\0"
-"f\xc3\xb8rde.no\0"
-"al.it\0"
-"ube.yamaguchi.jp\0"
-"ms.it\0"
-"higashiagatsuma.gunma.jp\0"
-"pacific.museum\0"
-"gz.cn\0"
-"dyndns.org\0"
-"otari.nagano.jp\0"
-"miyazaki.miyazaki.jp\0"
-"texas.museum\0hosting\0"
-"mincom.tn\0"
-"huissier-justice.fr\0"
-"\xc3\xa5lg\xc3\xa5rd.no\0fusa.no\0lib.ny.us\0mtpc\0panerai\0"
-"chieti.it\0fujikawaguchiko.yamanashi.jp\0blogspot.com.ar\0"
-"gs.fm.no\0"
-"chikushino.fukuoka.jp\0"
-"blogspot.com.au\0"
-"iiyama.nagano.jp\0"
-"ms.kr\0"
-"tohma.hokkaido.jp\0tara.saga.jp\0"
-"is-gone.com\0"
-"friuli-vegiulia.it\0saito.miyazaki.jp\0"
-"ringebu.no\0"
-"bj.cn\0me.tz\0blogspot.com.br\0"
-"raisa.no\0me.uk\0"
-"tokuyama.yamaguchi.jp\0"
-"isesaki.gunma.jp\0"
-"kunst.museum\0"
-"childrens.museum\0me.us\0"
-"mihara.hiroshima.jp\0"
-"jogasz.hu\0"
-"sayama.saitama.jp\0"
-"k12.me.us\0"
-"bale.museum\0s\xc3\xb8r-odal.no\0"
-"cambridge.museum\0"
-"shimotsuke.tochigi.jp\0"
-"harima.hyogo.jp\0"
-"varggat.no\0barcelona\0"
-"kunimi.fukushima.jp\0"
-"gallery.museum\0"
-"kitayama.wakayama.jp\0"
-"nov.ru\0"
-"kasumigaura.ibaraki.jp\0taiki.mie.jp\0"
-"lierne.no\0is-a-doctor.com\0"
-"lidl\0"
-"al.no\0\xeb\x8b\xb7\xeb\x84\xb7\0dyndns-office.com\0"
-"kunisaki.oita.jp\0ricoh\0"
-"biev\xc3\xa1t.no\0"
-"yamagata.jp\0ibara.okayama.jp\0"
-"shirakawa.fukushima.jp\0"
-"is-a-nurse.com\0"
-"sagamihara.kanagawa.jp\0"
-"verdal.no\0"
-"fie.ee\0shoes\0"
-"blogspot.com.es\0"
-"tachikawa.tokyo.jp\0"
-"valley.museum\0oracle\0\xd0\xbe\xd0\xbd\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd\0"
-"yuzawa.niigata.jp\0higashiizumo.shimane.jp\0"
-"\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0"
-"katori.chiba.jp\0"
-"vic.gov.au\0center.museum\0ulan-ude.ru\0life\0"
-"machida.tokyo.jp\0better-than.tv\0"
-"hino.tokyo.jp\0"
-"tokoname.aichi.jp\0"
-"kawachinagano.osaka.jp\0"
-"minnesota.museum\0"
-"steinkjer.no\0"
-"trentino-stirol.it\0hamatonbetsu.hokkaido.jp\0"
-"reggio-calabria.it\0"
-"etnedal.no\0vdonsk.ru\0cc.sd.us\0"
-"plaza.museum\0"
-"nx.cn\0band\0"
-"flowers\0"
-"bank\0"
-"agematsu.nagano.jp\0"
-"passenger-association.aero\0mod.gi\0"
-"settsu.osaka.jp\0"
-"shimokitayama.nara.jp\0"
-"washingtondc.museum\0apartments\0is-a-blogger.com\0"
-"at-band-camp.net\0"
-"med.pro\0"
-"torino.it\0"
-"merseine.nu\0"
-"ine.kyoto.jp\0"
-"\xe9\xb3\xa5\xe5\x8f\x96.jp\0"
-"komforb.se\0"
-"porsgrunn.no\0"
-"noboribetsu.hokkaido.jp\0kameoka.kyoto.jp\0"
-"analytics\0"
-"cng.br\0"
-"vladikavkaz.ru\0cc.md.us\0"
-"page\0"
-"friuli-veneziagiulia.it\0shimamoto.osaka.jp\0uw.gov.pl\0"
-"microlight.aero\0canada.museum\0koebenhavn.museum\0"
-"olbia-tempio.it\0yukuhashi.fukuoka.jp\0allfinanz\0"
-"aerodrome.aero\0"
-"\xe6\x84\x9b\xe7\x9f\xa5.jp\0"
-"beppu.oita.jp\0nishiazai.shiga.jp\0"
-"minami.tokushima.jp\0kaneyama.yamagata.jp\0"
-"amber.museum\0from-ga.com\0"
-"kita.kyoto.jp\0"
-"sakyo.kyoto.jp\0fund\0"
-"modern.museum\0"
-"ebina.kanagawa.jp\0"
-"kuzbass.ru\0"
-"namegata.ibaraki.jp\0nowruz\0"
-"nc.tr\0"
-"like\0"
+"czest.pl\0"
+"nom.tm\0cloudapp.net\0"
+"\xe7\xbb\x84\xe7\xb9\x94.hk\0acct.pro\0"
+"juif.museum\0"
+"gose.nara.jp\0"
+"kakogawa.hyogo.jp\0"
+"taiwa.miyagi.jp\0"
+"club.aero\0fot.br\0"
+"lombardy.it\0tsumagoi.gunma.jp\0colonialwilliamsburg.museum\0"
+"ebetsu.hokkaido.jp\0"
+"serveftp.org\0"
+"n\xc3\xa1vuotna.no\0vig\0"
+"kepno.pl\0"
+"\xe5\xb1\xb1\xe5\x8f\xa3.jp\0"
+"nanjo.okinawa.jp\0"
+"koshimizu.hokkaido.jp\0"
+"agriculture.museum\0vin\0"
+"ens.tn\0"
+"kaminokawa.tochigi.jp\0vip\0"
+"yamagata.nagano.jp\0"
+"immobilien\0"
+"lundbeck\0"
+"\xd8\xa7\xd8\xb1\xd8\xa7\xd9\x85\xd9\x83\xd9\x88\0"
+"cherkasy.ua\0"
+"browsersafetymark.io\0"
+"namerikawa.toyama.jp\0"
+"oirm.gov.pl\0"
+"mizunami.gifu.jp\0nagiso.nagano.jp\0"
+"4.bg\0mesaverde.museum\0cloudfunctions.net\0"
+"kasuga.fukuoka.jp\0muncie.museum\0pioneer\0"
+"suzaka.nagano.jp\0kr.ua\0audi\0"
+"malbork.pl\0cc.nm.us\0"
+"cc.id.us\0"
+"ferrara.it\0"
+"recipes\0"
+"gobo.wakayama.jp\0"
+"ltd.lk\0"
+"fm.it\0roma.museum\0"
+"turek.pl\0"
+"anjo.aichi.jp\0"
+"vt.us\0"
+"artdeco.museum\0"
+"kita.tokyo.jp\0\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0"
+"ad.jp\0"
+"parts\0"
+"beer\0"
+"yasuoka.nagano.jp\0flatanger.no\0"
+"pilot.aero\0"
+"party\0"
+"hiratsuka.kanagawa.jp\0"
+"hemsedal.no\0"
+"nom.za\0"
+"vana\0"
+"miyashiro.saitama.jp\0strand.no\0"
+"kawanabe.kagoshima.jp\0smolensk.ru\0dynathome.net\0"
+"hdfc\0"
"valledaosta.it\0"
-"tromso.no\0"
-"fukui.jp\0"
-"b\xc3\xb8.telemark.no\0jpn.com\0"
-"kumagaya.saitama.jp\0"
+"nishihara.okinawa.jp\0"
+"yaita.tochigi.jp\0deal\0"
+"contemporary.museum\0"
+"minamifurano.hokkaido.jp\0"
+"kin.okinawa.jp\0engerdal.no\0"
+"games\0"
+"amber.museum\0"
+"simbirsk.ru\0"
+"sn\xc3\xa5""ase.no\0"
+"*.alces.network\0"
+"\xe6\x89\x8b\xe6\x9c\xba\0"
+"unzen.nagasaki.jp\0"
+"shikabe.hokkaido.jp\0hirado.nagasaki.jp\0no.eu.org\0"
+"minano.saitama.jp\0"
+"murata.miyagi.jp\0itau\0"
+"kitagawa.kochi.jp\0"
+"gr.com\0"
+"windmill.museum\0in-the-band.net\0"
+"express.aero\0\xd9\x82\xd8\xb7\xd8\xb1\0"
+"fm.no\0"
+"6.bg\0wajiki.tokushima.jp\0"
+"bonn.museum\0"
+"shiraoka.saitama.jp\0"
+"ah.cn\0"
+"pvt.ge\0anan.tokushima.jp\0"
+"bibai.hokkaido.jp\0katsuragi.wakayama.jp\0chuo.yamanashi.jp\0"
+"ra.it\0naroy.no\0buryatia.ru\0"
+"tatebayashi.gunma.jp\0wakasa.tottori.jp\0swatch\0"
+"oshino.yamanashi.jp\0dyndns-mail.com\0"
+"earth\0"
+"vestre-slidre.no\0"
+"cahcesuolo.no\0"
+"wios.gov.pl\0wanggou\0"
+"matsukawa.nagano.jp\0tyumen.ru\0"
+"kolobrzeg.pl\0"
+"morotsuka.miyazaki.jp\0olkusz.pl\0"
+"taxi\0"
+"bloxcms.com\0"
+"filatelia.museum\0vagsoy.no\0"
+"luroy.no\0"
+"yabuki.fukushima.jp\0sokndal.no\0"
+"pccw\0"
+"polkowice.pl\0"
+"name.hr\0"
+"vercelli.it\0"
+"aquila.it\0"
+"vdonsk.ru\0melbourne\0"
+"yamagata.gifu.jp\0"
+"oji.nara.jp\0snaase.no\0"
+"kakegawa.shizuoka.jp\0chocolate.museum\0"
+"kashiba.nara.jp\0"
+"hamatama.saga.jp\0kirovograd.ua\0"
+"lancia\0"
+"name.et\0"
+"wakasa.fukui.jp\0lans.museum\0"
+"freebox-os.com\0"
+"takanezawa.tochigi.jp\0ltd.uk\0"
+"beauty\0"
+"cng.br\0eiheiji.fukui.jp\0"
+"taishin.fukushima.jp\0versicherung\0"
+"nishiarita.saga.jp\0"
+"national.museum\0mattel\0wed\0"
+"\xe9\xa3\x9f\xe5\x93\x81\0"
+"kikuchi.kumamoto.jp\0"
+"nz.eu.org\0"
+"global.ssl.fastly.net\0"
+"sanuki.kagawa.jp\0"
+"iwate.iwate.jp\0"
+"gc.ca\0"
+"kakamigahara.gifu.jp\0selfip.info\0"
+"belau.pw\0"
+"kita.osaka.jp\0lib.ri.us\0"
+"8.bg\0"
+"museumcenter.museum\0"
"charter.aero\0"
-"gent\0"
-"barum.no\0nannestad.no\0homeunix.com\0"
-"medecin.fr\0"
-"bern.museum\0batsfjord.no\0al.us\0getmyip.com\0"
-"fan\0"
-"jetzt\0"
-"alaska.museum\0zhytomyr.ua\0ms.us\0nc.us\0"
-"\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0"
-"k12.ms.us\0k12.nc.us\0"
-"surgeonshall.museum\0"
-"g.bg\0from-me.org\0"
-"auction\0"
-"gs.mr.no\0"
-"osakikamijima.hiroshima.jp\0nanao.ishikawa.jp\0"
-"yanaizu.fukushima.jp\0muika.niigata.jp\0"
-"hjartdal.no\0"
-"ca.it\0kawakami.nagano.jp\0support\0"
-"co.ae\0"
-"co.ag\0"
-"naroy.no\0limo\0"
-"kawara.fukuoka.jp\0katsushika.tokyo.jp\0"
-"bungoono.oita.jp\0"
-"co.ao\0esq\0"
-"co.ba\0"
-"co.bb\0"
-"simple-url.com\0"
-"co.at\0etc.br\0"
-"\xc3\xa5krehamn.no\0vestre-slidre.no\0barclays\0link\0"
-"kiryu.gunma.jp\0hamamatsu.shizuoka.jp\0"
-"lib.or.us\0"
-"taira.toyama.jp\0"
-"co.bi\0"
-"kazimierz-dolny.pl\0"
-"krasnoyarsk.ru\0"
-"gucci\0"
-"wanggou\0"
-"co.ca\0"
-"yamatsuri.fukushima.jp\0"
-"paris.museum\0"
-"\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xae\0"
-"co.bw\0"
-"omi.nagano.jp\0"
-"co.ci\0aquarelle\0"
-"co.cl\0"
-"co.cm\0"
-"nakagawa.tokushima.jp\0"
-"zushi.kanagawa.jp\0tokorozawa.saitama.jp\0"
-"eus\0from-ne.com\0"
-"co.cr\0szkola.pl\0"
-"as.us\0"
-"oiso.kanagawa.jp\0xihuan\0blogspot.com.tr\0"
-"nj.us\0k12.as.us\0"
-"conference.aero\0"
-"n.bg\0"
-"shop.pl\0"
-"ca.na\0n\xc3\xa6r\xc3\xb8y.no\0"
-"takaishi.osaka.jp\0"
-"miyazu.kyoto.jp\0\xe5\x85\xac\xe7\x9b\x8a\0"
-"abr.it\0taiji.wakayama.jp\0"
-"v\xc3\xa5gs\xc3\xb8y.no\0bar.pro\0kchr.ru\0lanbib.se\0"
-"traeumtgerade.de\0"
-"ch.it\0"
-"cc.ak.us\0"
-"mypets.ws\0"
-"owani.aomori.jp\0"
-"iwate.jp\0"
-"\xe4\xb8\xad\xe5\x9b\xbd\0feedback\0"
-"dyndns-at-work.com\0"
-"even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0organic\0"
-"k12.il.us\0"
-"yabu.hyogo.jp\0"
-"stjohn.museum\0\xe4\xb8\xad\xe5\x9c\x8b\0"
-"davvesiida.no\0sucks\0temasek\0"
-"drammen.no\0"
-"aip.ee\0co.gg\0"
-"kumejima.okinawa.jp\0"
-"london\0"
-"tolga.no\0"
-"sakura.chiba.jp\0fit\0"
-"tjeldsund.no\0"
-"rec.br\0gushikami.okinawa.jp\0"
-"navigation.aero\0"
-"co.gy\0"
-"sanda.hyogo.jp\0daigo.ibaraki.jp\0uenohara.yamanashi.jp\0"
-"az.us\0"
-"nakatane.kagoshima.jp\0"
-"labor.museum\0wang\0"
-"matera.it\0shirataka.yamagata.jp\0swatch\0selfip.net\0"
+"name.cy\0berlin.museum\0"
+"suzu.ishikawa.jp\0kv.ua\0"
+"sa.gov.pl\0"
+"kharkov.ua\0cc.co.us\0"
+"government.aero\0"
+"rc.it\0"
+"name.eg\0norfolk.museum\0"
+"oxford.museum\0"
+"salzburg.museum\0"
+"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0"
+"\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"chicago.museum\0"
+"anan.nagano.jp\0"
+"hidaka.saitama.jp\0"
+"minamidaito.okinawa.jp\0"
+"name.az\0\xe5\xb1\xb1\xe5\xbd\xa2.jp\0tienda\0"
+"badajoz.museum\0\xe9\x9b\x86\xe5\x9b\xa2\0"
+"net-freaks.com\0"
+"trentinos-tirol.it\0"
+"wmflabs.org\0"
+"rockart.museum\0swidnica.pl\0makeup\0"
+"univ.sn\0dell\0"
+"settlers.museum\0"
+"madrid.museum\0"
+"tsurugi.ishikawa.jp\0gran.no\0"
+"imb.br\0"
+"nakagawa.hokkaido.jp\0manno.kagawa.jp\0"
+"trust.museum\0\xd8\xb3\xd9\x88\xd8\xaf\xd8\xa7\xd9\x86\0"
+"k12.nv.us\0win\0"
"fashion\0"
-"pars\0"
-"yugawa.fukushima.jp\0"
-"rec.co\0k12.ny.us\0"
-"co.id\0"
-"co.hu\0lib.vt.us\0"
-"jelenia-gora.pl\0"
-"u.bg\0"
-"\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0"
-"ito.shizuoka.jp\0maison\0"
-"miyada.nagano.jp\0"
-"co.im\0yakutia.ru\0"
-"co.in\0"
-"live\0"
-"venice.it\0"
-"co.ir\0aizubange.fukushima.jp\0shizuoka.shizuoka.jp\0principe.st\0"
-"co.it\0"
-"co.je\0cc.ar.us\0review\0"
-"heguri.nara.jp\0center\0from-ny.net\0"
-"sanfrancisco.museum\0"
-"akune.kagoshima.jp\0"
-"casadelamoneda.museum\0edeka\0"
-"\xe7\x9f\xb3\xe5\xb7\x9d.jp\0fukuchiyama.kyoto.jp\0"
-"nissedal.no\0ivanovo.ru\0"
-"co.jp\0"
-"ia.us\0"
-"vantaa.museum\0"
-"yanagawa.fukuoka.jp\0"
-"aeroclub.aero\0tx.us\0"
-"urbinopesaro.it\0"
-"army\0fly\0"
-"fukudomi.saga.jp\0oguni.yamagata.jp\0"
-"val-d-aosta.it\0"
-"historyofscience.museum\0tranby.no\0"
-"andasuolo.no\0"
-"yoshinogari.saga.jp\0co.kr\0"
-"championship.aero\0co.lc\0public.museum\0"
-"nerima.tokyo.jp\0"
-"moscow.museum\0cymru\0"
-"site\0"
-"namerikawa.toyama.jp\0"
-"cc.hi.us\0"
-"tsuruga.fukui.jp\0"
-"arpa\0news\0nokia\0"
-"co.ma\0vf.no\0"
-"verm\xc3\xb6gensberater\0"
-"co.ls\0cmw.ru\0ca.us\0"
-"co.me\0"
-"grandrapids.museum\0nuremberg.museum\0oh.us\0"
-"shibukawa.gunma.jp\0"
-"fujioka.gunma.jp\0asahi.yamagata.jp\0oshino.yamanashi.jp\0"
-"foo\0quebec\0"
-"co.na\0"
-"campidano-medio.it\0"
-"austin.museum\0"
-"\xe7\xbb\x84\xe7\xbb\x87.hk\0co.mu\0"
-"\xe7\xa6\x8f\xe5\xb3\xb6.jp\0"
-"co.mw\0"
-"yatomi.aichi.jp\0daejeon.kr\0"
-"steigen.no\0"
-"ogimi.okinawa.jp\0"
-"equipment.aero\0settlers.museum\0"
-"psc.br\0nara.jp\0tsugaru.aomori.jp\0co.nl\0"
-"co.no\0"
-"university.museum\0"
-"nakagawa.nagano.jp\0email\0"
-"sveio.no\0"
-"ed.ao\0donostia.museum\0kommunalforbund.se\0"
-"cleaning\0technology\0"
-"co.nz\0gal\0"
-"forsale\0"
-"carraramassa.it\0"
-"co.om\0"
-"emiliaromagna.it\0"
-"birdart.museum\0"
-"scrapper-site.net\0"
-"oceanographic.museum\0"
-"aca.pro\0karelia.ru\0"
-"atsuma.hokkaido.jp\0hidaka.wakayama.jp\0"
-"handson.museum\0"
-"chuo.yamanashi.jp\0frl\0"
-"co.pl\0"
-"gjerstad.no\0"
-"co.pn\0"
+"agano.niigata.jp\0"
+"mol.it\0kamiichi.toyama.jp\0lyngdal.no\0"
+"wuoz.gov.pl\0best\0eating-organic.net\0"
+"tozawa.yamagata.jp\0"
+"meeres.museum\0"
+"indian.museum\0"
+"kutchan.hokkaido.jp\0kosuge.yamanashi.jp\0snoasa.no\0"
+"higashi.okinawa.jp\0meguro.tokyo.jp\0origins\0\xd9\x83\xd8\xa7\xd8\xab\xd9\x88\xd9\x84\xd9\x8a\xd9\x83\0"
+"auto\0"
"bearalvahki.no\0"
-"piemonte.it\0"
-"ed.ci\0amsterdam.museum\0hk.com\0"
-"taishi.hyogo.jp\0"
-"arte\0"
-"jor.br\0shinshiro.aichi.jp\0kyowa.akita.jp\0"
-"g.se\0"
-"vt.it\0koto.shiga.jp\0um.gov.pl\0"
-"co.pw\0cbg.ru\0"
-"ed.cr\0vald-aosta.it\0"
-"blogspot.re\0"
-"midatlantic.museum\0"
-"modum.no\0"
-"blogspot.ro\0"
-"riodejaneiro.museum\0"
-"gdn\0"
-"cisco\0blogspot.ru\0blogspot.se\0"
-"brand.se\0bbva\0gea\0blogspot.sg\0"
-"utah.museum\0porsangu.no\0"
-"sakai.osaka.jp\0"
-"linz.museum\0co.rs\0blogspot.sk\0"
-"trentino-a-adige.it\0aero.tt\0"
-"realestate.pl\0"
-"bjark\xc3\xb8y.no\0co.rw\0"
-"pt.it\0esan.hokkaido.jp\0"
-"hsbc\0"
-"kawanishi.yamagata.jp\0rec.nf\0"
-"blogspot.td\0"
-"taxi.aero\0"
-"kamigori.hyogo.jp\0aoki.nagano.jp\0"
-"ferrero\0lotte\0"
-"whaling.museum\0"
-"\xe9\xab\x98\xe7\x9f\xa5.jp\0blogdns.net\0"
-"broadway\0"
-"co.st\0\xe5\xb9\xbf\xe4\xb8\x9c\0"
-"aero.mv\0"
-"ama.aichi.jp\0iwama.ibaraki.jp\0uruma.okinawa.jp\0hamada.shimane.jp\0co.th\0"
-"lotto\0"
-"co.sz\0co.tj\0"
-"is-not-certified.com\0"
-"samegawa.fukushima.jp\0hatogaya.saitama.jp\0"
-"co.tm\0"
-"zoological.museum\0evenes.no\0blogspot.tw\0"
-"b\xc3\xb8.nordland.no\0n\xc3\xb8tter\xc3\xb8y.no\0co.ua\0"
-"nishio.aichi.jp\0shibecha.hokkaido.jp\0"
-"magazine.aero\0"
-"co.tt\0\xe4\xb8\x96\xe7\x95\x8c\0"
-"\xeb\x8b\xb7\xec\xbb\xb4\0"
-"nordreisa.no\0co.ug\0"
-"kvalsund.no\0ggee\0"
-"co.tz\0blogspot.mr\0"
-"jobs\0giessen.museum\0co.uk\0verm\xc3\xb6gensberatung\0"
-"n.se\0"
-"yamamoto.miyagi.jp\0"
-"asia\0uzhgorod.ua\0"
-"blogspot.mx\0"
-"burghof.museum\0"
-"co.us\0"
-"higashiura.aichi.jp\0blogspot.nl\0"
-"columbus.museum\0co.ve\0"
-"nnov.ru\0yachts\0blogspot.no\0"
-"bjerkreim.no\0co.vi\0"
-"co.uz\0"
-"sekigahara.gifu.jp\0"
-"osteroy.no\0\xe9\xa6\x99\xe6\xb8\xaf\0"
-"kinko.kagoshima.jp\0"
-"tsubetsu.hokkaido.jp\0"
-"eiheiji.fukui.jp\0yawata.kyoto.jp\0yamatokoriyama.nara.jp\0"
-"sasayama.hyogo.jp\0"
-"equipment\0"
-"takamori.nagano.jp\0"
-"hobol.no\0university\0"
-"itabashi.tokyo.jp\0"
-"school.na\0chel.ru\0"
-"kuroishi.aomori.jp\0"
-"timekeeping.museum\0\xe6\xb7\xa1\xe9\xa9\xac\xe9\x94\xa1\0"
-"reggiocalabria.it\0"
-"rec.ro\0"
-"alsace\0"
-"royken.no\0"
-"ed.jp\0gunma.jp\0"
-"amusement.aero\0giehtavuoatna.no\0"
-"blogspot.pt\0"
-"*.bd\0hokuryu.hokkaido.jp\0"
-"and\xc3\xb8y.no\0"
-"trd.br\0"
-"osakasayama.osaka.jp\0"
-"systems\0"
-"asahikawa.hokkaido.jp\0"
-"takazaki.miyazaki.jp\0school.nz\0"
-"\xe5\x95\x86\xe6\xa5\xad.tw\0"
-"*.bn\0tosashimizu.kochi.jp\0dabur\0"
-"cranbrook.museum\0usa.museum\0cv.ua\0"
-"daisen.akita.jp\0shirosato.ibaraki.jp\0"
-"perugia.it\0blogspot.it\0"
-"atsugi.kanagawa.jp\0"
-"oyabe.toyama.jp\0"
-"skedsmokorset.no\0cc.in.us\0gle\0"
-"*.ck\0hurdal.no\0u.se\0"
-"bunkyo.tokyo.jp\0"
-"mad.museum\0"
-"blogspot.jp\0"
-"eco.br\0"
-"wa.gov.au\0k\xc3\xa5""fjord.no\0\xc3\xb8rland.no\0space\0"
-"oita.jp\0mukawa.hokkaido.jp\0"
-"lib.la.us\0"
-"bialystok.pl\0szczytno.pl\0democrat\0"
-"*.cy\0webhop.org\0"
-"neyagawa.osaka.jp\0"
-"horology.museum\0audio\0commbank\0"
-"ashiya.fukuoka.jp\0"
-"hiratsuka.kanagawa.jp\0"
-"grimstad.no\0rec.ve\0"
-"blogspot.kr\0"
-"tokyo\0"
-"dellogliastra.it\0shiiba.miyazaki.jp\0"
-"gmo\0"
-"yaotsu.gifu.jp\0"
-"\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9\0"
-"kaisei.kanagawa.jp\0"
-"tonsberg.no\0"
-"gmx\0"
-"b\xc3\xa5tsfjord.no\0law.pro\0suzuki\0"
-"oristano.it\0"
-"tsukui.kanagawa.jp\0yokkaichi.mie.jp\0"
-"*.er\0"
-"capebreton.museum\0n\xc3\xa1vuotna.no\0sunndal.no\0"
-"nishi.fukuoka.jp\0"
-"otsuki.kochi.jp\0"
-"*.fj\0*.kobe.jp\0zakopane.pl\0"
-"*.fk\0vt.us\0"
-"lig.it\0nishikatsura.yamanashi.jp\0"
-"valdaosta.it\0takahata.yamagata.jp\0"
-"1.bg\0"
-"podhale.pl\0capital\0"
-"kamo.niigata.jp\0cool\0"
-"goo\0"
-"gop\0"
-"larsson.museum\0"
-"coop\0"
-"blogspot.fi\0"
-"got\0"
-"gov\0piacenza.it\0hisayama.fukuoka.jp\0"
-"cincinnati.museum\0"
-"frog.museum\0hitachi\0"
-"kr.it\0fujinomiya.shizuoka.jp\0blogspot.fr\0"
-"vistaprint\0"
-"kodaira.tokyo.jp\0"
-"*.gu\0ed.pw\0nsn.us\0"
-"hu.net\0"
-"fi.cr\0horokanai.hokkaido.jp\0gwangju.kr\0"
-"yamagata.nagano.jp\0"
-"lubin.pl\0blogspot.gr\0"
-"modelling.aero\0rendalen.no\0kostroma.ru\0from-sc.com\0"
-"tarnobrzeg.pl\0"
-"ivgu.no\0comsec\0"
-"broadcast.museum\0"
-"buryatia.ru\0blogspot.hk\0"
-"kl\xc3\xa6""bu.no\0"
-"*.il\0"
-"study\0"
-"kameyama.mie.jp\0wakasa.tottori.jp\0"
-"bas.it\0kanzaki.saga.jp\0"
-"cc.de.us\0blogspot.hu\0blogspot.ie\0"
-"hasama.oita.jp\0"
-"ri.it\0dynalias.net\0"
-"\xe6\x94\xbf\xe5\x8a\xa1\0"
-"toscana.it\0shikokuchuo.ehime.jp\0"
-"aknoluokta.no\0sor-varanger.no\0"
-"kasamatsu.gifu.jp\0kawaue.gifu.jp\0blogspot.in\0"
-"*.jm\0"
-"ina.nagano.jp\0"
-"venezia.it\0misato.shimane.jp\0"
-"is-very-good.org\0blogspot.be\0"
-"*.ke\0tananger.no\0lib.sc.us\0dating\0"
-"kakegawa.shizuoka.jp\0skin\0"
-"8.bg\0"
-"omachi.nagano.jp\0ichikawamisato.yamanashi.jp\0*.kh\0blogspot.bj\0"
-"yashio.saitama.jp\0"
-"blogspot.ca\0"
-"arq.br\0takayama.gunma.jp\0"
-"kagoshima.kagoshima.jp\0cancerresearch\0"
-"miami\0"
-"mihama.aichi.jp\0blogspot.cf\0"
-"blogspot.ch\0"
-"*.kw\0bindal.no\0"
-"li.it\0"
-"nationalfirearms.museum\0"
-"rochester.museum\0"
-"shibata.miyagi.jp\0"
-"blogspot.de\0"
-"blogspot.cv\0"
-"leirvik.no\0"
-"blogspot.cz\0"
-"civilwar.museum\0krodsherad.no\0eng.pro\0blogspot.dk\0"
-"kamiamakusa.kumamoto.jp\0"
-"nic.in\0umbria.it\0"
-"*.mm\0stv.ru\0"
-"noto.ishikawa.jp\0webhop.biz\0"
-"kiyosato.hokkaido.jp\0ueda.nagano.jp\0miyake.nara.jp\0"
-"scienceandhistory.museum\0"
-"nittedal.no\0"
-"gorge.museum\0"
-"\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0"
-"*.ni\0"
-"fi.it\0*.mz\0\xd8\xa7\xd8\xb1\xd8\xa7\xd9\x85\xd9\x83\xd9\x88\0"
-"vibovalentia.it\0"
-"*.np\0"
-"sigdal.no\0skype\0"
-"ono.fukushima.jp\0"
-"mutsu.aomori.jp\0omachi.saga.jp\0"
-"yn.cn\0"
-"rost.no\0company\0"
-"trainer.aero\0scienceandindustry.museum\0"
-"kitaakita.akita.jp\0"
-"entertainment.aero\0"
-"fuettertdasnetz.de\0"
-"contemporary.museum\0"
-"higashiyodogawa.osaka.jp\0"
-"*.pg\0"
-"aioi.hyogo.jp\0"
-"newyork.museum\0\xd0\xbe\xd0\xb4.\xd1\x81\xd1\x80\xd0\xb1\0"
-"does-it.net\0"
-"her\xc3\xb8y.nordland.no\0"
-"sosa.chiba.jp\0uryu.hokkaido.jp\0hirakata.osaka.jp\0"
-"valle.no\0"
-"circus.museum\0"
-"citic\0"
-"sn.cn\0"
-"fukuyama.hiroshima.jp\0hiv\0"
-"lenvik.no\0"
-"nieruchomosci.pl\0"
-"higashihiroshima.hiroshima.jp\0ohtawara.tochigi.jp\0"
-"lib.nj.us\0"
-"direct\0"
-"blogspot.ae\0"
-"kamaishi.iwate.jp\0omura.nagasaki.jp\0kaminoyama.yamagata.jp\0"
-"s\xc3\xa1lat.no\0"
-"towada.aomori.jp\0"
-"klabu.no\0"
-"padua.it\0"
-"kr.ua\0"
-"bio.br\0morimachi.shizuoka.jp\0"
-"assisi.museum\0"
-"tone.ibaraki.jp\0tsuno.miyazaki.jp\0"
-"sells-for-less.com\0"
-"hichiso.gifu.jp\0czeladz.pl\0"
-"hvaler.no\0"
-"paragliding.aero\0asnes.no\0"
-"tako.chiba.jp\0"
-"house.museum\0"
-"anan.nagano.jp\0mihama.wakayama.jp\0"
-"heritage.museum\0andebu.no\0from-wy.com\0"
-"service.gov.uk\0"
-"chambagri.fr\0"
-"istmein.de\0"
-"myoko.niigata.jp\0from-az.net\0"
-"wy.us\0"
-"yamakita.kanagawa.jp\0"
-"garden.museum\0"
-"\xe5\x92\x8c\xe6\xad\x8c\xe5\xb1\xb1.jp\0"
-"qld.au\0gok.pk\0"
-"schokoladen.museum\0"
-"southcarolina.museum\0"
-"nativeamerican.museum\0s3-website-us-west-1.amazonaws.com\0is-a-personaltrainer.com\0"
-"hirosaki.aomori.jp\0"
-"homes\0"
-"fineart.museum\0"
-"crown\0"
-"nrw.museum\0"
-"from-in.com\0"
-"kaufen\0"
-"grue.no\0lib.az.us\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0"
-"far.br\0arita.saga.jp\0"
-"bronnoy.no\0lipetsk.ru\0ri.us\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0is-a-conservative.com\0"
-"honbetsu.hokkaido.jp\0"
-"lib.ne.us\0selfip.org\0"
-"tmp.br\0wakayama.jp\0"
-"lodingen.no\0"
-"moriya.ibaraki.jp\0shioya.tochigi.jp\0"
-"dolls.museum\0health.museum\0"
-"trentinoaadige.it\0"
-"ascoli-piceno.it\0fukushima.fukushima.jp\0"
-"takasaki.gunma.jp\0"
-"how\0"
-"bandai.fukushima.jp\0takaharu.miyazaki.jp\0"
-"muenster.museum\0"
-"statoil\0"
-"himeji.hyogo.jp\0"
-"asti.it\0"
-"certification.aero\0santabarbara.museum\0yorkshire.museum\0sandnessjoen.no\0hasvik.no\0"
-"bus.museum\0africa.com\0"
-"ky.us\0"
-"sennan.osaka.jp\0nic.tj\0"
-"lib.gu.us\0"
-"k12.la.us\0"
-"konyvelo.hu\0trolley.museum\0bradesco\0is-a-liberal.com\0"
-"mihama.chiba.jp\0misato.miyagi.jp\0madrid\0"
-"yalta.ua\0accenture\0"
-"b\xc3\xa1l\xc3\xa1t.no\0"
-"fujisawa.iwate.jp\0saiki.oita.jp\0"
-"countryestate.museum\0*.ye\0"
-"yuu.yamaguchi.jp\0"
-"airguard.museum\0horten.no\0"
-"lukow.pl\0"
-"nhs.uk\0"
-"forum.hu\0"
-"ag.it\0chiryu.aichi.jp\0nankoku.kochi.jp\0"
-"asahi.ibaraki.jp\0"
-"tr\xc3\xb8gstad.no\0"
-"mn.it\0setouchi.okayama.jp\0"
-"utsira.no\0cc.la.us\0*.za\0ibm\0"
-"uda.nara.jp\0kitagata.saga.jp\0arakawa.saitama.jp\0\xe5\x95\x86\xe5\x9f\x8e\0"
-"hole.no\0"
-"he.cn\0shiraoi.hokkaido.jp\0mimata.miyazaki.jp\0"
-"shingo.aomori.jp\0tateyama.chiba.jp\0kaita.hiroshima.jp\0"
-"database.museum\0vodka\0"
-"lardal.no\0ice\0"
-"spy.museum\0*.zm\0"
-"hiraizumi.iwate.jp\0"
-"airtraffic.aero\0"
-"trentinoaltoadige.it\0"
-"enna.it\0"
-"association.aero\0*.zw\0"
-"funagata.yamagata.jp\0"
-"kaluga.ru\0clinic\0icu\0"
-"okayama.okayama.jp\0"
-"is-a-techie.com\0"
-"nl.ca\0virtuel.museum\0"
-"waw.pl\0"
-"is-a-rockstar.com\0"
-"higashimatsushima.miyagi.jp\0iruma.saitama.jp\0"
-"yusui.kagoshima.jp\0kalisz.pl\0"
-"from-va.com\0"
-"hiranai.aomori.jp\0"
-"te.it\0beer\0"
-"mallorca.museum\0svelvik.no\0"
-"career\0"
-"tver.ru\0"
+"ah.no\0"
+"amsterdam.museum\0"
+"collegefan.org\0"
+"ln.cn\0yoshioka.gunma.jp\0"
+"toyone.aichi.jp\0"
+"webhop.net\0"
+"sanjo.niigata.jp\0eastcoast.museum\0"
+"re.it\0h\xc3\xb8yanger.no\0"
+"kuchinotsu.nagasaki.jp\0"
+"zara\0"
+"okagaki.fukuoka.jp\0"
+"date.fukushima.jp\0"
+"accident-prevention.aero\0design.aero\0"
+"kyoto.jp\0homesense\0piaget\0wme\0"
+"hanyu.saitama.jp\0nuremberg.museum\0utah.museum\0"
+"historichouses.museum\0"
+"moscow.museum\0stateofdelaware.museum\0"
+"from-al.com\0"
+"denmark.museum\0"
+"sukumo.kochi.jp\0"
+"nexus\0"
+"trentino-altoadige.it\0"
+"smile\0"
+"iwama.ibaraki.jp\0karikatur.museum\0\xe6\x9b\xb8\xe7\xb1\x8d\0"
+"re.kr\0"
+"suisse.museum\0"
+"from-ca.com\0"
+"usantiques.museum\0"
+"vyatka.ru\0\xe5\x8f\xb0\xe7\x81\xa3\0guge\0"
+"\xce\xb5\xce\xbb\0"
+"yusui.kagoshima.jp\0sytes.net\0"
+"shimotsuke.tochigi.jp\0"
+"k12.oh.us\0stufftoread.com\0"
+"hikimi.shimane.jp\0"
+"qc.com\0googleapis.com\0"
+"goodyear\0"
+"nalchik.ru\0"
+"desi\0"
+"bremanger.no\0"
+"chuo.tokyo.jp\0"
+"wow\0"
+"christmas\0cricket\0"
+"kchr.ru\0"
+"bale.museum\0"
+"nalchik.su\0"
+"ogawa.ibaraki.jp\0"
+"toda.saitama.jp\0\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0surgery\0"
+"kita.kyoto.jp\0gjesdal.no\0energy\0"
+"zachpomor.pl\0"
+"\xe8\xb4\xad\xe7\x89\xa9\0"
+"tydal.no\0wielun.pl\0"
+"otaki.nagano.jp\0"
+"sasayama.hyogo.jp\0fed.us\0"
+"cc.tn.us\0"
+"cc.il.us\0"
+"motoyama.kochi.jp\0broadcast.museum\0cc.dc.us\0"
+"suwa.nagano.jp\0"
+"voagat.no\0"
+"off.ai\0nagara.chiba.jp\0"
+"rg.it\0\xe0\xb8\x84\xe0\xb8\xad\xe0\xb8\xa1\0"
+"os.hordaland.no\0hu.net\0"
+"ge.it\0"
+"al.it\0"
+"olecko.pl\0"
+"shibukawa.gunma.jp\0"
+"bergamo.it\0"
+"mielno.pl\0ga.us\0"
};
static const quint16 tldChunkCount = 2;
-static const quint32 tldChunks[] = {65528, 84704};
+static const quint32 tldChunks[] = {65512, 93761};
QT_END_NAMESPACE
diff --git a/src/corelib/io/qurltlds_p.h.INFO b/src/corelib/io/qurltlds_p.h.INFO
index 7e5c0bb19f..3f3d808a21 100644
--- a/src/corelib/io/qurltlds_p.h.INFO
+++ b/src/corelib/io/qurltlds_p.h.INFO
@@ -9,8 +9,8 @@ Those arrays in qurltlds_p.h are derived from the Public
Suffix List ([2]), which was originally provided by
Jo Hermans <jo.hermans@gmail.com>.
-The file qurltlds_p.h was last generated Wednesday,
-February 11th 14:36 2015.
+The file qurltlds_p.h was last generated Thursday,
+October 20th 8:40 2016.
----
[1] list: http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1
diff --git a/src/corelib/json/qjson.cpp b/src/corelib/json/qjson.cpp
index 4b98ef076c..5286c4cc8e 100644
--- a/src/corelib/json/qjson.cpp
+++ b/src/corelib/json/qjson.cpp
@@ -135,10 +135,12 @@ bool Data::valid() const
return false;
bool res = false;
- if (header->root()->is_object)
- res = static_cast<Object *>(header->root())->isValid();
+ Base *root = header->root();
+ int maxSize = alloc - sizeof(Header);
+ if (root->is_object)
+ res = static_cast<Object *>(root)->isValid(maxSize);
else
- res = static_cast<Array *>(header->root())->isValid();
+ res = static_cast<Array *>(root)->isValid(maxSize);
return res;
}
@@ -223,9 +225,9 @@ int Object::indexOf(QLatin1String key, bool *exists) const
return min;
}
-bool Object::isValid() const
+bool Object::isValid(int maxSize) const
{
- if (tableOffset + length*sizeof(offset) > size)
+ if (size > (uint)maxSize || tableOffset + length*sizeof(offset) > size)
return false;
QString lastKey;
@@ -234,8 +236,7 @@ bool Object::isValid() const
if (entryOffset + sizeof(Entry) >= tableOffset)
return false;
Entry *e = entryAt(i);
- int s = e->size();
- if (table()[i] + s > tableOffset)
+ if (!e->isValid(tableOffset - table()[i]))
return false;
QString key = e->key();
if (key < lastKey)
@@ -249,9 +250,9 @@ bool Object::isValid() const
-bool Array::isValid() const
+bool Array::isValid(int maxSize) const
{
- if (tableOffset + length*sizeof(offset) > size)
+ if (size > (uint)maxSize || tableOffset + length*sizeof(offset) > size)
return false;
for (uint i = 0; i < length; ++i) {
@@ -359,12 +360,12 @@ bool Value::isValid(const Base *b) const
int s = usedStorage(b);
if (!s)
return true;
- if (s < 0 || offset + s > (int)b->tableOffset)
+ if (s < 0 || s > (int)b->tableOffset - offset)
return false;
if (type == QJsonValue::Array)
- return static_cast<Array *>(base(b))->isValid();
+ return static_cast<Array *>(base(b))->isValid(s);
if (type == QJsonValue::Object)
- return static_cast<Object *>(base(b))->isValid();
+ return static_cast<Object *>(base(b))->isValid(s);
return true;
}
diff --git a/src/corelib/json/qjson_p.h b/src/corelib/json/qjson_p.h
index 8eeff01b59..b1b03601b2 100644
--- a/src/corelib/json/qjson_p.h
+++ b/src/corelib/json/qjson_p.h
@@ -310,12 +310,19 @@ public:
explicit String(const char *data) { d = (Data *)data; }
struct Data {
- qle_int length;
+ qle_uint length;
qle_ushort utf16[1];
};
Data *d;
+ int byteSize() const { return sizeof(uint) + sizeof(ushort) * d->length; }
+ bool isValid(int maxSize) const {
+ // Check byteSize() <= maxSize, avoiding integer overflow
+ maxSize -= sizeof(uint);
+ return maxSize >= 0 && uint(d->length) <= maxSize / sizeof(ushort);
+ }
+
inline String &operator=(const QString &str)
{
d->length = str.length();
@@ -384,11 +391,16 @@ public:
explicit Latin1String(const char *data) { d = (Data *)data; }
struct Data {
- qle_short length;
+ qle_ushort length;
char latin1[1];
};
Data *d;
+ int byteSize() const { return sizeof(ushort) + sizeof(char)*(d->length); }
+ bool isValid(int maxSize) const {
+ return byteSize() <= maxSize;
+ }
+
inline Latin1String &operator=(const QString &str)
{
int len = d->length = str.length();
@@ -590,7 +602,7 @@ public:
int indexOf(const QString &key, bool *exists) const;
int indexOf(QLatin1String key, bool *exists) const;
- bool isValid() const;
+ bool isValid(int maxSize) const;
};
@@ -600,7 +612,7 @@ public:
inline Value at(int i) const;
inline Value &operator [](int i);
- bool isValid() const;
+ bool isValid(int maxSize) const;
};
@@ -655,12 +667,12 @@ public:
// key
// value data follows key
- int size() const {
+ uint size() const {
int s = sizeof(Entry);
if (value.latinKey)
- s += sizeof(ushort) + qFromLittleEndian(*(ushort *) ((const char *)this + sizeof(Entry)));
+ s += shallowLatin1Key().byteSize();
else
- s += sizeof(uint) + sizeof(ushort)*qFromLittleEndian(*(int *) ((const char *)this + sizeof(Entry)));
+ s += shallowKey().byteSize();
return alignedSize(s);
}
@@ -686,6 +698,15 @@ public:
return shallowKey().toString();
}
+ bool isValid(int maxSize) const {
+ if (maxSize < (int)sizeof(Entry))
+ return false;
+ maxSize -= sizeof(Entry);
+ if (value.latinKey)
+ return shallowLatin1Key().isValid(maxSize);
+ return shallowKey().isValid(maxSize);
+ }
+
bool operator ==(const QString &key) const;
inline bool operator !=(const QString &key) const { return !operator ==(key); }
inline bool operator >=(const QString &key) const;
@@ -698,8 +719,6 @@ public:
bool operator >=(const Entry &other) const;
};
-inline bool operator!=(const Entry &lhs, const Entry &rhs) { return !(lhs == rhs); }
-
inline bool Entry::operator >=(const QString &key) const
{
if (value.latinKey)
diff --git a/src/corelib/json/qjsondocument.cpp b/src/corelib/json/qjsondocument.cpp
index 6eca54bdf0..b943818583 100644
--- a/src/corelib/json/qjsondocument.cpp
+++ b/src/corelib/json/qjsondocument.cpp
@@ -260,8 +260,7 @@ QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, DataValidati
Creates a QJsonDocument from the QVariant \a variant.
If the \a variant contains any other type than a QVariantMap,
- QVariantList or QStringList, the returned document
- document is invalid.
+ QVariantList or QStringList, the returned document is invalid.
\sa toVariant()
*/
diff --git a/src/corelib/json/qjsonobject.cpp b/src/corelib/json/qjsonobject.cpp
index fb651f0f24..b5b6f36bc6 100644
--- a/src/corelib/json/qjsonobject.cpp
+++ b/src/corelib/json/qjsonobject.cpp
@@ -599,8 +599,8 @@ bool QJsonObject::operator==(const QJsonObject &other) const
for (uint i = 0; i < o->length; ++i) {
QJsonPrivate::Entry *e = o->entryAt(i);
- QJsonPrivate::Entry *oe = other.o->entryAt(i);
- if (*e != *oe || QJsonValue(d, o, e->value) != QJsonValue(other.d, other.o, oe->value))
+ QJsonValue v(d, o, e->value);
+ if (other.value(e->key()) != v)
return false;
}
diff --git a/src/corelib/json/qjsonparser.cpp b/src/corelib/json/qjsonparser.cpp
index 6a3d1de99a..094cb7a76b 100644
--- a/src/corelib/json/qjsonparser.cpp
+++ b/src/corelib/json/qjsonparser.cpp
@@ -391,6 +391,8 @@ bool Parser::parseObject()
}
int objectOffset = reserveSpace(sizeof(QJsonPrivate::Object));
+ if (objectOffset < 0)
+ return false;
BEGIN << "parseObject pos=" << objectOffset << current << json;
ParsedObject parsedObject(this, objectOffset);
@@ -423,6 +425,9 @@ bool Parser::parseObject()
if (parsedObject.offsets.size()) {
int tableSize = parsedObject.offsets.size()*sizeof(uint);
table = reserveSpace(tableSize);
+ if (table < 0)
+ return false;
+
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
memcpy(data + table, parsedObject.offsets.constData(), tableSize);
#else
@@ -452,6 +457,8 @@ bool Parser::parseObject()
bool Parser::parseMember(int baseOffset)
{
int entryOffset = reserveSpace(sizeof(QJsonPrivate::Entry));
+ if (entryOffset < 0)
+ return false;
BEGIN << "parseMember pos=" << entryOffset;
bool latin1;
@@ -475,6 +482,42 @@ bool Parser::parseMember(int baseOffset)
return true;
}
+namespace {
+ struct ValueArray {
+ static const int prealloc = 128;
+ ValueArray() : data(stackValues), alloc(prealloc), size(0) {}
+ ~ValueArray() { if (data != stackValues) free(data); }
+
+ inline bool grow() {
+ alloc *= 2;
+ if (data == stackValues) {
+ QJsonPrivate::Value *newValues = static_cast<QJsonPrivate::Value *>(malloc(alloc*sizeof(QJsonPrivate::Value)));
+ if (!newValues)
+ return false;
+ memcpy(newValues, data, size*sizeof(QJsonPrivate::Value));
+ data = newValues;
+ } else {
+ data = static_cast<QJsonPrivate::Value *>(realloc(data, alloc*sizeof(QJsonPrivate::Value)));
+ if (!data)
+ return false;
+ }
+ return true;
+ }
+ bool append(const QJsonPrivate::Value &v) {
+ if (alloc == size && !grow())
+ return false;
+ data[size] = v;
+ ++size;
+ return true;
+ }
+
+ QJsonPrivate::Value stackValues[prealloc];
+ QJsonPrivate::Value *data;
+ int alloc;
+ int size;
+ };
+}
+
/*
array = begin-array [ value *( value-separator value ) ] end-array
*/
@@ -488,8 +531,10 @@ bool Parser::parseArray()
}
int arrayOffset = reserveSpace(sizeof(QJsonPrivate::Array));
+ if (arrayOffset < 0)
+ return false;
- QVarLengthArray<QJsonPrivate::Value, 64> values;
+ ValueArray values;
if (!eatSpace()) {
lastError = QJsonParseError::UnterminatedArray;
@@ -502,7 +547,10 @@ bool Parser::parseArray()
QJsonPrivate::Value val;
if (!parseValue(&val, arrayOffset))
return false;
- values.append(val);
+ if (!values.append(val)) {
+ lastError = QJsonParseError::DocumentTooLarge;
+ return false;
+ }
char token = nextToken();
if (token == EndArray)
break;
@@ -516,20 +564,22 @@ bool Parser::parseArray()
}
}
- DEBUG << "size =" << values.size();
+ DEBUG << "size =" << values.size;
int table = arrayOffset;
// finalize the object
- if (values.size()) {
- int tableSize = values.size()*sizeof(QJsonPrivate::Value);
+ if (values.size) {
+ int tableSize = values.size*sizeof(QJsonPrivate::Value);
table = reserveSpace(tableSize);
- memcpy(data + table, values.constData(), tableSize);
+ if (table < 0)
+ return false;
+ memcpy(data + table, values.data, tableSize);
}
QJsonPrivate::Array *a = (QJsonPrivate::Array *)(data + arrayOffset);
a->tableOffset = table - arrayOffset;
a->size = current - arrayOffset;
a->is_object = false;
- a->length = values.size();
+ a->length = values.size;
DEBUG << "current=" << current;
END;
@@ -738,6 +788,8 @@ bool Parser::parseNumber(QJsonPrivate::Value *val, int baseOffset)
}
int pos = reserveSpace(sizeof(double));
+ if (pos < 0)
+ return false;
qToLittleEndian(ui, data + pos);
if (current - baseOffset >= Value::MaxSize) {
lastError = QJsonParseError::DocumentTooLarge;
@@ -856,6 +908,9 @@ bool Parser::parseString(bool *latin1)
// try to write out a latin1 string
int stringPos = reserveSpace(2);
+ if (stringPos < 0)
+ return false;
+
BEGIN << "parse string stringPos=" << stringPos << json;
while (json < end) {
uint ch = 0;
@@ -878,6 +933,8 @@ bool Parser::parseString(bool *latin1)
break;
}
int pos = reserveSpace(1);
+ if (pos < 0)
+ return false;
DEBUG << " " << ch << (char)ch;
data[pos] = (uchar)ch;
}
@@ -893,6 +950,8 @@ bool Parser::parseString(bool *latin1)
// write string length
*(QJsonPrivate::qle_ushort *)(data + stringPos) = ushort(current - outStart - sizeof(ushort));
int pos = reserveSpace((4 - current) & 3);
+ if (pos < 0)
+ return false;
while (pos & 3)
data[pos++] = 0;
END;
@@ -922,10 +981,14 @@ bool Parser::parseString(bool *latin1)
}
if (QChar::requiresSurrogates(ch)) {
int pos = reserveSpace(4);
+ if (pos < 0)
+ return false;
*(QJsonPrivate::qle_ushort *)(data + pos) = QChar::highSurrogate(ch);
*(QJsonPrivate::qle_ushort *)(data + pos + 2) = QChar::lowSurrogate(ch);
} else {
int pos = reserveSpace(2);
+ if (pos < 0)
+ return false;
*(QJsonPrivate::qle_ushort *)(data + pos) = (ushort)ch;
}
}
@@ -939,6 +1002,8 @@ bool Parser::parseString(bool *latin1)
// write string length
*(QJsonPrivate::qle_int *)(data + stringPos) = (current - outStart - sizeof(int))/2;
int pos = reserveSpace((4 - current) & 3);
+ if (pos < 0)
+ return false;
while (pos & 3)
data[pos++] = 0;
END;
diff --git a/src/corelib/json/qjsonparser_p.h b/src/corelib/json/qjsonparser_p.h
index ceb366b0f8..920f265ca3 100644
--- a/src/corelib/json/qjsonparser_p.h
+++ b/src/corelib/json/qjsonparser_p.h
@@ -108,6 +108,10 @@ private:
if (current + space >= dataLength) {
dataLength = 2*dataLength + space;
data = (char *)realloc(data, dataLength);
+ if (!data) {
+ lastError = QJsonParseError::DocumentTooLarge;
+ return -1;
+ }
}
int pos = current;
current += space;
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 2179a0d323..492365bc7f 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -1004,7 +1004,7 @@ bool QCoreApplication::notifyInternal2(QObject *receiver, QEvent *event)
approaches are listed below:
\list 1
\li Reimplementing \l {QWidget::}{paintEvent()}, \l {QWidget::}{mousePressEvent()} and so
- on. This is the commonest, easiest, and least powerful way.
+ on. This is the most common, easiest, and least powerful way.
\li Reimplementing this function. This is very powerful, providing
complete control; but only one subclass can be active at a time.
diff --git a/src/corelib/kernel/qeventdispatcher_winrt.cpp b/src/corelib/kernel/qeventdispatcher_winrt.cpp
index 2ffcf03eb2..607c523435 100644
--- a/src/corelib/kernel/qeventdispatcher_winrt.cpp
+++ b/src/corelib/kernel/qeventdispatcher_winrt.cpp
@@ -42,6 +42,7 @@
#include <QtCore/QCoreApplication>
#include <QtCore/QThread>
#include <QtCore/QHash>
+#include <QtCore/QMutex>
#include <QtCore/qfunctions_winrt.h>
#include <private/qabstracteventdispatcher_p.h>
#include <private/qcoreapplication_p.h>
@@ -106,6 +107,7 @@ public:
private:
QHash<int, QObject *> timerIdToObject;
QVector<WinRTTimerInfo> timerInfos;
+ mutable QMutex timerInfoLock;
QHash<HANDLE, int> timerHandleToId;
QHash<int, HANDLE> timerIdToHandle;
QHash<int, HANDLE> timerIdToCancelHandle;
@@ -122,6 +124,7 @@ private:
timerIdToObject.insert(id, obj);
const quint64 targetTime = qt_msectime() + interval;
const WinRTTimerInfo info(id, interval, type, obj, targetTime);
+ QMutexLocker locker(&timerInfoLock);
if (id >= timerInfos.size())
timerInfos.resize(id + 1);
timerInfos[id] = info;
@@ -130,6 +133,7 @@ private:
bool removeTimer(int id)
{
+ QMutexLocker locker(&timerInfoLock);
if (id >= timerInfos.size())
return false;
@@ -253,14 +257,18 @@ bool QEventDispatcherWinRT::processEvents(QEventLoop::ProcessEventsFlags flags)
if (timerId == INTERRUPT_HANDLE)
break;
- WinRTTimerInfo &info = d->timerInfos[timerId];
- Q_ASSERT(info.timerId != INVALID_TIMER_ID);
+ {
+ QMutexLocker locker(&d->timerInfoLock);
- QCoreApplication::postEvent(this, new QTimerEvent(timerId));
+ WinRTTimerInfo &info = d->timerInfos[timerId];
+ Q_ASSERT(info.timerId != INVALID_TIMER_ID);
- // Update timer's targetTime
- const quint64 targetTime = qt_msectime() + info.interval;
- info.targetTime = targetTime;
+ QCoreApplication::postEvent(this, new QTimerEvent(timerId));
+
+ // Update timer's targetTime
+ const quint64 targetTime = qt_msectime() + info.interval;
+ info.targetTime = targetTime;
+ }
waitResult = WaitForMultipleObjectsEx(timerHandles.count(), timerHandles.constData(), FALSE, 0, TRUE);
}
emit awake();
@@ -428,6 +436,7 @@ QList<QAbstractEventDispatcher::TimerInfo> QEventDispatcherWinRT::registeredTime
}
Q_D(const QEventDispatcherWinRT);
+ QMutexLocker locker(&d->timerInfoLock);
QList<TimerInfo> timerInfos;
for (const WinRTTimerInfo &info : d->timerInfos) {
if (info.object == object && info.timerId != INVALID_TIMER_ID)
@@ -459,6 +468,7 @@ int QEventDispatcherWinRT::remainingTime(int timerId)
}
Q_D(QEventDispatcherWinRT);
+ QMutexLocker locker(&d->timerInfoLock);
const WinRTTimerInfo timerInfo = d->timerInfos.at(timerId);
if (timerInfo.timerId == INVALID_TIMER_ID) {
#ifndef QT_NO_DEBUG
@@ -507,6 +517,9 @@ bool QEventDispatcherWinRT::event(QEvent *e)
case QEvent::Timer: {
QTimerEvent *timerEvent = static_cast<QTimerEvent *>(e);
const int id = timerEvent->timerId();
+
+ QMutexLocker locker(&d->timerInfoLock);
+
Q_ASSERT(id < d->timerInfos.size());
WinRTTimerInfo &info = d->timerInfos[id];
Q_ASSERT(info.timerId != INVALID_TIMER_ID);
@@ -515,17 +528,17 @@ bool QEventDispatcherWinRT::event(QEvent *e)
break;
info.inEvent = true;
+ locker.unlock();
+
QTimerEvent te(id);
QCoreApplication::sendEvent(d->timerIdToObject.value(id), &te);
+ locker.relock();
+
// The timer might have been removed in the meanwhile
if (id >= d->timerInfos.size())
break;
- info = d->timerInfos[id];
- if (info.timerId == INVALID_TIMER_ID)
- break;
-
if (info.interval == 0 && info.inEvent) {
// post the next zero timer event as long as the timer was not restarted
QCoreApplication::postEvent(this, new QTimerEvent(id));
diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp
index 80accc0cb8..65191768d6 100644
--- a/src/corelib/kernel/qtimer.cpp
+++ b/src/corelib/kernel/qtimer.cpp
@@ -539,6 +539,8 @@ void QTimer::singleShot(int msec, Qt::TimerType timerType, const QObject *receiv
A single-shot timer fires only once, non-single-shot timers fire
every \l interval milliseconds.
+ The default value for this property is \c false.
+
\sa interval, singleShot()
*/
diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp
index dc6eb05d9a..aae5cc411b 100644
--- a/src/corelib/mimetypes/qmimeprovider.cpp
+++ b/src/corelib/mimetypes/qmimeprovider.cpp
@@ -710,6 +710,10 @@ QMimeXMLProvider::QMimeXMLProvider(QMimeDatabasePrivate *db)
initResources();
}
+QMimeXMLProvider::~QMimeXMLProvider()
+{
+}
+
bool QMimeXMLProvider::isValid()
{
return true;
diff --git a/src/corelib/mimetypes/qmimeprovider_p.h b/src/corelib/mimetypes/qmimeprovider_p.h
index b6028191f7..e6fc47bf80 100644
--- a/src/corelib/mimetypes/qmimeprovider_p.h
+++ b/src/corelib/mimetypes/qmimeprovider_p.h
@@ -138,6 +138,7 @@ class QMimeXMLProvider : public QMimeProviderBase
{
public:
QMimeXMLProvider(QMimeDatabasePrivate *db);
+ ~QMimeXMLProvider();
virtual bool isValid() Q_DECL_OVERRIDE;
virtual QMimeType mimeTypeForName(const QString &name) Q_DECL_OVERRIDE;
diff --git a/src/corelib/mimetypes/qmimetypeparser_p.h b/src/corelib/mimetypes/qmimetypeparser_p.h
index a502439419..0ce39e701c 100644
--- a/src/corelib/mimetypes/qmimetypeparser_p.h
+++ b/src/corelib/mimetypes/qmimetypeparser_p.h
@@ -108,19 +108,19 @@ public:
explicit QMimeTypeParser(QMimeXMLProvider &provider) : m_provider(provider) {}
protected:
- inline bool process(const QMimeType &t, QString *)
+ inline bool process(const QMimeType &t, QString *) override
{ m_provider.addMimeType(t); return true; }
- inline bool process(const QMimeGlobPattern &glob, QString *)
+ inline bool process(const QMimeGlobPattern &glob, QString *) override
{ m_provider.addGlobPattern(glob); return true; }
- inline void processParent(const QString &child, const QString &parent)
+ inline void processParent(const QString &child, const QString &parent) override
{ m_provider.addParent(child, parent); }
- inline void processAlias(const QString &alias, const QString &name)
+ inline void processAlias(const QString &alias, const QString &name) override
{ m_provider.addAlias(alias, name); }
- inline void processMagicMatcher(const QMimeMagicRuleMatcher &matcher)
+ inline void processMagicMatcher(const QMimeMagicRuleMatcher &matcher) override
{ m_provider.addMagicMatcher(matcher); }
private:
diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp
index 6cd02e3a3f..13f7b89e2d 100644
--- a/src/corelib/plugin/qfactoryloader.cpp
+++ b/src/corelib/plugin/qfactoryloader.cpp
@@ -187,10 +187,12 @@ void QFactoryLoader::update()
++keyUsageCount;
}
}
- if (keyUsageCount || keys.isEmpty())
+ if (keyUsageCount || keys.isEmpty()) {
+ library->setLoadHints(QLibrary::PreventUnloadHint); // once loaded, don't unload
d->libraryList += library;
- else
+ } else {
library->release();
+ }
}
}
#else
diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp
index 094280e3b4..4ec4e43952 100644
--- a/src/corelib/plugin/qpluginloader.cpp
+++ b/src/corelib/plugin/qpluginloader.cpp
@@ -154,6 +154,7 @@ QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent)
: QObject(parent), d(0), did_load(false)
{
setFileName(fileName);
+ setLoadHints(QLibrary::PreventUnloadHint);
}
/*!
@@ -348,7 +349,7 @@ static QString locatePlugin(const QString& fileName)
void QPluginLoader::setFileName(const QString &fileName)
{
#if defined(QT_SHARED)
- QLibrary::LoadHints lh;
+ QLibrary::LoadHints lh = QLibrary::PreventUnloadHint;
if (d) {
lh = d->loadHints();
d->release();
@@ -394,7 +395,7 @@ QString QPluginLoader::errorString() const
\brief Give the load() function some hints on how it should behave.
You can give hints on how the symbols in the plugin are
- resolved. By default, none of the hints are set.
+ resolved. By default since Qt 5.7, QLibrary::PreventUnloadHint is set.
See the documentation of QLibrary::loadHints for a complete
description of how this property works.
diff --git a/src/corelib/statemachine/qhistorystate_p.h b/src/corelib/statemachine/qhistorystate_p.h
index 2e93c31982..f3eb20f194 100644
--- a/src/corelib/statemachine/qhistorystate_p.h
+++ b/src/corelib/statemachine/qhistorystate_p.h
@@ -87,8 +87,8 @@ protected:
// state, it will handle this transition as a special case. The history state itself is never
// entered either: either the stored configuration will be used, or the target(s) of this
// transition are used.
- virtual bool eventTest(QEvent *event) { Q_UNUSED(event); return false; }
- virtual void onTransition(QEvent *event) { Q_UNUSED(event); }
+ bool eventTest(QEvent *event) override { Q_UNUSED(event); return false; }
+ void onTransition(QEvent *event) override { Q_UNUSED(event); }
};
QT_END_NAMESPACE
diff --git a/src/corelib/thread/qbasicatomic.h b/src/corelib/thread/qbasicatomic.h
index 447fca44c0..24218e833a 100644
--- a/src/corelib/thread/qbasicatomic.h
+++ b/src/corelib/thread/qbasicatomic.h
@@ -61,6 +61,9 @@
# error "Qt requires C++11 support"
#endif
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_MSVC(4522)
+
QT_BEGIN_NAMESPACE
#if 0
@@ -323,4 +326,6 @@ public:
QT_END_NAMESPACE
+QT_WARNING_POP
+
#endif // QBASICATOMIC_H
diff --git a/src/corelib/thread/qfutureinterface.cpp b/src/corelib/thread/qfutureinterface.cpp
index ce31fe9270..c62b8fd36b 100644
--- a/src/corelib/thread/qfutureinterface.cpp
+++ b/src/corelib/thread/qfutureinterface.cpp
@@ -83,13 +83,33 @@ QFutureInterfaceBase::~QFutureInterfaceBase()
delete d;
}
+static inline int switch_on(QAtomicInt &a, int which)
+{
+ return a.fetchAndOrRelaxed(which) | which;
+}
+
+static inline int switch_off(QAtomicInt &a, int which)
+{
+ return a.fetchAndAndRelaxed(~which) & ~which;
+}
+
+static inline int switch_from_to(QAtomicInt &a, int from, int to)
+{
+ int newValue;
+ int expected = a.load();
+ do {
+ newValue = (expected & ~from) | to;
+ } while (!a.testAndSetRelaxed(expected, newValue, expected));
+ return newValue;
+}
+
void QFutureInterfaceBase::cancel()
{
QMutexLocker locker(&d->m_mutex);
- if (d->state & Canceled)
+ if (d->state.load() & Canceled)
return;
- d->state = State((d->state & ~Paused) | Canceled);
+ switch_from_to(d->state, Paused, Canceled);
d->waitCondition.wakeAll();
d->pausedWaitCondition.wakeAll();
d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Canceled));
@@ -99,10 +119,10 @@ void QFutureInterfaceBase::setPaused(bool paused)
{
QMutexLocker locker(&d->m_mutex);
if (paused) {
- d->state = State(d->state | Paused);
+ switch_on(d->state, Paused);
d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Paused));
} else {
- d->state = State(d->state & ~Paused);
+ switch_off(d->state, Paused);
d->pausedWaitCondition.wakeAll();
d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Resumed));
}
@@ -111,29 +131,24 @@ void QFutureInterfaceBase::setPaused(bool paused)
void QFutureInterfaceBase::togglePaused()
{
QMutexLocker locker(&d->m_mutex);
- if (d->state & Paused) {
- d->state = State(d->state & ~Paused);
+ if (d->state.load() & Paused) {
+ switch_off(d->state, Paused);
d->pausedWaitCondition.wakeAll();
d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Resumed));
} else {
- d->state = State(d->state | Paused);
+ switch_on(d->state, Paused);
d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Paused));
}
}
void QFutureInterfaceBase::setThrottled(bool enable)
{
- // bail out if we are not changing the state
- if ((enable && (d->state & Throttled)) || (!enable && !(d->state & Throttled)))
- return;
-
- // lock and change the state
QMutexLocker lock(&d->m_mutex);
if (enable) {
- d->state = State(d->state | Throttled);
+ switch_on(d->state, Throttled);
} else {
- d->state = State(d->state & ~Throttled);
- if (!(d->state & Paused))
+ switch_off(d->state, Throttled);
+ if (!(d->state.load() & Paused))
d->pausedWaitCondition.wakeAll();
}
}
@@ -184,11 +199,15 @@ bool QFutureInterfaceBase::waitForNextResult()
void QFutureInterfaceBase::waitForResume()
{
// return early if possible to avoid taking the mutex lock.
- if ((d->state & Paused) == false || (d->state & Canceled))
- return;
+ {
+ const int state = d->state.load();
+ if (!(state & Paused) || (state & Canceled))
+ return;
+ }
QMutexLocker lock(&d->m_mutex);
- if ((d->state & Paused) == false || (d->state & Canceled))
+ const int state = d->state.load();
+ if (!(state & Paused) || (state & Canceled))
return;
// decrease active thread count since this thread will wait.
@@ -236,7 +255,7 @@ bool QFutureInterfaceBase::isProgressUpdateNeeded() const
void QFutureInterfaceBase::reportStarted()
{
QMutexLocker locker(&d->m_mutex);
- if ((d->state & Started) || (d->state & Canceled) || (d->state & Finished))
+ if (d->state.load() & (Started|Canceled|Finished))
return;
d->setState(State(Started | Running));
@@ -252,11 +271,11 @@ void QFutureInterfaceBase::reportCanceled()
void QFutureInterfaceBase::reportException(const QException &exception)
{
QMutexLocker locker(&d->m_mutex);
- if ((d->state & Canceled) || (d->state & Finished))
+ if (d->state.load() & (Canceled|Finished))
return;
d->m_exceptionStore.setException(exception);
- d->state = State(d->state | Canceled);
+ switch_on(d->state, Canceled);
d->waitCondition.wakeAll();
d->pausedWaitCondition.wakeAll();
d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Canceled));
@@ -266,8 +285,8 @@ void QFutureInterfaceBase::reportException(const QException &exception)
void QFutureInterfaceBase::reportFinished()
{
QMutexLocker locker(&d->m_mutex);
- if (!(d->state & Finished)) {
- d->state = State((d->state & ~Running) | Finished);
+ if (!isFinished()) {
+ switch_from_to(d->state, Running, Finished);
d->waitCondition.wakeAll();
d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Finished));
}
@@ -287,7 +306,7 @@ int QFutureInterfaceBase::expectedResultCount()
bool QFutureInterfaceBase::queryState(State state) const
{
- return (d->state & state);
+ return d->state.load() & state;
}
void QFutureInterfaceBase::waitForResult(int resultIndex)
@@ -295,7 +314,7 @@ void QFutureInterfaceBase::waitForResult(int resultIndex)
d->m_exceptionStore.throwPossibleException();
QMutexLocker lock(&d->m_mutex);
- if (!(d->state & Running))
+ if (!isRunning())
return;
lock.unlock();
@@ -305,11 +324,9 @@ void QFutureInterfaceBase::waitForResult(int resultIndex)
lock.relock();
- if (d->state & Running) {
- const int waitIndex = (resultIndex == -1) ? INT_MAX : resultIndex;
- while ((d->state & Running) && d->internal_isResultReadyAt(waitIndex) == false)
- d->waitCondition.wait(&d->m_mutex);
- }
+ const int waitIndex = (resultIndex == -1) ? INT_MAX : resultIndex;
+ while (isRunning() && !d->internal_isResultReadyAt(waitIndex))
+ d->waitCondition.wait(&d->m_mutex);
d->m_exceptionStore.throwPossibleException();
}
@@ -317,7 +334,7 @@ void QFutureInterfaceBase::waitForResult(int resultIndex)
void QFutureInterfaceBase::waitForFinished()
{
QMutexLocker lock(&d->m_mutex);
- const bool alreadyFinished = !(d->state & Running);
+ const bool alreadyFinished = !isRunning();
lock.unlock();
if (!alreadyFinished) {
@@ -325,7 +342,7 @@ void QFutureInterfaceBase::waitForFinished()
lock.relock();
- while (d->state & Running)
+ while (isRunning())
d->waitCondition.wait(&d->m_mutex);
}
@@ -334,7 +351,7 @@ void QFutureInterfaceBase::waitForFinished()
void QFutureInterfaceBase::reportResultsReady(int beginIndex, int endIndex)
{
- if ((d->state & Canceled) || (d->state & Finished) || beginIndex == endIndex)
+ if (beginIndex == endIndex || (d->state.load() & (Canceled|Finished)))
return;
d->waitCondition.wakeAll();
@@ -396,7 +413,7 @@ void QFutureInterfaceBase::setProgressValueAndText(int progressValue,
if (d->m_progressValue >= progressValue)
return;
- if ((d->state & Canceled) || (d->state & Finished))
+ if (d->state.load() & (Canceled|Finished))
return;
if (d->internal_updateProgress(progressValue, progressText)) {
@@ -468,10 +485,10 @@ bool QFutureInterfaceBasePrivate::internal_waitForNextResult()
if (m_results.hasNextResult())
return true;
- while ((state & QFutureInterfaceBase::Running) && m_results.hasNextResult() == false)
+ while ((state.load() & QFutureInterfaceBase::Running) && m_results.hasNextResult() == false)
waitCondition.wait(&m_mutex);
- return (!(state & QFutureInterfaceBase::Canceled) && m_results.hasNextResult());
+ return !(state.load() & QFutureInterfaceBase::Canceled) && m_results.hasNextResult();
}
bool QFutureInterfaceBasePrivate::internal_updateProgress(int progress,
@@ -494,16 +511,16 @@ bool QFutureInterfaceBasePrivate::internal_updateProgress(int progress,
void QFutureInterfaceBasePrivate::internal_setThrottled(bool enable)
{
// bail out if we are not changing the state
- if ((enable && (state & QFutureInterfaceBase::Throttled))
- || (!enable && !(state & QFutureInterfaceBase::Throttled)))
+ if ((enable && (state.load() & QFutureInterfaceBase::Throttled))
+ || (!enable && !(state.load() & QFutureInterfaceBase::Throttled)))
return;
// change the state
if (enable) {
- state = QFutureInterfaceBase::State(state | QFutureInterfaceBase::Throttled);
+ switch_on(state, QFutureInterfaceBase::Throttled);
} else {
- state = QFutureInterfaceBase::State(state & ~QFutureInterfaceBase::Throttled);
- if (!(state & QFutureInterfaceBase::Paused))
+ switch_off(state, QFutureInterfaceBase::Throttled);
+ if (!(state.load() & QFutureInterfaceBase::Paused))
pausedWaitCondition.wakeAll();
}
}
@@ -538,7 +555,7 @@ void QFutureInterfaceBasePrivate::connectOutputInterface(QFutureCallOutInterface
{
QMutexLocker locker(&m_mutex);
- if (state & QFutureInterfaceBase::Started) {
+ if (state.load() & QFutureInterfaceBase::Started) {
interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Started));
interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::ProgressRange,
m_progressMinimum,
@@ -558,13 +575,13 @@ void QFutureInterfaceBasePrivate::connectOutputInterface(QFutureCallOutInterface
it.batchedAdvance();
}
- if (state & QFutureInterfaceBase::Paused)
+ if (state.load() & QFutureInterfaceBase::Paused)
interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Paused));
- if (state & QFutureInterfaceBase::Canceled)
+ if (state.load() & QFutureInterfaceBase::Canceled)
interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Canceled));
- if (state & QFutureInterfaceBase::Finished)
+ if (state.load() & QFutureInterfaceBase::Finished)
interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Finished));
outputConnections.append(interface);
@@ -583,7 +600,7 @@ void QFutureInterfaceBasePrivate::disconnectOutputInterface(QFutureCallOutInterf
void QFutureInterfaceBasePrivate::setState(QFutureInterfaceBase::State newState)
{
- state = newState;
+ state.store(newState);
}
QT_END_NAMESPACE
diff --git a/src/corelib/thread/qfutureinterface_p.h b/src/corelib/thread/qfutureinterface_p.h
index f5f0e7047f..5245b76072 100644
--- a/src/corelib/thread/qfutureinterface_p.h
+++ b/src/corelib/thread/qfutureinterface_p.h
@@ -161,7 +161,7 @@ public:
int m_progressValue; // TQ
int m_progressMinimum; // TQ
int m_progressMaximum; // TQ
- QFutureInterfaceBase::State state;
+ QAtomicInt state; // reads and writes can happen unprotected, both must be atomic
QElapsedTimer progressTime;
QWaitCondition pausedWaitCondition;
QtPrivate::ResultStoreBase m_results;
diff --git a/src/corelib/thread/qorderedmutexlocker_p.h b/src/corelib/thread/qorderedmutexlocker_p.h
index f54f7c705d..6a8fe778eb 100644
--- a/src/corelib/thread/qorderedmutexlocker_p.h
+++ b/src/corelib/thread/qorderedmutexlocker_p.h
@@ -88,8 +88,8 @@ public:
void unlock()
{
if (locked) {
- if (mtx1) mtx1->unlock();
if (mtx2) mtx2->unlock();
+ if (mtx1) mtx1->unlock();
locked = false;
}
}
@@ -99,7 +99,7 @@ public:
// mtx1 is already locked, mtx2 not... do we need to unlock and relock?
if (mtx1 == mtx2)
return false;
- if (mtx1 < mtx2) {
+ if (std::less<QMutex *>()(mtx1, mtx2)) {
mtx2->lock();
return true;
}
diff --git a/src/corelib/tools/qalgorithms.h b/src/corelib/tools/qalgorithms.h
index 4f704d6764..e7caa5c312 100644
--- a/src/corelib/tools/qalgorithms.h
+++ b/src/corelib/tools/qalgorithms.h
@@ -42,6 +42,10 @@
#include <QtCore/qglobal.h>
+#if defined(Q_CC_MSVC) && _MSC_VER > 1500
+#include <intrin.h>
+#endif
+
QT_BEGIN_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_GCC("-Wdeprecated-declarations")
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index bfc7e1ca0e..e2fbe6ae60 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -1644,9 +1644,11 @@ QString QTime::toString(Qt::DateFormat format) const
\row \li z \li the milliseconds without leading zeroes (0 to 999)
\row \li zzz \li the milliseconds with leading zeroes (000 to 999)
\row \li AP or A
- \li use AM/PM display. \e A/AP will be replaced by either "AM" or "PM".
+ \li use AM/PM display. \e A/AP will be replaced by either
+ QLocale::amText() or QLocale::pmText().
\row \li ap or a
- \li use am/pm display. \e a/ap will be replaced by either "am" or "pm".
+ \li use am/pm display. \e a/ap will be replaced by a lower-case version of
+ QLocale::amText() or QLocale::pmText().
\row \li t \li the timezone (for example "CEST")
\endtable
@@ -1655,7 +1657,8 @@ QString QTime::toString(Qt::DateFormat format) const
expression. Two consecutive single quotes ("''") are replaced by a singlequote
in the output. Formats without separators (e.g. "HHmm") are currently not supported.
- Example format strings (assuming that the QTime is 14:13:09.042)
+ Example format strings (assuming that the QTime is 14:13:09.042 and the system
+ locale is \c{en_US})
\table
\header \li Format \li Result
diff --git a/src/corelib/tools/qdatetimeparser.cpp b/src/corelib/tools/qdatetimeparser.cpp
index 36ab93df1e..037e7f368f 100644
--- a/src/corelib/tools/qdatetimeparser.cpp
+++ b/src/corelib/tools/qdatetimeparser.cpp
@@ -887,12 +887,12 @@ QDateTimeParser::StateNode QDateTimeParser::parse(QString &input, int &cursorPos
State state = Acceptable;
QDateTime newCurrentValue;
- int pos = 0;
bool conflicts = false;
const int sectionNodesCount = sectionNodes.size();
QDTPDEBUG << "parse" << input;
{
+ int pos = 0;
int year, month, day;
const QDate currentDate = currentValue.date();
const QTime currentTime = currentValue.time();
diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp
index e7f86ddf6b..4a30daa72c 100644
--- a/src/corelib/tools/qregularexpression.cpp
+++ b/src/corelib/tools/qregularexpression.cpp
@@ -548,7 +548,7 @@ QT_BEGIN_NAMESPACE
\inmodule QtCore
\reentrant
- \brief The QRegularExpressionMatch class provides the results of a matching
+ \brief The QRegularExpressionMatch class provides the results of matching
a QRegularExpression against a string.
\since 5.0
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 69fd4f1e52..ad44228039 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -487,48 +487,46 @@ static int ucstrncmp(const QChar *a, const QChar *b, int l)
if (!l)
return 0;
- union {
- const QChar *w;
- const quint32 *d;
- quintptr value;
- } sa, sb;
- sa.w = a;
- sb.w = b;
-
// check alignment
- if ((sa.value & 2) == (sb.value & 2)) {
+ if ((reinterpret_cast<quintptr>(a) & 2) == (reinterpret_cast<quintptr>(b) & 2)) {
// both addresses have the same alignment
- if (sa.value & 2) {
+ if (reinterpret_cast<quintptr>(a) & 2) {
// both addresses are not aligned to 4-bytes boundaries
// compare the first character
- if (*sa.w != *sb.w)
- return sa.w->unicode() - sb.w->unicode();
+ if (*a != *b)
+ return a->unicode() - b->unicode();
--l;
- ++sa.w;
- ++sb.w;
+ ++a;
+ ++b;
// now both addresses are 4-bytes aligned
}
// both addresses are 4-bytes aligned
// do a fast 32-bit comparison
- const quint32 *e = sa.d + (l >> 1);
- for ( ; sa.d != e; ++sa.d, ++sb.d) {
- if (*sa.d != *sb.d) {
- if (*sa.w != *sb.w)
- return sa.w->unicode() - sb.w->unicode();
- return sa.w[1].unicode() - sb.w[1].unicode();
+ const quint32 *da = reinterpret_cast<const quint32 *>(a);
+ const quint32 *db = reinterpret_cast<const quint32 *>(b);
+ const quint32 *e = da + (l >> 1);
+ for ( ; da != e; ++da, ++db) {
+ if (*da != *db) {
+ a = reinterpret_cast<const QChar *>(da);
+ b = reinterpret_cast<const QChar *>(db);
+ if (*a != *b)
+ return a->unicode() - b->unicode();
+ return a[1].unicode() - b[1].unicode();
}
}
// do we have a tail?
- return (l & 1) ? sa.w->unicode() - sb.w->unicode() : 0;
+ a = reinterpret_cast<const QChar *>(da);
+ b = reinterpret_cast<const QChar *>(db);
+ return (l & 1) ? a->unicode() - b->unicode() : 0;
} else {
// one of the addresses isn't 4-byte aligned but the other is
- const QChar *e = sa.w + l;
- for ( ; sa.w != e; ++sa.w, ++sb.w) {
- if (*sa.w != *sb.w)
- return sa.w->unicode() - sb.w->unicode();
+ const QChar *e = a + l;
+ for ( ; a != e; ++a, ++b) {
+ if (*a != *b)
+ return a->unicode() - b->unicode();
}
}
return 0;
@@ -4850,6 +4848,39 @@ QString QString::fromUtf16(const ushort *unicode, int size)
return QUtf16::convertToUnicode((const char *)unicode, size*2, 0);
}
+/*!
+ \fn QString QString::fromUtf16(const char16_t *str, int size)
+ \since 5.3
+
+ Returns a QString initialized with the first \a size characters
+ of the Unicode string \a str (ISO-10646-UTF-16 encoded).
+
+ If \a size is -1 (default), \a str must be terminated
+ with a 0.
+
+ This function checks for a Byte Order Mark (BOM). If it is missing,
+ host byte order is assumed.
+
+ This function is slow compared to the other Unicode conversions.
+ Use QString(const QChar *, int) or QString(const QChar *) if possible.
+
+ QString makes a deep copy of the Unicode data.
+
+ \sa utf16(), setUtf16(), fromStdU16String()
+*/
+
+/*!
+ \fn QString QString::fromUcs4(const char32_t *str, int size)
+ \since 5.3
+
+ Returns a QString initialized with the first \a size characters
+ of the Unicode string \a str (ISO-10646-UCS-4 encoded).
+
+ If \a size is -1 (default), \a str must be terminated
+ with a 0.
+
+ \sa toUcs4(), fromUtf16(), utf16(), setUtf16(), fromWCharArray(), fromStdU32String()
+*/
/*!
\since 4.2
diff --git a/src/corelib/xml/qxmlstream.cpp b/src/corelib/xml/qxmlstream.cpp
index 83b26d50ab..3c5bdfbfc0 100644
--- a/src/corelib/xml/qxmlstream.cpp
+++ b/src/corelib/xml/qxmlstream.cpp
@@ -886,7 +886,7 @@ inline void QXmlStreamReaderPrivate::reallocateStack()
sym_stack = reinterpret_cast<Value*> (realloc(sym_stack, stack_size * sizeof(Value)));
Q_CHECK_PTR(sym_stack);
state_stack = reinterpret_cast<int*> (realloc(state_stack, stack_size * sizeof(int)));
- Q_CHECK_PTR(sym_stack);
+ Q_CHECK_PTR(state_stack);
}
diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp
index eb57ad1816..c90173db76 100644
--- a/src/dbus/qdbusabstractinterface.cpp
+++ b/src/dbus/qdbusabstractinterface.cpp
@@ -761,18 +761,25 @@ QDBusMessage QDBusAbstractInterface::call(QDBus::CallMode mode, const QString &m
switch (count) {
case 8:
argList.prepend(arg8);
+ // fall through
case 7:
argList.prepend(arg7);
+ // fall through
case 6:
argList.prepend(arg6);
+ // fall through
case 5:
argList.prepend(arg5);
+ // fall through
case 4:
argList.prepend(arg4);
+ // fall through
case 3:
argList.prepend(arg3);
+ // fall through
case 2:
argList.prepend(arg2);
+ // fall through
case 1:
argList.prepend(arg1);
}
@@ -819,18 +826,25 @@ QDBusPendingCall QDBusAbstractInterface::asyncCall(const QString &method, const
switch (count) {
case 8:
argList.prepend(arg8);
+ // fall through
case 7:
argList.prepend(arg7);
+ // fall through
case 6:
argList.prepend(arg6);
+ // fall through
case 5:
argList.prepend(arg5);
+ // fall through
case 4:
argList.prepend(arg4);
+ // fall through
case 3:
argList.prepend(arg3);
+ // fall through
case 2:
argList.prepend(arg2);
+ // fall through
case 1:
argList.prepend(arg1);
}
diff --git a/src/dbus/qdbusdemarshaller.cpp b/src/dbus/qdbusdemarshaller.cpp
index 567c827f7e..57684897c6 100644
--- a/src/dbus/qdbusdemarshaller.cpp
+++ b/src/dbus/qdbusdemarshaller.cpp
@@ -39,6 +39,9 @@
#include "qdbusargument_p.h"
#include "qdbusconnection.h"
+
+#include <qscopedpointer.h>
+
#include <stdlib.h>
QT_BEGIN_NAMESPACE
@@ -423,12 +426,12 @@ QDBusDemarshaller *QDBusDemarshaller::endCommon()
QDBusArgument QDBusDemarshaller::duplicate()
{
- QDBusDemarshaller *d = new QDBusDemarshaller(capabilities);
+ QScopedPointer<QDBusDemarshaller> d(new QDBusDemarshaller(capabilities));
d->iterator = iterator;
d->message = q_dbus_message_ref(message);
q_dbus_message_iter_next(&iterator);
- return QDBusArgumentPrivate::create(d);
+ return QDBusArgumentPrivate::create(d.take());
}
QT_END_NAMESPACE
diff --git a/src/dbus/qdbusserver.cpp b/src/dbus/qdbusserver.cpp
index a59496bce8..027ce935d6 100644
--- a/src/dbus/qdbusserver.cpp
+++ b/src/dbus/qdbusserver.cpp
@@ -110,7 +110,7 @@ QDBusServer::~QDBusServer()
QDBusConnectionManager::instance()->removeConnection(name);
d->serverConnectionNames.clear();
}
- d->serverObject = nullptr;
+ d->serverObject = Q_NULLPTR;
d->ref.store(0);
d->deleteLater();
}
diff --git a/src/gui/gui.pro b/src/gui/gui.pro
index 462f133ff8..09bdb225e9 100644
--- a/src/gui/gui.pro
+++ b/src/gui/gui.pro
@@ -9,6 +9,7 @@ QMAKE_DOCS = $$PWD/doc/qtgui.qdocconf
MODULE_PLUGIN_TYPES = \
platforms \
+ platforms/darwin \
xcbglintegrations \
platformthemes \
platforminputcontexts \
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
index db118edf04..0d2f55b1c2 100644
--- a/src/gui/image/qicon.cpp
+++ b/src/gui/image/qicon.cpp
@@ -303,7 +303,7 @@ QPixmap QPixmapIconEngine::pixmap(const QSize &size, QIcon::Mode mode, QIcon::St
QString key = QLatin1String("qt_")
% HexString<quint64>(pm.cacheKey())
- % HexString<uint>(pe->mode)
+ % HexString<uint>(pe ? pe->mode : QIcon::Normal)
% HexString<quint64>(QGuiApplication::palette().cacheKey())
% HexString<uint>(actualSize.width())
% HexString<uint>(actualSize.height());
diff --git a/src/gui/image/qiconloader.cpp b/src/gui/image/qiconloader.cpp
index 0233ccbf87..3556f987b9 100644
--- a/src/gui/image/qiconloader.cpp
+++ b/src/gui/image/qiconloader.cpp
@@ -380,8 +380,6 @@ QThemeIconInfo QIconLoader::findIconHelper(const QString &themeName,
QThemeIconInfo info;
Q_ASSERT(!themeName.isEmpty());
- QPixmap pixmap;
-
// Used to protect against potential recursions
visited << themeName;
diff --git a/src/gui/image/qiconloader_p.h b/src/gui/image/qiconloader_p.h
index 0945add2fb..c3421b2047 100644
--- a/src/gui/image/qiconloader_p.h
+++ b/src/gui/image/qiconloader_p.h
@@ -95,7 +95,6 @@ public:
QIcon::State state) = 0;
QString filename;
QIconDirInfo dir;
- static int count;
};
struct ScalableEntry : public QIconLoaderEngineEntry
@@ -124,18 +123,18 @@ public:
QIconLoaderEngine(const QString& iconName = QString());
~QIconLoaderEngine();
- void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state);
- QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state);
- QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state);
- QIconEngine *clone() const;
- bool read(QDataStream &in);
- bool write(QDataStream &out) const;
+ void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE;
+ QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE;
+ QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE;
+ QIconEngine *clone() const Q_DECL_OVERRIDE;
+ bool read(QDataStream &in) Q_DECL_OVERRIDE;
+ bool write(QDataStream &out) const Q_DECL_OVERRIDE;
private:
- QString key() const;
+ QString key() const Q_DECL_OVERRIDE;
bool hasIcon() const;
void ensureLoaded();
- void virtual_hook(int id, void *data);
+ void virtual_hook(int id, void *data) Q_DECL_OVERRIDE;
QIconLoaderEngineEntry *entryForSize(const QSize &size);
QIconLoaderEngine(const QIconLoaderEngine &other);
QThemeIconInfo m_info;
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index 64673d44b8..f3cc48cf33 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -5026,7 +5026,7 @@ static Q_CONSTEXPR QPixelFormat pixelformats[] = {
/*ALPHA USAGE*/ QPixelFormat::IgnoresAlpha,
/*ALPHA POSITION*/ QPixelFormat::AtBeginning,
/*PREMULTIPLIED*/ QPixelFormat::NotPremultiplied,
- /*INTERPRETATION*/ QPixelFormat::UnsignedInteger,
+ /*INTERPRETATION*/ QPixelFormat::UnsignedByte,
/*BYTE ORDER*/ QPixelFormat::CurrentSystemEndian),
//QImage::Format_RGB444:
QPixelFormat(QPixelFormat::RGB,
diff --git a/src/gui/image/qimage_conversions.cpp b/src/gui/image/qimage_conversions.cpp
index bb0b76d55f..2c3a20870e 100644
--- a/src/gui/image/qimage_conversions.cpp
+++ b/src/gui/image/qimage_conversions.cpp
@@ -911,12 +911,12 @@ static bool convert_indexed8_to_RGB16_inplace(QImageData *data, Qt::ImageConvers
const int dest_pad = (dst_bytes_per_line >> 1) - width;
quint16 colorTableRGB16[256];
- if (data->colortable.isEmpty()) {
+ const int tableSize = data->colortable.size();
+ if (tableSize == 0) {
for (int i = 0; i < 256; ++i)
colorTableRGB16[i] = qConvertRgb32To16(qRgb(i, i, i));
} else {
// 1) convert the existing colors to RGB16
- const int tableSize = data->colortable.size();
for (int i = 0; i < tableSize; ++i)
colorTableRGB16[i] = qConvertRgb32To16(data->colortable.at(i));
data->colortable = QVector<QRgb>();
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index 59d6dc12c6..db922b4a9f 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -768,39 +768,37 @@ QBitmap QPixmap::createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode)
bool QPixmap::load(const QString &fileName, const char *format, Qt::ImageConversionFlags flags)
{
- if (fileName.isEmpty()) {
- data.reset();
- return false;
- }
-
- detach();
+ if (!fileName.isEmpty()) {
- QFileInfo info(fileName);
- QString key = QLatin1String("qt_pixmap")
- % info.absoluteFilePath()
- % HexString<uint>(info.lastModified().toTime_t())
- % HexString<quint64>(info.size())
- % HexString<uint>(data ? data->pixelType() : QPlatformPixmap::PixmapType);
+ QFileInfo info(fileName);
+ // Note: If no extension is provided, we try to match the
+ // file against known plugin extensions
+ if (info.completeSuffix().isEmpty() || info.exists()) {
- // Note: If no extension is provided, we try to match the
- // file against known plugin extensions
- if (!info.completeSuffix().isEmpty() && !info.exists()) {
- data.reset();
- return false;
- }
+ QString key = QLatin1String("qt_pixmap")
+ % info.absoluteFilePath()
+ % HexString<uint>(info.lastModified().toTime_t())
+ % HexString<quint64>(info.size())
+ % HexString<uint>(data ? data->pixelType() : QPlatformPixmap::PixmapType);
- if (QPixmapCache::find(key, this))
- return true;
+ if (QPixmapCache::find(key, this))
+ return true;
- if (!data)
- data = QPlatformPixmap::create(0, 0, QPlatformPixmap::PixmapType);
+ data = QPlatformPixmap::create(0, 0, data ? data->pixelType() : QPlatformPixmap::PixmapType);
- if (data->fromFile(fileName, format, flags)) {
- QPixmapCache::insert(key, *this);
- return true;
+ if (data->fromFile(fileName, format, flags)) {
+ QPixmapCache::insert(key, *this);
+ return true;
+ }
+ }
}
- data.reset();
+ if (!isNull()) {
+ if (isQBitmap())
+ *this = QBitmap();
+ else
+ data.reset();
+ }
return false;
}
diff --git a/src/gui/image/qxbmhandler.cpp b/src/gui/image/qxbmhandler.cpp
index eda816f0f2..19015c5dcd 100644
--- a/src/gui/image/qxbmhandler.cpp
+++ b/src/gui/image/qxbmhandler.cpp
@@ -124,17 +124,18 @@ static bool read_xbm_body(QIODevice *device, int w, int h, QImage *outImage)
qint64 readBytes = 0;
+ char *p;
+
// scan for database
- for (;;) {
+ do {
if ((readBytes = device->readLine(buf, buflen)) <= 0) {
// end of file
return false;
}
buf[readBytes] = '\0';
- if (QByteArray::fromRawData(buf, readBytes).contains("0x"))
- break;
- }
+ p = strstr(buf, "0x");
+ } while (!p);
if (outImage->size() != QSize(w, h) || outImage->format() != QImage::Format_MonoLSB) {
*outImage = QImage(w, h, QImage::Format_MonoLSB);
@@ -148,7 +149,6 @@ static bool read_xbm_body(QIODevice *device, int w, int h, QImage *outImage)
int x = 0, y = 0;
uchar *b = outImage->scanLine(0);
- char *p = buf + QByteArray::fromRawData(buf, readBytes).indexOf("0x");
w = (w+7)/8; // byte width
while (y < h) { // for all encoded bytes...
@@ -163,7 +163,8 @@ static bool read_xbm_body(QIODevice *device, int w, int h, QImage *outImage)
} else { // read another line
if ((readBytes = device->readLine(buf,buflen)) <= 0) // EOF ==> truncated image
break;
- p = buf + QByteArray::fromRawData(buf, readBytes).indexOf("0x");
+ buf[readBytes] = '\0';
+ p = strstr(buf, "0x");
}
}
diff --git a/src/gui/kernel/qclipboard.cpp b/src/gui/kernel/qclipboard.cpp
index bb3895c2f5..cf98bba54c 100644
--- a/src/gui/kernel/qclipboard.cpp
+++ b/src/gui/kernel/qclipboard.cpp
@@ -425,8 +425,9 @@ void QClipboard::setPixmap(const QPixmap &pixmap, Mode mode)
/*!
\fn QMimeData *QClipboard::mimeData(Mode mode) const
- Returns a reference to a QMimeData representation of the current
- clipboard data.
+ Returns a pointer to a QMimeData representation of the current
+ clipboard data (can be NULL if the given \a mode is not
+ supported by the platform).
The \a mode argument is used to control which part of the system
clipboard is used. If \a mode is QClipboard::Clipboard, the
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index 19220b5492..1da862515b 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -1658,7 +1658,7 @@ QResizeEvent::~QResizeEvent()
The event handler QWidget::closeEvent() receives close events. The
default implementation of this event handler accepts the close
event. If you do not want your widget to be hidden, or want some
- special handing, you should reimplement the event handler and
+ special handling, you should reimplement the event handler and
ignore() the event.
The \l{mainwindows/application#close event handler}{closeEvent() in the
diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h
index 570212966f..7fdad24f52 100644
--- a/src/gui/kernel/qevent.h
+++ b/src/gui/kernel/qevent.h
@@ -51,7 +51,7 @@
#include <QtCore/qvector.h>
#include <QtCore/qset.h> // ### Qt 6: Remove
#include <QtCore/qurl.h>
-#include <QtCore/qfile.h> // ### Qt 6: Replace by <qiodevice.h> and forward declare QFile
+#include <QtCore/qfile.h> // ### Qt 6: Replace by <QtCore/qiodevice.h> and forward declare QFile
#include <QtGui/qvector2d.h>
#include <QtGui/qtouchdevice.h> // ### Qt 6: Replace by forward declaration
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 353b623a3b..142fd66947 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -351,6 +351,16 @@ void QWindowGeometrySpecification::applyTo(QWindow *window) const
static QWindowGeometrySpecification windowGeometrySpecification = Q_WINDOW_GEOMETRY_SPECIFICATION_INITIALIZER;
/*!
+ \macro qGuiApp
+ \relates QGuiApplication
+
+ A global pointer referring to the unique application object.
+ Only valid for use when that object is a QGuiApplication.
+
+ \sa QCoreApplication::instance(), qApp
+*/
+
+/*!
\class QGuiApplication
\brief The QGuiApplication class manages the GUI application's control
flow and main settings.
diff --git a/src/gui/kernel/qhighdpiscaling.cpp b/src/gui/kernel/qhighdpiscaling.cpp
index fccd81f8e8..7ac876838d 100644
--- a/src/gui/kernel/qhighdpiscaling.cpp
+++ b/src/gui/kernel/qhighdpiscaling.cpp
@@ -342,8 +342,10 @@ static const char scaleFactorProperty[] = "_q_scaleFactor";
*/
void QHighDpiScaling::setScreenFactor(QScreen *screen, qreal factor)
{
- m_screenFactorSet = true;
- m_active = true;
+ if (!qFuzzyCompare(factor, qreal(1))) {
+ m_screenFactorSet = true;
+ m_active = true;
+ }
screen->setProperty(scaleFactorProperty, QVariant(factor));
// hack to force re-evaluation of screen geometry
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index 9a75f4bc83..413724a2c7 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -1524,7 +1524,9 @@ bool QKeySequence::isDetached() const
If the key sequence has no keys, an empty string is returned.
On \macos, the string returned resembles the sequence that is
- shown in the menu bar.
+ shown in the menu bar if \a format is
+ QKeySequence::NativeText; otherwise, the string uses the
+ "portable" format, suitable for writing to a file.
\sa fromString()
*/
diff --git a/src/gui/kernel/qplatformscreen.cpp b/src/gui/kernel/qplatformscreen.cpp
index 3c1552c31e..1d519e84f9 100644
--- a/src/gui/kernel/qplatformscreen.cpp
+++ b/src/gui/kernel/qplatformscreen.cpp
@@ -342,6 +342,10 @@ void QPlatformScreen::resizeMaximizedWindows()
for (int i = 0; i < windows.size(); ++i) {
QWindow *w = windows.at(i);
+ // Skip non-platform windows, e.g., offscreen windows.
+ if (!w->handle())
+ continue;
+
if (platformScreenForWindow(w) != this)
continue;
diff --git a/src/gui/kernel/qsurfaceformat.cpp b/src/gui/kernel/qsurfaceformat.cpp
index d7dc0faceb..000d727380 100644
--- a/src/gui/kernel/qsurfaceformat.cpp
+++ b/src/gui/kernel/qsurfaceformat.cpp
@@ -41,6 +41,8 @@
#include <QtCore/qatomic.h>
#include <QtCore/QDebug>
+#include <QOpenGLContext>
+#include <QtGui/qguiapplication.h>
#ifdef major
#undef major
@@ -761,6 +763,16 @@ Q_GLOBAL_STATIC(QSurfaceFormat, qt_default_surface_format)
*/
void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &format)
{
+#ifndef QT_NO_OPENGL
+ if (qApp) {
+ QOpenGLContext *globalContext = QOpenGLContext::globalShareContext();
+ if (globalContext && globalContext->isValid()) {
+ qWarning("Warning: Setting a new default format with a different version or profile "
+ "after the global shared context is created may cause issues with context "
+ "sharing.");
+ }
+ }
+#endif
*qt_default_surface_format() = format;
}
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index a20f4329b1..2dd5e884a4 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -2502,6 +2502,9 @@ void QWindowPrivate::_q_clearAlert()
See the \l{Qt::CursorShape}{list of predefined cursor objects} for a
range of useful shapes.
+ If no cursor has been set, or after a call to unsetCursor(), the
+ parent window's cursor is used.
+
By default, the cursor has the Qt::ArrowCursor shape.
Some underlying window implementations will reset the cursor if it
diff --git a/src/gui/opengl/qopengl.cpp b/src/gui/opengl/qopengl.cpp
index 1a8fc599ce..eb08492254 100644
--- a/src/gui/opengl/qopengl.cpp
+++ b/src/gui/opengl/qopengl.cpp
@@ -135,9 +135,6 @@ QDebug operator<<(QDebug d, const QOpenGLConfig::Gpu &g)
return d;
}
-enum Operator { NotEqual, LessThan, LessEqualThan, Equals, GreaterThan, GreaterEqualThan };
-static const char operators[][3] = {"!=", "<", "<=", "=", ">", ">="};
-
typedef QJsonArray::ConstIterator JsonArrayConstIt;
static inline bool contains(const QJsonArray &haystack, unsigned needle)
@@ -159,6 +156,9 @@ static inline bool contains(const QJsonArray &haystack, const QString &needle)
}
namespace {
+enum Operator { NotEqual, LessThan, LessEqualThan, Equals, GreaterThan, GreaterEqualThan };
+static const char operators[][3] = {"!=", "<", "<=", "=", ">", ">="};
+
// VersionTerm describing a version term consisting of number and operator
// found in os.version and driver_version.
struct VersionTerm {
diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h
index 5f9d78b780..bed5d0b371 100644
--- a/src/gui/opengl/qopengl.h
+++ b/src/gui/opengl/qopengl.h
@@ -95,6 +95,13 @@ typedef void* GLeglImageOES;
// applications cannot target ES 3. Therefore QOpenGLFunctions and
// friends do everything dynamically and never rely on these macros.
+// Some Khronos headers use the ext proto guard in the standard headers as well,
+// which is bad. Work it around, but avoid spilling over to the ext header.
+# ifndef GL_GLEXT_PROTOTYPES
+# define GL_GLEXT_PROTOTYPES
+# define QGL_TEMP_GLEXT_PROTO
+# endif
+
# if defined(QT_OPENGL_ES_3_1)
# include <GLES3/gl31.h>
# elif defined(QT_OPENGL_ES_3)
@@ -106,6 +113,11 @@ typedef void* GLeglImageOES;
# include <GLES2/gl2.h>
#endif
+# ifdef QGL_TEMP_GLEXT_PROTO
+# undef GL_GLEXT_PROTOTYPES
+# undef QGL_TEMP_GLEXT_PROTO
+# endif
+
/*
Some GLES2 implementations (like the one on Harmattan) are missing the
typedef for GLchar. Work around it here by adding it. The Kkronos headers
@@ -126,7 +138,15 @@ typedef char GLchar;
# include <OpenGL/glext.h>
# else
# define GL_GLEXT_LEGACY // Prevents GL/gl.h from #including system glext.h
-# include <GL/gl.h>
+// Some Khronos headers use the ext proto guard in the standard headers as well,
+// which is bad. Work it around, but avoid spilling over to the ext header.
+# ifndef GL_GLEXT_PROTOTYPES
+# define GL_GLEXT_PROTOTYPES
+# include <GL/gl.h>
+# undef GL_GLEXT_PROTOTYPES
+# else
+# include <GL/gl.h>
+# endif
# include <QtGui/qopenglext.h>
# endif // Q_OS_MAC
#endif // QT_OPENGL_ES_2
diff --git a/src/gui/opengl/qopenglframebufferobject.cpp b/src/gui/opengl/qopenglframebufferobject.cpp
index be5407ccbd..9b07129303 100644
--- a/src/gui/opengl/qopenglframebufferobject.cpp
+++ b/src/gui/opengl/qopenglframebufferobject.cpp
@@ -1503,6 +1503,7 @@ bool QOpenGLFramebufferObject::bindDefault()
if (ctx) {
ctx->functions()->glBindFramebuffer(GL_FRAMEBUFFER, ctx->defaultFramebufferObject());
QOpenGLContextPrivate::get(ctx)->qgl_current_fbo_invalid = true;
+ QOpenGLContextPrivate::get(ctx)->qgl_current_fbo = Q_NULLPTR;
}
#ifdef QT_DEBUG
else
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index 1c772ef232..2c810e4870 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -4508,8 +4508,10 @@ static void blend_tiled_argb(int count, const QSpan *spans, void *userData)
uint *dest = ((uint *)data->rasterBuffer->scanLine(spans->y)) + x;
op.func(dest, src, l, coverage);
x += l;
+ sx += l;
length -= l;
- sx = 0;
+ if (sx >= image_width)
+ sx = 0;
}
++spans;
}
@@ -4567,7 +4569,9 @@ static void blend_tiled_rgb565(int count, const QSpan *spans, void *userData)
memcpy(dest, src, l * sizeof(quint16));
length -= l;
tx += l;
- sx = 0;
+ sx += l;
+ if (sx >= image_width)
+ sx = 0;
}
// Now use the rasterBuffer as the source of the texture,
@@ -4600,8 +4604,10 @@ static void blend_tiled_rgb565(int count, const QSpan *spans, void *userData)
const quint16 *src = (const quint16 *)data->texture.scanLine(sy) + sx;
blend_sourceOver_rgb16_rgb16(dest, src, l, alpha, ialpha);
x += l;
+ sx += l;
length -= l;
- sx = 0;
+ if (sx >= image_width)
+ sx = 0;
}
}
}
diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h
index fa3e6396ec..f13cdbaec0 100644
--- a/src/gui/painting/qdrawhelper_p.h
+++ b/src/gui/painting/qdrawhelper_p.h
@@ -335,6 +335,8 @@ struct QSpanData
QGradientData gradient;
QTextureData texture;
};
+ QExplicitlySharedDataPointer<const QSharedData> cachedGradient;
+
void init(QRasterBuffer *rb, const QRasterPaintEngine *pe);
void setup(const QBrush &brush, int alpha, QPainter::CompositionMode compositionMode);
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 0edd9125a3..df96a993e3 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -2283,6 +2283,8 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
= QRectF(sr.x() + clippedTargetRect.x() - r.x(), sr.y() + clippedTargetRect.y() - r.y(),
clippedTargetRect.width(), clippedTargetRect.height()).toRect();
+ clippedSourceRect = clippedSourceRect.intersected(img.rect());
+
uint dbpl = d->rasterBuffer->bytesPerLine();
uint sbpl = img.bytesPerLine();
@@ -4147,7 +4149,8 @@ void QRasterBuffer::flushToARGBImage(QImage *target) const
class QGradientCache
{
- struct CacheInfo
+public:
+ struct CacheInfo : public QSharedData
{
inline CacheInfo(QGradientStops s, int op, QGradient::InterpolationMode mode) :
stops(qMove(s)), opacity(op), interpolationMode(mode) {}
@@ -4158,12 +4161,9 @@ class QGradientCache
QGradient::InterpolationMode interpolationMode;
};
- typedef QMultiHash<quint64, CacheInfo> QGradientColorTableHash;
-
-public:
- typedef QPair<const QRgb *, const QRgba64 *> ColorBufferPair;
+ typedef QMultiHash<quint64, QExplicitlySharedDataPointer<const CacheInfo> > QGradientColorTableHash;
- inline ColorBufferPair getBuffer(const QGradient &gradient, int opacity) {
+ inline QExplicitlySharedDataPointer<const CacheInfo> getBuffer(const QGradient &gradient, int opacity) {
quint64 hash_val = 0;
const QGradientStops stops = gradient.stops();
@@ -4177,10 +4177,9 @@ public:
return addCacheElement(hash_val, gradient, opacity);
else {
do {
- const CacheInfo &cache_info = it.value();
- if (cache_info.stops == stops && cache_info.opacity == opacity && cache_info.interpolationMode == gradient.interpolationMode())
- return qMakePair(reinterpret_cast<const QRgb *>(cache_info.buffer32),
- reinterpret_cast<const QRgba64 *>(cache_info.buffer64));
+ const QExplicitlySharedDataPointer<const CacheInfo> &cache_info = it.value();
+ if (cache_info->stops == stops && cache_info->opacity == opacity && cache_info->interpolationMode == gradient.interpolationMode())
+ return cache_info;
++it;
} while (it != cache.constEnd() && it.key() == hash_val);
// an exact match for these stops and opacity was not found, create new cache
@@ -4194,18 +4193,16 @@ protected:
inline void generateGradientColorTable(const QGradient& g,
QRgba64 *colorTable,
int size, int opacity) const;
- ColorBufferPair addCacheElement(quint64 hash_val, const QGradient &gradient, int opacity) {
+ QExplicitlySharedDataPointer<const CacheInfo> addCacheElement(quint64 hash_val, const QGradient &gradient, int opacity) {
if (cache.size() == maxCacheSize()) {
// may remove more than 1, but OK
cache.erase(cache.begin() + (qrand() % maxCacheSize()));
}
- CacheInfo cache_entry(gradient.stops(), opacity, gradient.interpolationMode());
- generateGradientColorTable(gradient, cache_entry.buffer64, paletteSize(), opacity);
+ QExplicitlySharedDataPointer<CacheInfo> cache_entry(new CacheInfo (gradient.stops(), opacity, gradient.interpolationMode()));
+ generateGradientColorTable(gradient, cache_entry->buffer64, paletteSize(), opacity);
for (int i = 0; i < GRADIENT_STOPTABLE_SIZE; ++i)
- cache_entry.buffer32[i] = cache_entry.buffer64[i].toArgb32();
- CacheInfo &cache_value = cache.insert(hash_val, cache_entry).value();
- return qMakePair(reinterpret_cast<const QRgb *>(cache_value.buffer32),
- reinterpret_cast<const QRgba64 *>(cache_value.buffer64));
+ cache_entry->buffer32[i] = cache_entry->buffer64[i].toArgb32();
+ return cache.insert(hash_val, cache_entry).value();
}
QGradientColorTableHash cache;
@@ -4424,6 +4421,7 @@ Q_GUI_EXPORT extern QImage qt_imageForBrush(int brushStyle, bool invert);
void QSpanData::setup(const QBrush &brush, int alpha, QPainter::CompositionMode compositionMode)
{
Qt::BrushStyle brushStyle = qbrush_style(brush);
+ cachedGradient.reset();
switch (brushStyle) {
case Qt::SolidPattern: {
type = Solid;
@@ -4440,9 +4438,10 @@ void QSpanData::setup(const QBrush &brush, int alpha, QPainter::CompositionMode
const QLinearGradient *g = static_cast<const QLinearGradient *>(brush.gradient());
gradient.alphaColor = !brush.isOpaque() || alpha != 256;
- QGradientCache::ColorBufferPair colorBuffers = qt_gradient_cache()->getBuffer(*g, alpha);
- gradient.colorTable64 = colorBuffers.second;
- gradient.colorTable32 = colorBuffers.first;
+ QExplicitlySharedDataPointer<const QGradientCache::CacheInfo> cacheInfo = qt_gradient_cache()->getBuffer(*g, alpha);
+ cachedGradient = cacheInfo;
+ gradient.colorTable32 = cacheInfo->buffer32;
+ gradient.colorTable64 = cacheInfo->buffer64;
gradient.spread = g->spread();
@@ -4461,9 +4460,10 @@ void QSpanData::setup(const QBrush &brush, int alpha, QPainter::CompositionMode
const QRadialGradient *g = static_cast<const QRadialGradient *>(brush.gradient());
gradient.alphaColor = !brush.isOpaque() || alpha != 256;
- QGradientCache::ColorBufferPair colorBuffers = qt_gradient_cache()->getBuffer(*g, alpha);
- gradient.colorTable64 = colorBuffers.second;
- gradient.colorTable32 = colorBuffers.first;
+ QExplicitlySharedDataPointer<const QGradientCache::CacheInfo> cacheInfo = qt_gradient_cache()->getBuffer(*g, alpha);
+ cachedGradient = cacheInfo;
+ gradient.colorTable32 = cacheInfo->buffer32;
+ gradient.colorTable64 = cacheInfo->buffer64;
gradient.spread = g->spread();
@@ -4486,9 +4486,10 @@ void QSpanData::setup(const QBrush &brush, int alpha, QPainter::CompositionMode
const QConicalGradient *g = static_cast<const QConicalGradient *>(brush.gradient());
gradient.alphaColor = !brush.isOpaque() || alpha != 256;
- QGradientCache::ColorBufferPair colorBuffers = qt_gradient_cache()->getBuffer(*g, alpha);
- gradient.colorTable64 = colorBuffers.second;
- gradient.colorTable32 = colorBuffers.first;
+ QExplicitlySharedDataPointer<const QGradientCache::CacheInfo> cacheInfo = qt_gradient_cache()->getBuffer(*g, alpha);
+ cachedGradient = cacheInfo;
+ gradient.colorTable32 = cacheInfo->buffer32;
+ gradient.colorTable64 = cacheInfo->buffer64;
gradient.spread = QGradient::RepeatSpread;
diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
index d568dca6b9..13dc7f7dd9 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -1925,7 +1925,7 @@ int QPdfEnginePrivate::writeCompressed(const char *src, int len)
}
int QPdfEnginePrivate::writeImage(const QByteArray &data, int width, int height, int depth,
- int maskObject, int softMaskObject, bool dct)
+ int maskObject, int softMaskObject, bool dct, bool isMono)
{
int image = addXrefEntry(-1);
xprintf("<<\n"
@@ -1935,8 +1935,13 @@ int QPdfEnginePrivate::writeImage(const QByteArray &data, int width, int height,
"/Height %d\n", width, height);
if (depth == 1) {
- xprintf("/ImageMask true\n"
- "/Decode [1 0]\n");
+ if (!isMono) {
+ xprintf("/ImageMask true\n"
+ "/Decode [1 0]\n");
+ } else {
+ xprintf("/BitsPerComponent 1\n"
+ "/ColorSpace /DeviceGray\n");
+ }
} else {
xprintf("/BitsPerComponent 8\n"
"/ColorSpace %s\n", (depth == 32) ? "/DeviceRGB" : "/DeviceGray");
@@ -2454,7 +2459,7 @@ int QPdfEnginePrivate::addImage(const QImage &img, bool *bitmap, qint64 serial_n
memcpy(rawdata, image.constScanLine(y), bytesPerLine);
rawdata += bytesPerLine;
}
- object = writeImage(data, w, h, d, 0, 0);
+ object = writeImage(data, w, h, d, 0, 0, false, is_monochrome(img.colorTable()));
} else {
QByteArray softMaskData;
bool dct = false;
diff --git a/src/gui/painting/qpdf_p.h b/src/gui/painting/qpdf_p.h
index ef41f1efc1..9f782b019c 100644
--- a/src/gui/painting/qpdf_p.h
+++ b/src/gui/painting/qpdf_p.h
@@ -295,7 +295,7 @@ private:
int streampos;
int writeImage(const QByteArray &data, int width, int height, int depth,
- int maskObject, int softMaskObject, bool dct = false);
+ int maskObject, int softMaskObject, bool dct = false, bool isMono = false);
void writePage();
int addXrefEntry(int object, bool printostr = true);
diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp
index 966ab3fcdb..9423974b02 100644
--- a/src/gui/text/qcssparser.cpp
+++ b/src/gui/text/qcssparser.cpp
@@ -746,8 +746,9 @@ static ColorData parseColorValue(QCss::Value v)
QVector<QCss::Value> colorDigits;
if (!p.parseExpr(&colorDigits))
return ColorData();
+ const int tokenCount = colorDigits.count();
- for (int i = 0; i < qMin(colorDigits.count(), 7); i += 2) {
+ for (int i = 0; i < qMin(tokenCount, 7); i += 2) {
if (colorDigits.at(i).type == Value::Percentage) {
colorDigits[i].variant = colorDigits.at(i).variant.toReal() * (255. / 100.);
colorDigits[i].type = Value::Number;
@@ -756,11 +757,15 @@ static ColorData parseColorValue(QCss::Value v)
}
}
+
+ if (tokenCount < 5)
+ return ColorData();
+
int v1 = colorDigits.at(0).variant.toInt();
int v2 = colorDigits.at(2).variant.toInt();
int v3 = colorDigits.at(4).variant.toInt();
int alpha = 255;
- if (colorDigits.count() >= 7) {
+ if (tokenCount >= 7) {
int alphaValue = colorDigits.at(6).variant.toInt();
if (rgba && alphaValue <= 1)
alpha = colorDigits.at(6).variant.toReal() * 255.;
@@ -2177,6 +2182,7 @@ void Parser::init(const QString &css, bool isFile)
bool Parser::parse(StyleSheet *styleSheet, Qt::CaseSensitivity nameCaseSensitivity)
{
if (testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1String("charset"))) {
+ while (test(S) || test(CDO) || test(CDC)) {}
if (!next(STRING)) return false;
if (!next(SEMICOLON)) return false;
}
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index 283d03f22c..9122f4db4e 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -807,7 +807,8 @@ QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, QFo
Q_UNUSED(family);
Q_UNUSED(styleHint);
- QStringList retList;
+ QStringList preferredFallbacks;
+ QStringList otherFallbacks;
size_t writingSystem = std::find(scriptForWritingSystem,
scriptForWritingSystem + QFontDatabase::WritingSystemsCount,
@@ -828,18 +829,18 @@ QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, QFo
QtFontFoundry *foundry = f->foundries[j];
for (int k = 0; k < foundry->count; ++k) {
- if (style == foundry->styles[k]->key.style) {
- if (foundry->name.isEmpty())
- retList.append(f->name);
- else
- retList.append(f->name + QLatin1String(" [") + foundry->name + QLatin1Char(']'));
- break;
- }
+ QString name = foundry->name.isEmpty()
+ ? f->name
+ : f->name + QLatin1String(" [") + foundry->name + QLatin1Char(']');
+ if (style == foundry->styles[k]->key.style)
+ preferredFallbacks.append(name);
+ else
+ otherFallbacks.append(name);
}
}
}
- return retList;
+ return preferredFallbacks + otherFallbacks;
}
static void initializeDb();
@@ -949,8 +950,8 @@ QFontEngine *loadSingleEngine(int script,
return 0;
}
+ engine->isSmoothlyScalable = style->smoothScalable;
fontCache->insertEngine(key, engine);
-
return engine;
}
}
@@ -973,6 +974,7 @@ QFontEngine *loadSingleEngine(int script,
return 0;
}
+ engine->isSmoothlyScalable = style->smoothScalable;
fontCache->insertEngine(key, engine);
if (Q_LIKELY(cacheForCommonScript && !engine->symbol)) {
@@ -1659,9 +1661,6 @@ bool QFontDatabase::isFixedPitch(const QString &family,
bool QFontDatabase::isBitmapScalable(const QString &family,
const QString &style) const
{
- if (QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable())
- return true;
-
bool bitmapScalable = false;
QString familyName, foundryName;
parseFontName(family, foundryName, familyName);
@@ -1702,9 +1701,6 @@ bool QFontDatabase::isBitmapScalable(const QString &family,
*/
bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &style) const
{
- if (QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable())
- return true;
-
bool smoothScalable = false;
QString familyName, foundryName;
parseFontName(family, foundryName, familyName);
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index 4f0c6d25f7..758d5dd0b0 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -257,6 +257,7 @@ QFontEngine::QFontEngine(Type type)
cache_cost = 0;
fsType = 0;
symbol = false;
+ isSmoothlyScalable = false;
glyphFormat = Format_None;
m_subPixelPositionCount = 0;
diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp
index 5550dc21db..112dda0d75 100644
--- a/src/gui/text/qfontengine_ft.cpp
+++ b/src/gui/text/qfontengine_ft.cpp
@@ -1901,7 +1901,7 @@ void QFontEngineFT::unlockAlphaMapForGlyph()
static inline bool is2dRotation(const QTransform &t)
{
return qFuzzyCompare(t.m11(), t.m22()) && qFuzzyCompare(t.m12(), -t.m21())
- && qFuzzyCompare(t.m11()*t.m22() - t.m12()*t.m21(), 1.0);
+ && qFuzzyCompare(t.m11()*t.m22() - t.m12()*t.m21(), qreal(1.0));
}
QFontEngineFT::Glyph *QFontEngineFT::loadGlyphFor(glyph_t g,
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index 132531f5bc..8d669fcbb8 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -324,6 +324,7 @@ public:
uint cache_cost; // amount of mem used in bytes by the font
uint fsType : 16;
bool symbol;
+ bool isSmoothlyScalable;
struct KernPair {
uint left_right;
QFixed adjust;
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index bb44c19557..3a751e64cc 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -1766,6 +1766,10 @@ QTextBlock QTextDocument::lastBlock() const
\property QTextDocument::pageSize
\brief the page size that should be used for laying out the document
+ The units are determined by the underlying paint device. The size is
+ measured in logical pixels when painting to the screen, and in points
+ (1/72 inch) when painting to a printer.
+
By default, for a newly-created, empty document, this property contains
an undefined size.
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 3b1ee8ec03..b603ec7fc6 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1902,11 +1902,15 @@ void QTextLine::layout_helper(int maxGlyphs)
++lbh.glyphCount;
if (lbh.checkFullOtherwiseExtend(line))
goto found;
- } else if (attributes[lbh.currentPosition].whiteSpace) {
+ } else if (attributes[lbh.currentPosition].whiteSpace
+ && eng->layoutData->string.at(lbh.currentPosition).decompositionTag() != QChar::NoBreak) {
lbh.whiteSpaceOrObject = true;
- while (lbh.currentPosition < end && attributes[lbh.currentPosition].whiteSpace)
+ while (lbh.currentPosition < end
+ && attributes[lbh.currentPosition].whiteSpace
+ && eng->layoutData->string.at(lbh.currentPosition).decompositionTag() != QChar::NoBreak) {
addNextCluster(lbh.currentPosition, end, lbh.spaceData, lbh.glyphCount,
current, lbh.logClusters, lbh.glyphs);
+ }
if (!lbh.manualWrap && lbh.spaceData.textWidth > line.width) {
lbh.spaceData.textWidth = line.width; // ignore spaces that fall out of the line.
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index 79f418f675..7f07403a73 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -674,8 +674,7 @@ bool QHttpNetworkConnectionPrivate::dequeueRequest(QAbstractSocket *socket)
HttpMessagePair messagePair = highPriorityQueue.takeLast();
if (!messagePair.second->d_func()->requestIsPrepared)
prepareRequest(messagePair);
- channels[i].request = messagePair.first;
- channels[i].reply = messagePair.second;
+ updateChannel(i, messagePair);
return true;
}
@@ -684,13 +683,21 @@ bool QHttpNetworkConnectionPrivate::dequeueRequest(QAbstractSocket *socket)
HttpMessagePair messagePair = lowPriorityQueue.takeLast();
if (!messagePair.second->d_func()->requestIsPrepared)
prepareRequest(messagePair);
- channels[i].request = messagePair.first;
- channels[i].reply = messagePair.second;
+ updateChannel(i, messagePair);
return true;
}
return false;
}
+void QHttpNetworkConnectionPrivate::updateChannel(int i, const HttpMessagePair &messagePair)
+{
+ channels[i].request = messagePair.first;
+ channels[i].reply = messagePair.second;
+ // Now that reply is assigned a channel, correct reply to channel association
+ // previously set in queueRequest.
+ channels[i].reply->d_func()->connectionChannel = &channels[i];
+}
+
QHttpNetworkRequest QHttpNetworkConnectionPrivate::predictNextRequest() const
{
if (!highPriorityQueue.isEmpty())
diff --git a/src/network/access/qhttpnetworkconnection_p.h b/src/network/access/qhttpnetworkconnection_p.h
index e05bc1df74..df7142590a 100644
--- a/src/network/access/qhttpnetworkconnection_p.h
+++ b/src/network/access/qhttpnetworkconnection_p.h
@@ -213,6 +213,7 @@ public:
void requeueRequest(const HttpMessagePair &pair); // e.g. after pipeline broke
bool dequeueRequest(QAbstractSocket *socket);
void prepareRequest(HttpMessagePair &request);
+ void updateChannel(int i, const HttpMessagePair &messagePair);
QHttpNetworkRequest predictNextRequest() const;
void fillPipeline(QAbstractSocket *socket);
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 2f7be01078..292ea02e2c 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -1076,6 +1076,7 @@ void QHttpNetworkConnectionChannel::_q_encrypted()
connection->d_func()->dequeueRequest(socket);
if (reply) {
reply->setSpdyWasUsed(false);
+ Q_ASSERT(reply->d_func()->connectionChannel == this);
emit reply->encrypted();
}
if (reply)
@@ -1115,8 +1116,6 @@ void QHttpNetworkConnectionChannel::_q_sslErrors(const QList<QSslError> &errors)
connection->d_func()->pauseConnection();
if (pendingEncrypt && !reply)
connection->d_func()->dequeueRequest(socket);
- if (reply) // a reply was actually dequeued.
- reply->d_func()->connectionChannel = this; // set correct channel like in sendRequest() and queueRequest();
if (connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP) {
if (reply)
emit reply->sslErrors(errors);
diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp
index 6bf3c56db2..75a1a9a1ad 100644
--- a/src/network/access/qnetworkreplyhttpimpl.cpp
+++ b/src/network/access/qnetworkreplyhttpimpl.cpp
@@ -244,7 +244,8 @@ QNetworkReplyHttpImpl::QNetworkReplyHttpImpl(QNetworkAccessManager* const manage
QNetworkReplyHttpImpl::~QNetworkReplyHttpImpl()
{
- // Most work is done in private destructor
+ // This will do nothing if the request was already finished or aborted
+ emit abortHttpRequest();
}
void QNetworkReplyHttpImpl::close()
@@ -442,9 +443,6 @@ QNetworkReplyHttpImplPrivate::QNetworkReplyHttpImplPrivate()
QNetworkReplyHttpImplPrivate::~QNetworkReplyHttpImplPrivate()
{
- Q_Q(QNetworkReplyHttpImpl);
- // This will do nothing if the request was already finished or aborted
- emit q->abortHttpRequest();
}
/*
diff --git a/src/network/bearer/qnetworksession.cpp b/src/network/bearer/qnetworksession.cpp
index 6d864a7d3e..2ad46918b2 100644
--- a/src/network/bearer/qnetworksession.cpp
+++ b/src/network/bearer/qnetworksession.cpp
@@ -48,6 +48,11 @@
#include "qnetworkconfigmanager_p.h"
+// for QNetworkSession::interface
+#ifdef interface
+# undef interface
+#endif
+
#ifndef QT_NO_BEARERMANAGEMENT
QT_BEGIN_NAMESPACE
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 96021f45f4..a1f41a0929 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -847,7 +847,7 @@ bool QAbstractSocketPrivate::writeToSocket()
const char *ptr = writeBuffer.readPointer();
// Attempt to write it all in one chunk.
- qint64 written = socketEngine->write(ptr, nextSize);
+ qint64 written = nextSize ? socketEngine->write(ptr, nextSize) : Q_INT64_C(0);
if (written < 0) {
#if defined (QABSTRACTSOCKET_DEBUG)
qDebug() << "QAbstractSocketPrivate::writeToSocket() write error, aborting."
@@ -2501,7 +2501,7 @@ qint64 QAbstractSocket::writeData(const char *data, qint64 size)
if (!d->isBuffered && d->socketType == TcpSocket
&& d->socketEngine && d->writeBuffer.isEmpty()) {
// This code is for the new Unbuffered QTcpSocket use case
- qint64 written = d->socketEngine->write(data, size);
+ qint64 written = size ? d->socketEngine->write(data, size) : Q_INT64_C(0);
if (written < 0) {
d->setError(d->socketEngine->error(), d->socketEngine->errorString());
} else if (written < size) {
diff --git a/src/network/socket/qnativesocketengine.cpp b/src/network/socket/qnativesocketengine.cpp
index 9ba9d5317e..0e7ab74e0b 100644
--- a/src/network/socket/qnativesocketengine.cpp
+++ b/src/network/socket/qnativesocketengine.cpp
@@ -853,6 +853,10 @@ qint64 QNativeSocketEngine::writeDatagram(const char *data, qint64 size, const Q
/*!
Writes a block of \a size bytes from \a data to the socket.
Returns the number of bytes written, or -1 if an error occurred.
+
+ Passing zero as the \a size parameter on a connected UDP socket
+ will send an empty datagram. For other socket types results are
+ unspecified.
*/
qint64 QNativeSocketEngine::write(const char *data, qint64 size)
{
diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp
index 9817d4c57d..7c745786e2 100644
--- a/src/network/socket/qnativesocketengine_winrt.cpp
+++ b/src/network/socket/qnativesocketengine_winrt.cpp
@@ -258,19 +258,18 @@ bool QNativeSocketEngine::initialize(qintptr socketDescriptor, QAbstractSocket::
// Start processing incoming data
if (d->socketType == QAbstractSocket::TcpSocket) {
- HRESULT hr;
- QEventDispatcherWinRT::runOnXamlThread([d, &hr, socket, this]() {
+ HRESULT hr = QEventDispatcherWinRT::runOnXamlThread([d, socket, this]() {
ComPtr<IBuffer> buffer;
HRESULT hr = g->bufferFactory->Create(READ_BUFFER_SIZE, &buffer);
- RETURN_OK_IF_FAILED("initialize(): Could not create buffer");
+ RETURN_HR_IF_FAILED("initialize(): Could not create buffer");
ComPtr<IInputStream> stream;
hr = socket->get_InputStream(&stream);
- RETURN_OK_IF_FAILED("initialize(): Could not obtain input stream");
+ RETURN_HR_IF_FAILED("initialize(): Could not obtain input stream");
hr = stream->ReadAsync(buffer.Get(), READ_BUFFER_SIZE, InputStreamOptions_Partial, d->readOp.GetAddressOf());
- RETURN_OK_IF_FAILED_WITH_ARGS("initialize(): Failed to read from the socket buffer (%s).",
+ RETURN_HR_IF_FAILED_WITH_ARGS("initialize(): Failed to read from the socket buffer (%s).",
socketDescription(this).constData());
hr = d->readOp->put_Completed(Callback<SocketReadCompletedHandler>(d, &QNativeSocketEnginePrivate::handleReadyRead).Get());
- RETURN_OK_IF_FAILED_WITH_ARGS("initialize(): Failed to set socket read callback (%s).",
+ RETURN_HR_IF_FAILED_WITH_ARGS("initialize(): Failed to set socket read callback (%s).",
socketDescription(this).constData());
return S_OK;
});
@@ -498,10 +497,12 @@ void QNativeSocketEngine::close()
ComPtr<IAsyncAction> action;
hr = socket3->CancelIOAsync(&action);
Q_ASSERT_SUCCEEDED(hr);
- hr = QWinRTFunctions::await(action);
+ hr = QWinRTFunctions::await(action, QWinRTFunctions::YieldThread, 5000);
// If there is no pending IO (no read established before) the function will fail with
// "function was called at an unexpected time" which is fine.
- if (hr != E_ILLEGAL_METHOD_CALL)
+ // Timeout is fine as well. The result will be the socket being hard reset instead of
+ // being closed gracefully
+ if (hr != E_ILLEGAL_METHOD_CALL && hr != ERROR_TIMEOUT)
Q_ASSERT_SUCCEEDED(hr);
return S_OK;
});
@@ -585,6 +586,7 @@ qint64 QNativeSocketEngine::bytesAvailable() const
if (d->socketType != QAbstractSocket::TcpSocket)
return -1;
+ QMutexLocker locker(&d->readMutex);
return d->readBytes.size() - d->readBytes.pos();
}
@@ -597,12 +599,12 @@ qint64 QNativeSocketEngine::read(char *data, qint64 maxlen)
// There will be a read notification when the socket was closed by the remote host. If that
// happens and there isn't anything left in the buffer, we have to return -1 in order to signal
// the closing of the socket.
+ QMutexLocker mutexLocker(&d->readMutex);
if (d->readBytes.pos() == d->readBytes.size() && d->socketState != QAbstractSocket::ConnectedState) {
close();
return -1;
}
- QMutexLocker mutexLocker(&d->readMutex);
return d->readBytes.read(data, maxlen);
}
@@ -633,6 +635,7 @@ qint64 QNativeSocketEngine::readDatagram(char *data, qint64 maxlen, QIpPacketHea
PacketHeaderOptions)
{
Q_D(QNativeSocketEngine);
+ QMutexLocker locker(&d->readMutex);
if (d->socketType != QAbstractSocket::UdpSocket || d->pendingDatagrams.isEmpty()) {
if (header)
header->clear();
@@ -646,12 +649,13 @@ qint64 QNativeSocketEngine::readDatagram(char *data, qint64 maxlen, QIpPacketHea
QByteArray readOrigin;
// Do not read the whole datagram. Put the rest of it back into the "queue"
if (maxlen < datagram.data.length()) {
- QByteArray readOrigin = datagram.data.left(maxlen);
+ readOrigin = datagram.data.left(maxlen);
datagram.data = datagram.data.remove(0, maxlen);
d->pendingDatagrams.prepend(datagram);
} else {
readOrigin = datagram.data;
}
+ locker.unlock();
memcpy(data, readOrigin, qMin(maxlen, qint64(datagram.data.length())));
return readOrigin.length();
}
@@ -689,12 +693,14 @@ qint64 QNativeSocketEngine::writeDatagram(const char *data, qint64 len, const QI
bool QNativeSocketEngine::hasPendingDatagrams() const
{
Q_D(const QNativeSocketEngine);
+ QMutexLocker locker(&d->readMutex);
return d->pendingDatagrams.length() > 0;
}
qint64 QNativeSocketEngine::pendingDatagramSize() const
{
Q_D(const QNativeSocketEngine);
+ QMutexLocker locker(&d->readMutex);
if (d->pendingDatagrams.isEmpty())
return -1;
@@ -1344,7 +1350,7 @@ HRESULT QNativeSocketEnginePrivate::handleReadyRead(IAsyncBufferOperation *async
hr = byteArrayAccess->Buffer(&data);
Q_ASSERT_SUCCEEDED(hr);
- readMutex.lock();
+ QMutexLocker locker(&readMutex);
if (readBytes.atEnd()) // Everything has been read; the buffer is safe to reset
readBytes.close();
if (!readBytes.isOpen())
@@ -1354,7 +1360,7 @@ HRESULT QNativeSocketEnginePrivate::handleReadyRead(IAsyncBufferOperation *async
Q_ASSERT(readBytes.atEnd());
readBytes.write(reinterpret_cast<const char*>(data), qint64(bufferLength));
readBytes.seek(readPos);
- readMutex.unlock();
+ locker.unlock();
if (notifyOnRead)
emit q->readReady();
@@ -1418,7 +1424,9 @@ HRESULT QNativeSocketEnginePrivate::handleNewDatagram(IDatagramSocket *socket, I
datagram.data.resize(length);
hr = reader->ReadBytes(length, reinterpret_cast<BYTE *>(datagram.data.data()));
RETURN_OK_IF_FAILED("Could not read datagram");
+ QMutexLocker locker(&readMutex);
pendingDatagrams.append(datagram);
+ locker.unlock();
if (notifyOnRead)
emit q->readReady();
diff --git a/src/network/socket/qnativesocketengine_winrt_p.h b/src/network/socket/qnativesocketengine_winrt_p.h
index 5b76c2d223..822d1fd513 100644
--- a/src/network/socket/qnativesocketengine_winrt_p.h
+++ b/src/network/socket/qnativesocketengine_winrt_p.h
@@ -206,10 +206,18 @@ private:
Microsoft::WRL::ComPtr<ABI::Windows::Networking::Sockets::IStreamSocketListener> tcpListener;
Microsoft::WRL::ComPtr<ABI::Windows::Foundation::IAsyncAction> connectOp;
Microsoft::WRL::ComPtr<ABI::Windows::Foundation::IAsyncOperationWithProgress<ABI::Windows::Storage::Streams::IBuffer *, UINT32>> readOp;
+
+ // Protected by readMutex. Written in handleReadyRead (native callback)
QBuffer readBytes;
- QMutex readMutex;
+ // In case of TCP readMutex protects readBytes and bytesAvailable. In case of UDP it is
+ // pendingDatagrams. They are written inside native callbacks (handleReadyRead and
+ // handleNewDatagrams/putIntoPendingDatagramsList)
+ mutable QMutex readMutex;
+
+ // Protected by readMutex. Written in handleNewDatagrams/putIntoPendingDatagramsList
QList<WinRtDatagram> pendingDatagrams;
+
QList<ABI::Windows::Networking::Sockets::IStreamSocket *> pendingConnections;
QList<ABI::Windows::Networking::Sockets::IStreamSocket *> currentConnections;
QEventLoop eventLoop;
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 6b0501e8d0..e64a29d1a4 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -1293,14 +1293,19 @@ QGLFormat::OpenGLVersionFlags Q_AUTOTEST_EXPORT qOpenGLVersionFlagsFromString(co
switch (versionString[2].toLatin1()) {
case '5':
versionFlags |= QGLFormat::OpenGL_Version_1_5;
+ // fall through
case '4':
versionFlags |= QGLFormat::OpenGL_Version_1_4;
+ // fall through
case '3':
versionFlags |= QGLFormat::OpenGL_Version_1_3;
+ // fall through
case '2':
versionFlags |= QGLFormat::OpenGL_Version_1_2;
+ // fall through
case '1':
versionFlags |= QGLFormat::OpenGL_Version_1_1;
+ // fall through
default:
break;
}
@@ -1325,10 +1330,13 @@ QGLFormat::OpenGLVersionFlags Q_AUTOTEST_EXPORT qOpenGLVersionFlagsFromString(co
switch (versionString[2].toLatin1()) {
case '3':
versionFlags |= QGLFormat::OpenGL_Version_3_3;
+ // fall through
case '2':
versionFlags |= QGLFormat::OpenGL_Version_3_2;
+ // fall through
case '1':
versionFlags |= QGLFormat::OpenGL_Version_3_1;
+ // fall through
case '0':
break;
default:
@@ -1353,10 +1361,13 @@ QGLFormat::OpenGLVersionFlags Q_AUTOTEST_EXPORT qOpenGLVersionFlagsFromString(co
switch (versionString[2].toLatin1()) {
case '3':
versionFlags |= QGLFormat::OpenGL_Version_4_3;
+ // fall through
case '2':
versionFlags |= QGLFormat::OpenGL_Version_4_2;
+ // fall through
case '1':
versionFlags |= QGLFormat::OpenGL_Version_4_1;
+ // fall through
case '0':
break;
default:
diff --git a/src/platformheaders/xcbfunctions/qxcbwindowfunctions.qdoc b/src/platformheaders/xcbfunctions/qxcbwindowfunctions.qdoc
index 241dff05da..f0ef5ee2a7 100644
--- a/src/platformheaders/xcbfunctions/qxcbwindowfunctions.qdoc
+++ b/src/platformheaders/xcbfunctions/qxcbwindowfunctions.qdoc
@@ -86,6 +86,35 @@
*/
/*!
+ \typedef QXcbWindowFunctions::SetWmWindowRole
+ \since 5.6.2
+
+ This is the typedef for the function returned by
+ QGuiApplication::platformFunction when passed the
+ value returned by setWmWindowRoleIdentifier().
+*/
+
+/*!
+ \fn QByteArray QXcbWindowFunctions::setWmWindowRoleIdentifier()
+ \since 5.6.2
+
+ This function returns the byte array that can be used to query
+ QGuiApplication::platformFunction to retrieve the SetWmWindowRole function.
+*/
+
+/*!
+ \fn void QXcbWindowFunctions::setWmWindowRole(QWindow *window, const QByteArray &role)
+ \since 5.6.2
+
+ Sets the WM_WINDOW_ROLE property from \role on the corresponding
+ X11 window.
+
+ This is a convenience function that can be used directly instead
+ of resolving the function pointer. \a window and \a role will be
+ relayed to the function retrieved by QGuiApplication.
+*/
+
+/*!
\typedef QXcbWindowFunctions::SetWmWindowIconText
This is the typedef for the function returned by
diff --git a/src/platformsupport/clipboard/qmacmime.mm b/src/platformsupport/clipboard/qmacmime.mm
index f2b9afa2b5..70de90c21d 100644
--- a/src/platformsupport/clipboard/qmacmime.mm
+++ b/src/platformsupport/clipboard/qmacmime.mm
@@ -414,8 +414,7 @@ QVariant QMacPasteboardMimeUnicodeText::convertToMime(const QString &mimetype, Q
if (flavor == QLatin1String("public.utf8-plain-text")) {
ret = QString::fromUtf8(firstData);
} else if (flavor == QLatin1String("public.utf16-plain-text")) {
- ret = QString(reinterpret_cast<const QChar *>(firstData.constData()),
- firstData.size() / sizeof(QChar));
+ ret = QTextCodec::codecForName("UTF-16")->toUnicode(firstData);
} else {
qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype));
}
@@ -429,7 +428,7 @@ QList<QByteArray> QMacPasteboardMimeUnicodeText::convertFromMime(const QString &
if (flavor == QLatin1String("public.utf8-plain-text"))
ret.append(string.toUtf8());
else if (flavor == QLatin1String("public.utf16-plain-text"))
- ret.append(QByteArray((char*)string.utf16(), string.length()*2));
+ ret.append(QTextCodec::codecForName("UTF-16")->fromUnicode(string));
return ret;
}
diff --git a/src/platformsupport/dbusmenu/qdbusmenuconnection.cpp b/src/platformsupport/dbusmenu/qdbusmenuconnection.cpp
index 361146dc23..a9d758209a 100644
--- a/src/platformsupport/dbusmenu/qdbusmenuconnection.cpp
+++ b/src/platformsupport/dbusmenu/qdbusmenuconnection.cpp
@@ -95,6 +95,12 @@ bool QDBusMenuConnection::registerTrayIconMenu(QDBusTrayIcon *item)
return success;
}
+void QDBusMenuConnection::unregisterTrayIconMenu(QDBusTrayIcon *item)
+{
+ if (item->menu())
+ connection().unregisterObject(MenuBarPath);
+}
+
bool QDBusMenuConnection::registerTrayIcon(QDBusTrayIcon *item)
{
bool success = connection().registerService(item->instanceId());
@@ -124,7 +130,7 @@ bool QDBusMenuConnection::registerTrayIcon(QDBusTrayIcon *item)
bool QDBusMenuConnection::unregisterTrayIcon(QDBusTrayIcon *item)
{
- connection().unregisterObject(MenuBarPath);
+ unregisterTrayIconMenu(item);
connection().unregisterObject(StatusNotifierItemPath);
bool success = connection().unregisterService(item->instanceId());
if (!success)
diff --git a/src/platformsupport/dbusmenu/qdbusmenuconnection_p.h b/src/platformsupport/dbusmenu/qdbusmenuconnection_p.h
index 84eb2a6f3a..ae0595ae3b 100644
--- a/src/platformsupport/dbusmenu/qdbusmenuconnection_p.h
+++ b/src/platformsupport/dbusmenu/qdbusmenuconnection_p.h
@@ -72,6 +72,7 @@ public:
bool isStatusNotifierHostRegistered() const { return m_statusNotifierHostRegistered; }
#ifndef QT_NO_SYSTEMTRAYICON
bool registerTrayIconMenu(QDBusTrayIcon *item);
+ void unregisterTrayIconMenu(QDBusTrayIcon *item);
bool registerTrayIcon(QDBusTrayIcon *item);
bool unregisterTrayIcon(QDBusTrayIcon *item);
#endif // QT_NO_SYSTEMTRAYICON
diff --git a/src/platformsupport/dbustray/qdbustrayicon.cpp b/src/platformsupport/dbustray/qdbustrayicon.cpp
index 1d8e430f3e..8ad641c3a7 100644
--- a/src/platformsupport/dbustray/qdbustrayicon.cpp
+++ b/src/platformsupport/dbustray/qdbustrayicon.cpp
@@ -213,20 +213,21 @@ QPlatformMenu *QDBusTrayIcon::createMenu() const
void QDBusTrayIcon::updateMenu(QPlatformMenu * menu)
{
qCDebug(qLcTray) << menu;
- bool needsRegistering = !m_menu;
- if (!m_menu)
- m_menu = qobject_cast<QDBusPlatformMenu *>(menu);
- if (!m_menuAdaptor) {
+ QDBusPlatformMenu *newMenu = qobject_cast<QDBusPlatformMenu *>(menu);
+ if (m_menu != newMenu) {
+ if (m_menu) {
+ dBusConnection()->unregisterTrayIconMenu(this);
+ delete m_menuAdaptor;
+ }
+ m_menu = newMenu;
m_menuAdaptor = new QDBusMenuAdaptor(m_menu);
// TODO connect(m_menu, , m_menuAdaptor, SIGNAL(ItemActivationRequested(int,uint)));
connect(m_menu, SIGNAL(propertiesUpdated(QDBusMenuItemList,QDBusMenuItemKeysList)),
m_menuAdaptor, SIGNAL(ItemsPropertiesUpdated(QDBusMenuItemList,QDBusMenuItemKeysList)));
connect(m_menu, SIGNAL(updated(uint,int)),
m_menuAdaptor, SIGNAL(LayoutUpdated(uint,int)));
- }
- m_menu->emitUpdated();
- if (needsRegistering)
dBusConnection()->registerTrayIconMenu(this);
+ }
}
void QDBusTrayIcon::showMessage(const QString &title, const QString &msg, const QIcon &icon,
diff --git a/src/platformsupport/eglconvenience/qt_egl_p.h b/src/platformsupport/eglconvenience/qt_egl_p.h
index 615ee4b80a..b1495c9f9d 100644
--- a/src/platformsupport/eglconvenience/qt_egl_p.h
+++ b/src/platformsupport/eglconvenience/qt_egl_p.h
@@ -83,7 +83,7 @@ struct QtEglConverter<uint32_t, uintptr_t>
{ return v; }
};
-#if Q_PROCESSOR_WORDSIZE > 4
+#if QT_POINTER_SIZE > 4
template <>
struct QtEglConverter<uintptr_t, uint32_t>
{
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index 591259ad70..d5cb02e291 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -117,7 +117,7 @@ static inline int stretchFromFcWidth(int fcwidth)
return qtstretch;
}
-static const char *specialLanguages[] = {
+static const char specialLanguages[][6] = {
"", // Unknown
"", // Inherited
"", // Common
@@ -251,12 +251,12 @@ static const char *specialLanguages[] = {
"", // OldHungarian
"" // SignWriting
};
-Q_STATIC_ASSERT(sizeof(specialLanguages) / sizeof(const char *) == QChar::ScriptCount);
+Q_STATIC_ASSERT(sizeof specialLanguages / sizeof *specialLanguages == QChar::ScriptCount);
// this could become a list of all languages used for each writing
// system, instead of using the single most common language.
-static const char *languageForWritingSystem[] = {
- 0, // Any
+static const char languageForWritingSystem[][6] = {
+ "", // Any
"en", // Latin
"el", // Greek
"ru", // Cyrillic
@@ -286,25 +286,25 @@ static const char *languageForWritingSystem[] = {
"ja", // Japanese
"ko", // Korean
"vi", // Vietnamese
- 0, // Symbol
+ "", // Symbol
"sga", // Ogham
"non", // Runic
"man" // N'Ko
};
-Q_STATIC_ASSERT(sizeof(languageForWritingSystem) / sizeof(const char *) == QFontDatabase::WritingSystemsCount);
+Q_STATIC_ASSERT(sizeof languageForWritingSystem / sizeof *languageForWritingSystem == QFontDatabase::WritingSystemsCount);
#if FC_VERSION >= 20297
// Newer FontConfig let's us sort out fonts that report certain scripts support,
// but no open type tables for handling them correctly.
// Check the reported script presence in the FC_CAPABILITY's "otlayout:" section.
-static const char *capabilityForWritingSystem[] = {
- 0, // Any
- 0, // Latin
- 0, // Greek
- 0, // Cyrillic
- 0, // Armenian
- 0, // Hebrew
- 0, // Arabic
+static const char capabilityForWritingSystem[][5] = {
+ "", // Any
+ "", // Latin
+ "", // Greek
+ "", // Cyrillic
+ "", // Armenian
+ "", // Hebrew
+ "", // Arabic
"syrc", // Syriac
"thaa", // Thaana
"deva", // Devanagari
@@ -317,20 +317,20 @@ static const char *capabilityForWritingSystem[] = {
"knda", // Kannada
"mlym", // Malayalam
"sinh", // Sinhala
- 0, // Thai
- 0, // Lao
+ "", // Thai
+ "", // Lao
"tibt", // Tibetan
"mymr", // Myanmar
- 0, // Georgian
+ "", // Georgian
"khmr", // Khmer
- 0, // SimplifiedChinese
- 0, // TraditionalChinese
- 0, // Japanese
- 0, // Korean
- 0, // Vietnamese
- 0, // Symbol
- 0, // Ogham
- 0, // Runic
+ "", // SimplifiedChinese
+ "", // TraditionalChinese
+ "", // Japanese
+ "", // Korean
+ "", // Vietnamese
+ "", // Symbol
+ "", // Ogham
+ "", // Runic
"nko " // N'Ko
};
Q_STATIC_ASSERT(sizeof(capabilityForWritingSystem) / sizeof(*capabilityForWritingSystem) == QFontDatabase::WritingSystemsCount);
@@ -436,7 +436,7 @@ static void populateFromPattern(FcPattern *pattern)
FcLangResult langRes = FcLangSetHasLang(langset, lang);
if (langRes != FcLangDifferentLang) {
#if FC_VERSION >= 20297
- if (capabilityForWritingSystem[j] != Q_NULLPTR && requiresOpenType(j)) {
+ if (*capabilityForWritingSystem[j] && requiresOpenType(j)) {
if (cap == Q_NULLPTR)
capRes = FcPatternGetString(pattern, FC_CAPABILITY, 0, &cap);
if (capRes == FcResultMatch && strstr(reinterpret_cast<const char *>(cap), capabilityForWritingSystem[j]) == 0)
diff --git a/src/platformsupport/glxconvenience/qglxconvenience.cpp b/src/platformsupport/glxconvenience/qglxconvenience.cpp
index 7dc29fae6d..4225bebf37 100644
--- a/src/platformsupport/glxconvenience/qglxconvenience.cpp
+++ b/src/platformsupport/glxconvenience/qglxconvenience.cpp
@@ -386,5 +386,10 @@ bool qglx_reduceFormat(QSurfaceFormat *format)
return true;
}
+ if (format->stereo()) {
+ format->setStereo(false);
+ return true;
+ }
+
return false;
}
diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp
index c79198d7fe..2614bb52a8 100644
--- a/src/plugins/platforms/android/androidjnimain.cpp
+++ b/src/plugins/platforms/android/androidjnimain.cpp
@@ -635,6 +635,11 @@ static void updateWindow(JNIEnv */*env*/, jobject /*thiz*/)
if (QGuiApplication::instance() != nullptr) {
const auto tlw = QGuiApplication::topLevelWindows();
for (QWindow *w : tlw) {
+
+ // Skip non-platform windows, e.g., offscreen windows.
+ if (!w->handle())
+ continue;
+
QRect availableGeometry = w->screen()->availableGeometry();
if (w->geometry().width() > 0 && w->geometry().height() > 0 && availableGeometry.width() > 0 && availableGeometry.height() > 0)
QWindowSystemInterface::handleExposeEvent(w, QRegion(QRect(QPoint(), w->geometry().size())));
diff --git a/src/plugins/platforms/android/qandroidplatformtheme.cpp b/src/plugins/platforms/android/qandroidplatformtheme.cpp
index f8d0b9c8ba..6cabdd8b3c 100644
--- a/src/plugins/platforms/android/qandroidplatformtheme.cpp
+++ b/src/plugins/platforms/android/qandroidplatformtheme.cpp
@@ -461,9 +461,9 @@ QVariant QAndroidPlatformTheme::themeHint(ThemeHint hint) const
case StyleNames:
if (qEnvironmentVariableIntValue("QT_USE_ANDROID_NATIVE_STYLE")
&& m_androidStyleData) {
- return QStringList("android");
+ return QStringList(QLatin1String("android"));
}
- return QStringList("fusion");
+ return QStringList(QLatin1String("fusion"));
case MouseDoubleClickDistance:
{
diff --git a/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm b/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm
index 7d12804d47..f89c06fc58 100644
--- a/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm
+++ b/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm
@@ -123,7 +123,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate);
- (void)dealloc
{
- [self restoreOriginalContentView];
+ [mStolenContentView release];
[mColorPanel setDelegate:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self];
diff --git a/src/plugins/platforms/cocoa/qcocoacursor.mm b/src/plugins/platforms/cocoa/qcocoacursor.mm
index 0433084436..4870c521c7 100644
--- a/src/plugins/platforms/cocoa/qcocoacursor.mm
+++ b/src/plugins/platforms/cocoa/qcocoacursor.mm
@@ -61,7 +61,7 @@ QCocoaCursor::~QCocoaCursor()
void QCocoaCursor::changeCursor(QCursor *cursor, QWindow *window)
{
- NSCursor * cocoaCursor = convertCursor(cursor);
+ NSCursor *cocoaCursor = convertCursor(cursor);
if (QPlatformWindow * platformWindow = window->handle())
static_cast<QCocoaWindow *>(platformWindow)->setWindowCursor(cocoaCursor);
@@ -83,9 +83,12 @@ void QCocoaCursor::setPos(const QPoint &position)
CFRelease(e);
}
-NSCursor *QCocoaCursor::convertCursor(QCursor * cursor)
+NSCursor *QCocoaCursor::convertCursor(QCursor *cursor)
{
- const Qt::CursorShape newShape = cursor ? cursor->shape() : Qt::ArrowCursor;
+ if (cursor == Q_NULLPTR)
+ return 0;
+
+ const Qt::CursorShape newShape = cursor->shape();
NSCursor *cocoaCursor;
// Check for a suitable built-in NSCursor first:
diff --git a/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm
index d0b76861d8..32c4077961 100644
--- a/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm
+++ b/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm
@@ -151,7 +151,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSFontPanelDelegate);
- (void)dealloc
{
- [self restoreOriginalContentView];
+ [mStolenContentView release];
[mFontPanel setDelegate:nil];
[[NSFontManager sharedFontManager] setDelegate:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self];
diff --git a/src/plugins/platforms/cocoa/qcocoakeymapper.mm b/src/plugins/platforms/cocoa/qcocoakeymapper.mm
index ebe547f64b..250f3f3bf7 100644
--- a/src/plugins/platforms/cocoa/qcocoakeymapper.mm
+++ b/src/plugins/platforms/cocoa/qcocoakeymapper.mm
@@ -390,11 +390,6 @@ bool QCocoaKeyMapper::updateKeyboard()
keyboardInputLocale = QLocale::c();
keyboardInputDirection = Qt::LeftToRight;
}
-
- const auto newMode = keyboard_mode;
- deleteLayouts();
- keyboard_mode = newMode;
-
return true;
}
@@ -417,8 +412,10 @@ void QCocoaKeyMapper::clearMappings()
void QCocoaKeyMapper::updateKeyMap(unsigned short macVirtualKey, QChar unicodeKey)
{
- updateKeyboard();
-
+ if (updateKeyboard()) {
+ // ### Qt 4 did this:
+ // QKeyMapper::changeKeyboard();
+ }
if (keyLayout[macVirtualKey])
return;
@@ -474,8 +471,9 @@ QList<int> QCocoaKeyMapper::possibleKeys(const QKeyEvent *event) const
for (int i = 1; i < 8; ++i) {
Qt::KeyboardModifiers neededMods = ModsTbl[i];
int key = kbItem->qtKey[i];
- if (key && key != baseKey && ((keyMods & neededMods) == neededMods))
- ret << int(key + neededMods);
+ if (key && key != baseKey && ((keyMods & neededMods) == neededMods)) {
+ ret << int(key + (keyMods & ~neededMods));
+ }
}
return ret;
}
diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.h b/src/plugins/platforms/cocoa/qcocoamenubar.h
index 7ce2059450..4870ca4103 100644
--- a/src/plugins/platforms/cocoa/qcocoamenubar.h
+++ b/src/plugins/platforms/cocoa/qcocoamenubar.h
@@ -76,6 +76,7 @@ private:
static QCocoaWindow *findWindowForMenubar();
static QCocoaMenuBar *findGlobalMenubar();
+ bool needsImmediateUpdate();
bool shouldDisable(QCocoaWindow *active) const;
NSMenuItem *nativeItemForMenu(QCocoaMenu *menu) const;
diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.mm b/src/plugins/platforms/cocoa/qcocoamenubar.mm
index 1c50c3b032..c6e9bd6373 100644
--- a/src/plugins/platforms/cocoa/qcocoamenubar.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenubar.mm
@@ -95,6 +95,32 @@ QCocoaMenuBar::~QCocoaMenuBar()
}
}
+bool QCocoaMenuBar::needsImmediateUpdate()
+{
+ if (m_window && m_window->window()->isActive()) {
+ return true;
+ } else if (!m_window) {
+ // Only update if the focus/active window has no
+ // menubar, which means it'll be using this menubar.
+ // This is to avoid a modification in a parentless
+ // menubar to affect a window-assigned menubar.
+ QWindow *fw = QGuiApplication::focusWindow();
+ if (!fw) {
+ // Same if there's no focus window, BTW.
+ return true;
+ } else {
+ QCocoaWindow *cw = static_cast<QCocoaWindow *>(fw->handle());
+ if (cw && !cw->menubar())
+ return true;
+ }
+ }
+
+ // Either the menubar is attached to a non-active window,
+ // or the application's focus window has its own menubar
+ // (which is different from this one)
+ return false;
+}
+
void QCocoaMenuBar::insertMenu(QPlatformMenu *platformMenu, QPlatformMenu *before)
{
QCocoaMenu *menu = static_cast<QCocoaMenu *>(platformMenu);
@@ -135,7 +161,7 @@ void QCocoaMenuBar::insertMenu(QPlatformMenu *platformMenu, QPlatformMenu *befor
syncMenu(menu);
- if (m_window && m_window->window()->isActive())
+ if (needsImmediateUpdate())
updateMenuBarImmediately();
}
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h
index d9e94735ac..849ed858d1 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.h
+++ b/src/plugins/platforms/cocoa/qcocoawindow.h
@@ -242,6 +242,8 @@ public:
void setMenubar(QCocoaMenuBar *mb);
QCocoaMenuBar *menubar() const;
+ NSCursor *effectiveWindowCursor() const;
+ void applyEffectiveWindowCursor();
void setWindowCursor(NSCursor *cursor);
void registerTouch(bool enable);
@@ -352,6 +354,7 @@ public: // for QNSView
// This object is tracked by QCocoaWindowPointer,
// preventing the use of dangling pointers.
QObject sentinel;
+ bool m_hasWindowFilePath;
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index 91ce91004f..b3cbf9f599 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -384,6 +384,7 @@ QCocoaWindow::QCocoaWindow(QWindow *tlw)
, m_topContentBorderThickness(0)
, m_bottomContentBorderThickness(0)
, m_normalGeometry(QRect(0,0,-1,-1))
+ , m_hasWindowFilePath(false)
{
qCDebug(lcQpaCocoaWindow) << "QCocoaWindow::QCocoaWindow" << window();
@@ -950,6 +951,7 @@ void QCocoaWindow::setWindowFilePath(const QString &filePath)
QFileInfo fi(filePath);
[m_nsWindow setRepresentedFilename: fi.exists() ? QCFString::toNSString(filePath) : @""];
+ m_hasWindowFilePath = fi.exists();
}
void QCocoaWindow::setWindowIcon(const QIcon &icon)
@@ -1661,31 +1663,53 @@ QCocoaMenuBar *QCocoaWindow::menubar() const
return m_menubar;
}
-void QCocoaWindow::setWindowCursor(NSCursor *cursor)
+// Finds the effective cursor for this window by walking up the
+// ancestor chain (including this window) until a set cursor is
+// found. Returns nil if there is not set cursor.
+NSCursor *QCocoaWindow::effectiveWindowCursor() const
{
- // This function is called (via QCocoaCursor) by Qt to set
- // the cursor for this window. It can be called for a window
- // that is not currenly under the mouse pointer (for example
- // for a popup window.) Qt expects the set cursor to "stick":
- // it should be accociated with the window until a different
- // cursor is set.
- if (m_windowCursor != cursor) {
- [m_windowCursor release];
- m_windowCursor = [cursor retain];
- }
- // Use the built in cursor rect API if the QCocoaWindow has a NSWindow.
- // Othervise, set the cursor if this window is under the mouse. In
- // this case QNSView::cursorUpdate will set the cursor as the pointer
- // moves.
- if (m_nsWindow && m_qtView) {
- [m_nsWindow invalidateCursorRectsForView : m_qtView];
+ if (m_windowCursor)
+ return m_windowCursor;
+ if (!parent())
+ return nil;
+ return static_cast<QCocoaWindow *>(parent())->effectiveWindowCursor();
+}
+
+// Applies the cursor as returned by effectiveWindowCursor(), handles
+// the special no-cursor-set case by setting the arrow cursor.
+void QCocoaWindow::applyEffectiveWindowCursor()
+{
+ NSCursor *effectiveCursor = effectiveWindowCursor();
+ if (effectiveCursor) {
+ [effectiveCursor set];
} else {
- if (m_windowUnderMouse)
- [cursor set];
+ // We wold like to _unset_ the cursor here; but there is no such
+ // API. Fall back to setting the default arrow cursor.
+ [[NSCursor arrowCursor] set];
}
}
+void QCocoaWindow::setWindowCursor(NSCursor *cursor)
+{
+ if (m_windowCursor == cursor)
+ return;
+
+ // Setting a cursor in a foregin view is not supported.
+ if (!m_qtView)
+ return;
+
+ [m_windowCursor release];
+ m_windowCursor = cursor;
+ [m_windowCursor retain];
+
+ // The installed view tracking area (see QNSView updateTrackingAreas) will
+ // handle cursor updates on mouse enter/leave. Handle the case where the
+ // mouse is on the this window by changing the cursor immediately.
+ if (m_windowUnderMouse)
+ applyEffectiveWindowCursor();
+}
+
void QCocoaWindow::registerTouch(bool enable)
{
m_registerTouchCount += enable ? 1 : -1;
diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h
index 00d65ea7f8..c30ace35b4 100644
--- a/src/plugins/platforms/cocoa/qnsview.h
+++ b/src/plugins/platforms/cocoa/qnsview.h
@@ -131,7 +131,6 @@ Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper));
- (void)mouseMovedImpl:(NSEvent *)theEvent;
- (void)mouseEnteredImpl:(NSEvent *)theEvent;
- (void)mouseExitedImpl:(NSEvent *)theEvent;
-- (void)cursorUpdateImpl:(NSEvent *)theEvent;
- (void)rightMouseDown:(NSEvent *)theEvent;
- (void)rightMouseDragged:(NSEvent *)theEvent;
- (void)rightMouseUp:(NSEvent *)theEvent;
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index 51a69be759..ba86b39e5b 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -125,7 +125,7 @@ static bool _q_dontOverrideCtrlLMB = false;
- (void)cursorUpdate:(NSEvent *)theEvent
{
- [view cursorUpdateImpl:theEvent];
+ [self cursorUpdate:theEvent];
}
@end
@@ -892,11 +892,6 @@ QT_WARNING_POP
if (!(m_acceptedMouseDowns & button) == button)
return false;
- if (!(m_buttons & (m_sendUpAsRightButton ? Qt::RightButton : Qt::LeftButton))) {
- qCWarning(lcQpaCocoaWindow) << "QNSView mouseDragged: Internal mouse button tracking"
- << "invalid (missing Qt::LeftButton)";
- }
-
[self handleMouseEvent:theEvent];
return true;
}
@@ -1076,21 +1071,10 @@ QT_WARNING_POP
[self addTrackingArea:m_trackingArea];
}
--(void)cursorUpdateImpl:(NSEvent *)theEvent
-{
- Q_UNUSED(theEvent)
- // Set the cursor manually if there is no NSWindow.
- if (!m_platformWindow->m_nsWindow && m_platformWindow->m_windowCursor)
- [m_platformWindow->m_windowCursor set];
- else
- [super cursorUpdate:theEvent];
-}
-
--(void)resetCursorRects
+- (void)cursorUpdate:(NSEvent *)theEvent
{
- // Use the cursor rect API if there is a NSWindow
- if (m_platformWindow->m_nsWindow && m_platformWindow->m_windowCursor)
- [self addCursorRect:[self visibleRect] cursor:m_platformWindow->m_windowCursor];
+ Q_UNUSED(theEvent);
+ m_platformWindow->applyEffectiveWindowCursor();
}
- (void)mouseMovedImpl:(NSEvent *)theEvent
@@ -1920,9 +1904,7 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
- (NSRange) selectedRange
{
- NSRange selectedRange = {NSNotFound, 0};
- selectedRange.location = NSNotFound;
- selectedRange.length = 0;
+ NSRange selectedRange = {0, 0};
QObject *fo = QGuiApplication::focusObject();
if (!fo)
diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.h b/src/plugins/platforms/cocoa/qnswindowdelegate.h
index ac1e8d62eb..5cb4b2aca2 100644
--- a/src/plugins/platforms/cocoa/qnswindowdelegate.h
+++ b/src/plugins/platforms/cocoa/qnswindowdelegate.h
@@ -57,7 +57,8 @@
- (void)windowWillMove:(NSNotification *)notification;
- (BOOL)windowShouldClose:(NSNotification *)notification;
- (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame;
-
+- (BOOL)window:(NSWindow *)window shouldPopUpDocumentPathMenu:(NSMenu *)menu;
+- (BOOL)window:(NSWindow *)window shouldDragDocumentWithEvent:(NSEvent *)event from:(NSPoint)dragImageLocation withPasteboard:(NSPasteboard *)pasteboard;
@end
QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSWindowDelegate);
diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.mm b/src/plugins/platforms/cocoa/qnswindowdelegate.mm
index faa53b06ef..320a7890bf 100644
--- a/src/plugins/platforms/cocoa/qnswindowdelegate.mm
+++ b/src/plugins/platforms/cocoa/qnswindowdelegate.mm
@@ -115,4 +115,19 @@
return YES;
}
+- (BOOL)window:(NSWindow *)window shouldPopUpDocumentPathMenu:(NSMenu *)menu
+{
+ Q_UNUSED(window);
+ Q_UNUSED(menu);
+ return m_cocoaWindow && m_cocoaWindow->m_hasWindowFilePath;
+}
+
+- (BOOL)window:(NSWindow *)window shouldDragDocumentWithEvent:(NSEvent *)event from:(NSPoint)dragImageLocation withPasteboard:(NSPasteboard *)pasteboard
+{
+ Q_UNUSED(window);
+ Q_UNUSED(event);
+ Q_UNUSED(dragImageLocation);
+ Q_UNUSED(pasteboard);
+ return m_cocoaWindow && m_cocoaWindow->m_hasWindowFilePath;
+}
@end
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp
index 743f714cf0..f6e86bf0bc 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp
@@ -71,7 +71,7 @@ void QEglFSKmsEglDevice::close()
EGLNativeDisplayType QEglFSKmsEglDevice::nativeDisplay() const
{
- return static_cast<QEglFSKmsEglDeviceIntegration *>(m_integration)->eglDevice();
+ return reinterpret_cast<EGLNativeDisplayType>(static_cast<QEglFSKmsEglDeviceIntegration *>(m_integration)->eglDevice());
}
QEglFSKmsScreen *QEglFSKmsEglDevice::createScreen(QEglFSKmsIntegration *integration, QEglFSKmsDevice *device, QEglFSKmsOutput output, QPoint position)
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp
index ffdb7a686b..0a203b4966 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp
@@ -48,7 +48,7 @@
QT_BEGIN_NAMESPACE
-struct fbdev_window {
+struct shadow_fbdev_window {
unsigned short width;
unsigned short height;
};
@@ -91,7 +91,7 @@ EGLNativeWindowType QEglFSMaliIntegration::createNativeWindow(QPlatformWindow *w
Q_UNUSED(window);
Q_UNUSED(format);
- fbdev_window *fbwin = reinterpret_cast<fbdev_window *>(malloc(sizeof(fbdev_window)));
+ shadow_fbdev_window *fbwin = reinterpret_cast<shadow_fbdev_window *>(malloc(sizeof(shadow_fbdev_window)));
if (NULL == fbwin)
return 0;
diff --git a/src/plugins/platforms/eglfs/qeglfshooks.cpp b/src/plugins/platforms/eglfs/qeglfshooks.cpp
index 87285428df..7345cfd1f1 100644
--- a/src/plugins/platforms/eglfs/qeglfshooks.cpp
+++ b/src/plugins/platforms/eglfs/qeglfshooks.cpp
@@ -66,7 +66,8 @@ private:
Q_GLOBAL_STATIC(DeviceIntegration, deviceIntegration)
-DeviceIntegration::DeviceIntegration() : m_integration(0)
+DeviceIntegration::DeviceIntegration()
+ : m_integration(nullptr)
{
QStringList pluginKeys = QEGLDeviceIntegrationFactory::keys();
if (!pluginKeys.isEmpty()) {
diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
index 6f38a96f45..3c4ff21fc0 100644
--- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp
+++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
@@ -188,7 +188,7 @@ QPlatformBackingStore *QEglFSIntegration::createPlatformBackingStore(QWindow *wi
QPlatformWindow *QEglFSIntegration::createPlatformWindow(QWindow *window) const
{
- QWindowSystemInterface::flushWindowSystemEvents();
+ QWindowSystemInterface::flushWindowSystemEvents(QEventLoop::ExcludeUserInputEvents);
QEglFSWindow *w = qt_egl_device_integration()->createWindow(window);
w->create();
if (window->type() != Qt::ToolTip)
@@ -418,15 +418,17 @@ void QEglFSIntegration::createInputHandlers()
}
#endif
-#if !defined(QT_NO_EVDEV) && !defined(Q_OS_ANDROID)
- m_kbdMgr = new QEvdevKeyboardManager(QLatin1String("EvdevKeyboard"), QString() /* spec */, this);
- new QEvdevMouseManager(QLatin1String("EvdevMouse"), QString() /* spec */, this);
+ bool useTslib = false;
#ifndef QT_NO_TSLIB
- const bool useTslib = qEnvironmentVariableIntValue("QT_QPA_EGLFS_TSLIB");
+ useTslib = qEnvironmentVariableIntValue("QT_QPA_EGLFS_TSLIB");
if (useTslib)
new QTsLibMouseHandler(QLatin1String("TsLib"), QString() /* spec */);
- else
-#endif // QT_NO_TSLIB
+#endif
+
+#if !defined(QT_NO_EVDEV) && !defined(Q_OS_ANDROID)
+ m_kbdMgr = new QEvdevKeyboardManager(QLatin1String("EvdevKeyboard"), QString() /* spec */, this);
+ new QEvdevMouseManager(QLatin1String("EvdevMouse"), QString() /* spec */, this);
+ if (!useTslib)
new QEvdevTouchManager(QLatin1String("EvdevTouch"), QString() /* spec */, this);
#endif
}
diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp
index 556d3942cd..841865a0e2 100644
--- a/src/plugins/platforms/eglfs/qeglfswindow.cpp
+++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp
@@ -212,7 +212,7 @@ void QEglFSWindow::setVisible(bool visible)
QWindowSystemInterface::handleExposeEvent(wnd, QRect(QPoint(0, 0), wnd->geometry().size()));
if (visible)
- QWindowSystemInterface::flushWindowSystemEvents();
+ QWindowSystemInterface::flushWindowSystemEvents(QEventLoop::ExcludeUserInputEvents);
}
void QEglFSWindow::setGeometry(const QRect &r)
diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro
index 7b0a573ffa..594ccefcf1 100644
--- a/src/plugins/platforms/ios/ios.pro
+++ b/src/plugins/platforms/ios/ios.pro
@@ -1,65 +1,2 @@
-TARGET = qios
-
-QT += core-private gui-private platformsupport-private
-LIBS += -framework Foundation -framework UIKit -framework QuartzCore -framework AssetsLibrary -framework AudioToolbox
-
-OBJECTIVE_SOURCES = \
- plugin.mm \
- qiosintegration.mm \
- qioseventdispatcher.mm \
- qioswindow.mm \
- qiosscreen.mm \
- qiosbackingstore.mm \
- qiosapplicationdelegate.mm \
- qiosapplicationstate.mm \
- qiosviewcontroller.mm \
- qioscontext.mm \
- qiosinputcontext.mm \
- qiostheme.mm \
- qiosglobal.mm \
- qiosservices.mm \
- quiview.mm \
- qiosclipboard.mm \
- quiaccessibilityelement.mm \
- qiosplatformaccessibility.mm \
- qiostextresponder.mm \
- qiosmenu.mm \
- qiosfileengineassetslibrary.mm \
- qiosfiledialog.mm \
- qiosmessagedialog.mm \
- qiostextinputoverlay.mm
-
-HEADERS = \
- qiosintegration.h \
- qioseventdispatcher.h \
- qioswindow.h \
- qiosscreen.h \
- qiosbackingstore.h \
- qiosapplicationdelegate.h \
- qiosapplicationstate.h \
- qiosviewcontroller.h \
- qioscontext.h \
- qiosinputcontext.h \
- qiostheme.h \
- qiosglobal.h \
- qiosservices.h \
- quiview.h \
- qiosclipboard.h \
- quiaccessibilityelement.h \
- qiosplatformaccessibility.h \
- qiostextresponder.h \
- qiosmenu.h \
- qiosfileenginefactory.h \
- qiosfileengineassetslibrary.h \
- qiosfiledialog.h \
- qiosmessagedialog.h \
- qiostextinputoverlay.h
-
-OTHER_FILES = \
- quiview_textinput.mm \
- quiview_accessibility.mm
-
-PLUGIN_TYPE = platforms
-PLUGIN_CLASS_NAME = QIOSIntegrationPlugin
-!equals(TARGET, $$QT_DEFAULT_QPA_PLUGIN): PLUGIN_EXTENDS = -
-load(qt_plugin)
+TEMPLATE = subdirs
+SUBDIRS = kernel.pro optional
diff --git a/src/plugins/platforms/ios/kernel.pro b/src/plugins/platforms/ios/kernel.pro
new file mode 100644
index 0000000000..955f8d9642
--- /dev/null
+++ b/src/plugins/platforms/ios/kernel.pro
@@ -0,0 +1,63 @@
+TARGET = qios
+
+QT += core-private gui-private platformsupport-private
+LIBS += -framework Foundation -framework UIKit -framework QuartzCore -framework AudioToolbox
+
+OBJECTIVE_SOURCES = \
+ plugin.mm \
+ qiosintegration.mm \
+ qioseventdispatcher.mm \
+ qioswindow.mm \
+ qiosscreen.mm \
+ qiosbackingstore.mm \
+ qiosapplicationdelegate.mm \
+ qiosapplicationstate.mm \
+ qiosviewcontroller.mm \
+ qioscontext.mm \
+ qiosinputcontext.mm \
+ qiostheme.mm \
+ qiosglobal.mm \
+ qiosservices.mm \
+ quiview.mm \
+ qiosclipboard.mm \
+ quiaccessibilityelement.mm \
+ qiosplatformaccessibility.mm \
+ qiostextresponder.mm \
+ qiosmenu.mm \
+ qiosfiledialog.mm \
+ qiosmessagedialog.mm \
+ qiostextinputoverlay.mm
+
+HEADERS = \
+ qiosintegration.h \
+ qioseventdispatcher.h \
+ qioswindow.h \
+ qiosscreen.h \
+ qiosbackingstore.h \
+ qiosapplicationdelegate.h \
+ qiosapplicationstate.h \
+ qiosviewcontroller.h \
+ qioscontext.h \
+ qiosinputcontext.h \
+ qiostheme.h \
+ qiosglobal.h \
+ qiosservices.h \
+ quiview.h \
+ qiosclipboard.h \
+ quiaccessibilityelement.h \
+ qiosplatformaccessibility.h \
+ qiostextresponder.h \
+ qiosmenu.h \
+ qiosfiledialog.h \
+ qiosmessagedialog.h \
+ qiostextinputoverlay.h
+
+
+OTHER_FILES = \
+ quiview_textinput.mm \
+ quiview_accessibility.mm
+
+PLUGIN_TYPE = platforms
+PLUGIN_CLASS_NAME = QIOSIntegrationPlugin
+!equals(TARGET, $$QT_DEFAULT_QPA_PLUGIN): PLUGIN_EXTENDS = -
+load(qt_plugin)
diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/nsphotolibrarysupport.pro b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/nsphotolibrarysupport.pro
new file mode 100644
index 0000000000..f4588dda03
--- /dev/null
+++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/nsphotolibrarysupport.pro
@@ -0,0 +1,22 @@
+TARGET = qiosnsphotolibrarysupport
+
+QT += core gui gui-private
+LIBS += -framework UIKit -framework AssetsLibrary
+
+HEADERS = \
+ qiosfileengineassetslibrary.h \
+ qiosfileenginefactory.h \
+ qiosimagepickercontroller.h
+
+OBJECTIVE_SOURCES = \
+ plugin.mm \
+ qiosfileengineassetslibrary.mm \
+ qiosimagepickercontroller.mm \
+
+OTHER_FILES = \
+ plugin.json
+
+PLUGIN_CLASS_NAME = QIosOptionalPlugin_NSPhotoLibrary
+PLUGIN_EXTENDS = -
+PLUGIN_TYPE = platforms/darwin
+load(qt_plugin)
diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.json b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.json
new file mode 100644
index 0000000000..4491fb3d59
--- /dev/null
+++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.json
@@ -0,0 +1,3 @@
+{
+ "Keys": [ "NSPhotoLibrarySupport" ]
+}
diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.mm b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.mm
new file mode 100644
index 0000000000..2ec0d33a41
--- /dev/null
+++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.mm
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "../../qiosoptionalplugininterface.h"
+#include "../../qiosfiledialog.h"
+
+#include "qiosimagepickercontroller.h"
+#include "qiosfileenginefactory.h"
+
+QT_BEGIN_NAMESPACE
+
+class QIosOptionalPlugin_NSPhotoLibrary : public QObject, QIosOptionalPluginInterface
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID QIosOptionalPluginInterface_iid FILE "plugin.json")
+ Q_INTERFACES(QIosOptionalPluginInterface)
+
+public:
+ explicit QIosOptionalPlugin_NSPhotoLibrary(QObject* = 0) {};
+ ~QIosOptionalPlugin_NSPhotoLibrary() {}
+
+ UIViewController* createImagePickerController(QIOSFileDialog *fileDialog) const override
+ {
+ return [[[QIOSImagePickerController alloc] initWithQIOSFileDialog:fileDialog] autorelease];
+ }
+
+private:
+ QIOSFileEngineFactory m_fileEngineFactory;
+
+};
+
+QT_END_NAMESPACE
+
+#include "plugin.moc"
diff --git a/src/plugins/platforms/ios/qiosfileengineassetslibrary.h b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h
index 06f2e8d2ca..8d7cabf15b 100644
--- a/src/plugins/platforms/ios/qiosfileengineassetslibrary.h
+++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h
@@ -43,6 +43,9 @@
#include <QtCore/private/qabstractfileengine_p.h>
Q_FORWARD_DECLARE_OBJC_CLASS(ALAsset);
+
+QT_BEGIN_NAMESPACE
+
class QIOSAssetData;
class QIOSFileEngineAssetsLibrary : public QAbstractFileEngine
@@ -51,20 +54,20 @@ public:
QIOSFileEngineAssetsLibrary(const QString &fileName);
~QIOSFileEngineAssetsLibrary();
- bool open(QIODevice::OpenMode openMode) Q_DECL_OVERRIDE;
- bool close() Q_DECL_OVERRIDE;
- FileFlags fileFlags(FileFlags type) const Q_DECL_OVERRIDE;
- qint64 size() const Q_DECL_OVERRIDE;
- qint64 read(char *data, qint64 maxlen) Q_DECL_OVERRIDE;
- qint64 pos() const Q_DECL_OVERRIDE;
- bool seek(qint64 pos) Q_DECL_OVERRIDE;
- QString fileName(FileName file) const Q_DECL_OVERRIDE;
- void setFileName(const QString &file) Q_DECL_OVERRIDE;
- QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const Q_DECL_OVERRIDE;
+ bool open(QIODevice::OpenMode openMode) override;
+ bool close() override;
+ FileFlags fileFlags(FileFlags type) const override;
+ qint64 size() const override;
+ qint64 read(char *data, qint64 maxlen) override;
+ qint64 pos() const override;
+ bool seek(qint64 pos) override;
+ QString fileName(FileName file) const override;
+ void setFileName(const QString &file) override;
+ QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const override;
#ifndef QT_NO_FILESYSTEMITERATOR
- Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) Q_DECL_OVERRIDE;
- Iterator *endEntryList() Q_DECL_OVERRIDE;
+ Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override;
+ Iterator *endEntryList() override;
#endif
void setError(QFile::FileError error, const QString &str) { QAbstractFileEngine::setError(error, str); }
@@ -78,5 +81,7 @@ private:
ALAsset *loadAsset() const;
};
+QT_END_NAMESPACE
+
#endif // QIOSFILEENGINEASSETSLIBRARY_H
diff --git a/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm
index 560c54924a..bea2897240 100644
--- a/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm
+++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm
@@ -48,6 +48,8 @@
#include <QtCore/qset.h>
#include <QtCore/qthreadstorage.h>
+QT_BEGIN_NAMESPACE
+
static QThreadStorage<QString> g_iteratorCurrentUrl;
static QThreadStorage<QPointer<QIOSAssetData> > g_assetDataCache;
@@ -472,4 +474,6 @@ QAbstractFileEngine::Iterator *QIOSFileEngineAssetsLibrary::endEntryList()
return 0;
}
+QT_END_NAMESPACE
+
#endif
diff --git a/src/plugins/platforms/ios/qiosfileenginefactory.h b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h
index b71fa64460..0397b20dfa 100644
--- a/src/plugins/platforms/ios/qiosfileenginefactory.h
+++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h
@@ -44,6 +44,8 @@
#include <QtCore/private/qabstractfileengine_p.h>
#include "qiosfileengineassetslibrary.h"
+QT_BEGIN_NAMESPACE
+
class QIOSFileEngineFactory : public QAbstractFileEngineHandler
{
public:
@@ -58,4 +60,6 @@ public:
}
};
+QT_END_NAMESPACE
+
#endif // QIOSFILEENGINEFACTORY_H
diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.h b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.h
new file mode 100644
index 0000000000..df3f6b9fa3
--- /dev/null
+++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#import <UIKit/UIKit.h>
+
+#include "../../qiosfiledialog.h"
+
+@interface QIOSImagePickerController : UIImagePickerController <UIImagePickerControllerDelegate, UINavigationControllerDelegate> {
+ QIOSFileDialog *m_fileDialog;
+}
+- (id)initWithQIOSFileDialog:(QIOSFileDialog *)fileDialog;
+@end
diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.mm b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.mm
new file mode 100644
index 0000000000..f9662b964a
--- /dev/null
+++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.mm
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#import <UIKit/UIKit.h>
+
+#include "qiosimagepickercontroller.h"
+
+@implementation QIOSImagePickerController
+
+- (id)initWithQIOSFileDialog:(QIOSFileDialog *)fileDialog
+{
+ self = [super init];
+ if (self) {
+ m_fileDialog = fileDialog;
+ [self setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
+ [self setDelegate:self];
+ }
+ return self;
+}
+
+- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
+{
+ Q_UNUSED(picker);
+ NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL];
+ QUrl fileUrl = QUrl::fromLocalFile(QString::fromNSString([url description]));
+ m_fileDialog->selectedFilesChanged(QList<QUrl>() << fileUrl);
+ emit m_fileDialog->accept();
+}
+
+- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
+{
+ Q_UNUSED(picker)
+ emit m_fileDialog->reject();
+}
+
+@end
diff --git a/src/plugins/platforms/ios/optional/optional.pro b/src/plugins/platforms/ios/optional/optional.pro
new file mode 100644
index 0000000000..5e3421a025
--- /dev/null
+++ b/src/plugins/platforms/ios/optional/optional.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = nsphotolibrarysupport
diff --git a/src/plugins/platforms/ios/qiosfiledialog.h b/src/plugins/platforms/ios/qiosfiledialog.h
index 855bab0424..937b56e2f6 100644
--- a/src/plugins/platforms/ios/qiosfiledialog.h
+++ b/src/plugins/platforms/ios/qiosfiledialog.h
@@ -72,6 +72,8 @@ private:
QList<QUrl> m_selection;
QEventLoop m_eventLoop;
UIViewController *m_viewController;
+
+ bool showImagePickerDialog(QWindow *parent);
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/ios/qiosfiledialog.mm b/src/plugins/platforms/ios/qiosfiledialog.mm
index 70536fc5dc..c5722d33f8 100644
--- a/src/plugins/platforms/ios/qiosfiledialog.mm
+++ b/src/plugins/platforms/ios/qiosfiledialog.mm
@@ -37,52 +37,18 @@
**
****************************************************************************/
-#include "qiosfiledialog.h"
-
#import <UIKit/UIKit.h>
#include <QtCore/qstandardpaths.h>
#include <QtGui/qwindow.h>
+#include <QDebug>
-@interface QIOSImagePickerController : UIImagePickerController <UIImagePickerControllerDelegate, UINavigationControllerDelegate> {
- QIOSFileDialog *m_fileDialog;
-}
-@end
-
-@implementation QIOSImagePickerController
-
-- (id)initWithQIOSFileDialog:(QIOSFileDialog *)fileDialog
-{
- self = [super init];
- if (self) {
- m_fileDialog = fileDialog;
- [self setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
- [self setDelegate:self];
- }
- return self;
-}
-
-- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
-{
- Q_UNUSED(picker);
- NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL];
- QUrl fileUrl = QUrl::fromLocalFile(QString::fromNSString([url description]));
- m_fileDialog->selectedFilesChanged(QList<QUrl>() << fileUrl);
- emit m_fileDialog->accept();
-}
-
-- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
-{
- Q_UNUSED(picker)
- emit m_fileDialog->reject();
-}
-
-@end
-
-// --------------------------------------------------------------------------
+#include "qiosfiledialog.h"
+#include "qiosintegration.h"
+#include "qiosoptionalplugininterface.h"
QIOSFileDialog::QIOSFileDialog()
- : m_viewController(0)
+ : m_viewController(Q_NULLPTR)
{
}
@@ -104,17 +70,36 @@ bool QIOSFileDialog::show(Qt::WindowFlags windowFlags, Qt::WindowModality window
bool acceptOpen = options()->acceptMode() == QFileDialogOptions::AcceptOpen;
QString directory = options()->initialDirectory().toLocalFile();
- if (acceptOpen && directory.startsWith(QLatin1String("assets-library:"))) {
- m_viewController = [[QIOSImagePickerController alloc] initWithQIOSFileDialog:this];
- UIWindow *window = parent ? reinterpret_cast<UIView *>(parent->winId()).window
- : [UIApplication sharedApplication].keyWindow;
- [window.rootViewController presentViewController:m_viewController animated:YES completion:nil];
- return true;
- }
+ if (acceptOpen && directory.startsWith(QLatin1String("assets-library:")))
+ return showImagePickerDialog(parent);
return false;
}
+bool QIOSFileDialog::showImagePickerDialog(QWindow *parent)
+{
+ if (!m_viewController) {
+ QFactoryLoader *plugins = QIOSIntegration::instance()->optionalPlugins();
+ for (int i = 0; i < plugins->metaData().size(); ++i) {
+ QIosOptionalPluginInterface *plugin = qobject_cast<QIosOptionalPluginInterface *>(plugins->instance(i));
+ m_viewController = [plugin->createImagePickerController(this) retain];
+ if (m_viewController)
+ break;
+ }
+ }
+
+ if (!m_viewController) {
+ qWarning() << "QIOSFileDialog: Could not resolve Qt plugin that gives access to photos on iOS";
+ return false;
+ }
+
+ UIWindow *window = parent ? reinterpret_cast<UIView *>(parent->winId()).window
+ : [UIApplication sharedApplication].keyWindow;
+ [window.rootViewController presentViewController:m_viewController animated:YES completion:nil];
+
+ return true;
+}
+
void QIOSFileDialog::hide()
{
// QFileDialog will remember the last directory set, and open subsequent dialogs in the same
@@ -126,6 +111,8 @@ void QIOSFileDialog::hide()
emit directoryEntered(QUrl::fromLocalFile(QDir::currentPath()));
[m_viewController dismissViewControllerAnimated:YES completion:nil];
+ [m_viewController release];
+ m_viewController = Q_NULLPTR;
m_eventLoop.exit();
}
diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h
index a50d9aa571..35f12bcb56 100644
--- a/src/plugins/platforms/ios/qiosintegration.h
+++ b/src/plugins/platforms/ios/qiosintegration.h
@@ -44,8 +44,9 @@
#include <qpa/qplatformnativeinterface.h>
#include <qpa/qwindowsysteminterface.h>
+#include <QtCore/private/qfactoryloader_p.h>
+
#include "qiosapplicationstate.h"
-#include "qiosfileenginefactory.h"
#include "qiostextinputoverlay.h"
QT_BEGIN_NAMESPACE
@@ -100,6 +101,8 @@ public:
void setDebugWindowManagement(bool);
bool debugWindowManagement() const;
+ QFactoryLoader *optionalPlugins() { return m_optionalPlugins; }
+
private:
QPlatformFontDatabase *m_fontDatabase;
QPlatformClipboard *m_clipboard;
@@ -108,7 +111,7 @@ private:
QIOSApplicationState m_applicationState;
QIOSServices *m_platformServices;
mutable QPlatformAccessibility *m_accessibility;
- QIOSFileEngineFactory m_fileEngineFactory;
+ QFactoryLoader *m_optionalPlugins;
QIOSTextInputOverlay m_textInputOverlay;
bool m_debugWindowManagement;
diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm
index fa12d54b28..a9435ef15a 100644
--- a/src/plugins/platforms/ios/qiosintegration.mm
+++ b/src/plugins/platforms/ios/qiosintegration.mm
@@ -49,6 +49,7 @@
#include "qiosinputcontext.h"
#include "qiostheme.h"
#include "qiosservices.h"
+#include "qiosoptionalplugininterface.h"
#include <QtGui/private/qguiapplication_p.h>
@@ -76,6 +77,7 @@ QIOSIntegration::QIOSIntegration()
, m_inputContext(0)
, m_platformServices(new QIOSServices)
, m_accessibility(0)
+ , m_optionalPlugins(new QFactoryLoader(QIosOptionalPluginInterface_iid, QLatin1String("/platforms/darwin")))
, m_debugWindowManagement(false)
{
if (Q_UNLIKELY(![UIApplication sharedApplication])) {
@@ -120,6 +122,9 @@ QIOSIntegration::QIOSIntegration()
m_touchDevice->setCapabilities(touchCapabilities);
QWindowSystemInterface::registerTouchDevice(m_touchDevice);
QMacInternalPasteboardMime::initializeMimeTypes();
+
+ for (int i = 0; i < m_optionalPlugins->metaData().size(); ++i)
+ qobject_cast<QIosOptionalPluginInterface *>(m_optionalPlugins->instance(i))->initPlugin();
}
QIOSIntegration::~QIOSIntegration()
@@ -142,6 +147,9 @@ QIOSIntegration::~QIOSIntegration()
delete m_accessibility;
m_accessibility = 0;
+
+ delete m_optionalPlugins;
+ m_optionalPlugins = 0;
}
bool QIOSIntegration::hasCapability(Capability cap) const
diff --git a/src/plugins/platforms/ios/qiosoptionalplugininterface.h b/src/plugins/platforms/ios/qiosoptionalplugininterface.h
new file mode 100644
index 0000000000..bcb8978e02
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosoptionalplugininterface.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QIOPLUGININTERFACE_H
+#define QIOPLUGININTERFACE_H
+
+#include <QtCore/QtPlugin>
+
+#include "qiosfiledialog.h"
+
+QT_BEGIN_NAMESPACE
+
+Q_FORWARD_DECLARE_OBJC_CLASS(UIViewController);
+
+#define QIosOptionalPluginInterface_iid "org.qt-project.Qt.QPA.ios.optional"
+
+class QIosOptionalPluginInterface
+{
+public:
+ virtual ~QIosOptionalPluginInterface() {}
+ virtual void initPlugin() const {};
+ virtual UIViewController* createImagePickerController(QIOSFileDialog *) const { return Q_NULLPTR; };
+};
+
+Q_DECLARE_INTERFACE(QIosOptionalPluginInterface, QIosOptionalPluginInterface_iid)
+
+QT_END_NAMESPACE
+
+#endif // QIOPLUGININTERFACE_H
diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm
index d53f0df846..dc14698146 100644
--- a/src/plugins/platforms/ios/qiosscreen.mm
+++ b/src/plugins/platforms/ios/qiosscreen.mm
@@ -207,8 +207,8 @@ QIOSScreen::QIOSScreen(UIScreen *screen)
else
m_depth = 24;
- if (deviceIdentifier.contains(QRegularExpression("^iPhone(7,1|8,2)$"))) {
- // iPhone 6 Plus or iPhone 6S Plus
+ if (deviceIdentifier.contains(QRegularExpression("^iPhone(7,1|8,2|9,2|9,4)$"))) {
+ // iPhone Plus models
m_physicalDpi = 401;
} else if (deviceIdentifier.contains(QRegularExpression("^iPad(1,1|2,[1-4]|3,[1-6]|4,[1-3]|5,[3-4]|6,[7-8])$"))) {
// All iPads except the iPad Mini series
diff --git a/src/plugins/platforms/ios/qiostextinputoverlay.mm b/src/plugins/platforms/ios/qiostextinputoverlay.mm
index d930965bde..54c2e98d71 100644
--- a/src/plugins/platforms/ios/qiostextinputoverlay.mm
+++ b/src/plugins/platforms/ios/qiostextinputoverlay.mm
@@ -994,7 +994,8 @@ QIOSTextInputOverlay::QIOSTextInputOverlay()
QIOSTextInputOverlay::~QIOSTextInputOverlay()
{
- disconnect(qApp, 0, this, 0);
+ if (qApp)
+ disconnect(qApp, 0, this, 0);
}
void QIOSTextInputOverlay::updateFocusObject()
diff --git a/src/plugins/platforms/ios/qiostextresponder.mm b/src/plugins/platforms/ios/qiostextresponder.mm
index e31584d581..009f3f8a20 100644
--- a/src/plugins/platforms/ios/qiostextresponder.mm
+++ b/src/plugins/platforms/ios/qiostextresponder.mm
@@ -625,7 +625,7 @@
- (id<UITextInputTokenizer>)tokenizer
{
- return [[[UITextInputStringTokenizer alloc] initWithTextInput:id<UITextInput>(self)] autorelease];
+ return [[[UITextInputStringTokenizer alloc] initWithTextInput:self] autorelease];
}
- (UITextPosition *)beginningOfDocument
diff --git a/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp b/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
index 685f231756..2037f29a5a 100644
--- a/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
+++ b/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
@@ -147,15 +147,17 @@ void QLinuxFbIntegration::createInputHandlers()
}
#endif
-#if !defined(QT_NO_EVDEV) && !defined(Q_OS_ANDROID)
- new QEvdevKeyboardManager(QLatin1String("EvdevKeyboard"), QString(), this);
- new QEvdevMouseManager(QLatin1String("EvdevMouse"), QString(), this);
+ bool useTslib = false;
#ifndef QT_NO_TSLIB
- const bool useTslib = qEnvironmentVariableIntValue("QT_QPA_FB_TSLIB");
+ useTslib = qEnvironmentVariableIntValue("QT_QPA_FB_TSLIB");
if (useTslib)
new QTsLibMouseHandler(QLatin1String("TsLib"), QString());
- else
-#endif // QT_NO_TSLIB
+#endif
+
+#if !defined(QT_NO_EVDEV) && !defined(Q_OS_ANDROID)
+ new QEvdevKeyboardManager(QLatin1String("EvdevKeyboard"), QString(), this);
+ new QEvdevMouseManager(QLatin1String("EvdevMouse"), QString(), this);
+ if (!useTslib)
new QEvdevTouchManager(QLatin1String("EvdevTouch"), QString() /* spec */, this);
#endif
}
diff --git a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp
index b1d3691a10..06008e00d8 100644
--- a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp
+++ b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp
@@ -58,7 +58,8 @@
#include <QtGui/QOpenGLContext>
#include <QtGui/QScreen>
-#include <QtPlatformSupport/private/qt_egl_p.h>
+// this is where EGL headers are pulled in, make sure it is last
+#include "qminimaleglscreen.h"
QT_BEGIN_NAMESPACE
diff --git a/src/plugins/platforms/minimalegl/qminimaleglintegration.h b/src/plugins/platforms/minimalegl/qminimaleglintegration.h
index 020fa09443..529e89f85a 100644
--- a/src/plugins/platforms/minimalegl/qminimaleglintegration.h
+++ b/src/plugins/platforms/minimalegl/qminimaleglintegration.h
@@ -40,8 +40,6 @@
#ifndef QMINIMALEGLINTEGRATION_H
#define QMINIMALEGLINTEGRATION_H
-#include "qminimaleglscreen.h"
-
#include <qpa/qplatformintegration.h>
#include <qpa/qplatformscreen.h>
diff --git a/src/plugins/platforms/minimalegl/qminimaleglwindow.h b/src/plugins/platforms/minimalegl/qminimaleglwindow.h
index 5c2955f783..b8bfd6c8d2 100644
--- a/src/plugins/platforms/minimalegl/qminimaleglwindow.h
+++ b/src/plugins/platforms/minimalegl/qminimaleglwindow.h
@@ -41,7 +41,6 @@
#define QMINIMALEGLWINDOW_H
#include "qminimaleglintegration.h"
-#include "qminimaleglscreen.h"
#include <qpa/qplatformwindow.h>
diff --git a/src/plugins/platforms/windows/openglblacklists/default.json b/src/plugins/platforms/windows/openglblacklists/default.json
index 1e00da52eb..dd99e674ec 100644
--- a/src/plugins/platforms/windows/openglblacklists/default.json
+++ b/src/plugins/platforms/windows/openglblacklists/default.json
@@ -102,6 +102,18 @@
"features": [
"disable_desktopgl", "disable_d3d11", "disable_d3d9"
]
+ },
+ {
+ "id": 9,
+ "description": "Intel 945 crash (QTBUG-40991)",
+ "vendor_id": "0x8086",
+ "device_id": [ "0x27A2" ],
+ "os": {
+ "type": "win"
+ },
+ "features": [
+ "disable_desktopgl"
+ ]
}
]
}
diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp
index ae3c477399..1afce9cde9 100644
--- a/src/plugins/platforms/windows/qwindowskeymapper.cpp
+++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp
@@ -507,7 +507,7 @@ static const uint CmdTbl[] = { // Multimedia keys mapping table
Qt::Key_Open, // 30 0x1e APPCOMMAND_OPEN
Qt::Key_Close, // 31 0x1f APPCOMMAND_CLOSE
Qt::Key_Save, // 32 0x20 APPCOMMAND_SAVE
- Qt::Key_Print, // 33 0x21 APPCOMMAND_PRINT
+ Qt::Key_Printer, // 33 0x21 APPCOMMAND_PRINT
Qt::Key_Undo, // 34 0x22 APPCOMMAND_UNDO
Qt::Key_Redo, // 35 0x23 APPCOMMAND_REDO
Qt::Key_Copy, // 36 0x24 APPCOMMAND_COPY
diff --git a/src/plugins/platforms/winrt/qwinrtbackingstore.h b/src/plugins/platforms/winrt/qwinrtbackingstore.h
index ce99718548..41b27debcc 100644
--- a/src/plugins/platforms/winrt/qwinrtbackingstore.h
+++ b/src/plugins/platforms/winrt/qwinrtbackingstore.h
@@ -40,6 +40,7 @@
#ifndef QWINRTBACKINGSTORE_H
#define QWINRTBACKINGSTORE_H
+#define GL_GLEXT_PROTOTYPES
#include <qpa/qplatformbackingstore.h>
#include <QtCore/QScopedPointer>
#include <QtCore/QLoggingCategory>
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
index 5580f81a7a..4c4176a063 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
@@ -678,8 +678,11 @@ void QGLXContext::queryDummyContext()
}
QOpenGLContext context;
- context.create();
- context.makeCurrent(surface.data());
+ if (!context.create() || !context.makeCurrent(surface.data())) {
+ qWarning("QGLXContext: Failed to create dummy context");
+ m_supportsThreading = false;
+ return;
+ }
m_supportsThreading = true;
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 8ae83b8084..a8d51d5e8c 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp
@@ -59,6 +59,10 @@ const xcb_visualtype_t *QXcbGlxWindow::createVisual()
if (!scr)
return Q_NULLPTR;
XVisualInfo *visualInfo = qglx_findVisualInfo(DISPLAY_FROM_XCB(scr), scr->screenNumber(), &m_format);
+ if (!visualInfo) {
+ qWarning() << "No XVisualInfo for format" << m_format;
+ return Q_NULLPTR;
+ }
const xcb_visualtype_t *xcb_visualtype = scr->visualForId(visualInfo->visualid);
XFree(visualInfo);
return xcb_visualtype;
diff --git a/src/plugins/platforms/xcb/qxcbbackingstore.cpp b/src/plugins/platforms/xcb/qxcbbackingstore.cpp
index a999fb0aa2..ce9e5d926e 100644
--- a/src/plugins/platforms/xcb/qxcbbackingstore.cpp
+++ b/src/plugins/platforms/xcb/qxcbbackingstore.cpp
@@ -168,12 +168,13 @@ QXcbShmImage::QXcbShmImage(QXcbScreen *screen, const QSize &size, uint depth, QI
return;
int id = shmget(IPC_PRIVATE, segmentSize, IPC_CREAT | 0600);
- if (id == -1)
+ if (id == -1) {
qWarning("QXcbShmImage: shmget() failed (%d: %s) for size %d (%dx%d)",
errno, strerror(errno), segmentSize, size.width(), size.height());
- else
- m_shm_info.shmid = id;
- m_shm_info.shmaddr = m_xcb_image->data = (quint8 *)shmat (m_shm_info.shmid, 0, 0);
+ } else {
+ m_shm_info.shmaddr = m_xcb_image->data = (quint8 *)shmat(id, 0, 0);
+ }
+ m_shm_info.shmid = id;
m_shm_info.shmseg = xcb_generate_id(xcb_connection());
const xcb_query_extension_reply_t *shm_reply = xcb_get_extension_data(xcb_connection(), &xcb_shm_id);
@@ -184,9 +185,10 @@ QXcbShmImage::QXcbShmImage(QXcbScreen *screen, const QSize &size, uint depth, QI
if (!shm_present || error || id == -1) {
free(error);
- shmdt(m_shm_info.shmaddr);
- shmctl(m_shm_info.shmid, IPC_RMID, 0);
-
+ if (id != -1) {
+ shmdt(m_shm_info.shmaddr);
+ shmctl(m_shm_info.shmid, IPC_RMID, 0);
+ }
m_shm_info.shmaddr = 0;
m_xcb_image->data = (uint8_t *)malloc(segmentSize);
diff --git a/src/plugins/platforms/xcb/qxcbclipboard.cpp b/src/plugins/platforms/xcb/qxcbclipboard.cpp
index f9c32cd0a4..38e91cc9f6 100644
--- a/src/plugins/platforms/xcb/qxcbclipboard.cpp
+++ b/src/plugins/platforms/xcb/qxcbclipboard.cpp
@@ -729,8 +729,10 @@ void QXcbClipboard::handleXFixesSelectionRequest(xcb_xfixes_selection_notify_eve
if (mode > QClipboard::Selection)
return;
- // here we care only about the xfixes events that come from non Qt processes
- if (event->owner != XCB_NONE && event->owner != owner()) {
+ // Note1: Here we care only about the xfixes events that come from other processes.
+ // Note2: If the QClipboard::clear() is issued, event->owner is XCB_NONE,
+ // so we check selection_timestamp to not handle our own QClipboard::clear().
+ if (event->owner != owner() && event->selection_timestamp > m_timestamp[mode]) {
if (!m_xClipboard[mode]) {
m_xClipboard[mode].reset(new QXcbClipboardMime(mode, this));
} else {
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
index 05107932f9..7052e88141 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
@@ -116,6 +116,7 @@ Q_LOGGING_CATEGORY(lcQpaScreen, "qt.qpa.screen")
#define XCB_GE_GENERIC 35
#endif
+#if defined(XCB_USE_XINPUT2)
// Starting from the xcb version 1.9.3 struct xcb_ge_event_t has changed:
// - "pad0" became "extension"
// - "pad1" and "pad" became "pad0"
@@ -133,6 +134,7 @@ static inline bool isXIEvent(xcb_generic_event_t *event, int opCode)
qt_xcb_ge_event_t *e = (qt_xcb_ge_event_t *)event;
return e->extension == opCode;
}
+#endif // XCB_USE_XINPUT2
#ifdef XCB_USE_XLIB
static const char * const xcbConnectionErrors[] = {
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
index 15616c1cea..f744b34901 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
@@ -1685,9 +1685,11 @@ void QXcbWindow::requestActivateWindow()
m_deferredActivation = false;
updateNetWmUserTime(connection()->time());
+ QWindow *focusWindow = QGuiApplication::focusWindow();
if (window()->isTopLevel()
&& !(window()->flags() & Qt::X11BypassWindowManagerHint)
+ && (!focusWindow || !window()->isAncestorOf(focusWindow))
&& connection()->wmSupport()->isSupportedByWM(atom(QXcbAtom::_NET_ACTIVE_WINDOW))) {
xcb_client_message_event_t event;
@@ -1698,7 +1700,6 @@ void QXcbWindow::requestActivateWindow()
event.type = atom(QXcbAtom::_NET_ACTIVE_WINDOW);
event.data.data32[0] = 1;
event.data.data32[1] = connection()->time();
- QWindow *focusWindow = QGuiApplication::focusWindow();
event.data.data32[2] = focusWindow ? focusWindow->winId() : XCB_NONE;
event.data.data32[3] = 0;
event.data.data32[4] = 0;
diff --git a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
index c2a116b03c..ba88af917d 100644
--- a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
+++ b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
@@ -38,6 +38,7 @@
****************************************************************************/
#include "qgtk3dialoghelpers.h"
+#include "qgtk3theme.h"
#include <qeventloop.h>
#include <qwindow.h>
@@ -56,6 +57,11 @@
QT_BEGIN_NAMESPACE
+static const char *standardButtonText(int button)
+{
+ return QGtk3Theme::defaultStandardButtonText(button).toUtf8();
+}
+
class QGtk3Dialog : public QWindow
{
Q_OBJECT
@@ -237,8 +243,10 @@ QGtk3FileDialogHelper::QGtk3FileDialogHelper()
{
d.reset(new QGtk3Dialog(gtk_file_chooser_dialog_new("", 0,
GTK_FILE_CHOOSER_ACTION_OPEN,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_OK, GTK_RESPONSE_OK, NULL)));
+ standardButtonText(QPlatformDialogHelper::Cancel), GTK_RESPONSE_CANCEL,
+ standardButtonText(QPlatformDialogHelper::Ok), GTK_RESPONSE_OK,
+ NULL)));
+
connect(d.data(), SIGNAL(accept()), this, SLOT(onAccepted()));
connect(d.data(), SIGNAL(reject()), this, SIGNAL(reject()));
@@ -435,9 +443,9 @@ void QGtk3FileDialogHelper::applyOptions()
if (opts->isLabelExplicitlySet(QFileDialogOptions::Accept))
gtk_button_set_label(GTK_BUTTON(acceptButton), opts->labelText(QFileDialogOptions::Accept).toUtf8());
else if (opts->acceptMode() == QFileDialogOptions::AcceptOpen)
- gtk_button_set_label(GTK_BUTTON(acceptButton), GTK_STOCK_OPEN);
+ gtk_button_set_label(GTK_BUTTON(acceptButton), standardButtonText(QPlatformDialogHelper::Open));
else
- gtk_button_set_label(GTK_BUTTON(acceptButton), GTK_STOCK_SAVE);
+ gtk_button_set_label(GTK_BUTTON(acceptButton), standardButtonText(QPlatformDialogHelper::Save));
}
GtkWidget *rejectButton = gtk_dialog_get_widget_for_response(gtkDialog, GTK_RESPONSE_CANCEL);
@@ -445,7 +453,7 @@ void QGtk3FileDialogHelper::applyOptions()
if (opts->isLabelExplicitlySet(QFileDialogOptions::Reject))
gtk_button_set_label(GTK_BUTTON(rejectButton), opts->labelText(QFileDialogOptions::Reject).toUtf8());
else
- gtk_button_set_label(GTK_BUTTON(rejectButton), GTK_STOCK_CANCEL);
+ gtk_button_set_label(GTK_BUTTON(rejectButton), standardButtonText(QPlatformDialogHelper::Cancel));
}
}
diff --git a/src/sql/drivers/db2/qsql_db2.cpp b/src/sql/drivers/db2/qsql_db2.cpp
index 4ccc3aca9e..a2046e17a1 100644
--- a/src/sql/drivers/db2/qsql_db2.cpp
+++ b/src/sql/drivers/db2/qsql_db2.cpp
@@ -59,8 +59,6 @@
#define SQL_BIGUINT_TYPE quint64
#endif
-#define UNICODE
-
#include <sqlcli1.h>
#include <string.h>
@@ -1187,8 +1185,8 @@ QDB2Driver::QDB2Driver(Qt::HANDLE env, Qt::HANDLE con, QObject* parent)
: QSqlDriver(*new QDB2DriverPrivate, parent)
{
Q_D(QDB2Driver);
- d->hEnv = reinterpret_cast<intptr_t>(env);
- d->hDbc = reinterpret_cast<intptr_t>(con);
+ d->hEnv = reinterpret_cast<SQLHANDLE>(env);
+ d->hDbc = reinterpret_cast<SQLHANDLE>(con);
if (env && con) {
setOpen(true);
setOpenError(false);
diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
index ad5207cf6e..bf98f82087 100644
--- a/src/sql/kernel/qsqldriver.cpp
+++ b/src/sql/kernel/qsqldriver.cpp
@@ -671,6 +671,7 @@ QString QSqlDriver::formatValue(const QSqlField &field, bool trimStrings) const
break;
}
}
+ // fall through
default:
r = field.value().toString();
break;
diff --git a/src/testlib/qtestcase.qdoc b/src/testlib/qtestcase.qdoc
index 85f71fc27f..f34c84708f 100644
--- a/src/testlib/qtestcase.qdoc
+++ b/src/testlib/qtestcase.qdoc
@@ -124,7 +124,7 @@
\relates QTest
The QTRY_VERIFY_WITH_TIMEOUT() macro is similar to QVERIFY(), but checks the \a condition
- repeatedly, until either the condition becomes true or the \a timeout is
+ repeatedly, until either the condition becomes true or the \a timeout (in milliseconds) is
reached. Between each evaluation, events will be processed. If the timeout
is reached, a failure is recorded in the test log and the test won't be
executed further.
@@ -156,7 +156,7 @@
The QTRY_VERIFY2_WITH_TIMEOUT macro is similar to QTRY_VERIFY_WITH_TIMEOUT()
except that it outputs a verbose \a message when \a condition is still false
- after the specified \a timeout. The \a message is a plain C string.
+ after the specified \a timeout (in milliseconds). The \a message is a plain C string.
Example:
\code
@@ -196,7 +196,7 @@
The QTRY_COMPARE_WITH_TIMEOUT() macro is similar to QCOMPARE(), but performs the comparison
of the \a actual and \a expected values repeatedly, until either the two values
- are equal or the \a timeout is reached. Between each comparison, events
+ are equal or the \a timeout (in milliseconds) is reached. Between each comparison, events
will be processed. If the timeout is reached, a failure is recorded in the
test log and the test won't be executed further.
diff --git a/src/widgets/accessible/itemviews.cpp b/src/widgets/accessible/itemviews.cpp
index ebe8efc79e..09e561247b 100644
--- a/src/widgets/accessible/itemviews.cpp
+++ b/src/widgets/accessible/itemviews.cpp
@@ -556,20 +556,8 @@ void QAccessibleTable::modelChange(QAccessibleTableModelChangeEvent *event)
QAccessible::Id id = iter.value();
QAccessibleInterface *iface = QAccessible::accessibleInterface(id);
Q_ASSERT(iface);
- if (iface->role() == QAccessible::Cell || iface->role() == QAccessible::ListItem) {
- Q_ASSERT(iface->tableCellInterface());
- QAccessibleTableCell *cell = static_cast<QAccessibleTableCell*>(iface->tableCellInterface());
- if (event->modelChangeType() == QAccessibleTableModelChangeEvent::RowsInserted
- && cell->m_index.row() >= event->firstRow()) {
- int newRow = cell->m_index.row() + newRows;
- cell->m_index = cell->m_index.sibling(newRow, cell->m_index.column());
- } else if (event->modelChangeType() == QAccessibleTableModelChangeEvent::ColumnsInserted
- && cell->m_index.column() >= event->firstColumn()) {
- int newColumn = cell->m_index.column() + newColumns;
- cell->m_index = cell->m_index.sibling(cell->m_index.row(), newColumn);
- }
- } else if (event->modelChangeType() == QAccessibleTableModelChangeEvent::RowsInserted
- && iface->role() == QAccessible::RowHeader) {
+ if (event->modelChangeType() == QAccessibleTableModelChangeEvent::RowsInserted
+ && iface->role() == QAccessible::RowHeader) {
QAccessibleTableHeaderCell *cell = static_cast<QAccessibleTableHeaderCell*>(iface);
if (cell->index >= event->firstRow()) {
cell->index += newRows;
@@ -608,27 +596,11 @@ void QAccessibleTable::modelChange(QAccessibleTableModelChangeEvent *event)
if (iface->role() == QAccessible::Cell || iface->role() == QAccessible::ListItem) {
Q_ASSERT(iface->tableCellInterface());
QAccessibleTableCell *cell = static_cast<QAccessibleTableCell*>(iface->tableCellInterface());
- if (event->modelChangeType() == QAccessibleTableModelChangeEvent::RowsRemoved) {
- if (cell->m_index.row() < event->firstRow()) {
- newCache.insert(indexOfChild(cell), id);
- } else if (cell->m_index.row() > event->lastRow()) {
- int newRow = cell->m_index.row() - deletedRows;
- cell->m_index = cell->m_index.sibling(newRow, cell->m_index.column());
- newCache.insert(indexOfChild(cell), id);
- } else {
- QAccessible::deleteAccessibleInterface(id);
- }
- } else if (event->modelChangeType() == QAccessibleTableModelChangeEvent::ColumnsRemoved) {
- if (cell->m_index.column() < event->firstColumn()) {
- newCache.insert(indexOfChild(cell), id);
- } else if (cell->m_index.column() > event->lastColumn()) {
- int newColumn = cell->m_index.column() - deletedColumns;
- cell->m_index = cell->m_index.sibling(cell->m_index.row(), newColumn);
- newCache.insert(indexOfChild(cell), id);
- } else {
- QAccessible::deleteAccessibleInterface(id);
- }
- }
+ // Since it is a QPersistentModelIndex, we only need to check if it is valid
+ if (cell->m_index.isValid())
+ newCache.insert(indexOfChild(cell), id);
+ else
+ QAccessible::deleteAccessibleInterface(id);
} else if (event->modelChangeType() == QAccessibleTableModelChangeEvent::RowsRemoved
&& iface->role() == QAccessible::RowHeader) {
QAccessibleTableHeaderCell *cell = static_cast<QAccessibleTableHeaderCell*>(iface);
diff --git a/src/widgets/accessible/itemviews_p.h b/src/widgets/accessible/itemviews_p.h
index 95a0032139..3e2fb1d391 100644
--- a/src/widgets/accessible/itemviews_p.h
+++ b/src/widgets/accessible/itemviews_p.h
@@ -213,7 +213,7 @@ private:
QHeaderView *verticalHeader() const;
QHeaderView *horizontalHeader() const;
QPointer<QAbstractItemView > view;
- QModelIndex m_index;
+ QPersistentModelIndex m_index;
QAccessible::Role m_role;
void selectCell();
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp
index fc360d8381..094f2680c6 100644
--- a/src/widgets/dialogs/qfiledialog.cpp
+++ b/src/widgets/dialogs/qfiledialog.cpp
@@ -900,6 +900,9 @@ void QFileDialogPrivate::_q_goToUrl(const QUrl &url)
{QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).last()},
a native image picker dialog will be used for accessing the user's photo album.
The filename returned can be loaded using QFile and related APIs.
+ For this to be enabled, the Info.plist assigned to QMAKE_INFO_PLIST in the
+ project file must contain the key \c NSPhotoLibraryUsageDescription. See
+ Info.plist documentation from Apple for more information regarding this key.
This feature was added in Qt 5.5.
*/
void QFileDialog::setDirectory(const QString &directory)
@@ -2042,10 +2045,12 @@ QString QFileDialog::labelText(DialogLabel label) const
button = d->qFileDialogUi->buttonBox->button(QDialogButtonBox::Save);
if (button)
return button->text();
+ break;
case Reject:
button = d->qFileDialogUi->buttonBox->button(QDialogButtonBox::Cancel);
if (button)
return button->text();
+ break;
}
return QString();
}
diff --git a/src/widgets/doc/snippets/code/src_gui_kernel_qwidget.cpp b/src/widgets/doc/snippets/code/src_gui_kernel_qwidget.cpp
index 18f8f2df8c..f2db73226b 100644
--- a/src/widgets/doc/snippets/code/src_gui_kernel_qwidget.cpp
+++ b/src/widgets/doc/snippets/code/src_gui_kernel_qwidget.cpp
@@ -137,11 +137,3 @@ setUpdatesEnabled(false);
bigVisualChanges();
setUpdatesEnabled(true);
//! [13]
-
-
-//! [14]
-...
-extern void qt_x11_set_global_double_buffer(bool);
-qt_x11_set_global_double_buffer(false);
-...
-//! [14]
diff --git a/src/widgets/doc/src/model-view-programming.qdoc b/src/widgets/doc/src/model-view-programming.qdoc
index 6a4aaa489a..e727d7fe56 100644
--- a/src/widgets/doc/src/model-view-programming.qdoc
+++ b/src/widgets/doc/src/model-view-programming.qdoc
@@ -737,7 +737,7 @@
\image spinboxdelegate-example.png
- We subclass the delegate from \l QItemDelegate because we do not want
+ We subclass the delegate from \l QStyledItemDelegate because we do not want
to write custom display functions. However, we must still provide
functions to manage the editor widget:
diff --git a/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp b/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp
index b884e93290..203cc8007c 100644
--- a/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp
+++ b/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp
@@ -694,8 +694,7 @@ void QGraphicsSceneBspTreeIndex::itemChange(const QGraphicsItem *item, QGraphics
bool QGraphicsSceneBspTreeIndex::event(QEvent *event)
{
Q_D(QGraphicsSceneBspTreeIndex);
- switch (event->type()) {
- case QEvent::Timer:
+ if (event->type() == QEvent::Timer) {
if (d->indexTimerId && static_cast<QTimerEvent *>(event)->timerId() == d->indexTimerId) {
if (d->restartIndexTimer) {
d->restartIndexTimer = false;
@@ -704,11 +703,8 @@ bool QGraphicsSceneBspTreeIndex::event(QEvent *event)
d->_q_updateIndex();
}
}
- // Fallthrough intended - support timers in subclasses.
- default:
- return QObject::event(event);
}
- return true;
+ return QObject::event(event);
}
QT_END_NAMESPACE
diff --git a/src/widgets/graphicsview/qgraphicswidget.cpp b/src/widgets/graphicsview/qgraphicswidget.cpp
index d52aff5131..55c5203bb5 100644
--- a/src/widgets/graphicsview/qgraphicswidget.cpp
+++ b/src/widgets/graphicsview/qgraphicswidget.cpp
@@ -274,6 +274,11 @@ QGraphicsWidget::~QGraphicsWidget()
// Remove this graphics widget from widgetStyles
widgetStyles()->setStyleForWidget(this, 0);
+
+ // Unset the parent here, when we're still a QGraphicsWidget.
+ // It is otherwise done in ~QGraphicsItem() where we'd be
+ // calling QGraphicsWidget members on an ex-QGraphicsWidget object
+ setParentItem(Q_NULLPTR);
}
/*!
@@ -1451,6 +1456,7 @@ bool QGraphicsWidget::event(QEvent *event)
case QEvent::GraphicsSceneMousePress:
if (d->hasDecoration() && windowFrameEvent(event))
return true;
+ break;
case QEvent::GraphicsSceneMouseMove:
case QEvent::GraphicsSceneMouseRelease:
case QEvent::GraphicsSceneMouseDoubleClick:
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp
index 578f040f77..24be27a8e5 100644
--- a/src/widgets/itemviews/qabstractitemview.cpp
+++ b/src/widgets/itemviews/qabstractitemview.cpp
@@ -1786,13 +1786,18 @@ void QAbstractItemView::mousePressEvent(QMouseEvent *event)
d->autoScroll = false;
d->selectionModel->setCurrentIndex(index, QItemSelectionModel::NoUpdate);
d->autoScroll = autoScroll;
- QRect rect(visualRect(d->currentSelectionStartIndex).center(), pos);
if (command.testFlag(QItemSelectionModel::Toggle)) {
command &= ~QItemSelectionModel::Toggle;
d->ctrlDragSelectionFlag = d->selectionModel->isSelected(index) ? QItemSelectionModel::Deselect : QItemSelectionModel::Select;
command |= d->ctrlDragSelectionFlag;
}
- setSelection(rect, command);
+
+ if ((command & QItemSelectionModel::Current) == 0) {
+ setSelection(QRect(pos, QSize(1, 1)), command);
+ } else {
+ QRect rect(visualRect(d->currentSelectionStartIndex).center(), pos);
+ setSelection(rect, command);
+ }
// signal handlers may change the model
emit pressed(index);
diff --git a/src/widgets/itemviews/qstyleditemdelegate.cpp b/src/widgets/itemviews/qstyleditemdelegate.cpp
index bab8436dce..e4115c9e60 100644
--- a/src/widgets/itemviews/qstyleditemdelegate.cpp
+++ b/src/widgets/itemviews/qstyleditemdelegate.cpp
@@ -366,7 +366,7 @@ void QStyledItemDelegate::initStyleOption(QStyleOptionViewItem *option,
if it is enabled or selected.
After painting, you should ensure that the painter is returned to
- its the state it was supplied in when this function was called.
+ the state it was supplied in when this function was called.
For example, it may be useful to call QPainter::save() before
painting and QPainter::restore() afterwards.
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index 1b77d74cd0..ef046f3ef8 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -4216,13 +4216,10 @@ void QApplication::beep()
\relates QApplication
A global pointer referring to the unique application object. It is
- equivalent to the pointer returned by the QCoreApplication::instance()
- function except that, in GUI applications, it is a pointer to a
- QApplication instance.
+ equivalent to QCoreApplication::instance(), but cast as a QApplication pointer,
+ so only valid when the unique application object is a QApplication.
- Only one application object can be created.
-
- \sa QCoreApplication::instance()
+ \sa QCoreApplication::instance(), qGuiApp
*/
/*!
diff --git a/src/widgets/kernel/qformlayout.cpp b/src/widgets/kernel/qformlayout.cpp
index 4500b5b25d..7c1342604c 100644
--- a/src/widgets/kernel/qformlayout.cpp
+++ b/src/widgets/kernel/qformlayout.cpp
@@ -157,7 +157,7 @@ public:
int insertRow(int row);
void insertRows(int row, int count);
- void setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item);
+ bool setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item);
void setLayout(int row, QFormLayout::ItemRole role, QLayout *layout);
void setWidget(int row, QFormLayout::ItemRole role, QWidget *widget);
@@ -919,21 +919,21 @@ void QFormLayoutPrivate::insertRows(int row, int count)
}
}
-void QFormLayoutPrivate::setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item)
+bool QFormLayoutPrivate::setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item)
{
const bool fullRow = role == QFormLayout::SpanningRole;
const int column = role == QFormLayout::SpanningRole ? 1 : static_cast<int>(role);
if (Q_UNLIKELY(uint(row) >= uint(m_matrix.rowCount()) || uint(column) > 1U)) {
qWarning("QFormLayoutPrivate::setItem: Invalid cell (%d, %d)", row, column);
- return;
+ return false;
}
if (!item)
- return;
+ return false;
if (Q_UNLIKELY(m_matrix(row, column))) {
qWarning("QFormLayoutPrivate::setItem: Cell (%d, %d) already occupied", row, column);
- return;
+ return false;
}
QFormLayoutItem *i = new QFormLayoutItem(item);
@@ -941,6 +941,7 @@ void QFormLayoutPrivate::setItem(int row, QFormLayout::ItemRole role, QLayoutIte
m_matrix(row, column) = i;
m_things.append(i);
+ return true;
}
void QFormLayoutPrivate::setLayout(int row, QFormLayout::ItemRole role, QLayout *layout)
@@ -957,7 +958,9 @@ void QFormLayoutPrivate::setWidget(int row, QFormLayout::ItemRole role, QWidget
if (widget) {
Q_Q(QFormLayout);
q->addChildWidget(widget);
- setItem(row, role, QLayoutPrivate::createWidgetItem(q, widget));
+ QWidgetItem *item = QLayoutPrivate::createWidgetItem(q, widget);
+ if (!setItem(row, role, item))
+ delete item;
}
}
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index b2973349e5..09a89e4591 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -809,6 +809,10 @@ void QWidget::setAutoFillBackground(bool enabled)
parentWidget(), window(), setParent(), winId(),
find(), metric().
+ \row \li Context menu \li
+ contextMenuPolicy, contextMenuEvent(),
+ customContextMenuRequested(), actions()
+
\row \li Interactive help \li
setToolTip(), setWhatsThis()
@@ -9627,11 +9631,6 @@ void QWidget::leaveEvent(QEvent *)
Since Qt 4.0, QWidget automatically double-buffers its painting, so there
is no need to write double-buffering code in paintEvent() to avoid flicker.
- \b{Note for the X11 platform}: It is possible to toggle global double
- buffering by calling \c qt_x11_set_global_double_buffer(). For example,
-
- \snippet code/src_gui_kernel_qwidget.cpp 14
-
\note Generally, you should refrain from calling update() or repaint()
\b{inside} a paintEvent(). For example, calling update() or repaint() on
children inside a paintevent() results in undefined behavior; the child may
diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h
index 19b7238a70..4426a6d415 100644
--- a/src/widgets/kernel/qwidget_p.h
+++ b/src/widgets/kernel/qwidget_p.h
@@ -401,9 +401,6 @@ public:
const QRegion &rgn, const QPoint &offset, int flags,
QPainter *sharedPainter, QWidgetBackingStore *backingStore);
-
- QPainter *beginSharedPainter();
- bool endSharedPainter();
#ifndef QT_NO_GRAPHICSVIEW
static QGraphicsProxyWidget * nearestGraphicsProxyWidget(const QWidget *origin);
#endif
diff --git a/src/widgets/kernel/qwidgetbackingstore.cpp b/src/widgets/kernel/qwidgetbackingstore.cpp
index ac8902c9e6..185a66731b 100644
--- a/src/widgets/kernel/qwidgetbackingstore.cpp
+++ b/src/widgets/kernel/qwidgetbackingstore.cpp
@@ -112,6 +112,7 @@ void QWidgetBackingStore::qt_flush(QWidget *widget, const QRegion &region, QBack
if (widget != tlw)
offset += widget->mapTo(tlw, QPoint());
+ QRegion effectiveRegion = region;
#ifndef QT_NO_OPENGL
const bool compositionWasActive = widget->d_func()->renderToTextureComposeActive;
if (!widgetTextures) {
@@ -125,6 +126,11 @@ void QWidgetBackingStore::qt_flush(QWidget *widget, const QRegion &region, QBack
} else {
widget->d_func()->renderToTextureComposeActive = true;
}
+ // When changing the composition status, make sure the dirty region covers
+ // the entire widget. Just having e.g. the shown/hidden render-to-texture
+ // widget's area marked as dirty is incorrect when changing flush paths.
+ if (compositionWasActive != widget->d_func()->renderToTextureComposeActive)
+ effectiveRegion = widget->rect();
// re-test since we may have been forced to this path via the dummy texture list above
if (widgetTextures) {
@@ -136,12 +142,12 @@ void QWidgetBackingStore::qt_flush(QWidget *widget, const QRegion &region, QBack
const bool translucentBackground = widget->testAttribute(Qt::WA_TranslucentBackground);
// Use the tlw's context, not widget's. The difference is important with native child
// widgets where tlw != widget.
- backingStore->handle()->composeAndFlush(widget->windowHandle(), region, offset, widgetTextures,
+ backingStore->handle()->composeAndFlush(widget->windowHandle(), effectiveRegion, offset, widgetTextures,
tlw->d_func()->shareContext(), translucentBackground);
widget->window()->d_func()->sendComposeStatus(widget->window(), true);
} else
#endif
- backingStore->flush(region, widget->windowHandle(), offset);
+ backingStore->flush(effectiveRegion, widget->windowHandle(), offset);
}
#ifndef QT_NO_PAINT_DEBUG
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index f3fbe13763..3e15b6977a 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -535,7 +535,7 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event)
// activate window of the widget under mouse pointer
if (!w->isActiveWindow()) {
w->activateWindow();
- w->raise();
+ w->window()->raise();
}
QWindow *win = w->windowHandle();
diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp
index cf81f53ad0..e48217155e 100644
--- a/src/widgets/styles/qcommonstyle.cpp
+++ b/src/widgets/styles/qcommonstyle.cpp
@@ -5237,6 +5237,8 @@ static QPixmap cachedPixmapFromXPM(const char * const *xpm)
return result;
}
+static inline QPixmap titleBarMenuCachedPixmapFromXPM() { return cachedPixmapFromXPM(qt_menu_xpm); }
+
#ifndef QT_NO_IMAGEFORMAT_PNG
static inline QString clearText16IconPath()
{
@@ -5581,7 +5583,7 @@ QPixmap QCommonStyle::standardPixmap(StandardPixmap sp, const QStyleOption *opti
#ifndef QT_NO_IMAGEFORMAT_XPM
switch (sp) {
case SP_TitleBarMenuButton:
- return cachedPixmapFromXPM(qt_menu_xpm);
+ return titleBarMenuCachedPixmapFromXPM();
case SP_TitleBarShadeButton:
return cachedPixmapFromXPM(qt_shade_xpm);
case SP_TitleBarUnshadeButton:
@@ -6121,6 +6123,12 @@ QIcon QCommonStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption
case SP_MediaVolumeMuted:
icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-volume-muted-16.png"), QSize(16, 16));
break;
+ case SP_TitleBarMenuButton:
+# ifndef QT_NO_IMAGEFORMAT_XPM
+ icon.addPixmap(titleBarMenuCachedPixmapFromXPM());
+# endif
+ icon.addFile(QLatin1String(":/qt-project.org/qmessagebox/images/qtlogo-64.png"));
+ break;
#endif // QT_NO_IMAGEFORMAT_PNG
default:
icon.addPixmap(proxy()->standardPixmap(standardIcon, option, widget));
diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp
index 3a39441785..1e98b1775a 100644
--- a/src/widgets/styles/qfusionstyle.cpp
+++ b/src/widgets/styles/qfusionstyle.cpp
@@ -1080,8 +1080,8 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio
painter->setPen(innerLine);
painter->drawRoundedRect(option->rect.adjusted(1, 1, -2, -2), 1, 1);
painter->restore();
- return;
}
+ break;
case CE_SizeGrip:
painter->save();
{
diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm
index 9a07eaf851..2fbe3be62f 100644
--- a/src/widgets/styles/qmacstyle_mac.mm
+++ b/src/widgets/styles/qmacstyle_mac.mm
@@ -1039,6 +1039,8 @@ static QSize qt_aqua_get_known_size(QStyle::ContentsType ct, const QWidget *widg
#if defined(QMAC_QAQUASTYLE_SIZE_CONSTRAIN) || defined(DEBUG_SIZE_CONSTRAINT)
static QAquaWidgetSize qt_aqua_guess_size(const QWidget *widg, QSize large, QSize small, QSize mini)
{
+ Q_UNUSED(widg);
+
if (large == QSize(-1, -1)) {
if (small != QSize(-1, -1))
return QAquaSizeSmall;
@@ -1054,7 +1056,7 @@ static QAquaWidgetSize qt_aqua_guess_size(const QWidget *widg, QSize large, QSiz
}
#ifndef QT_NO_MAINWINDOW
- if (qobject_cast<QDockWidget *>(widg->window()) || qEnvironmentVariableIsSet("QWIDGET_ALL_SMALL")) {
+ if (qEnvironmentVariableIsSet("QWIDGET_ALL_SMALL")) {
//if (small.width() != -1 || small.height() != -1)
return QAquaSizeSmall;
} else if (qEnvironmentVariableIsSet("QWIDGET_ALL_MINI")) {
@@ -4263,10 +4265,6 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
bool verticalTabs = ttd == kThemeTabWest || ttd == kThemeTabEast;
bool selected = (myTab.state & QStyle::State_Selected);
- if (selected && !myTab.documentMode
- && (!usingYosemiteOrLater || myTab.state & State_Active))
- myTab.palette.setColor(QPalette::WindowText, Qt::white);
-
// Check to see if we use have the same as the system font
// (QComboMenuItem is internal and should never be seen by the
// outside world, unless they read the source, in which case, it's
diff --git a/src/widgets/styles/qstylehelper.cpp b/src/widgets/styles/qstylehelper.cpp
index f073f1cccb..754062ac26 100644
--- a/src/widgets/styles/qstylehelper.cpp
+++ b/src/widgets/styles/qstylehelper.cpp
@@ -49,6 +49,8 @@
#include "qstylehelper_p.h"
#include <qstringbuilder.h>
+#include <qdatastream.h>
+#include <qcryptographichash.h>
QT_BEGIN_NAMESPACE
@@ -62,7 +64,6 @@ QString uniqueName(const QString &key, const QStyleOption *option, const QSize &
QString tmp = key % HexString<uint>(option->state)
% HexString<uint>(option->direction)
% HexString<uint>(complexOption ? uint(complexOption->activeSubControls) : 0u)
- % HexString<quint64>(option->palette.cacheKey())
% HexString<uint>(size.width())
% HexString<uint>(size.height());
@@ -73,6 +74,25 @@ QString uniqueName(const QString &key, const QStyleOption *option, const QSize &
% QLatin1Char(spinBox->frame ? '1' : '0'); ;
}
#endif // QT_NO_SPINBOX
+
+ // QTBUG-56743, try to create a palette cache key reflecting the value,
+ // as leaks may occur in conjunction with QStyleSheetStyle/QRenderRule modifying
+ // palettes when using QPalette::cacheKey()
+ if (option->palette != QGuiApplication::palette()) {
+ tmp.append(QLatin1Char('P'));
+#ifndef QT_NO_DATASTREAM
+ QByteArray key;
+ key.reserve(5120); // Observed 5040B for a serialized palette on 64bit
+ {
+ QDataStream str(&key, QIODevice::WriteOnly);
+ str << option->palette;
+ }
+ const QByteArray sha1 = QCryptographicHash::hash(key, QCryptographicHash::Sha1).toHex();
+ tmp.append(QString::fromLatin1(sha1));
+#else // QT_NO_DATASTREAM
+ tmp.append(QString::number(option->palette.cacheKey(), 16));
+#endif // !QT_NO_DATASTREAM
+ }
return tmp;
}
diff --git a/src/widgets/styles/qwindowsxpstyle.cpp b/src/widgets/styles/qwindowsxpstyle.cpp
index 9fb18f63e8..1aa53de486 100644
--- a/src/widgets/styles/qwindowsxpstyle.cpp
+++ b/src/widgets/styles/qwindowsxpstyle.cpp
@@ -811,7 +811,7 @@ bool QWindowsXPStylePrivate::drawBackground(XPThemeData &themeData)
bool translucentToplevel = false;
const QPaintDevice *paintDevice = painter->device();
- const qreal aditionalDevicePixelRatio = themeData.widget ? themeData.widget->devicePixelRatio() : 1;
+ const qreal aditionalDevicePixelRatio = themeData.widget ? themeData.widget->devicePixelRatioF() : qreal(1);
if (paintDevice->devType() == QInternal::Widget) {
const QWidget *window = static_cast<const QWidget *>(paintDevice)->window();
translucentToplevel = window->testAttribute(Qt::WA_TranslucentBackground);
@@ -840,28 +840,28 @@ bool QWindowsXPStylePrivate::drawBackground(XPThemeData &themeData)
const HDC dc = canDrawDirectly ? hdcForWidgetBackingStore(themeData.widget) : HDC(0);
const bool result = dc
- ? drawBackgroundDirectly(dc, themeData, qRound(aditionalDevicePixelRatio))
- : drawBackgroundThruNativeBuffer(themeData, qRound(aditionalDevicePixelRatio));
+ ? drawBackgroundDirectly(dc, themeData, aditionalDevicePixelRatio)
+ : drawBackgroundThruNativeBuffer(themeData, aditionalDevicePixelRatio);
painter->restore();
return result;
}
-static inline QRect scaleRect(const QRect &r, int factor)
+static inline QRectF scaleRect(const QRectF &r, qreal factor)
{
return r.isValid() && factor > 1
- ? QRect(r.topLeft() * factor, r.size() * factor)
+ ? QRectF(r.topLeft() * factor, r.size() * factor)
: r;
}
-static QRegion scaleRegion(const QRegion &region, int factor)
+static QRegion scaleRegion(const QRegion &region, qreal factor)
{
- if (region.isEmpty() || factor == 1)
+ if (region.isEmpty() || qFuzzyCompare(factor, qreal(1)))
return region;
if (region.rectCount() == 1)
- return QRegion(scaleRect(region.boundingRect(), factor));
+ return QRegion(scaleRect(QRectF(region.boundingRect()), factor).toRect());
QRegion result;
foreach (const QRect &rect, region.rects())
- result += QRect(rect.topLeft() * factor, rect.size() * factor);
+ result += QRectF(QPointF(rect.topLeft()) * factor, QSizeF(rect.size() * factor)).toRect();
return result;
}
@@ -870,13 +870,12 @@ static QRegion scaleRegion(const QRegion &region, int factor)
Do not use this if you need to perform other transformations on the
resulting data.
*/
-bool QWindowsXPStylePrivate::drawBackgroundDirectly(HDC dc, XPThemeData &themeData, int additionalDevicePixelRatio)
+bool QWindowsXPStylePrivate::drawBackgroundDirectly(HDC dc, XPThemeData &themeData, qreal additionalDevicePixelRatio)
{
QPainter *painter = themeData.painter;
- QPoint redirectionDelta(int(painter->deviceMatrix().dx()),
- int(painter->deviceMatrix().dy()));
- QRect area = scaleRect(themeData.rect, additionalDevicePixelRatio).translated(redirectionDelta);
+ const QPointF redirectionDelta(painter->deviceMatrix().dx(), painter->deviceMatrix().dy());
+ const QRect area = scaleRect(QRectF(themeData.rect), additionalDevicePixelRatio).translated(redirectionDelta).toRect();
QRegion sysRgn = painter->paintEngine()->systemClip();
if (sysRgn.isEmpty())
@@ -884,7 +883,7 @@ bool QWindowsXPStylePrivate::drawBackgroundDirectly(HDC dc, XPThemeData &themeDa
else
sysRgn &= area;
if (painter->hasClipping())
- sysRgn &= scaleRegion(painter->clipRegion(), additionalDevicePixelRatio).translated(redirectionDelta);
+ sysRgn &= scaleRegion(painter->clipRegion(), additionalDevicePixelRatio).translated(redirectionDelta.toPoint());
HRGN hrgn = qt_hrgn_from_qregion(sysRgn);
SelectClipRgn(dc, hrgn);
@@ -956,15 +955,16 @@ bool QWindowsXPStylePrivate::drawBackgroundDirectly(HDC dc, XPThemeData &themeDa
engine).
*/
bool QWindowsXPStylePrivate::drawBackgroundThruNativeBuffer(XPThemeData &themeData,
- int additionalDevicePixelRatio)
+ qreal additionalDevicePixelRatio)
{
QPainter *painter = themeData.painter;
- QRect rect = scaleRect(themeData.rect, additionalDevicePixelRatio);
+ QRectF rectF = scaleRect(QRectF(themeData.rect), additionalDevicePixelRatio);
if ((themeData.rotate + 90) % 180 == 0) { // Catch 90,270,etc.. degree flips.
- rect = QRect(0, 0, rect.height(), rect.width());
+ rectF = QRectF(0, 0, rectF.height(), rectF.width());
}
- rect.moveTo(0,0);
+ rectF.moveTo(0, 0);
+ QRect rect = rectF.toRect();
int partId = themeData.partId;
int stateId = themeData.stateId;
int w = rect.width();
diff --git a/src/widgets/styles/qwindowsxpstyle_p_p.h b/src/widgets/styles/qwindowsxpstyle_p_p.h
index 8ee4d1a641..2838ee93e0 100644
--- a/src/widgets/styles/qwindowsxpstyle_p_p.h
+++ b/src/widgets/styles/qwindowsxpstyle_p_p.h
@@ -394,8 +394,8 @@ public:
void setTransparency(QWidget *widget, XPThemeData &themeData);
bool drawBackground(XPThemeData &themeData);
- bool drawBackgroundThruNativeBuffer(XPThemeData &themeData, int aditionalDevicePixelRatio);
- bool drawBackgroundDirectly(HDC dc, XPThemeData &themeData, int aditionalDevicePixelRatio);
+ bool drawBackgroundThruNativeBuffer(XPThemeData &themeData, qreal aditionalDevicePixelRatio);
+ bool drawBackgroundDirectly(HDC dc, XPThemeData &themeData, qreal aditionalDevicePixelRatio);
bool hasAlphaChannel(const QRect &rect);
bool fixAlphaChannel(const QRect &rect);
diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp
index caeabb660b..a8c031ac1b 100644
--- a/src/widgets/widgets/qcalendarwidget.cpp
+++ b/src/widgets/widgets/qcalendarwidget.cpp
@@ -213,10 +213,9 @@ QString QCalendarDayValidator::text(const QDate &date, int repeat) const
return formatNumber(date.day(), 2);
} else if (repeat == 3) {
return m_locale.dayName(date.dayOfWeek(), QLocale::ShortFormat);
- } else if (repeat >= 4) {
+ } else /* repeat >= 4 */ {
return m_locale.dayName(date.dayOfWeek(), QLocale::LongFormat);
}
- return QString();
}
//////////////////////////////////
@@ -3030,6 +3029,7 @@ bool QCalendarWidget::event(QEvent *event)
switch (event->type()) {
case QEvent::LayoutDirectionChange:
d->updateButtonIcons();
+ break;
case QEvent::LocaleChange:
d->m_model->setFirstColumnDay(locale().firstDayOfWeek());
d->cachedSizeHint = QSize();
diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp
index af178ce8f5..e255a95ea2 100644
--- a/src/widgets/widgets/qcombobox.cpp
+++ b/src/widgets/widgets/qcombobox.cpp
@@ -1684,6 +1684,9 @@ void QComboBox::setIconSize(const QSize &size)
By default, this property is \c false. The effect of editing depends
on the insert policy.
+ \note When disabling the \a editable state, the validator and
+ completer are removed.
+
\sa InsertPolicy
*/
bool QComboBox::isEditable() const
@@ -1837,6 +1840,8 @@ QLineEdit *QComboBox::lineEdit() const
\fn void QComboBox::setValidator(const QValidator *validator)
Sets the \a validator to use instead of the current validator.
+
+ \note The validator is removed when the editable property becomes \c false.
*/
void QComboBox::setValidator(const QValidator *v)
@@ -1870,6 +1875,8 @@ const QValidator *QComboBox::validator() const
By default, for an editable combo box, a QCompleter that
performs case insensitive inline completion is automatically created.
+
+ \note The completer is removed when the \a editable property becomes \c false.
*/
void QComboBox::setCompleter(QCompleter *c)
{
@@ -3126,6 +3133,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e)
case Qt::Key_Up:
if (e->modifiers() & Qt::ControlModifier)
break; // pass to line edit for auto completion
+ // fall through
case Qt::Key_PageUp:
#ifdef QT_KEYPAD_NAVIGATION
if (QApplication::keypadNavigationEnabled())
@@ -3168,6 +3176,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e)
showPopup();
return;
}
+ break;
case Qt::Key_Enter:
case Qt::Key_Return:
case Qt::Key_Escape:
@@ -3212,6 +3221,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e)
switch (move) {
case MoveFirst:
newIndex = -1;
+ // fall through
case MoveDown:
newIndex++;
while (newIndex < rowCount && !(d->model->index(newIndex, d->modelColumn, d->root).flags() & Qt::ItemIsEnabled))
@@ -3219,6 +3229,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e)
break;
case MoveLast:
newIndex = rowCount;
+ // fall through
case MoveUp:
newIndex--;
while ((newIndex >= 0) && !(d->model->flags(d->model->index(newIndex,d->modelColumn,d->root)) & Qt::ItemIsEnabled))
diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp
index 54094de765..7fe569a042 100644
--- a/src/widgets/widgets/qdatetimeedit.cpp
+++ b/src/widgets/widgets/qdatetimeedit.cpp
@@ -2350,7 +2350,9 @@ void QDateTimeEditPrivate::interpret(EmitPolicy ep)
const QValidator::State state = q->validate(tmp, pos);
if (state != QValidator::Acceptable
&& correctionMode == QAbstractSpinBox::CorrectToPreviousValue
- && (state == QValidator::Invalid || !(fieldInfo(currentSectionIndex) & AllowPartial))) {
+ && (state == QValidator::Invalid
+ || currentSectionIndex < 0
+ || !(fieldInfo(currentSectionIndex) & AllowPartial))) {
setValue(value, ep);
updateTimeSpec();
} else {
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp
index d664727d89..aec798e2e4 100644
--- a/src/widgets/widgets/qdockwidget.cpp
+++ b/src/widgets/widgets/qdockwidget.cpp
@@ -1317,7 +1317,9 @@ QDockWidget::DockWidgetFeatures QDockWidget::features() const
By default, this property is \c true.
- \sa isWindow()
+ When this property changes, the \c {topLevelChanged()} signal is emitted.
+
+ \sa isWindow(), topLevelChanged()
*/
void QDockWidget::setFloating(bool floating)
{
diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp
index 5db1013fd2..20a4917567 100644
--- a/src/widgets/widgets/qlabel.cpp
+++ b/src/widgets/widgets/qlabel.cpp
@@ -585,6 +585,7 @@ QSize QLabelPrivate::sizeForWidth(int w) const
#ifndef QT_NO_MOVIE
} else if (movie && !movie->currentPixmap().isNull()) {
br = movie->currentPixmap().rect();
+ br.setSize(br.size() / movie->currentPixmap().devicePixelRatio());
#endif
} else if (isTextLabel) {
int align = QStyle::visualAlignment(textDirection(), QFlag(this->align));
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp
index 56965923b7..a5929725a9 100644
--- a/src/widgets/widgets/qlineedit.cpp
+++ b/src/widgets/widgets/qlineedit.cpp
@@ -605,7 +605,7 @@ const QValidator * QLineEdit::validator() const
The initial setting is to have no input validator (i.e. any input
is accepted up to maxLength()).
- \sa validator(), QIntValidator, QDoubleValidator, QRegExpValidator
+ \sa validator(), hasAcceptableInput(), QIntValidator, QDoubleValidator, QRegExpValidator
*/
void QLineEdit::setValidator(const QValidator *v)
diff --git a/src/widgets/widgets/qmainwindow.cpp b/src/widgets/widgets/qmainwindow.cpp
index 5f7cfec5af..0eb5e63ed5 100644
--- a/src/widgets/widgets/qmainwindow.cpp
+++ b/src/widgets/widgets/qmainwindow.cpp
@@ -326,7 +326,7 @@ void QMainWindowPrivate::init()
direction.
Two dock widgets may also be stacked on top of each other. A
- QTabBar is then used to select which of the widgets that should be
+ QTabBar is then used to select which of the widgets should be
displayed.
We give an example of how to create and add dock widgets to a
@@ -670,8 +670,10 @@ QWidget *QMainWindow::takeCentralWidget()
{
Q_D(QMainWindow);
QWidget *oldcentralwidget = d->layout->centralWidget();
- oldcentralwidget->setParent(0);
- d->layout->setCentralWidget(0);
+ if (oldcentralwidget) {
+ oldcentralwidget->setParent(0);
+ d->layout->setCentralWidget(0);
+ }
return oldcentralwidget;
}
diff --git a/src/widgets/widgets/qsizegrip.cpp b/src/widgets/widgets/qsizegrip.cpp
index dd0b383d2b..523fd34d9b 100644
--- a/src/widgets/widgets/qsizegrip.cpp
+++ b/src/widgets/widgets/qsizegrip.cpp
@@ -184,9 +184,12 @@ Qt::Corner QSizeGripPrivate::corner() const
Put this widget anywhere in a widget tree and the user can use it
to resize the top-level window or any widget with the Qt::SubWindow
flag set. Generally, this should be in the lower right-hand corner.
+
Note that QStatusBar already uses this widget, so if you have a
status bar (e.g., you are using QMainWindow), then you don't need
- to use this widget explicitly.
+ to use this widget explicitly. The same goes for QDialog, for which
+ you can just call \l {QDialog::setSizeGripEnabled()}
+ {QDialog::setSizeGripEnabled()}.
On some platforms the size grip automatically hides itself when the
window is shown full screen or maximised.
diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp
index e51f484f6f..73d5d73f92 100644
--- a/src/widgets/widgets/qtabbar.cpp
+++ b/src/widgets/widgets/qtabbar.cpp
@@ -176,7 +176,12 @@ void QTabBarPrivate::initBasicStyleOption(QStyleOptionTab *option, int tabIndex)
if (tab.textColor.isValid())
option->palette.setColor(q->foregroundRole(), tab.textColor);
-
+#ifdef Q_OS_MACOS
+ else if (isCurrent && !documentMode
+ && (QSysInfo::MacintoshVersion < QSysInfo::MV_10_10 || q->isActiveWindow())) {
+ option->palette.setColor(QPalette::WindowText, Qt::white);
+ }
+#endif
option->icon = tab.icon;
option->iconSize = q->iconSize(); // Will get the default value then.
diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp
index af6d13a647..f354495e70 100644
--- a/src/widgets/widgets/qtextedit.cpp
+++ b/src/widgets/widgets/qtextedit.cpp
@@ -1514,7 +1514,7 @@ void QTextEditPrivate::paint(QPainter *p, QPaintEvent *e)
if (layout)
layout->setViewport(QRect());
- if (!placeholderText.isEmpty() && doc->isEmpty()) {
+ if (!placeholderText.isEmpty() && doc->isEmpty() && !control->isPreediting()) {
QColor col = control->palette().text().color();
col.setAlpha(128);
p->setPen(col);
diff --git a/src/widgets/widgets/qtoolbararealayout.cpp b/src/widgets/widgets/qtoolbararealayout.cpp
index 05564bb6b1..0c57d9251d 100644
--- a/src/widgets/widgets/qtoolbararealayout.cpp
+++ b/src/widgets/widgets/qtoolbararealayout.cpp
@@ -604,16 +604,21 @@ int QToolBarAreaLayoutInfo::distance(const QPoint &pos) const
case QInternal::LeftDock:
if (pos.y() < rect.bottom())
return pos.x() - rect.right();
+ break;
case QInternal::RightDock:
if (pos.y() < rect.bottom())
return rect.left() - pos.x();
+ break;
case QInternal::TopDock:
if (pos.x() < rect.right())
return pos.y() - rect.bottom();
+ break;
case QInternal::BottomDock:
if (pos.x() < rect.right())
return rect.top() - pos.y();
- default:
+ break;
+
+ case QInternal::DockCount:
break;
}
return -1;
diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp
index d5ecb150a8..47806a194e 100644
--- a/src/widgets/widgets/qwidgettextcontrol.cpp
+++ b/src/widgets/widgets/qwidgettextcontrol.cpp
@@ -2584,6 +2584,11 @@ bool QWidgetTextControl::isWordSelectionEnabled() const
return d->wordSelectionEnabled;
}
+bool QWidgetTextControl::isPreediting()
+{
+ return d_func()->isPreediting();
+}
+
#ifndef QT_NO_PRINTER
void QWidgetTextControl::print(QPagedPaintDevice *printer) const
{
diff --git a/src/widgets/widgets/qwidgettextcontrol_p.h b/src/widgets/widgets/qwidgettextcontrol_p.h
index 89b96fa667..4e47f30b84 100644
--- a/src/widgets/widgets/qwidgettextcontrol_p.h
+++ b/src/widgets/widgets/qwidgettextcontrol_p.h
@@ -172,6 +172,8 @@ public:
bool isWordSelectionEnabled() const;
void setWordSelectionEnabled(bool enabled);
+ bool isPreediting();
+
void print(QPagedPaintDevice *printer) const;
virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const;
diff --git a/sync.profile b/sync.profile
index bba0ff2b2f..8f57593b00 100644
--- a/sync.profile
+++ b/sync.profile
@@ -58,11 +58,3 @@ my @zlib_headers = ( "zconf.h", "zlib.h" );
@ignore_for_include_check = ( "qsystemdetection.h", "qcompilerdetection.h", "qprocessordetection.h", @zlib_headers, @angle_headers);
@ignore_for_qt_begin_namespace_check = ( "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qatomic_arch.h", "qatomic_windowsce.h", "qt_windows.h", "qatomic_macosx.h", @zlib_headers, @angle_headers);
%inject_headers = ( "$basedir/src/corelib/global" => [ "qconfig.h", "qfeatures.h" ] );
-# Module dependencies.
-# Every module that is required to build this module should have one entry.
-# Each of the module version specifiers can take one of the following values:
-# - A specific Git revision.
-# - any git symbolic ref resolvable from the module's repository (e.g. "refs/heads/master" to track master branch)
-#
-%dependencies = (
-);
diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp
index d6bc75317a..7752930ae4 100644
--- a/tests/auto/corelib/io/qfile/tst_qfile.cpp
+++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp
@@ -3442,7 +3442,7 @@ void tst_QFile::autocloseHandle()
//file is closed, read should fail
char buf;
QCOMPARE((int)QT_READ(fd, &buf, 1), -1);
- QVERIFY(errno = EBADF);
+ QVERIFY(errno == EBADF);
}
{
diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
index 8d62a38e6b..485b24dc62 100644
--- a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
+++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
@@ -765,6 +765,19 @@ void tst_QFileInfo::canonicalFilePath()
QDir::current().rmdir(linkTarget);
}
#endif
+
+#ifdef Q_OS_DARWIN
+ {
+ // Check if canonicalFilePath's result is in Composed normalization form.
+ QString path = QString::fromLatin1("caf\xe9");
+ QDir dir(QDir::tempPath());
+ dir.mkdir(path);
+ QString canonical = QFileInfo(dir.filePath(path)).canonicalFilePath();
+ QString roundtrip = QFile::decodeName(QFile::encodeName(canonical));
+ QCOMPARE(canonical, roundtrip);
+ dir.rmdir(path);
+ }
+#endif
}
void tst_QFileInfo::fileName_data()
diff --git a/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
index 187f72d095..97b5e74bc2 100644
--- a/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
+++ b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
@@ -73,6 +73,8 @@ private slots:
void signalsEmittedAfterFileMoved();
+ void watchUnicodeCharacters();
+
private:
QString m_tempDirPattern;
#endif // QT_NO_FILESYSTEMWATCHER
@@ -759,6 +761,25 @@ void tst_QFileSystemWatcher::signalsEmittedAfterFileMoved()
QVERIFY2(changedSpy.count() <= fileCount, changedSpy.receivedFilesMessage());
QTRY_COMPARE(changedSpy.count(), fileCount);
}
+
+void tst_QFileSystemWatcher::watchUnicodeCharacters()
+{
+ QTemporaryDir temporaryDirectory(m_tempDirPattern);
+ QVERIFY2(temporaryDirectory.isValid(), qPrintable(temporaryDirectory.errorString()));
+
+ QDir testDir(temporaryDirectory.path());
+ const QString subDir(QString::fromLatin1("caf\xe9"));
+ QVERIFY(testDir.mkdir(subDir));
+ testDir = QDir(temporaryDirectory.path() + QDir::separator() + subDir);
+
+ QFileSystemWatcher watcher;
+ QVERIFY(watcher.addPath(testDir.path()));
+
+ FileSystemWatcherSpy changedSpy(&watcher, FileSystemWatcherSpy::SpyOnDirectoryChanged);
+ QCOMPARE(changedSpy.count(), 0);
+ QVERIFY(testDir.mkdir("creme"));
+ QTRY_COMPARE(changedSpy.count(), 1);
+}
#endif // QT_NO_FILESYSTEMWATCHER
QTEST_MAIN(tst_QFileSystemWatcher)
diff --git a/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp b/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
index 5b18ab9d68..a7a761a2da 100644
--- a/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
+++ b/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
@@ -33,6 +33,9 @@
#include <qfileinfo.h>
#include <qsysinfo.h>
#include <qregexp.h>
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) && !defined(Q_OS_WINCE)
+# include <qt_windows.h>
+#endif
#ifdef Q_OS_UNIX
#include <unistd.h>
@@ -126,6 +129,16 @@ static const char * const enumNames[MaxStandardLocation + 1 - int(QStandardPaths
void tst_qstandardpaths::initTestCase()
{
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) && !defined(Q_OS_WINCE)
+ // Disable WOW64 redirection, see testFindExecutable()
+ if (QSysInfo::buildCpuArchitecture() != QSysInfo::currentCpuArchitecture()) {
+ void *oldMode;
+ const bool disabledDisableWow64FsRedirection = Wow64DisableWow64FsRedirection(&oldMode) == TRUE;
+ if (!disabledDisableWow64FsRedirection)
+ qErrnoWarning("Wow64DisableWow64FsRedirection() failed");
+ QVERIFY(disabledDisableWow64FsRedirection);
+ }
+#endif // Q_OS_WIN && !Q_OS_WINRT && !Q_OS_WINCE
QVERIFY2(m_localConfigTempDir.isValid(), qPrintable(m_localConfigTempDir.errorString()));
QVERIFY2(m_globalConfigTempDir.isValid(), qPrintable(m_globalConfigTempDir.errorString()));
QVERIFY2(m_localAppTempDir.isValid(), qPrintable(m_localAppTempDir.errorString()));
@@ -375,6 +388,7 @@ void tst_qstandardpaths::testFindExecutable_data()
if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS8) {
// The logo executable on Windows 8 is perfectly suited for testing that the
// suffix mechanism is not thrown off by dots in the name.
+ // Note: Requires disabling WOW64 redirection, see initTestCase()
const QString logo = QLatin1String("microsoft.windows.softwarelogo.showdesktop");
const QString logoPath = cmdFi.absolutePath() + QLatin1Char('/') + logo + QLatin1String(".exe");
QTest::newRow("win8-logo")
diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp
index f589fe1d6d..a4461a12d3 100644
--- a/tests/auto/corelib/io/qurl/tst_qurl.cpp
+++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp
@@ -177,6 +177,8 @@ private slots:
void streaming();
void detach();
void testThreading();
+ void matches_data();
+ void matches();
private:
void testThreadingHelper();
@@ -4020,6 +4022,54 @@ void tst_QUrl::testThreading()
delete s_urlStorage;
}
+void tst_QUrl::matches_data()
+{
+ QTest::addColumn<QString>("urlStrOne");
+ QTest::addColumn<QString>("urlStrTwo");
+ QTest::addColumn<uint>("options");
+ QTest::addColumn<bool>("matches");
+
+ QTest::newRow("matchingString-none") << "http://www.website.com/directory/?#ref"
+ << "http://www.website.com/directory/?#ref"
+ << uint(QUrl::None) << true;
+ QTest::newRow("nonMatchingString-none") << "http://www.website.com/directory/?#ref"
+ << "http://www.nomatch.com/directory/?#ref"
+ << uint(QUrl::None) << false;
+ QTest::newRow("matchingHost-removePath") << "http://www.website.com/directory"
+ << "http://www.website.com/differentdir"
+ << uint(QUrl::RemovePath) << true;
+ QTest::newRow("nonMatchingHost-removePath") << "http://www.website.com/directory"
+ << "http://www.different.com/differentdir"
+ << uint(QUrl::RemovePath) << false;
+ QTest::newRow("matchingHost-removePathAuthority") << "http://user:pass@www.website.com/directory"
+ << "http://www.website.com/differentdir"
+ << uint(QUrl::RemovePath | QUrl::RemoveAuthority)
+ << true;
+ QTest::newRow("nonMatchingHost-removePathAuthority") << "http://user:pass@www.website.com/directory"
+ << "http://user:pass@www.different.com/differentdir"
+ << uint(QUrl::RemovePath | QUrl::RemoveAuthority)
+ << true;
+ QTest::newRow("matchingHostAuthority-removePathAuthority")
+ << "http://user:pass@www.website.com/directory" << "http://www.website.com/differentdir"
+ << uint(QUrl::RemovePath | QUrl::RemoveAuthority) << true;
+ QTest::newRow("nonMatchingAuthority-removePathAuthority")
+ << "http://user:pass@www.website.com/directory"
+ << "http://otheruser:otherpass@www.website.com/directory"
+ << uint(QUrl::RemovePath | QUrl::RemoveAuthority) << true;
+}
+
+void tst_QUrl::matches()
+{
+ QFETCH(QString, urlStrOne);
+ QFETCH(QString, urlStrTwo);
+ QFETCH(uint, options);
+ QFETCH(bool, matches);
+
+ QUrl urlOne(urlStrOne);
+ QUrl urlTwo(urlStrTwo);
+ QCOMPARE(urlOne.matches(urlTwo, QUrl::FormattingOptions(options)), matches);
+}
+
QTEST_MAIN(tst_QUrl)
#include "tst_qurl.moc"
diff --git a/tests/auto/corelib/json/invalidBinaryData/10.bjson b/tests/auto/corelib/json/invalidBinaryData/10.bjson
new file mode 100644
index 0000000000..12b29b7aa5
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/10.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/11.bjson b/tests/auto/corelib/json/invalidBinaryData/11.bjson
new file mode 100644
index 0000000000..cf2b612111
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/11.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/12.bjson b/tests/auto/corelib/json/invalidBinaryData/12.bjson
new file mode 100644
index 0000000000..9c2403350e
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/12.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/13.bjson b/tests/auto/corelib/json/invalidBinaryData/13.bjson
new file mode 100644
index 0000000000..db6308b1fd
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/13.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/14.bjson b/tests/auto/corelib/json/invalidBinaryData/14.bjson
new file mode 100644
index 0000000000..347da4572c
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/14.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/15.bjson b/tests/auto/corelib/json/invalidBinaryData/15.bjson
new file mode 100644
index 0000000000..c6c5558934
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/15.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/16.bjson b/tests/auto/corelib/json/invalidBinaryData/16.bjson
new file mode 100644
index 0000000000..ae8b57446d
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/16.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/17.bjson b/tests/auto/corelib/json/invalidBinaryData/17.bjson
new file mode 100644
index 0000000000..32f0cc0e23
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/17.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/18.bjson b/tests/auto/corelib/json/invalidBinaryData/18.bjson
new file mode 100644
index 0000000000..50c89169eb
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/18.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/19.bjson b/tests/auto/corelib/json/invalidBinaryData/19.bjson
new file mode 100644
index 0000000000..b922212f45
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/19.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/20.bjson b/tests/auto/corelib/json/invalidBinaryData/20.bjson
new file mode 100644
index 0000000000..c965a0d294
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/20.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/21.bjson b/tests/auto/corelib/json/invalidBinaryData/21.bjson
new file mode 100644
index 0000000000..98165ee40c
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/21.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/22.bjson b/tests/auto/corelib/json/invalidBinaryData/22.bjson
new file mode 100644
index 0000000000..151f773a81
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/22.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/23.bjson b/tests/auto/corelib/json/invalidBinaryData/23.bjson
new file mode 100644
index 0000000000..6eb5269470
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/23.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/24.bjson b/tests/auto/corelib/json/invalidBinaryData/24.bjson
new file mode 100644
index 0000000000..c55a2a3e3b
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/24.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/25.bjson b/tests/auto/corelib/json/invalidBinaryData/25.bjson
new file mode 100644
index 0000000000..6c619f2ae1
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/25.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/26.bjson b/tests/auto/corelib/json/invalidBinaryData/26.bjson
new file mode 100644
index 0000000000..3bf303215a
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/26.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/27.bjson b/tests/auto/corelib/json/invalidBinaryData/27.bjson
new file mode 100644
index 0000000000..d2656c2287
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/27.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/28.bjson b/tests/auto/corelib/json/invalidBinaryData/28.bjson
new file mode 100644
index 0000000000..6797cf8c40
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/28.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/29.bjson b/tests/auto/corelib/json/invalidBinaryData/29.bjson
new file mode 100644
index 0000000000..0645dfc3b2
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/29.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/30.bjson b/tests/auto/corelib/json/invalidBinaryData/30.bjson
new file mode 100644
index 0000000000..f77fe1efd0
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/30.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/31.bjson b/tests/auto/corelib/json/invalidBinaryData/31.bjson
new file mode 100644
index 0000000000..d9840b6582
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/31.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/32.bjson b/tests/auto/corelib/json/invalidBinaryData/32.bjson
new file mode 100644
index 0000000000..1de4cb829f
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/32.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/33.bjson b/tests/auto/corelib/json/invalidBinaryData/33.bjson
new file mode 100644
index 0000000000..532a31dc08
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/33.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/34.bjson b/tests/auto/corelib/json/invalidBinaryData/34.bjson
new file mode 100644
index 0000000000..f498558eff
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/34.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/35.bjson b/tests/auto/corelib/json/invalidBinaryData/35.bjson
new file mode 100644
index 0000000000..8701210755
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/35.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/36.bjson b/tests/auto/corelib/json/invalidBinaryData/36.bjson
new file mode 100644
index 0000000000..ef5864e911
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/36.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/invalidBinaryData/37.bjson b/tests/auto/corelib/json/invalidBinaryData/37.bjson
new file mode 100644
index 0000000000..f4dd4ae12f
--- /dev/null
+++ b/tests/auto/corelib/json/invalidBinaryData/37.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp
index 5878d56a47..02f3a1901e 100644
--- a/tests/auto/corelib/json/tst_qtjson.cpp
+++ b/tests/auto/corelib/json/tst_qtjson.cpp
@@ -93,6 +93,7 @@ private Q_SLOTS:
void fromBinary();
void toAndFromBinary_data();
void toAndFromBinary();
+ void invalidBinaryData();
void parseNumbers();
void parseStrings();
void parseDuplicateKeys();
@@ -1764,6 +1765,21 @@ void tst_QtJson::toAndFromBinary()
QCOMPARE(doc, outdoc);
}
+void tst_QtJson::invalidBinaryData()
+{
+ QDir dir(testDataDir + "/invalidBinaryData");
+ QFileInfoList files = dir.entryInfoList();
+ for (int i = 0; i < files.size(); ++i) {
+ if (!files.at(i).isFile())
+ continue;
+ QFile file(files.at(i).filePath());
+ file.open(QIODevice::ReadOnly);
+ QByteArray bytes = file.readAll();
+ QJsonDocument document = QJsonDocument::fromRawData(bytes.constData(), bytes.size());
+ QVERIFY(document.isNull());
+ }
+}
+
void tst_QtJson::parseNumbers()
{
{
diff --git a/tests/auto/corelib/thread/qthread/tst_qthread.cpp b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
index b4d0866d01..bbd319d2db 100644
--- a/tests/auto/corelib/thread/qthread/tst_qthread.cpp
+++ b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
@@ -1077,8 +1077,8 @@ void tst_QThread::wait2()
thread.start();
timer.start();
QVERIFY(!thread.wait(Waiting_Thread::WaitTime));
- qint64 elapsed = timer.elapsed(); // On Windows, we sometimes get (WaitTime - 1).
- QVERIFY2(elapsed >= Waiting_Thread::WaitTime - 1, qPrintable(QString::fromLatin1("elapsed: %1").arg(elapsed)));
+ qint64 elapsed = timer.elapsed(); // On Windows, we sometimes get (WaitTime - 9).
+ QVERIFY2(elapsed >= Waiting_Thread::WaitTime - 10, qPrintable(QString::fromLatin1("elapsed: %1").arg(elapsed)));
timer.start();
thread.cond1.wakeOne();
diff --git a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
index 6adfe05fb0..8df8c2d3b6 100644
--- a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
@@ -162,6 +162,7 @@ private:
const QString m_prefix;
const QString m_convertFromImage;
const QString m_loadFromData;
+ const QTemporaryDir m_tempDir;
};
static bool lenientCompare(const QPixmap &actual, const QPixmap &expected)
@@ -209,11 +210,11 @@ void tst_QPixmap::initTestCase()
QVERIFY(!m_prefix.isEmpty());
QVERIFY(!m_convertFromImage.isEmpty());
QVERIFY(!m_loadFromData.isEmpty());
+ QVERIFY2(m_tempDir.isValid(), qPrintable(m_tempDir.errorString()));
}
void tst_QPixmap::cleanupTestCase()
{
- QFile::remove(QLatin1String("temp_image.png"));
}
void tst_QPixmap::swap()
@@ -1455,18 +1456,18 @@ void tst_QPixmap::preserveDepth()
void tst_QPixmap::loadAsBitmapOrPixmap()
{
QImage tmp(10, 10, QImage::Format_RGB32);
- tmp.save("temp_image.png");
+ tmp.save(m_tempDir.path() + "/temp_image.png");
bool ok;
// Check that we can load the pixmap as a pixmap and that it then turns into a pixmap
- QPixmap pixmap("temp_image.png");
+ QPixmap pixmap(m_tempDir.path() + "/temp_image.png");
QVERIFY(!pixmap.isNull());
QVERIFY(pixmap.depth() > 1);
QVERIFY(!pixmap.isQBitmap());
pixmap = QPixmap();
- ok = pixmap.load("temp_image.png");
+ ok = pixmap.load(m_tempDir.path() + "/temp_image.png");
QVERIFY(ok);
QVERIFY(!pixmap.isNull());
QVERIFY(pixmap.depth() > 1);
@@ -1474,24 +1475,51 @@ void tst_QPixmap::loadAsBitmapOrPixmap()
//now we can try to load it without an extension
pixmap = QPixmap();
- ok = pixmap.load("temp_image");
+ ok = pixmap.load(m_tempDir.path() + "/temp_image");
QVERIFY(ok);
QVERIFY(!pixmap.isNull());
QVERIFY(pixmap.depth() > 1);
QVERIFY(!pixmap.isQBitmap());
// The do the same check for bitmaps..
- QBitmap bitmap("temp_image.png");
+ QBitmap bitmap(m_tempDir.path() + "/temp_image.png");
QVERIFY(!bitmap.isNull());
QCOMPARE(bitmap.depth(), 1);
QVERIFY(bitmap.isQBitmap());
bitmap = QBitmap();
- ok = bitmap.load("temp_image.png");
+ ok = bitmap.load(m_tempDir.path() + "/temp_image.png");
QVERIFY(ok);
QVERIFY(!bitmap.isNull());
QCOMPARE(bitmap.depth(), 1);
QVERIFY(bitmap.isQBitmap());
+
+ // check that a QBitmap stays a QBitmap even when loading fails:
+ ok = bitmap.load(QString());
+ QVERIFY(!ok);
+ QVERIFY(bitmap.isNull());
+ QVERIFY(bitmap.isQBitmap());
+
+ ok = bitmap.load("does not exist");
+ QVERIFY(!ok);
+ QVERIFY(bitmap.isNull());
+ QVERIFY(bitmap.isQBitmap());
+
+ ok = bitmap.load("does not exist.png");
+ QVERIFY(!ok);
+ QVERIFY(bitmap.isNull());
+ QVERIFY(bitmap.isQBitmap());
+
+ QTemporaryFile garbage;
+ QVERIFY(garbage.open());
+ const QString garbagePath = garbage.fileName();
+ garbage.write(reinterpret_cast<const char *>(&garbage), sizeof garbage);
+ garbage.close();
+
+ ok = bitmap.load(garbagePath);
+ QVERIFY(!ok);
+ QVERIFY(bitmap.isNull());
+ QVERIFY(bitmap.isQBitmap());
}
void tst_QPixmap::toImageDeepCopy()
diff --git a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
index 70446e803a..e0010fb8be 100644
--- a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
+++ b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
@@ -782,6 +782,24 @@ void tst_QWindow::isActive()
// child has focus
QVERIFY(window.isActive());
+ // test focus back to parent and then back to child (QTBUG-39362)
+ // also verify the cumulative FocusOut and FocusIn counts
+ // activate parent
+ window.requestActivate();
+ QTRY_COMPARE(QGuiApplication::focusWindow(), &window);
+ QVERIFY(window.isActive());
+ QCoreApplication::processEvents();
+ QTRY_COMPARE(child.received(QEvent::FocusOut), 1);
+ QTRY_COMPARE(window.received(QEvent::FocusIn), 2);
+
+ // activate child again
+ child.requestActivate();
+ QTRY_COMPARE(QGuiApplication::focusWindow(), &child);
+ QVERIFY(child.isActive());
+ QCoreApplication::processEvents();
+ QTRY_COMPARE(window.received(QEvent::FocusOut), 2);
+ QTRY_COMPARE(child.received(QEvent::FocusIn), 2);
+
Window dialog;
dialog.setTransientParent(&window);
dialog.setGeometry(QRect(m_availableTopLeft + QPoint(110, 100), m_testWindowSize));
@@ -806,7 +824,7 @@ void tst_QWindow::isActive()
QTRY_COMPARE(QGuiApplication::focusWindow(), &window);
QCoreApplication::processEvents();
QTRY_COMPARE(dialog.received(QEvent::FocusOut), 1);
- QTRY_COMPARE(window.received(QEvent::FocusIn), 2);
+ QTRY_COMPARE(window.received(QEvent::FocusIn), 3);
QVERIFY(window.isActive());
diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
index 8a97a9261f..bb7e2dca35 100644
--- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
+++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
@@ -297,6 +297,8 @@ private slots:
void QTBUG50153_drawImage_assert();
+ void QTBUG56252();
+
private:
void fillData();
void setPenColor(QPainter& p);
@@ -5061,6 +5063,23 @@ void tst_QPainter::QTBUG50153_drawImage_assert()
}
}
+void tst_QPainter::QTBUG56252()
+{
+ QImage sourceImage(1770, 1477, QImage::Format_RGB32);
+ QImage rotatedImage(1478, 1771, QImage::Format_RGB32);
+ QTransform transformCenter;
+ transformCenter.translate(739.0, 885.5);
+ transformCenter.rotate(270.0);
+ transformCenter.translate(-885.0, -738.5);
+ QPainter painter;
+ painter.begin(&rotatedImage);
+ painter.setTransform(transformCenter);
+ painter.drawImage(QPoint(0, 0),sourceImage);
+ painter.end();
+
+ // If no crash or illegal memory read, all is fine
+}
+
QTEST_MAIN(tst_QPainter)
#include "tst_qpainter.moc"
diff --git a/tests/auto/gui/qopengl/tst_qopengl.cpp b/tests/auto/gui/qopengl/tst_qopengl.cpp
index 15244744bf..f988cdb957 100644
--- a/tests/auto/gui/qopengl/tst_qopengl.cpp
+++ b/tests/auto/gui/qopengl/tst_qopengl.cpp
@@ -109,6 +109,7 @@ private slots:
void vaoCreate();
void bufferCreate();
void bufferMapRange();
+ void defaultQGLCurrentBuffer();
};
struct SharedResourceTracker
@@ -1520,6 +1521,33 @@ void tst_QOpenGL::bufferMapRange()
ctx->doneCurrent();
}
+void tst_QOpenGL::defaultQGLCurrentBuffer()
+{
+ QScopedPointer<QSurface> surface(createSurface(QSurface::Window));
+ QScopedPointer<QOpenGLContext> ctx(new QOpenGLContext);
+ ctx->create();
+ ctx->makeCurrent(surface.data());
+
+ // Bind default FBO on the current context, and record what's the current QGL FBO. It should
+ // be Q_NULLPTR because the default platform OpenGL FBO is not backed by a
+ // QOpenGLFramebufferObject.
+ QOpenGLFramebufferObject::bindDefault();
+ QOpenGLFramebufferObject *defaultQFBO = QOpenGLContextPrivate::get(ctx.data())->qgl_current_fbo;
+
+ // Create new FBO, bind it, and see that the QGL FBO points to the newly created FBO.
+ QScopedPointer<QOpenGLFramebufferObject> obj(new QOpenGLFramebufferObject(128, 128));
+ obj->bind();
+ QOpenGLFramebufferObject *customQFBO = QOpenGLContextPrivate::get(ctx.data())->qgl_current_fbo;
+ QVERIFY(defaultQFBO != customQFBO);
+
+ // Bind the default FBO, and check that the QGL FBO points to the original FBO object.
+ QOpenGLFramebufferObject::bindDefault();
+ QOpenGLFramebufferObject *finalQFBO = QOpenGLContextPrivate::get(ctx.data())->qgl_current_fbo;
+ QCOMPARE(defaultQFBO, finalQFBO);
+
+ ctx->doneCurrent();
+}
+
void tst_QOpenGL::nullTextureInitializtion()
{
QScopedPointer<QSurface> surface(createSurface(QSurface::Window));
diff --git a/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
index 847d6e2e2f..244df5b899 100644
--- a/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
+++ b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
@@ -842,6 +842,7 @@ void tst_QCssParser::colorValue_data()
QTest::newRow("hsla") << "color: hsva(10, 20, 30, 40)" << QColor::fromHsv(10, 20, 30, 40);
QTest::newRow("invalid1") << "color: rgb(why, does, it, always, rain, on, me)" << QColor();
QTest::newRow("invalid2") << "color: rgba(i, meant, norway)" << QColor();
+ QTest::newRow("invalid3") << "color: rgb(21)" << QColor();
QTest::newRow("role") << "color: palette(base)" << qApp->palette().color(QPalette::Base);
QTest::newRow("role2") << "color: palette( window-text ) " << qApp->palette().color(QPalette::WindowText);
QTest::newRow("transparent") << "color: transparent" << QColor(Qt::transparent);
diff --git a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
index 0d1d0f1ae1..b8af5271ea 100644
--- a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
+++ b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
@@ -134,6 +134,7 @@ private slots:
void xToCursorForLigatures();
void cursorInNonStopChars();
void nbsp();
+ void nbspWithFormat();
void noModificationOfInputString();
void superscriptCrash_qtbug53911();
@@ -2254,5 +2255,41 @@ void tst_QTextLayout::superscriptCrash_qtbug53911()
qDeleteAll(textLayouts);
}
+void tst_QTextLayout::nbspWithFormat()
+{
+ QString s1 = QLatin1String("ABCDEF ");
+ QString s2 = QLatin1String("GHI");
+ QChar nbsp(QChar::Nbsp);
+ QString s3 = QLatin1String("JKLMNOPQRSTUVWXYZ");
+
+ QTextLayout layout;
+ layout.setText(s1 + s2 + nbsp + s3);
+
+ QTextLayout::FormatRange formatRange;
+ formatRange.start = s1.length() + s2.length();
+ formatRange.length = 1;
+ formatRange.format.setFontUnderline(true);
+
+ QList<QTextLayout::FormatRange> overrides;
+ overrides.append(formatRange);
+
+ layout.setAdditionalFormats(overrides);
+
+ layout.beginLayout();
+ forever {
+ QTextLine line = layout.createLine();
+ if (!line.isValid())
+ break;
+ line.setLineWidth(1);
+ }
+ layout.endLayout();
+
+ QCOMPARE(layout.lineCount(), 2);
+ QCOMPARE(layout.lineAt(0).textStart(), 0);
+ QCOMPARE(layout.lineAt(0).textLength(), s1.length());
+ QCOMPARE(layout.lineAt(1).textStart(), s1.length());
+ QCOMPARE(layout.lineAt(1).textLength(), s2.length() + 1 + s3.length());
+}
+
QTEST_MAIN(tst_QTextLayout)
#include "tst_qtextlayout.moc"
diff --git a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
index 8a1a5b8369..849e2d8662 100644
--- a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
+++ b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
@@ -188,16 +188,16 @@ void tst_QNetworkCookieJar::setCookiesFromUrl_data()
result += cookie;
QTest::newRow("effective-tld1-accepted") << preset << cookie << "http://something.co.uk" << result << true;
- // 2. anything .mz is an effective TLD ('*.mz'), but 'teledata.mz' is an exception
+ // 2. anything .ck is an effective TLD ('*.ck'), but 'www.ck' is an exception
result.clear();
preset.clear();
- cookie.setDomain(".farmacia.mz");
- QTest::newRow("effective-tld2-denied") << preset << cookie << "http://farmacia.mz" << result << false;
- QTest::newRow("effective-tld2-denied2") << preset << cookie << "http://www.farmacia.mz" << result << false;
- QTest::newRow("effective-tld2-denied3") << preset << cookie << "http://www.anything.farmacia.mz" << result << false;
- cookie.setDomain(".teledata.mz");
+ cookie.setDomain(".foo.ck");
+ QTest::newRow("effective-tld2-denied") << preset << cookie << "http://foo.ck" << result << false;
+ QTest::newRow("effective-tld2-denied2") << preset << cookie << "http://www.foo.ck" << result << false;
+ QTest::newRow("effective-tld2-denied3") << preset << cookie << "http://www.anything.foo.ck" << result << false;
+ cookie.setDomain(".www.ck");
result += cookie;
- QTest::newRow("effective-tld2-accepted") << preset << cookie << "http://www.teledata.mz" << result << true;
+ QTest::newRow("effective-tld2-accepted") << preset << cookie << "http://www.www.ck" << result << true;
result.clear();
preset.clear();
diff --git a/tests/auto/other/macnativeevents/BLACKLIST b/tests/auto/other/macnativeevents/BLACKLIST
index 4129868022..3e68ba0cf0 100644
--- a/tests/auto/other/macnativeevents/BLACKLIST
+++ b/tests/auto/other/macnativeevents/BLACKLIST
@@ -2,8 +2,7 @@
[testDragWindow]
osx
[testMouseEnter]
-osx-10.9
-osx-10.8
+osx
[testChildDialogInFrontOfModalParent]
osx
[testChildWindowInFrontOfStaysOnTopParentWindow]
diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
index 99e3fc5bf2..a77daa7cb0 100644
--- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
@@ -2898,7 +2898,10 @@ void tst_QAccessibility::listTest()
QAccessibleInterface *cellMunich3 = table2->cellAt(2,0);
QCOMPARE(cell4, cellMunich3);
QCOMPARE(axidMunich, QAccessible::uniqueId(cellMunich3));
-
+ delete listView->takeItem(2);
+ // list: Oslo, Helsinki
+ // verify that it doesn't return an invalid item from the cache
+ QVERIFY(table2->cellAt(2,0) == 0);
delete listView;
}
diff --git a/tests/auto/tools/qmakelib/evaltest.cpp b/tests/auto/tools/qmakelib/evaltest.cpp
index 4cd335d732..df8736a1b1 100644
--- a/tests/auto/tools/qmakelib/evaltest.cpp
+++ b/tests/auto/tools/qmakelib/evaltest.cpp
@@ -1120,8 +1120,8 @@ void tst_qmakelib::addReplaceFunctions(const QString &qindir)
QTest::newRow("$$section(): bad number of arguments")
<< "VAR = $$section(1, 2) \\\n$$section(1, 2, 3, 4, 5)"
<< "VAR ="
- << "##:1: section(var) section(var, sep, begin, end) requires three or four arguments.\n"
- "##:2: section(var) section(var, sep, begin, end) requires three or four arguments."
+ << "##:1: section(var, sep, begin, end) requires three or four arguments.\n"
+ "##:2: section(var, sep, begin, end) requires three or four arguments."
<< true;
QTest::newRow("$$find()")
diff --git a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
index 82934982c4..d6a1c264c7 100644
--- a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
+++ b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
@@ -350,8 +350,7 @@ void tst_QFileDialog2::task143519_deleteAndRenameActionBehavior()
// test based on task233037_selectingDirectory
struct TestContext {
- TestContext()
- : current(QDir::current()) {}
+ explicit TestContext(const QString &path) : current(path) {}
~TestContext() {
file.remove();
current.rmdir(test.dirName());
@@ -359,7 +358,9 @@ void tst_QFileDialog2::task143519_deleteAndRenameActionBehavior()
QDir current;
QDir test;
QFile file;
- } ctx;
+ };
+
+ TestContext ctx(tempDir.path());
// setup testbed
QVERIFY(ctx.current.mkdir("task143519_deleteAndRenameActionBehavior_test")); // ensure at least one item
@@ -373,6 +374,7 @@ void tst_QFileDialog2::task143519_deleteAndRenameActionBehavior()
QFileDialog fd;
fd.setViewMode(QFileDialog::List);
fd.setDirectory(ctx.test.absolutePath());
+ fd.selectFile(ctx.file.fileName());
fd.show();
QTest::qWaitForWindowActive(&fd);
@@ -387,7 +389,7 @@ void tst_QFileDialog2::task143519_deleteAndRenameActionBehavior()
// defaults
QVERIFY(openContextMenu(fd));
- QCOMPARE(fd.selectedFiles().size(), 1);
+ QCOMPARE(fd.selectedFiles(), QStringList(ctx.file.fileName()));
QCOMPARE(rm->isEnabled(), !fd.isReadOnly());
QCOMPARE(mv->isEnabled(), !fd.isReadOnly());
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
index ad7600c784..1acf885285 100644
--- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -1093,6 +1093,10 @@ static QSet<QString> fileListUnderIndex(const QFileSystemModel *model, const QMo
void tst_QFileSystemModel::specialFiles()
{
+#ifndef Q_OS_UNIX
+ QSKIP("Not implemented");
+#endif
+
QFileSystemModel model;
model.setFilter(QDir::AllEntries | QDir::System | QDir::Hidden);
@@ -1101,23 +1105,8 @@ void tst_QFileSystemModel::specialFiles()
// as it will always return a valid index for existing files,
// even if the file is not visible with the given filter.
-#if defined(Q_OS_UNIX)
const QModelIndex rootIndex = model.setRootPath(QStringLiteral("/dev/"));
const QString testFileName = QStringLiteral("null");
-#elif defined(Q_OS_WIN)
- const QModelIndex rootIndex = model.setRootPath(flatDirTestPath);
-
- const QString testFileName = QStringLiteral("linkSource.lnk");
-
- QFile file(flatDirTestPath + QLatin1String("/linkTarget.txt"));
- QVERIFY(file.open(QIODevice::WriteOnly));
- file.close();
- QVERIFY(file.link(flatDirTestPath + '/' + testFileName));
-#else
- QSKIP("Not implemented");
- QModelIndex rootIndex;
- QString testFileName;
-#endif
QTRY_VERIFY(fileListUnderIndex(&model, rootIndex).contains(testFileName));
diff --git a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
index 2635a2ed82..0f63baa0e6 100644
--- a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
+++ b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
@@ -1614,28 +1614,44 @@ class SetPage : public Operation
wizard->next();
}
QString describe() const { return QLatin1String("set page ") + QString::number(page); }
- const int page;
+ int page;
public:
- SetPage(int page) : page(page) {}
+ static QSharedPointer<SetPage> create(int page)
+ {
+ QSharedPointer<SetPage> o = QSharedPointer<SetPage>::create();
+ o->page = page;
+ return o;
+ }
};
class SetStyle : public Operation
{
void apply(QWizard *wizard) const { wizard->setWizardStyle(style); }
QString describe() const { return QLatin1String("set style ") + QString::number(style); }
- const QWizard::WizardStyle style;
+ QWizard::WizardStyle style;
public:
- SetStyle(QWizard::WizardStyle style) : style(style) {}
+ static QSharedPointer<SetStyle> create(QWizard::WizardStyle style)
+ {
+ QSharedPointer<SetStyle> o = QSharedPointer<SetStyle>::create();
+ o->style = style;
+ return o;
+ }
};
class SetOption : public Operation
{
void apply(QWizard *wizard) const { wizard->setOption(option, on); }
QString describe() const;
- const QWizard::WizardOption option;
- const bool on;
+ QWizard::WizardOption option;
+ bool on;
public:
- SetOption(QWizard::WizardOption option, bool on) : option(option), on(on) {}
+ static QSharedPointer<SetOption> create(QWizard::WizardOption option, bool on)
+ {
+ QSharedPointer<SetOption> o = QSharedPointer<SetOption>::create();
+ o->option = option;
+ o->on = on;
+ return o;
+ }
};
class OptionInfo
@@ -1660,16 +1676,16 @@ class OptionInfo
tags[QWizard::HaveCustomButton3] = "15/CB3";
for (int i = 0; i < 2; ++i) {
- QMap<QWizard::WizardOption, Operation *> operations_;
+ QMap<QWizard::WizardOption, QSharedPointer<Operation> > operations_;
foreach (QWizard::WizardOption option, tags.keys())
- operations_[option] = new SetOption(option, i == 1);
+ operations_[option] = SetOption::create(option, i == 1);
operations << operations_;
}
}
OptionInfo(OptionInfo const&);
OptionInfo& operator=(OptionInfo const&);
QMap<QWizard::WizardOption, QString> tags;
- QList<QMap<QWizard::WizardOption, Operation *> > operations;
+ QList<QMap<QWizard::WizardOption, QSharedPointer<Operation> > > operations;
public:
static OptionInfo &instance()
{
@@ -1678,7 +1694,7 @@ public:
}
QString tag(QWizard::WizardOption option) const { return tags.value(option); }
- Operation * operation(QWizard::WizardOption option, bool on) const
+ QSharedPointer<Operation> operation(QWizard::WizardOption option, bool on) const
{ return operations.at(on).value(option); }
QList<QWizard::WizardOption> options() const { return tags.keys(); }
};
@@ -1689,10 +1705,7 @@ QString SetOption::describe() const
+ QLatin1Char(on ? '1' : '0');
}
-Q_DECLARE_METATYPE(Operation *)
-Q_DECLARE_METATYPE(SetPage *)
-Q_DECLARE_METATYPE(SetStyle *)
-Q_DECLARE_METATYPE(SetOption *)
+Q_DECLARE_METATYPE(QVector<QSharedPointer<Operation> >)
class TestGroup
{
@@ -1709,14 +1722,17 @@ public:
combinations.clear();
}
- QList<Operation *> &add()
- { combinations << new QList<Operation *>; return *(combinations.last()); }
+ QVector<QSharedPointer<Operation> > &add()
+ {
+ combinations.resize(combinations.size() + 1);
+ return combinations.last();
+ }
void createTestRows()
{
for (int i = 0; i < combinations.count(); ++i) {
QTest::newRow((name.toLatin1() + ", row " + QByteArray::number(i)).constData())
- << (i == 0) << (type == Equality) << *(combinations.at(i));
+ << (i == 0) << (type == Equality) << combinations.at(i);
++nRows_;
}
}
@@ -1727,7 +1743,7 @@ private:
QString name;
Type type;
int nRows_;
- QList<QList<Operation *> *> combinations;
+ QVector<QVector<QSharedPointer<Operation> > > combinations;
};
class IntroPage : public QWizardPage
@@ -1811,9 +1827,9 @@ public:
}
}
- void applyOperations(const QList<Operation *> &operations)
+ void applyOperations(const QVector<QSharedPointer<Operation> > &operations)
{
- foreach (Operation * op, operations) {
+ foreach (const QSharedPointer<Operation> &op, operations) {
if (op) {
op->apply(this);
opsDescr += QLatin1Char('(') + op->describe() + QLatin1String(") ");
@@ -1833,31 +1849,29 @@ public:
class CombinationsTestData
{
TestGroup testGroup;
- QList<Operation *> pageOps;
- QList<Operation *> styleOps;
- QMap<bool, QList<Operation *> *> setAllOptions;
+ QVector<QSharedPointer<Operation> > pageOps;
+ QVector<QSharedPointer<Operation> > styleOps;
+ QMap<bool, QVector<QSharedPointer<Operation> > > setAllOptions;
public:
CombinationsTestData()
{
QTest::addColumn<bool>("ref");
QTest::addColumn<bool>("testEquality");
- QTest::addColumn<QList<Operation *> >("operations");
- pageOps << new SetPage(0) << new SetPage(1) << new SetPage(2);
- styleOps << new SetStyle(QWizard::ClassicStyle) << new SetStyle(QWizard::ModernStyle)
- << new SetStyle(QWizard::MacStyle);
+ QTest::addColumn<QVector<QSharedPointer<Operation> > >("operations");
+ pageOps << SetPage::create(0) << SetPage::create(1) << SetPage::create(2);
+ styleOps << SetStyle::create(QWizard::ClassicStyle) << SetStyle::create(QWizard::ModernStyle)
+ << SetStyle::create(QWizard::MacStyle);
#define SETPAGE(page) pageOps.at(page)
#define SETSTYLE(style) styleOps.at(style)
#define OPT(option, on) OptionInfo::instance().operation(option, on)
#define CLROPT(option) OPT(option, false)
#define SETOPT(option) OPT(option, true)
- setAllOptions[false] = new QList<Operation *>;
- setAllOptions[true] = new QList<Operation *>;
foreach (QWizard::WizardOption option, OptionInfo::instance().options()) {
- *setAllOptions.value(false) << CLROPT(option);
- *setAllOptions.value(true) << SETOPT(option);
+ setAllOptions[false] << CLROPT(option);
+ setAllOptions[true] << SETOPT(option);
}
-#define CLRALLOPTS *setAllOptions.value(false)
-#define SETALLOPTS *setAllOptions.value(true)
+#define CLRALLOPTS setAllOptions.value(false)
+#define SETALLOPTS setAllOptions.value(true)
}
int nRows() const { return testGroup.nRows(); }
@@ -1909,7 +1923,7 @@ public:
testGroup.createTestRows();
for (int i = 0; i < 2; ++i) {
- QList<Operation *> setOptions = *setAllOptions.value(i == 1);
+ QVector<QSharedPointer<Operation> > setOptions = setAllOptions.value(i == 1);
testGroup.reset("testAll 3.1");
testGroup.add() << setOptions;
@@ -1926,21 +1940,21 @@ public:
testGroup.createTestRows();
}
- foreach (Operation *pageOp, pageOps) {
+ foreach (const QSharedPointer<Operation> &pageOp, pageOps) {
testGroup.reset("testAll 4.1");
testGroup.add() << pageOp;
testGroup.add() << pageOp << pageOp;
testGroup.createTestRows();
for (int i = 0; i < 2; ++i) {
- QList<Operation *> optionOps = *setAllOptions.value(i == 1);
+ QVector<QSharedPointer<Operation> > optionOps = setAllOptions.value(i == 1);
testGroup.reset("testAll 4.2");
testGroup.add() << optionOps << pageOp;
testGroup.add() << pageOp << optionOps;
testGroup.createTestRows();
foreach (QWizard::WizardOption option, OptionInfo::instance().options()) {
- Operation *optionOp = OPT(option, i == 1);
+ QSharedPointer<Operation> optionOp = OPT(option, i == 1);
testGroup.reset("testAll 4.3");
testGroup.add() << optionOp << pageOp;
testGroup.add() << pageOp << optionOp;
@@ -1949,21 +1963,21 @@ public:
}
}
- foreach (Operation *styleOp, styleOps) {
+ foreach (const QSharedPointer<Operation> &styleOp, styleOps) {
testGroup.reset("testAll 5.1");
testGroup.add() << styleOp;
testGroup.add() << styleOp << styleOp;
testGroup.createTestRows();
for (int i = 0; i < 2; ++i) {
- QList<Operation *> optionOps = *setAllOptions.value(i == 1);
+ QVector<QSharedPointer<Operation> > optionOps = setAllOptions.value(i == 1);
testGroup.reset("testAll 5.2");
testGroup.add() << optionOps << styleOp;
testGroup.add() << styleOp << optionOps;
testGroup.createTestRows();
foreach (QWizard::WizardOption option, OptionInfo::instance().options()) {
- Operation *optionOp = OPT(option, i == 1);
+ QSharedPointer<Operation> optionOp = OPT(option, i == 1);
testGroup.reset("testAll 5.3");
testGroup.add() << optionOp << styleOp;
testGroup.add() << styleOp << optionOp;
@@ -1972,8 +1986,8 @@ public:
}
}
- foreach (Operation *pageOp, pageOps) {
- foreach (Operation *styleOp, styleOps) {
+ foreach (const QSharedPointer<Operation> &pageOp, pageOps) {
+ foreach (const QSharedPointer<Operation> &styleOp, styleOps) {
testGroup.reset("testAll 6.1");
testGroup.add() << pageOp;
@@ -1991,7 +2005,7 @@ public:
testGroup.createTestRows();
for (int i = 0; i < 2; ++i) {
- QList<Operation *> optionOps = *setAllOptions.value(i == 1);
+ QVector<QSharedPointer<Operation> > optionOps = setAllOptions.value(i == 1);
testGroup.reset("testAll 6.4");
testGroup.add() << optionOps << pageOp << styleOp;
testGroup.add() << pageOp << optionOps << styleOp;
@@ -2002,7 +2016,7 @@ public:
testGroup.createTestRows();
foreach (QWizard::WizardOption option, OptionInfo::instance().options()) {
- Operation *optionOp = OPT(option, i == 1);
+ QSharedPointer<Operation> optionOp = OPT(option, i == 1);
testGroup.reset("testAll 6.5");
testGroup.add() << optionOp << pageOp << styleOp;
testGroup.add() << pageOp << optionOp << styleOp;
@@ -2068,7 +2082,7 @@ void tst_QWizard::combinations()
QFETCH(bool, ref);
QFETCH(bool, testEquality);
- QFETCH(QList<Operation *>, operations);
+ QFETCH(QVector<QSharedPointer<Operation> >, operations);
TestWizard wizard;
#if !defined(QT_NO_STYLE_WINDOWSVISTA)
diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
index dc527767a7..60dc7a7288 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -845,14 +845,14 @@ void tst_QGraphicsItem::parentItem()
void tst_QGraphicsItem::setParentItem()
{
QGraphicsScene scene;
- QGraphicsItem *item = scene.addRect(QRectF(0, 0, 10, 10));
+ const QScopedPointer<QGraphicsItem> item(scene.addRect(QRectF(0, 0, 10, 10)));
QCOMPARE(item->scene(), &scene);
- QGraphicsRectItem *child = new QGraphicsRectItem;
+ const QScopedPointer<QGraphicsRectItem> child(new QGraphicsRectItem);
QCOMPARE(child->scene(), (QGraphicsScene *)0);
// This implicitly adds the item to the parent's scene
- child->setParentItem(item);
+ child->setParentItem(item.data());
QCOMPARE(child->scene(), &scene);
// This just makes it a toplevel
@@ -860,8 +860,8 @@ void tst_QGraphicsItem::setParentItem()
QCOMPARE(child->scene(), &scene);
// Add the child back to the parent, then remove the parent from the scene
- child->setParentItem(item);
- scene.removeItem(item);
+ child->setParentItem(item.data());
+ scene.removeItem(item.data());
QCOMPARE(child->scene(), (QGraphicsScene *)0);
}
@@ -959,19 +959,19 @@ void tst_QGraphicsItem::flags()
QCOMPARE(item->pos(), QPointF(10, 10));
}
{
- QGraphicsItem* clippingParent = new QGraphicsRectItem;
+ const QScopedPointer<QGraphicsItem> clippingParent(new QGraphicsRectItem);
clippingParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
- QGraphicsItem* nonClippingParent = new QGraphicsRectItem;
+ const QScopedPointer<QGraphicsItem> nonClippingParent(new QGraphicsRectItem);
nonClippingParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, false);
- QGraphicsItem* child = new QGraphicsRectItem(nonClippingParent);
+ QGraphicsItem* child = new QGraphicsRectItem(nonClippingParent.data());
QVERIFY(!child->isClipped());
- child->setParentItem(clippingParent);
+ child->setParentItem(clippingParent.data());
QVERIFY(child->isClipped());
- child->setParentItem(nonClippingParent);
+ child->setParentItem(nonClippingParent.data());
QVERIFY(!child->isClipped());
}
}
@@ -3130,7 +3130,8 @@ void tst_QGraphicsItem::isAncestorOf()
void tst_QGraphicsItem::commonAncestorItem()
{
- QGraphicsItem *ancestor = new QGraphicsRectItem;
+ QGraphicsRectItem ancestorItem;
+ QGraphicsItem *ancestor = &ancestorItem;
QGraphicsItem *grandMa = new QGraphicsRectItem;
QGraphicsItem *grandPa = new QGraphicsRectItem;
QGraphicsItem *brotherInLaw = new QGraphicsRectItem;
@@ -3630,7 +3631,7 @@ void tst_QGraphicsItem::setGroup()
QGraphicsItemGroup group1;
QGraphicsItemGroup group2;
- QGraphicsRectItem *rect = new QGraphicsRectItem;
+ const QScopedPointer<QGraphicsRectItem> rect(new QGraphicsRectItem);
QCOMPARE(rect->group(), (QGraphicsItemGroup *)0);
QCOMPARE(rect->parentItem(), (QGraphicsItem *)0);
rect->setGroup(&group1);
@@ -6835,8 +6836,8 @@ void tst_QGraphicsItem::opacity()
QFETCH(qreal, c2_effectiveOpacity);
QFETCH(qreal, c3_effectiveOpacity);
- QGraphicsRectItem *p = new QGraphicsRectItem;
- QGraphicsRectItem *c1 = new QGraphicsRectItem(p);
+ const QScopedPointer<QGraphicsRectItem> p(new QGraphicsRectItem);
+ QGraphicsRectItem *c1 = new QGraphicsRectItem(p.data());
QGraphicsRectItem *c2 = new QGraphicsRectItem(c1);
QGraphicsRectItem *c3 = new QGraphicsRectItem(c2);
@@ -7224,11 +7225,12 @@ void tst_QGraphicsItem::sceneTransformCache()
// Test that an item's scene transform is updated correctly when the
// parent is transformed.
QGraphicsScene scene;
- QGraphicsRectItem *rect = scene.addRect(0, 0, 100, 100);
+
+ const QScopedPointer<QGraphicsRectItem> rect(scene.addRect(0, 0, 100, 100));
rect->setPen(QPen(Qt::black, 0));
QGraphicsRectItem *rect2 = scene.addRect(0, 0, 100, 100);
rect2->setPen(QPen(Qt::black, 0));
- rect2->setParentItem(rect);
+ rect2->setParentItem(rect.data());
rect2->setTransform(QTransform().rotate(90), true);
rect->setTransform(QTransform::fromTranslate(0, 50), true);
QGraphicsView view(&scene);
@@ -7240,7 +7242,7 @@ void tst_QGraphicsItem::sceneTransformCache()
x.rotate(90);
QCOMPARE(rect2->sceneTransform(), x);
- scene.removeItem(rect);
+ scene.removeItem(rect.data());
//Crazy use case : rect4 child of rect3 so the transformation of rect4 will be cached.Good!
//We remove rect4 from the scene, then the validTransform bit flag is set to 0 and the index of the cache
@@ -10696,7 +10698,7 @@ void tst_QGraphicsItem::scenePosChange()
{
ScenePosChangeTester* root = new ScenePosChangeTester;
ScenePosChangeTester* child1 = new ScenePosChangeTester(root);
- ScenePosChangeTester* grandChild1 = new ScenePosChangeTester(child1);
+ const QScopedPointer<ScenePosChangeTester> grandChild1(new ScenePosChangeTester(child1));
ScenePosChangeTester* child2 = new ScenePosChangeTester(root);
ScenePosChangeTester* grandChild2 = new ScenePosChangeTester(child2);
@@ -10748,7 +10750,7 @@ void tst_QGraphicsItem::scenePosChange()
QCOMPARE(grandChild2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 3);
// remove
- scene.removeItem(grandChild1);
+ scene.removeItem(grandChild1.data());
delete grandChild2; grandChild2 = 0;
QCoreApplication::processEvents(); // QGraphicsScenePrivate::_q_updateScenePosDescendants()
root->moveBy(1.0, 1.0);
diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
index 1df9a9434c..5b6f219d11 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
@@ -2924,6 +2924,9 @@ void tst_QGraphicsView::scrollBarRanges()
if (useStyledPanel && style == QStringLiteral("Macintosh") && platformName == QStringLiteral("cocoa"))
QSKIP("Insignificant on OSX");
+
+ QScopedPointer<QStyle> stylePtr;
+
QGraphicsScene scene;
QGraphicsView view(&scene);
view.setRenderHint(QPainter::Antialiasing);
@@ -2931,9 +2934,10 @@ void tst_QGraphicsView::scrollBarRanges()
view.setFrameStyle(useStyledPanel ? QFrame::StyledPanel : QFrame::NoFrame);
if (style == QString("motif"))
- view.setStyle(new FauxMotifStyle);
+ stylePtr.reset(new FauxMotifStyle);
else
- view.setStyle(QStyleFactory::create(style));
+ stylePtr.reset(QStyleFactory::create(style));
+ view.setStyle(stylePtr.data());
view.setStyleSheet(" "); // enables style propagation ;-)
int adjust = 0;
@@ -3500,7 +3504,7 @@ void tst_QGraphicsView::task245469_itemsAtPointWithClip()
static QGraphicsView *createSimpleViewAndScene()
{
QGraphicsView *view = new QGraphicsView;
- QGraphicsScene *scene = new QGraphicsScene;
+ QGraphicsScene *scene = new QGraphicsScene(view);
view->setScene(scene);
view->setBackgroundBrush(Qt::blue);
@@ -3628,7 +3632,7 @@ void tst_QGraphicsView::moveItemWhileScrolling()
MoveItemScrollView()
{
setWindowFlags(Qt::X11BypassWindowManagerHint);
- setScene(new QGraphicsScene(0, 0, 1000, 1000));
+ setScene(new QGraphicsScene(0, 0, 1000, 1000, this));
rect = scene()->addRect(0, 0, 10, 10);
rect->setPos(50, 50);
rect->setPen(QPen(Qt::black, 0));
@@ -3694,7 +3698,7 @@ void tst_QGraphicsView::centerOnDirtyItem()
toplevel.setWindowFlags(view.windowFlags() | Qt::WindowStaysOnTopHint);
view.resize(200, 200);
- QGraphicsScene *scene = new QGraphicsScene;
+ QGraphicsScene *scene = new QGraphicsScene(&view);
view.setScene(scene);
view.setSceneRect(-1000, -1000, 2000, 2000);
diff --git a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
index 8cb95c867c..6fd95c8266 100644
--- a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
+++ b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
@@ -149,6 +149,7 @@ private slots:
void QTBUG50102_SH_ItemView_ScrollMode();
void QTBUG50535_update_on_new_selection_model();
void testSelectionModelInSyncWithView();
+ void testClickToSelect();
};
class MyAbstractItemDelegate : public QAbstractItemDelegate
@@ -2113,5 +2114,56 @@ void tst_QAbstractItemView::testSelectionModelInSyncWithView()
QCOMPARE(view.selectionModel()->selection().indexes(), QModelIndexList() << model.index(0, 0));
}
+class SetSelectionTestView : public QListView
+{
+ Q_OBJECT
+public:
+ SetSelectionTestView() : QListView() {}
+
+signals:
+ void setSelectionCalled(const QRect &rect);
+
+protected:
+ void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) Q_DECL_OVERRIDE
+ {
+ emit setSelectionCalled(rect);
+ QListView::setSelection(rect, flags);
+ }
+};
+
+void tst_QAbstractItemView::testClickToSelect()
+{
+ // This test verifies that the QRect that is passed from QAbstractItemView::mousePressEvent
+ // to the virtual method QAbstractItemView::setSelection(const QRect &, SelectionFlags)
+ // is the 1x1 rect which conains exactly the clicked pixel if no modifiers are pressed.
+
+ QStringList list;
+ list << "A" << "B" << "C";
+ QStringListModel model(list);
+
+ SetSelectionTestView view;
+ view.setModel(&model);
+ view.show();
+ QTest::qWaitForWindowExposed(&view);
+
+ QSignalSpy spy(&view, &SetSelectionTestView::setSelectionCalled);
+
+ const QModelIndex indexA(model.index(0, 0));
+ const QRect visualRectA = view.visualRect(indexA);
+ const QPoint centerA = visualRectA.center();
+
+ // Click the center of the visualRect of item "A"
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, centerA);
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.back().front().value<QRect>(), QRect(centerA, QSize(1, 1)));
+
+ // Click a point slightly away from the center
+ const QPoint nearCenterA = centerA + QPoint(1, 1);
+ QVERIFY(visualRectA.contains(nearCenterA));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, nearCenterA);
+ QCOMPARE(spy.count(), 2);
+ QCOMPARE(spy.back().front().value<QRect>(), QRect(nearCenterA, QSize(1, 1)));
+}
+
QTEST_MAIN(tst_QAbstractItemView)
#include "tst_qabstractitemview.moc"
diff --git a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
index e8bd86bee5..f8ab64e4d6 100644
--- a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
+++ b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
@@ -1672,16 +1672,16 @@ void tst_QListWidget::mimeData()
QMimeData *data;
- QVERIFY(data = list.mimeData(tableWidgetItemList));
+ QVERIFY((data = list.mimeData(tableWidgetItemList)));
delete data;
- QVERIFY(data = list.model()->mimeData(modelIndexList));
+ QVERIFY((data = list.model()->mimeData(modelIndexList)));
delete data;
- QVERIFY(data = list.model()->mimeData(modelIndexList));
+ QVERIFY((data = list.model()->mimeData(modelIndexList)));
delete data;
- QVERIFY(data = list.mimeData(tableWidgetItemList));
+ QVERIFY((data = list.mimeData(tableWidgetItemList)));
delete data;
// check the saved data is actually the same
diff --git a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
index 8f871b03f6..a86ffbc30d 100644
--- a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
+++ b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
@@ -1520,16 +1520,16 @@ void tst_QTableWidget::mimeData()
QMimeData *data;
- QVERIFY(data = table.mimeData(tableWidgetItemList));
+ QVERIFY((data = table.mimeData(tableWidgetItemList)));
delete data;
- QVERIFY(data = table.model()->mimeData(modelIndexList));
+ QVERIFY((data = table.model()->mimeData(modelIndexList)));
delete data;
- QVERIFY(data = table.model()->mimeData(modelIndexList));
+ QVERIFY((data = table.model()->mimeData(modelIndexList)));
delete data;
- QVERIFY(data = table.mimeData(tableWidgetItemList));
+ QVERIFY((data = table.mimeData(tableWidgetItemList)));
delete data;
// check the saved data is actually the same
diff --git a/tests/auto/widgets/kernel/qaction/tst_qaction.cpp b/tests/auto/widgets/kernel/qaction/tst_qaction.cpp
index 205067d89c..e6a615d4f5 100644
--- a/tests/auto/widgets/kernel/qaction/tst_qaction.cpp
+++ b/tests/auto/widgets/kernel/qaction/tst_qaction.cpp
@@ -324,7 +324,7 @@ void tst_QAction::enabledVisibleInteraction()
void tst_QAction::task200823_tooltip()
{
- QAction *action = new QAction("foo", 0);
+ const QScopedPointer<QAction> action(new QAction("foo", Q_NULLPTR));
QString shortcut("ctrl+o");
action->setShortcut(shortcut);
@@ -338,8 +338,8 @@ void tst_QAction::task200823_tooltip()
void tst_QAction::task229128TriggeredSignalWithoutActiongroup()
{
// test without a group
- QAction *actionWithoutGroup = new QAction("Test", qApp);
- QSignalSpy spyWithoutGroup(actionWithoutGroup, SIGNAL(triggered(bool)));
+ const QScopedPointer<QAction> actionWithoutGroup(new QAction("Test", Q_NULLPTR));
+ QSignalSpy spyWithoutGroup(actionWithoutGroup.data(), SIGNAL(triggered(bool)));
QCOMPARE(spyWithoutGroup.count(), 0);
actionWithoutGroup->trigger();
// signal should be emitted
diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
index ab9729342c..779773eff0 100644
--- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
+++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
@@ -2197,8 +2197,8 @@ void tst_QApplication::noQuitOnHide()
{
int argc = 0;
QApplication app(argc, 0);
- QWidget *window1 = new NoQuitOnHideWidget;
- window1->show();
+ NoQuitOnHideWidget window1;
+ window1.show();
QCOMPARE(app.exec(), 1);
}
@@ -2232,12 +2232,12 @@ void tst_QApplication::abortQuitOnShow()
{
int argc = 0;
QApplication app(argc, 0);
- QWidget *window1 = new ShowCloseShowWidget(false);
- window1->show();
+ ShowCloseShowWidget window1(false);
+ window1.show();
QCOMPARE(app.exec(), 0);
- QWidget *window2 = new ShowCloseShowWidget(true);
- window2->show();
+ ShowCloseShowWidget window2(true);
+ window2.show();
QCOMPARE(app.exec(), 1);
}
diff --git a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
index a19f4aea56..1a15432c1a 100644
--- a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
+++ b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
@@ -43,6 +43,10 @@
#include <qformlayout.h>
+// ItemRole has enumerators for numerical values 0..2, thus the only
+// valid numerical values for storing into an ItemRole variable are 0..3:
+Q_CONSTEXPR QFormLayout::ItemRole invalidRole = QFormLayout::ItemRole(3);
+
static inline void setFrameless(QWidget *w)
{
Qt::WindowFlags flags = w->windowFlags();
@@ -390,7 +394,8 @@ void tst_QFormLayout::setFormStyle()
QCOMPARE(layout.rowWrapPolicy(), QFormLayout::DontWrapRows);
#endif
- widget.setStyle(QStyleFactory::create("windows"));
+ const QScopedPointer<QStyle> windowsStyle(QStyleFactory::create("windows"));
+ widget.setStyle(windowsStyle.data());
QCOMPARE(layout.labelAlignment(), Qt::AlignLeft);
QVERIFY(layout.formAlignment() == (Qt::AlignLeft | Qt::AlignTop));
@@ -401,14 +406,16 @@ void tst_QFormLayout::setFormStyle()
this test is cross platform.. so create dummy styles that
return all the right stylehints.
*/
- widget.setStyle(new DummyMacStyle());
+ DummyMacStyle macStyle;
+ widget.setStyle(&macStyle);
QCOMPARE(layout.labelAlignment(), Qt::AlignRight);
QVERIFY(layout.formAlignment() == (Qt::AlignHCenter | Qt::AlignTop));
QCOMPARE(layout.fieldGrowthPolicy(), QFormLayout::FieldsStayAtSizeHint);
QCOMPARE(layout.rowWrapPolicy(), QFormLayout::DontWrapRows);
- widget.setStyle(new DummyQtopiaStyle());
+ DummyQtopiaStyle qtopiaStyle;
+ widget.setStyle(&qtopiaStyle);
QCOMPARE(layout.labelAlignment(), Qt::AlignRight);
QVERIFY(layout.formAlignment() == (Qt::AlignLeft | Qt::AlignTop));
@@ -520,7 +527,7 @@ void tst_QFormLayout::insertRow_QWidget_QWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout->getWidgetPosition(lbl1, &row, &role);
QCOMPARE(row, 0);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -528,7 +535,7 @@ void tst_QFormLayout::insertRow_QWidget_QWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout->getWidgetPosition(fld1, &row, &role);
QCOMPARE(row, 0);
QCOMPARE(int(role), int(QFormLayout::FieldRole));
@@ -589,7 +596,7 @@ void tst_QFormLayout::insertRow_QWidget_QLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout->getWidgetPosition(lbl1, &row, &role);
QCOMPARE(row, 0);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -597,7 +604,7 @@ void tst_QFormLayout::insertRow_QWidget_QLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout->getLayoutPosition(fld1, &row, &role);
QCOMPARE(row, 0);
QCOMPARE(int(role), int(QFormLayout::FieldRole));
@@ -714,7 +721,7 @@ void tst_QFormLayout::setWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getWidgetPosition(&w1, &row, &role);
QCOMPARE(row, 5);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -722,7 +729,7 @@ void tst_QFormLayout::setWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getWidgetPosition(&w2, &row, &role);
QCOMPARE(row, 3);
QCOMPARE(int(role), int(QFormLayout::FieldRole));
@@ -730,7 +737,7 @@ void tst_QFormLayout::setWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getWidgetPosition(&w3, &row, &role);
QCOMPARE(row, 3);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -738,18 +745,20 @@ void tst_QFormLayout::setWidget()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getWidgetPosition(&w4, &row, &role);
+ // not found
QCOMPARE(row, -1);
- QCOMPARE(int(role), -123);
+ QCOMPARE(int(role), int(invalidRole));
}
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getWidgetPosition(0, &row, &role);
+ // not found
QCOMPARE(row, -1);
- QCOMPARE(int(role), -123);
+ QCOMPARE(int(role), int(invalidRole));
}
}
@@ -782,7 +791,7 @@ void tst_QFormLayout::setLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getLayoutPosition(&l1, &row, &role);
QCOMPARE(row, 5);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -790,7 +799,7 @@ void tst_QFormLayout::setLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getLayoutPosition(&l2, &row, &role);
QCOMPARE(row, 3);
QCOMPARE(int(role), int(QFormLayout::FieldRole));
@@ -798,7 +807,7 @@ void tst_QFormLayout::setLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getLayoutPosition(&l3, &row, &role);
QCOMPARE(row, 3);
QCOMPARE(int(role), int(QFormLayout::LabelRole));
@@ -806,18 +815,18 @@ void tst_QFormLayout::setLayout()
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getLayoutPosition(&l4, &row, &role);
QCOMPARE(row, -1);
- QCOMPARE(int(role), -123);
+ QCOMPARE(int(role), int(invalidRole));
}
{
int row = -1;
- QFormLayout::ItemRole role = QFormLayout::ItemRole(-123);
+ QFormLayout::ItemRole role = invalidRole;
layout.getLayoutPosition(0, &row, &role);
QCOMPARE(row, -1);
- QCOMPARE(int(role), -123);
+ QCOMPARE(int(role), int(invalidRole));
}
}
@@ -886,7 +895,7 @@ void tst_QFormLayout::takeAt()
QCOMPARE(layout->count(), 7);
for (int i = 6; i >= 0; --i) {
- layout->takeAt(0);
+ delete layout->takeAt(0);
QCOMPARE(layout->count(), i);
}
}
@@ -978,7 +987,7 @@ void tst_QFormLayout::replaceWidget()
QFormLayout::ItemRole role;
// replace editor
- layout->replaceWidget(edit1, edit3);
+ delete layout->replaceWidget(edit1, edit3);
edit1->hide(); // Not strictly needed for the test, but for normal usage it is.
QCOMPARE(layout->indexOf(edit1), -1);
QCOMPARE(layout->indexOf(edit3), editIndex);
@@ -989,7 +998,7 @@ void tst_QFormLayout::replaceWidget()
QCOMPARE(rownum, 0);
QCOMPARE(role, QFormLayout::FieldRole);
- layout->replaceWidget(label1, label2);
+ delete layout->replaceWidget(label1, label2);
label1->hide();
QCOMPARE(layout->indexOf(label1), -1);
QCOMPARE(layout->indexOf(label2), labelIndex);
diff --git a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
index 55b0ed4279..62c75cadf3 100644
--- a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
+++ b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
@@ -1207,7 +1207,8 @@ QShortcut *tst_QShortcut::setupShortcut(QWidget *parent, const char *name, int t
void tst_QShortcut::shortcutDestroyed(QObject* obj)
{
- shortcuts.removeAll(static_cast<QShortcut *>(obj));
+ shortcuts.erase(std::remove(shortcuts.begin(), shortcuts.end(), obj),
+ shortcuts.end());
}
void tst_QShortcut::sendKeyEvents(int k1, QChar c1, int k2, QChar c2, int k3, QChar c3, int k4, QChar c4)
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index 272e6ef02f..5a00b0dad9 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -10425,14 +10425,13 @@ public slots:
bool eventFilter(QObject *o, QEvent *e)
{
- if (modal && modal->button && o == modal->button) {
- switch (e->type()) {
- case QEvent::Enter:
+ switch (e->type()) {
+ case QEvent::Enter:
+ if (modal && modal->button && o == modal->button)
enters++;
- break;
- default:
- break;
- }
+ break;
+ default:
+ break;
}
return QDialog::eventFilter(o, e);
}
diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
index 31eb05a957..9e09d17903 100644
--- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
+++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
@@ -3734,7 +3734,7 @@ void tst_QDateTimeEdit::dateEditCorrectSectionSize()
QTest::keyClick(&edit, keyPair.first, keyPair.second);
QDateTimeEditPrivate* edit_d_ptr(static_cast<QDateTimeEditPrivate*>(qt_widget_private(&edit)));
- QCOMPARE(edit_d_ptr->text, expectedDisplayString);
+ QCOMPARE(edit_d_ptr->QDateTimeParser::displayText(), expectedDisplayString);
}
#endif
diff --git a/tests/auto/widgets/widgets/qlabel/red@2x.png b/tests/auto/widgets/widgets/qlabel/red@2x.png
new file mode 100644
index 0000000000..4a843e744f
--- /dev/null
+++ b/tests/auto/widgets/widgets/qlabel/red@2x.png
Binary files differ
diff --git a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
index ad971c6b5f..6363d0c673 100644
--- a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
+++ b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
@@ -96,6 +96,9 @@ private Q_SLOTS:
void taskQTBUG_7902_contextMenuCrash();
#endif
+ void taskQTBUG_48157_dprPixmap();
+ void taskQTBUG_48157_dprMovie();
+
private:
QLabel *testWidget;
QPointer<Widget> test_box;
@@ -541,5 +544,26 @@ void tst_QLabel::taskQTBUG_7902_contextMenuCrash()
}
#endif
+void tst_QLabel::taskQTBUG_48157_dprPixmap()
+{
+ QLabel label;
+ QPixmap pixmap;
+ pixmap.load(QFINDTESTDATA(QStringLiteral("red@2x.png")));
+ QCOMPARE(pixmap.devicePixelRatio(), 2.0);
+ label.setPixmap(pixmap);
+ QCOMPARE(label.sizeHint(), pixmap.rect().size() / pixmap.devicePixelRatio());
+}
+
+void tst_QLabel::taskQTBUG_48157_dprMovie()
+{
+ QLabel label;
+ QMovie movie;
+ movie.setFileName(QFINDTESTDATA(QStringLiteral("red@2x.png")));
+ movie.start();
+ QCOMPARE(movie.currentPixmap().devicePixelRatio(), 2.0);
+ label.setMovie(&movie);
+ QCOMPARE(label.sizeHint(), movie.currentPixmap().size() / movie.currentPixmap().devicePixelRatio());
+}
+
QTEST_MAIN(tst_QLabel)
#include "tst_qlabel.moc"
diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
index 5bd26c632c..6ee5f76c6a 100644
--- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
+++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
@@ -859,6 +859,10 @@ void tst_QMainWindow::takeCentralWidget() {
QVERIFY(!mw.centralWidget());
+ // verify that we don't crash when trying to take a non-set
+ // central widget but just return a null pointer instead
+ QVERIFY(!mw.takeCentralWidget());
+
mw.setCentralWidget(w1);
QWidget *oldCentralWidget = mw.takeCentralWidget();
diff --git a/tests/auto/widgets/widgets/qmenubar/qmenubar.pro b/tests/auto/widgets/widgets/qmenubar/qmenubar.pro
index 3fb6ae61a8..e680cf4d7d 100644
--- a/tests/auto/widgets/widgets/qmenubar/qmenubar.pro
+++ b/tests/auto/widgets/widgets/qmenubar/qmenubar.pro
@@ -2,3 +2,8 @@ CONFIG += testcase
TARGET = tst_qmenubar
QT += widgets testlib
SOURCES += tst_qmenubar.cpp
+
+macos: {
+ OBJECTIVE_SOURCES += tst_qmenubar_mac.mm
+ LIBS += -framework AppKit
+}
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
index 185bfc02a0..9a68655fb6 100644
--- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
@@ -130,6 +130,9 @@ private slots:
void cornerWidgets_data();
void cornerWidgets();
void taskQTBUG53205_crashReparentNested();
+#ifdef Q_OS_MACOS
+ void taskQTBUG56275_reinsertMenuInParentlessQMenuBar();
+#endif
protected slots:
void onSimpleActivated( QAction*);
@@ -1496,7 +1499,28 @@ void tst_QMenuBar::slotForTaskQTBUG53205()
taskQTBUG53205MenuBar->setParent(parent);
}
+#ifdef Q_OS_MACOS
+extern bool tst_qmenubar_taskQTBUG56275(QMenuBar *);
+
+void tst_QMenuBar::taskQTBUG56275_reinsertMenuInParentlessQMenuBar()
+{
+ QMenuBar menubar;
+ QMenu *menu = new QMenu("menu", &menubar);
+ QMenu* submenu = menu->addMenu("submenu");
+ submenu->addAction("action1");
+ submenu->addAction("action2");
+ menu->addAction("action3");
+ menubar.addMenu(menu);
+
+ QTest::qWait(100);
+ menubar.clear();
+ menubar.addMenu(menu);
+ QTest::qWait(100);
+
+ QVERIFY(tst_qmenubar_taskQTBUG56275(&menubar));
+}
+#endif // Q_OS_MACOS
QTEST_MAIN(tst_QMenuBar)
#include "tst_qmenubar.moc"
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm
new file mode 100644
index 0000000000..4645de4d7a
--- /dev/null
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm
@@ -0,0 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+#include <QMenuBar>
+#include <QTest>
+
+bool tst_qmenubar_taskQTBUG56275(QMenuBar *menubar)
+{
+ NSMenu *mainMenu = menubar->toNSMenu();
+ return mainMenu.numberOfItems == 2
+ && [[mainMenu itemAtIndex:1].title isEqualToString:@"menu"];
+}
diff --git a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
index 7b5ec4fa4c..2df5f01627 100644
--- a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
+++ b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
@@ -163,7 +163,8 @@ private:
void tst_QStackedWidget::dynamicPages()
{
- QStackedWidget *sw = new QStackedWidget;
+ QStackedWidget stackedWidget;
+ QStackedWidget *sw = &stackedWidget;
TestPage *w1 = new TestPage(true);
w1->setN(3);
diff --git a/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp b/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp
index 5d5e00ac42..b591112bd1 100644
--- a/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp
+++ b/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp
@@ -760,22 +760,22 @@ void tst_QXmlSimpleReader::dtdRecursionLimit()
QVERIFY(file.open(QIODevice::ReadOnly));
QXmlSimpleReader xmlReader;
{
- QXmlInputSource *source = new QXmlInputSource(&file);
+ QXmlInputSource source(&file);
TestHandler handler;
xmlReader.setDeclHandler(&handler);
xmlReader.setErrorHandler(&handler);
- QVERIFY(!xmlReader.parse(source));
+ QVERIFY(!xmlReader.parse(&source));
}
file.close();
file.setFileName("xmldocs/1-levels-nested-dtd.xml");
QVERIFY(file.open(QIODevice::ReadOnly));
{
- QXmlInputSource *source = new QXmlInputSource(&file);
+ QXmlInputSource source(&file);
TestHandler handler;
xmlReader.setDeclHandler(&handler);
xmlReader.setErrorHandler(&handler);
- QVERIFY(!xmlReader.parse(source));
+ QVERIFY(!xmlReader.parse(&source));
// The error wasn't because of the recursion limit being reached,
// it was because the document is not valid.
QVERIFY(handler.recursionCount < 2);
@@ -785,11 +785,11 @@ void tst_QXmlSimpleReader::dtdRecursionLimit()
file.setFileName("xmldocs/internal-entity-polynomial-attribute.xml");
QVERIFY(file.open(QIODevice::ReadOnly));
{
- QXmlInputSource *source = new QXmlInputSource(&file);
+ QXmlInputSource source(&file);
TestHandler handler;
xmlReader.setDeclHandler(&handler);
xmlReader.setErrorHandler(&handler);
- QVERIFY(!xmlReader.parse(source));
+ QVERIFY(!xmlReader.parse(&source));
QCOMPARE(handler.recursionCount, 2);
}
}
diff --git a/tests/manual/qcursor/childwidget/childwidget.pro b/tests/manual/qcursor/childwidget/childwidget.pro
new file mode 100644
index 0000000000..9ca41c5b4f
--- /dev/null
+++ b/tests/manual/qcursor/childwidget/childwidget.pro
@@ -0,0 +1,6 @@
+TEMPLATE = app
+TARGET = childwidget
+INCLUDEPATH += .
+QT += widgets
+
+SOURCES += main.cpp
diff --git a/tests/manual/qcursor/childwidget/main.cpp b/tests/manual/qcursor/childwidget/main.cpp
new file mode 100644
index 0000000000..4447c87210
--- /dev/null
+++ b/tests/manual/qcursor/childwidget/main.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtWidgets>
+
+class CursorWidget : public QWidget
+{
+public:
+ CursorWidget(QCursor cursor, QColor color)
+ :m_cursor(cursor)
+ ,m_color(color)
+ {
+ if (cursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(cursor);
+ }
+
+ void paintEvent(QPaintEvent *e)
+ {
+ QPainter p(this);
+ p.fillRect(e->rect(), m_color);
+ }
+
+ void mousePressEvent(QMouseEvent *)
+ {
+ // Toggle cursor
+ QCursor newCursor = (cursor().shape() == m_cursor.shape()) ? QCursor() : m_cursor;
+ if (newCursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(newCursor);
+ }
+
+private:
+ QCursor m_cursor;
+ QColor m_color;
+};
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+ // Test child widgets (one of which is native) with set cursors.
+ // Click window to toggle cursor.
+
+ CursorWidget w1((QCursor(Qt::SizeVerCursor)), QColor(Qt::blue).darker());
+ w1.resize(200, 200);
+ w1.show();
+
+ CursorWidget w2((QCursor(Qt::OpenHandCursor)), QColor(Qt::red).darker());
+ w2.setParent(&w1);
+ w2.setGeometry(0, 0, 100, 100);
+ w2.show();
+
+ CursorWidget w3((QCursor(Qt::IBeamCursor)), QColor(Qt::green).darker());
+ w3.winId();
+ w3.setParent(&w1);
+ w3.setGeometry(100, 100, 100, 100);
+ w3.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/qcursor/childwindow/childwindow.pro b/tests/manual/qcursor/childwindow/childwindow.pro
new file mode 100644
index 0000000000..194536a91a
--- /dev/null
+++ b/tests/manual/qcursor/childwindow/childwindow.pro
@@ -0,0 +1,5 @@
+TEMPLATE = app
+TARGET = childwindow
+INCLUDEPATH += .
+
+SOURCES += main.cpp
diff --git a/tests/manual/qcursor/childwindow/main.cpp b/tests/manual/qcursor/childwindow/main.cpp
new file mode 100644
index 0000000000..5fc293dfcf
--- /dev/null
+++ b/tests/manual/qcursor/childwindow/main.cpp
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtGui>
+
+class CursorWindow : public QRasterWindow
+{
+public:
+ CursorWindow(QCursor cursor, QColor color)
+ :m_cursor(cursor)
+ ,m_color(color)
+ {
+ if (cursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(cursor);
+ }
+
+ void paintEvent(QPaintEvent *e)
+ {
+ QPainter p(this);
+ p.fillRect(e->rect(), m_color);
+ }
+
+ void mousePressEvent(QMouseEvent *)
+ {
+ // Toggle cursor
+ QCursor newCursor = (cursor().shape() == m_cursor.shape()) ? QCursor() : m_cursor;
+ if (newCursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(newCursor);
+ }
+
+private:
+ QCursor m_cursor;
+ QColor m_color;
+};
+
+int main(int argc, char **argv)
+{
+ QGuiApplication app(argc, argv);
+
+ // Test child windows with set cursors. Create parent window and
+ // two child windows. Click window to toggle cursor.
+
+ CursorWindow w1((QCursor(Qt::SizeVerCursor)), QColor(Qt::blue).darker());
+ w1.resize(200, 200);
+ w1.show();
+
+ CursorWindow w2((QCursor(Qt::OpenHandCursor)), QColor(Qt::red).darker());
+ w2.setParent(&w1);
+ w2.setGeometry(0, 0, 100, 100);
+ w2.show();
+
+ CursorWindow w3((QCursor(Qt::IBeamCursor)), QColor(Qt::green).darker());
+ w3.setParent(&w1);
+ w3.setGeometry(100, 100, 100, 100);
+ w3.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/qcursor/childwindowcontainer/childwindowcontainer.pro b/tests/manual/qcursor/childwindowcontainer/childwindowcontainer.pro
new file mode 100644
index 0000000000..2233ce4a63
--- /dev/null
+++ b/tests/manual/qcursor/childwindowcontainer/childwindowcontainer.pro
@@ -0,0 +1,6 @@
+TEMPLATE = app
+TARGET = childwindowcontainer
+INCLUDEPATH += .
+QT += widgets
+
+SOURCES += main.cpp
diff --git a/tests/manual/qcursor/childwindowcontainer/main.cpp b/tests/manual/qcursor/childwindowcontainer/main.cpp
new file mode 100644
index 0000000000..d440133a42
--- /dev/null
+++ b/tests/manual/qcursor/childwindowcontainer/main.cpp
@@ -0,0 +1,138 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtWidgets>
+
+class CursorWindow : public QRasterWindow
+{
+public:
+ CursorWindow(QCursor cursor, QColor color)
+ :m_cursor(cursor)
+ ,m_color(color)
+ {
+ if (cursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(cursor);
+ }
+
+ void paintEvent(QPaintEvent *e)
+ {
+ QPainter p(this);
+ p.fillRect(e->rect(), m_color);
+ }
+
+ void mousePressEvent(QMouseEvent *)
+ {
+ // Toggle cursor
+ QCursor newCursor = (cursor().shape() == m_cursor.shape()) ? QCursor() : m_cursor;
+ if (newCursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(newCursor);
+ }
+
+private:
+ QCursor m_cursor;
+ QColor m_color;
+};
+
+class CursorWidget : public QWidget
+{
+public:
+ CursorWidget(QCursor cursor, QColor color)
+ :m_cursor(cursor)
+ ,m_color(color)
+ {
+ if (cursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(cursor);
+ }
+
+ void paintEvent(QPaintEvent *e)
+ {
+ QPainter p(this);
+ p.fillRect(e->rect(), m_color);
+ }
+
+ void mousePressEvent(QMouseEvent *)
+ {
+ // Toggle cursor
+ QCursor newCursor = (cursor().shape() == m_cursor.shape()) ? QCursor() : m_cursor;
+ if (newCursor.shape() == Qt::ArrowCursor)
+ unsetCursor();
+ else
+ setCursor(newCursor);
+ }
+
+private:
+ QCursor m_cursor;
+ QColor m_color;
+};
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+ {
+ // Create top-level windowContainer with window. Setting the cursor
+ // for the container should set the cursor for the window as well.
+ // Setting the cursor for the window overrides the cursor for the
+ // container. The example starts out with a window cursor; click
+ // to fall back to the container cursor.
+ CursorWindow *w1 = new CursorWindow(QCursor(Qt::OpenHandCursor), QColor(Qt::red).darker());
+ QWidget* container = QWidget::createWindowContainer(w1);
+ container->resize(200, 200);
+ container->setCursor(Qt::PointingHandCursor);
+ container->show();
+ }
+
+ {
+ // Similar to above, but with a top-level QWiget
+ CursorWidget *w1 = new CursorWidget(QCursor(Qt::IBeamCursor), QColor(Qt::green).darker());
+ w1->resize(200, 200);
+
+ CursorWindow *w2 = new CursorWindow(QCursor(Qt::OpenHandCursor), QColor(Qt::red).darker());
+ QWidget* container = QWidget::createWindowContainer(w2);
+ container->winId(); // must make the container native, otherwise setCursor
+ // sets the cursor on a QWindowContainerClassWindow which
+ // is outside the QWindow hierarchy (macOS).
+ container->setParent(w1);
+ container->setCursor(Qt::PointingHandCursor);
+ container->setGeometry(0, 0, 100, 100);
+
+ w1->show();
+ }
+
+ return app.exec();
+}
diff --git a/tests/manual/qcursor/qcursor.pro b/tests/manual/qcursor/qcursor.pro
index 0b5c2b1945..c6617b8e89 100644
--- a/tests/manual/qcursor/qcursor.pro
+++ b/tests/manual/qcursor/qcursor.pro
@@ -1,3 +1,3 @@
TEMPLATE = subdirs
-SUBDIRS = allcursors grab_override qcursorhighdpi
+SUBDIRS = allcursors childwidget childwindow childwindowcontainer grab_override qcursorhighdpi
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 263cd6e78c..1800bfc873 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -1409,7 +1409,8 @@ void Configure::parseCmdLine()
if (dictionary[ "QMAKESPEC" ].endsWith("-icc") ||
dictionary[ "QMAKESPEC" ].endsWith("-msvc2012") ||
dictionary[ "QMAKESPEC" ].endsWith("-msvc2013") ||
- dictionary[ "QMAKESPEC" ].endsWith("-msvc2015")) {
+ dictionary[ "QMAKESPEC" ].endsWith("-msvc2015") ||
+ dictionary[ "QMAKESPEC" ].endsWith("-msvc2017")) {
if (dictionary[ "MAKE" ].isEmpty()) dictionary[ "MAKE" ] = "nmake";
dictionary[ "QMAKEMAKEFILE" ] = "Makefile.win32";
} else if (dictionary[ "QMAKESPEC" ].startsWith(QLatin1String("win32-g++"))) {
@@ -4462,11 +4463,6 @@ Configure::ProjectType Configure::projectType(const QString& proFileName)
bool Configure::showLicense(QString orgLicenseFile)
{
- if (dictionary["LICENSE_CONFIRMED"] == "yes") {
- cout << "You have already accepted the terms of the license." << endl << endl;
- return true;
- }
-
bool showGpl2 = true;
QString licenseFile = orgLicenseFile;
QString theLicense;
@@ -4514,7 +4510,7 @@ bool Configure::showLicense(QString orgLicenseFile)
return false;
} else {
if (dictionary["EDITION"] == "OpenSource") {
- if (accept == 'L')
+ if (accept == 'l')
licenseFile = orgLicenseFile + "/LICENSE.LGPL3";
else
licenseFile = orgLicenseFile + "/LICENSE.GPL2";
@@ -4576,21 +4572,32 @@ void Configure::readLicense()
}
}
if (hasOpenSource && openSource) {
- cout << endl << "This is the " << dictionary["PLATFORM NAME"] << " Open Source Edition." << endl;
+ cout << endl << "This is the " << dictionary["PLATFORM NAME"] << " Open Source Edition." << endl << endl;
dictionary["LICENSEE"] = "Open Source";
dictionary["EDITION"] = "OpenSource";
- cout << endl;
- if (!showLicense(dictionary["LICENSE FILE"])) {
- cout << "Configuration aborted since license was not accepted";
- dictionary["DONE"] = "error";
- return;
- }
} else if (openSource) {
cout << endl << "Cannot find the GPL license files! Please download the Open Source version of the library." << endl;
dictionary["DONE"] = "error";
+ } else {
+ QString tpLicense = sourcePath + "/LICENSE.PREVIEW.COMMERCIAL";
+ if (QFile::exists(tpLicense)) {
+ cout << endl << "This is the Qt Preview Edition." << endl << endl;
+
+ dictionary["EDITION"] = "Preview";
+ dictionary["LICENSE FILE"] = tpLicense;
+ } else {
+ Tools::checkLicense(dictionary, sourcePath, buildPath);
+ }
}
- else {
- Tools::checkLicense(dictionary, sourcePath, buildPath);
+
+ if (dictionary["LICENSE_CONFIRMED"] != "yes") {
+ if (!showLicense(dictionary["LICENSE FILE"])) {
+ cout << "Configuration aborted since license was not accepted" << endl;
+ dictionary["DONE"] = "error";
+ return;
+ }
+ } else if (dictionary["LICHECK"].isEmpty()) { // licheck executable shows license
+ cout << "You have already accepted the terms of the license." << endl << endl;
}
}
diff --git a/tools/configure/environment.cpp b/tools/configure/environment.cpp
index 8f18f3c489..1df8be38af 100644
--- a/tools/configure/environment.cpp
+++ b/tools/configure/environment.cpp
@@ -69,6 +69,7 @@ struct CompilerInfo{
{CC_MSVC2013, "Microsoft (R) Visual Studio 2013 C/C++ Compiler (12.0)", "Software\\Microsoft\\VisualStudio\\SxS\\VC7\\12.0", "cl.exe"}, // link.exe, lib.exe
// Microsoft skipped version 13
{CC_MSVC2015, "Microsoft (R) Visual Studio 2015 C/C++ Compiler (14.0)", "Software\\Microsoft\\VisualStudio\\SxS\\VS7\\14.0", "cl.exe"}, // link.exe, lib.exe
+ {CC_MSVC2017, "Microsoft (R) Visual Studio 2017 C/C++ Compiler (15.0)", "Software\\Microsoft\\VisualStudio\\SxS\\VS7\\15.0", "cl.exe"}, // link.exe, lib.exe
{CC_UNKNOWN, "Unknown", 0, 0},
};
@@ -94,6 +95,9 @@ QString Environment::detectQMakeSpec()
{
QString spec;
switch (detectCompiler()) {
+ case CC_MSVC2017:
+ spec = "win32-msvc2017";
+ break;
case CC_MSVC2015:
spec = "win32-msvc2015";
break;
@@ -121,6 +125,8 @@ QString Environment::detectQMakeSpec()
Compiler Environment::compilerFromQMakeSpec(const QString &qmakeSpec)
{
+ if (qmakeSpec == QLatin1String("win32-msvc2017"))
+ return CC_MSVC2017;
if (qmakeSpec == QLatin1String("win32-msvc2015"))
return CC_MSVC2015;
if (qmakeSpec == QLatin1String("win32-msvc2013"))
diff --git a/tools/configure/environment.h b/tools/configure/environment.h
index 344404505e..04b42f45ff 100644
--- a/tools/configure/environment.h
+++ b/tools/configure/environment.h
@@ -41,7 +41,8 @@ enum Compiler {
CC_MSVC2010 = 0xA0,
CC_MSVC2012 = 0xB0,
CC_MSVC2013 = 0xC0,
- CC_MSVC2015 = 0xD0
+ CC_MSVC2015 = 0xD0,
+ CC_MSVC2017 = 0xE0
};
struct CompilerInfo;
diff --git a/tools/configure/tools.cpp b/tools/configure/tools.cpp
index fb80e2136b..5ba7125975 100644
--- a/tools/configure/tools.cpp
+++ b/tools/configure/tools.cpp
@@ -42,13 +42,6 @@ using namespace std;
void Tools::checkLicense(QMap<QString,QString> &dictionary,
const QString &sourcePath, const QString &buildPath)
{
- QString tpLicense = sourcePath + "/LICENSE.PREVIEW.COMMERCIAL";
- if (QFile::exists(tpLicense)) {
- dictionary["EDITION"] = "Preview";
- dictionary["LICENSE FILE"] = tpLicense;
- return;
- }
-
dictionary["LICHECK"] = "licheck.exe";
const QString licenseChecker =
@@ -75,6 +68,7 @@ void Tools::checkLicense(QMap<QString,QString> &dictionary,
} else {
foreach (const QString &var, licheckOutput.split('\n'))
dictionary[var.section('=', 0, 0).toUpper()] = var.section('=', 1, 1);
+ dictionary["LICENSE_CONFIRMED"] = "yes";
}
} else {
cout << endl << "Error: Could not find licheck.exe" << endl