From 9cb92d106d9de92d25aa29423a59658f152f5791 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Wed, 4 Nov 2015 12:48:31 +0100 Subject: Cocoa integration - do not send move events while in -draggingUpdated: Looks like it's not a good idea to send constant 'fake' mouse move events while mouse is actually moving (mouseDragged/rightMouseDragged) + we're receiving -dragginUpdated:. Change-Id: Ibed5def3d8f06b764dea6c2cd196e37ca19ce967 Task-number: QTBUG-49204 Reviewed-by: Gabriel de Dietrich Reviewed-by: Filipe Azevedo --- src/plugins/platforms/cocoa/qnsview.h | 1 + src/plugins/platforms/cocoa/qnsview.mm | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h index de28b8d74a..bad67f2516 100644 --- a/src/plugins/platforms/cocoa/qnsview.h +++ b/src/plugins/platforms/cocoa/qnsview.h @@ -75,6 +75,7 @@ Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper)); QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper) *m_mouseMoveHelper; bool m_resendKeyEvent; bool m_scrolling; + bool m_updatingDrag; bool m_exposedOnMoveToWindow; NSEvent *m_currentlyInterpretedKeyEvent; bool m_isMenuView; diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index faa048874f..aac50e7833 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -153,6 +153,7 @@ static NSString *_q_NSWindowDidChangeOcclusionStateNotification = nil; m_mouseMoveHelper = [[QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper) alloc] initWithView:self]; m_resendKeyEvent = false; m_scrolling = false; + m_updatingDrag = false; m_currentlyInterpretedKeyEvent = 0; if (!touchDevice) { @@ -1917,6 +1918,9 @@ static QPoint mapWindowCoordinates(QWindow *source, QWindow *target, QPoint poin // Make sure the cursor is updated correctly if the mouse does not move and window is under cursor // by creating a fake move event + if (m_updatingDrag) + return; + const QPoint mousePos(QCursor::pos()); CGEventRef moveEvent(CGEventCreateMouseEvent( NULL, kCGEventMouseMoved, @@ -1934,7 +1938,11 @@ static QPoint mapWindowCoordinates(QWindow *source, QWindow *target, QPoint poin - (NSDragOperation)draggingUpdated:(id )sender { - return [self handleDrag : sender]; + m_updatingDrag = true; + const NSDragOperation ret([self handleDrag : sender]); + m_updatingDrag = false; + + return ret; } // Sends drag update to Qt, return the action -- cgit v1.2.3 From 16a9c0feb86f7f734517c91054dafb484fe88631 Mon Sep 17 00:00:00 2001 From: Andy Nichols Date: Wed, 4 Nov 2015 23:18:00 +0100 Subject: RaspberryPi2: Support building Qt for Raspbian/Debian Raspbian/Debian require a toolchain with the multiarch patches so we need to add deb-multi-arch to the DISTRO_OPTS variable for pkgconfig to work correctly. The Raspberry Pi 1 mkspec has this already and can be used to build Qt for both versions of the Pi, but the Raspberry Pi 2 mkspec is missing this, and would not be usable in its current state for building for Raspbian/Debian which is the most popular distro for the Raspberry Pi. Change-Id: I6a7a08059f9f91da524b5f51e0697115ef684f30 Reviewed-by: Laszlo Agocs --- mkspecs/devices/linux-rasp-pi2-g++/qmake.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf b/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf index 9be3f401ce..bb1e780566 100644 --- a/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf +++ b/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf @@ -17,6 +17,7 @@ QMAKE_CFLAGS += -march=armv7-a -marm -mthumb-interwork -mfpu=neon-vfpv4 -mtune=c QMAKE_CXXFLAGS = $$QMAKE_CFLAGS DISTRO_OPTS += hard-float +DISTRO_OPTS += deb-multi-arch # Preferred eglfs backend EGLFS_DEVICE_INTEGRATION = eglfs_brcm -- cgit v1.2.3 From 40ace7af59635c3660f869a7e8b3f643077eb079 Mon Sep 17 00:00:00 2001 From: Andy Nichols Date: Wed, 4 Nov 2015 23:13:44 +0100 Subject: RaspberryPi: Enable building with OpenVG support Change-Id: Ib803e1d98b5d81d142b20d18e92d88942b9c4af5 Reviewed-by: Laszlo Agocs --- mkspecs/devices/linux-rasp-pi-g++/qmake.conf | 3 +++ mkspecs/devices/linux-rasp-pi2-g++/qmake.conf | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/mkspecs/devices/linux-rasp-pi-g++/qmake.conf b/mkspecs/devices/linux-rasp-pi-g++/qmake.conf index bccb87e869..89177b7fa2 100644 --- a/mkspecs/devices/linux-rasp-pi-g++/qmake.conf +++ b/mkspecs/devices/linux-rasp-pi-g++/qmake.conf @@ -8,13 +8,16 @@ QMAKE_LFLAGS += -Wl,-rpath-link,$$[QT_SYSROOT]/opt/vc/lib QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/opt/vc/lib QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 +QMAKE_LIBDIR_OPENVG = $$QMAKE_LIBDIR_OPENGL_ES2 QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/opt/vc/include \ $$[QT_SYSROOT]/opt/vc/include/interface/vcos/pthreads \ $$[QT_SYSROOT]/opt/vc/include/interface/vmcs_host/linux QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} QMAKE_LIBS_EGL = -lEGL -lGLESv2 +QMAKE_LIBS_OPENVG = -lEGL -lOpenVG -lGLESv2 contains(DISTRO, squeeze) { #Debian Squeeze: Legacy everything diff --git a/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf b/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf index bb1e780566..2911f08873 100644 --- a/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf +++ b/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf @@ -6,14 +6,17 @@ QMAKE_LFLAGS += -Wl,-rpath-link,$$[QT_SYSROOT]/opt/vc/lib QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/opt/vc/lib QMAKE_LIBDIR_EGL = $$QMAKE_LIBDIR_OPENGL_ES2 +QMAKE_LIBDIR_OPENVG = $$QMAKE_LIBDIR_OPENGL_ES2 QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/opt/vc/include \ $$[QT_SYSROOT]/opt/vc/include/interface/vcos/pthreads \ $$[QT_SYSROOT]/opt/vc/include/interface/vmcs_host/linux QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL} +QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL} QMAKE_LIBS_EGL = -lEGL -lGLESv2 -QMAKE_CFLAGS += -march=armv7-a -marm -mthumb-interwork -mfpu=neon-vfpv4 -mtune=cortex-a7 -mabi=aapcs-linux +QMAKE_LIBS_OPENVG = -lEGL -lOpenVG -lGLESv2 +QMAKE_CFLAGS += -march=armv7-a -marm -mthumb-interwork -mfpu=neon-vfpv4 -mtune=cortex-a7 -mabi=aapcs-linux QMAKE_CXXFLAGS = $$QMAKE_CFLAGS DISTRO_OPTS += hard-float -- cgit v1.2.3 From d894cfa863a3fc9cd9a6dcb9f3c7b04e6ce41285 Mon Sep 17 00:00:00 2001 From: Joni Poikelin Date: Wed, 4 Nov 2015 11:35:09 +0200 Subject: Fix QImage::setDotsPerMeterX/Y for images with some orientations Rotation of images with orientation of 90 and 270 degrees dropped DPM values from rotated image. Task-number: QTBUG-49220 Change-Id: I9c23153c49dd63b5f6958fdde72f466873b0a407 Reviewed-by: Friedemann Kleint Reviewed-by: Liang Qi Reviewed-by: aavit --- src/gui/image/qimage.cpp | 4 ++++ tests/auto/gui/image/qimage/tst_qimage.cpp | 25 +++++++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index c4691b5f5e..b3d8563614 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -4285,6 +4285,8 @@ QImage QImage::smoothScaled(int w, int h) const { static QImage rotated90(const QImage &image) { QImage out(image.height(), image.width(), image.format()); + out.setDotsPerMeterX(image.dotsPerMeterY()); + out.setDotsPerMeterY(image.dotsPerMeterX()); if (image.colorCount() > 0) out.setColorTable(image.colorTable()); int w = image.width(); @@ -4353,6 +4355,8 @@ static QImage rotated180(const QImage &image) { static QImage rotated270(const QImage &image) { QImage out(image.height(), image.width(), image.format()); + out.setDotsPerMeterX(image.dotsPerMeterY()); + out.setDotsPerMeterY(image.dotsPerMeterX()); if (image.colorCount() > 0) out.setColorTable(image.colorTable()); int w = image.width(); diff --git a/tests/auto/gui/image/qimage/tst_qimage.cpp b/tests/auto/gui/image/qimage/tst_qimage.cpp index 8286c800c2..939226e2b0 100644 --- a/tests/auto/gui/image/qimage/tst_qimage.cpp +++ b/tests/auto/gui/image/qimage/tst_qimage.cpp @@ -2822,15 +2822,17 @@ void tst_QImage::exifOrientation_data() { QTest::addColumn("fileName"); QTest::addColumn("orientation"); - QTest::newRow("Orientation 1, Intel format") << m_prefix + "jpeg_exif_orientation_value_1.jpg" << (int)QImageIOHandler::TransformationNone; - QTest::newRow("Orientation 2, Intel format") << m_prefix + "jpeg_exif_orientation_value_2.jpg" << (int)QImageIOHandler::TransformationMirror; - QTest::newRow("Orientation 3, Intel format") << m_prefix + "jpeg_exif_orientation_value_3.jpg" << (int)QImageIOHandler::TransformationRotate180; - QTest::newRow("Orientation 4, Intel format") << m_prefix + "jpeg_exif_orientation_value_4.jpg" << (int)QImageIOHandler::TransformationFlip; - QTest::newRow("Orientation 5, Intel format") << m_prefix + "jpeg_exif_orientation_value_5.jpg" << (int)QImageIOHandler::TransformationFlipAndRotate90; - QTest::newRow("Orientation 6, Intel format") << m_prefix + "jpeg_exif_orientation_value_6.jpg" << (int)QImageIOHandler::TransformationRotate90; - QTest::newRow("Orientation 6, Motorola format") << m_prefix + "jpeg_exif_orientation_value_6_motorola.jpg" << (int)QImageIOHandler::TransformationRotate90; - QTest::newRow("Orientation 7, Intel format") << m_prefix + "jpeg_exif_orientation_value_7.jpg" << (int)QImageIOHandler::TransformationMirrorAndRotate90; - QTest::newRow("Orientation 8, Intel format") << m_prefix + "jpeg_exif_orientation_value_8.jpg" << (int)QImageIOHandler::TransformationRotate270; + QTest::addColumn("dpmx"); + QTest::addColumn("dpmy"); + QTest::newRow("Orientation 1, Intel format") << m_prefix + "jpeg_exif_orientation_value_1.jpg" << (int)QImageIOHandler::TransformationNone << 39 << 39; + QTest::newRow("Orientation 2, Intel format") << m_prefix + "jpeg_exif_orientation_value_2.jpg" << (int)QImageIOHandler::TransformationMirror << 39 << 39; + QTest::newRow("Orientation 3, Intel format") << m_prefix + "jpeg_exif_orientation_value_3.jpg" << (int)QImageIOHandler::TransformationRotate180 << 39 << 39; + QTest::newRow("Orientation 4, Intel format") << m_prefix + "jpeg_exif_orientation_value_4.jpg" << (int)QImageIOHandler::TransformationFlip << 39 << 39; + QTest::newRow("Orientation 5, Intel format") << m_prefix + "jpeg_exif_orientation_value_5.jpg" << (int)QImageIOHandler::TransformationFlipAndRotate90 << 39 << 39; + QTest::newRow("Orientation 6, Intel format") << m_prefix + "jpeg_exif_orientation_value_6.jpg" << (int)QImageIOHandler::TransformationRotate90 << 39 << 39; + QTest::newRow("Orientation 6, Motorola format") << m_prefix + "jpeg_exif_orientation_value_6_motorola.jpg" << (int)QImageIOHandler::TransformationRotate90 << 39 << 39; + QTest::newRow("Orientation 7, Intel format") << m_prefix + "jpeg_exif_orientation_value_7.jpg" << (int)QImageIOHandler::TransformationMirrorAndRotate90 << 39 << 39; + QTest::newRow("Orientation 8, Intel format") << m_prefix + "jpeg_exif_orientation_value_8.jpg" << (int)QImageIOHandler::TransformationRotate270 << 39 << 39; } QT_BEGIN_NAMESPACE @@ -2842,14 +2844,17 @@ void tst_QImage::exifOrientation() { QFETCH(QString, fileName); QFETCH(int, orientation); + QFETCH(int, dpmx); + QFETCH(int, dpmy); QImageReader imageReader(fileName); imageReader.setAutoTransform(true); QCOMPARE(imageReader.transformation(), orientation); QImage img = imageReader.read(); + QCOMPARE(img.dotsPerMeterX(), dpmx); + QCOMPARE(img.dotsPerMeterY(), dpmy); QRgb px; QVERIFY(!img.isNull()); - px = img.pixel(0, 0); QVERIFY(qRed(px) > 250 && qGreen(px) < 5 && qBlue(px) < 5); -- cgit v1.2.3 From c78fec01f89e7383b3008b5ca30d2a2601ba0a97 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 2 Nov 2015 21:26:08 +0100 Subject: [docs] QStyle: remove remaining references to QStyleOption*V They are all obsolete since Qt 5.0. Change-Id: Ief9111057137c3bd091630430a23681095b73510 Reviewed-by: Jake Petroules --- src/widgets/styles/qstyle.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp index b368477a39..02c420e55c 100644 --- a/src/widgets/styles/qstyle.cpp +++ b/src/widgets/styles/qstyle.cpp @@ -896,7 +896,7 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, \value CE_ToolBoxTabLabel The toolbox's tab label. \value CE_HeaderEmptyArea The area of a header view where there are no header sections. - \value CE_ShapedFrame The frame with the shape specified in the QStyleOptionFrameV3; see QFrame. + \value CE_ShapedFrame The frame with the shape specified in the QStyleOptionFrame; see QFrame. \omitvalue CE_ColumnViewGrip @@ -1034,7 +1034,7 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, \omitvalue SE_ViewItemCheckIndicator \value SE_FrameContents Area for a frame's contents. - \value SE_ShapedFrameContents Area for a frame's contents using the shape in QStyleOptionFrameV3; see QFrame + \value SE_ShapedFrameContents Area for a frame's contents using the shape in QStyleOptionFrame; see QFrame \value SE_FrameLayoutItem Area that counts for the parent layout. \value SE_HeaderArrow Area for the sort indicator for a header. -- cgit v1.2.3 From c69f75426d004d7cdadf51ea06238fef98493ec7 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 2 Nov 2015 15:26:32 +0100 Subject: QStyleOption*V: mark as \obsolete Change-Id: I6e4857bcfa7792bec4d38f6c65bfec15a52b4d30 Reviewed-by: Friedemann Kleint --- src/widgets/styles/qstyleoption.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp index cab56e329e..d66dbec472 100644 --- a/src/widgets/styles/qstyleoption.cpp +++ b/src/widgets/styles/qstyleoption.cpp @@ -475,6 +475,7 @@ QStyleOptionFocusRect::QStyleOptionFocusRect(int version) /*! \typedef QStyleOptionFrameV2 \relates QStyleOptionFrame + \obsolete Synonym for QStyleOptionFrame. */ @@ -482,6 +483,7 @@ QStyleOptionFocusRect::QStyleOptionFocusRect(int version) /*! \typedef QStyleOptionFrameV3 \relates QStyleOptionFrame + \obsolete Synonym for QStyleOptionFrame. */ @@ -1253,6 +1255,7 @@ QStyleOptionToolBar::QStyleOptionToolBar(int version) /*! \typedef QStyleOptionTabV2 \relates QStyleOptionTab + \obsolete Synonym for QStyleOptionTab. */ @@ -1260,6 +1263,7 @@ QStyleOptionToolBar::QStyleOptionToolBar(int version) /*! \typedef QStyleOptionTabV3 \relates QStyleOptionTab + \obsolete Synonym for QStyleOptionTab. */ @@ -1497,6 +1501,7 @@ QStyleOptionTab::QStyleOptionTab(int version) /*! \typedef QStyleOptionProgressBarV2 \relates QStyleOptionProgressBar + \obsolete Synonym for QStyleOptionProgressBar. */ @@ -2270,6 +2275,7 @@ QStyleOptionSpinBox::QStyleOptionSpinBox(int version) /*! \typedef QStyleOptionDockWidgetV2 \relates QStyleOptionDockWidget + \obsolete Synonym for QStyleOptionDockWidget. */ @@ -2675,6 +2681,7 @@ QStyleOptionComboBox::QStyleOptionComboBox(int version) /*! \typedef QStyleOptionToolBoxV2 \relates QStyleOptionToolBox + \obsolete Synonym for QStyleOptionToolBox. */ @@ -3012,6 +3019,7 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version) /*! \typedef QStyleOptionViewItemV2 \relates QStyleOptionViewItem + \obsolete Synonym for QStyleOptionViewItem. */ @@ -3019,6 +3027,7 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version) /*! \typedef QStyleOptionViewItemV3 \relates QStyleOptionViewItem + \obsolete Synonym for QStyleOptionViewItem. */ @@ -3026,6 +3035,7 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version) /*! \typedef QStyleOptionViewItemV4 \relates QStyleOptionViewItem + \obsolete Synonym for QStyleOptionViewItem. */ @@ -3298,6 +3308,7 @@ QStyleOptionViewItem::QStyleOptionViewItem(int version) /*! \typedef QStyleOptionTabWidgetFrameV2 \relates QStyleOptionTabWidgetFrame + \obsolete Synonym for QStyleOptionTabWidgetFrame. */ @@ -3447,6 +3458,7 @@ QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(int version) /*! \typedef QStyleOptionTabBarBaseV2 \relates QStyleOptionTabBarBase + \obsolete Synonym for QStyleOptionTabBarBase. */ -- cgit v1.2.3 From a98b541f26beb6d2ffcd0a720885224c17b54470 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sun, 1 Nov 2015 08:15:29 +0400 Subject: Update Unicode data files to v8.0 Change-Id: I0aa368cb07353924031a9af4f0bdc33692eb1053 Reviewed-by: Lars Knoll --- .../corelib/tools/qchar/data/NormalizationTest.txt | 18 +- .../qtextboundaryfinder/data/GraphemeBreakTest.txt | 6 +- .../qtextboundaryfinder/data/LineBreakTest.txt | 647 +++--- .../qtextboundaryfinder/data/SentenceBreakTest.txt | 16 +- .../qtextboundaryfinder/data/WordBreakTest.txt | 125 +- util/unicode/data/ArabicShaping.txt | 38 +- util/unicode/data/BidiMirroring.txt | 10 +- util/unicode/data/Blocks.txt | 25 +- util/unicode/data/CaseFolding.txt | 147 +- util/unicode/data/DerivedAge.txt | 74 +- util/unicode/data/DerivedNormalizationProps.txt | 157 +- util/unicode/data/GraphemeBreakProperty.txt | 33 +- util/unicode/data/LineBreak.txt | 132 +- util/unicode/data/NormalizationCorrections.txt | 6 +- util/unicode/data/Scripts.txt | 180 +- util/unicode/data/SentenceBreakProperty.txt | 90 +- util/unicode/data/SpecialCasing.txt | 4 +- util/unicode/data/UnicodeData.txt | 2161 +++++++++++++++++++- util/unicode/data/WordBreakProperty.txt | 69 +- 19 files changed, 3314 insertions(+), 624 deletions(-) diff --git a/tests/auto/corelib/tools/qchar/data/NormalizationTest.txt b/tests/auto/corelib/tools/qchar/data/NormalizationTest.txt index 23c1e51d5f..0290080998 100644 --- a/tests/auto/corelib/tools/qchar/data/NormalizationTest.txt +++ b/tests/auto/corelib/tools/qchar/data/NormalizationTest.txt @@ -1,8 +1,8 @@ -# NormalizationTest-7.0.0.txt -# Date: 2013-11-27, 09:54:41 GMT [MD] +# NormalizationTest-8.0.0.txt +# Date: 2015-02-13, 13:30:27 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2013 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ # @@ -17523,6 +17523,8 @@ FFEE;FFEE;FFEE;25CB;25CB; # (○; ○; ○; ○; ○; ) HALFWIDTH WHITE CIRCLE 0061 085A 059A 0316 302A 0062;0061 302A 085A 0316 059A 0062;0061 302A 085A 0316 059A 0062;0061 302A 085A 0316 059A 0062;0061 302A 085A 0316 059A 0062; # (a◌࡚◌֚◌̖◌〪b; a◌〪◌࡚◌̖◌֚b; a◌〪◌࡚◌̖◌֚b; a◌〪◌࡚◌̖◌֚b; a◌〪◌࡚◌̖◌֚b; ) LATIN SMALL LETTER A, MANDAIC VOCALIZATION MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B 0061 059A 0316 302A 085B 0062;0061 302A 0316 085B 059A 0062;0061 302A 0316 085B 059A 0062;0061 302A 0316 085B 059A 0062;0061 302A 0316 085B 059A 0062; # (a◌֚◌̖◌〪◌࡛b; a◌〪◌̖◌࡛◌֚b; a◌〪◌̖◌࡛◌֚b; a◌〪◌̖◌࡛◌֚b; a◌〪◌̖◌࡛◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, MANDAIC GEMINATION MARK, LATIN SMALL LETTER B 0061 085B 059A 0316 302A 0062;0061 302A 085B 0316 059A 0062;0061 302A 085B 0316 059A 0062;0061 302A 085B 0316 059A 0062;0061 302A 085B 0316 059A 0062; # (a◌࡛◌֚◌̖◌〪b; a◌〪◌࡛◌̖◌֚b; a◌〪◌࡛◌̖◌֚b; a◌〪◌࡛◌̖◌֚b; a◌〪◌࡛◌̖◌֚b; ) LATIN SMALL LETTER A, MANDAIC GEMINATION MARK, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B +0061 059A 0316 302A 08E3 0062;0061 302A 0316 08E3 059A 0062;0061 302A 0316 08E3 059A 0062;0061 302A 0316 08E3 059A 0062;0061 302A 0316 08E3 059A 0062; # (a◌֚◌̖◌〪◌ࣣb; a◌〪◌̖◌ࣣ◌֚b; a◌〪◌̖◌ࣣ◌֚b; a◌〪◌̖◌ࣣ◌֚b; a◌〪◌̖◌ࣣ◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, ARABIC TURNED DAMMA BELOW, LATIN SMALL LETTER B +0061 08E3 059A 0316 302A 0062;0061 302A 08E3 0316 059A 0062;0061 302A 08E3 0316 059A 0062;0061 302A 08E3 0316 059A 0062;0061 302A 08E3 0316 059A 0062; # (a◌ࣣ◌֚◌̖◌〪b; a◌〪◌ࣣ◌̖◌֚b; a◌〪◌ࣣ◌̖◌֚b; a◌〪◌ࣣ◌̖◌֚b; a◌〪◌ࣣ◌̖◌֚b; ) LATIN SMALL LETTER A, ARABIC TURNED DAMMA BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B 0061 0315 0300 05AE 08E4 0062;00E0 05AE 08E4 0315 0062;0061 05AE 0300 08E4 0315 0062;00E0 05AE 08E4 0315 0062;0061 05AE 0300 08E4 0315 0062; # (a◌̕◌̀◌֮◌ࣤb; à◌֮◌ࣤ◌̕b; a◌֮◌̀◌ࣤ◌̕b; à◌֮◌ࣤ◌̕b; a◌֮◌̀◌ࣤ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC CURLY FATHA, LATIN SMALL LETTER B 0061 08E4 0315 0300 05AE 0062;0061 05AE 08E4 0300 0315 0062;0061 05AE 08E4 0300 0315 0062;0061 05AE 08E4 0300 0315 0062;0061 05AE 08E4 0300 0315 0062; # (a◌ࣤ◌̕◌̀◌֮b; a◌֮◌ࣤ◌̀◌̕b; a◌֮◌ࣤ◌̀◌̕b; a◌֮◌ࣤ◌̀◌̕b; a◌֮◌ࣤ◌̀◌̕b; ) LATIN SMALL LETTER A, ARABIC CURLY FATHA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B 0061 0315 0300 05AE 08E5 0062;00E0 05AE 08E5 0315 0062;0061 05AE 0300 08E5 0315 0062;00E0 05AE 08E5 0315 0062;0061 05AE 0300 08E5 0315 0062; # (a◌̕◌̀◌֮◌ࣥb; à◌֮◌ࣥ◌̕b; a◌֮◌̀◌ࣥ◌̕b; à◌֮◌ࣥ◌̕b; a◌֮◌̀◌ࣥ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, ARABIC CURLY DAMMA, LATIN SMALL LETTER B @@ -18135,6 +18137,8 @@ FFEE;FFEE;FFEE;25CB;25CB; # (○; ○; ○; ○; ○; ) HALFWIDTH WHITE CIRCLE 0061 A67C 0315 0300 05AE 0062;0061 05AE A67C 0300 0315 0062;0061 05AE A67C 0300 0315 0062;0061 05AE A67C 0300 0315 0062;0061 05AE A67C 0300 0315 0062; # (a◌꙼◌̕◌̀◌֮b; a◌֮◌꙼◌̀◌̕b; a◌֮◌꙼◌̀◌̕b; a◌֮◌꙼◌̀◌̕b; a◌֮◌꙼◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC KAVYKA, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B 0061 0315 0300 05AE A67D 0062;00E0 05AE A67D 0315 0062;0061 05AE 0300 A67D 0315 0062;00E0 05AE A67D 0315 0062;0061 05AE 0300 A67D 0315 0062; # (a◌̕◌̀◌֮◌꙽b; à◌֮◌꙽◌̕b; a◌֮◌̀◌꙽◌̕b; à◌֮◌꙽◌̕b; a◌֮◌̀◌꙽◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC PAYEROK, LATIN SMALL LETTER B 0061 A67D 0315 0300 05AE 0062;0061 05AE A67D 0300 0315 0062;0061 05AE A67D 0300 0315 0062;0061 05AE A67D 0300 0315 0062;0061 05AE A67D 0300 0315 0062; # (a◌꙽◌̕◌̀◌֮b; a◌֮◌꙽◌̀◌̕b; a◌֮◌꙽◌̀◌̕b; a◌֮◌꙽◌̀◌̕b; a◌֮◌꙽◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC PAYEROK, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B +0061 0315 0300 05AE A69E 0062;00E0 05AE A69E 0315 0062;0061 05AE 0300 A69E 0315 0062;00E0 05AE A69E 0315 0062;0061 05AE 0300 A69E 0315 0062; # (a◌̕◌̀◌֮◌ꚞb; à◌֮◌ꚞ◌̕b; a◌֮◌̀◌ꚞ◌̕b; à◌֮◌ꚞ◌̕b; a◌֮◌̀◌ꚞ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER EF, LATIN SMALL LETTER B +0061 A69E 0315 0300 05AE 0062;0061 05AE A69E 0300 0315 0062;0061 05AE A69E 0300 0315 0062;0061 05AE A69E 0300 0315 0062;0061 05AE A69E 0300 0315 0062; # (a◌ꚞ◌̕◌̀◌֮b; a◌֮◌ꚞ◌̀◌̕b; a◌֮◌ꚞ◌̀◌̕b; a◌֮◌ꚞ◌̀◌̕b; a◌֮◌ꚞ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER EF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B 0061 0315 0300 05AE A69F 0062;00E0 05AE A69F 0315 0062;0061 05AE 0300 A69F 0315 0062;00E0 05AE A69F 0315 0062;0061 05AE 0300 A69F 0315 0062; # (a◌̕◌̀◌֮◌ꚟb; à◌֮◌ꚟ◌̕b; a◌֮◌̀◌ꚟ◌̕b; à◌֮◌ꚟ◌̕b; a◌֮◌̀◌ꚟ◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC LETTER IOTIFIED E, LATIN SMALL LETTER B 0061 A69F 0315 0300 05AE 0062;0061 05AE A69F 0300 0315 0062;0061 05AE A69F 0300 0315 0062;0061 05AE A69F 0300 0315 0062;0061 05AE A69F 0300 0315 0062; # (a◌ꚟ◌̕◌̀◌֮b; a◌֮◌ꚟ◌̀◌̕b; a◌֮◌ꚟ◌̀◌̕b; a◌֮◌ꚟ◌̀◌̕b; a◌֮◌ꚟ◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC LETTER IOTIFIED E, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B 0061 0315 0300 05AE A6F0 0062;00E0 05AE A6F0 0315 0062;0061 05AE 0300 A6F0 0315 0062;00E0 05AE A6F0 0315 0062;0061 05AE 0300 A6F0 0315 0062; # (a◌̕◌̀◌֮◌꛰b; à◌֮◌꛰◌̕b; a◌֮◌̀◌꛰◌̕b; à◌֮◌꛰◌̕b; a◌֮◌̀◌꛰◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, BAMUM COMBINING MARK KOQNDON, LATIN SMALL LETTER B @@ -18245,6 +18249,10 @@ FFEE;FFEE;FFEE;25CB;25CB; # (○; ○; ○; ○; ○; ) HALFWIDTH WHITE CIRCLE 0061 FE2C 059A 0316 302A 0062;0061 302A FE2C 0316 059A 0062;0061 302A FE2C 0316 059A 0062;0061 302A FE2C 0316 059A 0062;0061 302A FE2C 0316 059A 0062; # (a◌︬◌֚◌̖◌〪b; a◌〪◌︬◌̖◌֚b; a◌〪◌︬◌̖◌֚b; a◌〪◌︬◌̖◌֚b; a◌〪◌︬◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING MACRON RIGHT HALF BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B 0061 059A 0316 302A FE2D 0062;0061 302A 0316 FE2D 059A 0062;0061 302A 0316 FE2D 059A 0062;0061 302A 0316 FE2D 059A 0062;0061 302A 0316 FE2D 059A 0062; # (a◌֚◌̖◌〪◌︭b; a◌〪◌̖◌︭◌֚b; a◌〪◌̖◌︭◌֚b; a◌〪◌̖◌︭◌֚b; a◌〪◌̖◌︭◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COMBINING CONJOINING MACRON BELOW, LATIN SMALL LETTER B 0061 FE2D 059A 0316 302A 0062;0061 302A FE2D 0316 059A 0062;0061 302A FE2D 0316 059A 0062;0061 302A FE2D 0316 059A 0062;0061 302A FE2D 0316 059A 0062; # (a◌︭◌֚◌̖◌〪b; a◌〪◌︭◌̖◌֚b; a◌〪◌︭◌̖◌֚b; a◌〪◌︭◌̖◌֚b; a◌〪◌︭◌̖◌֚b; ) LATIN SMALL LETTER A, COMBINING CONJOINING MACRON BELOW, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B +0061 0315 0300 05AE FE2E 0062;00E0 05AE FE2E 0315 0062;0061 05AE 0300 FE2E 0315 0062;00E0 05AE FE2E 0315 0062;0061 05AE 0300 FE2E 0315 0062; # (a◌̕◌̀◌֮◌︮b; à◌֮◌︮◌̕b; a◌֮◌̀◌︮◌̕b; à◌֮◌︮◌̕b; a◌֮◌̀◌︮◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC TITLO LEFT HALF, LATIN SMALL LETTER B +0061 FE2E 0315 0300 05AE 0062;0061 05AE FE2E 0300 0315 0062;0061 05AE FE2E 0300 0315 0062;0061 05AE FE2E 0300 0315 0062;0061 05AE FE2E 0300 0315 0062; # (a◌︮◌̕◌̀◌֮b; a◌֮◌︮◌̀◌̕b; a◌֮◌︮◌̀◌̕b; a◌֮◌︮◌̀◌̕b; a◌֮◌︮◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC TITLO LEFT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B +0061 0315 0300 05AE FE2F 0062;00E0 05AE FE2F 0315 0062;0061 05AE 0300 FE2F 0315 0062;00E0 05AE FE2F 0315 0062;0061 05AE 0300 FE2F 0315 0062; # (a◌̕◌̀◌֮◌︯b; à◌֮◌︯◌̕b; a◌֮◌̀◌︯◌̕b; à◌֮◌︯◌̕b; a◌֮◌̀◌︯◌̕b; ) LATIN SMALL LETTER A, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, COMBINING CYRILLIC TITLO RIGHT HALF, LATIN SMALL LETTER B +0061 FE2F 0315 0300 05AE 0062;0061 05AE FE2F 0300 0315 0062;0061 05AE FE2F 0300 0315 0062;0061 05AE FE2F 0300 0315 0062;0061 05AE FE2F 0300 0315 0062; # (a◌︯◌̕◌̀◌֮b; a◌֮◌︯◌̀◌̕b; a◌֮◌︯◌̀◌̕b; a◌֮◌︯◌̀◌̕b; a◌֮◌︯◌̀◌̕b; ) LATIN SMALL LETTER A, COMBINING CYRILLIC TITLO RIGHT HALF, COMBINING COMMA ABOVE RIGHT, COMBINING GRAVE ACCENT, HEBREW ACCENT ZINOR, LATIN SMALL LETTER B 0061 059A 0316 302A 101FD 0062;0061 302A 0316 101FD 059A 0062;0061 302A 0316 101FD 059A 0062;0061 302A 0316 101FD 059A 0062;0061 302A 0316 101FD 059A 0062; # (a◌֚◌̖◌〪◌𐇽b; a◌〪◌̖◌𐇽◌֚b; a◌〪◌̖◌𐇽◌֚b; a◌〪◌̖◌𐇽◌֚b; a◌〪◌̖◌𐇽◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE, LATIN SMALL LETTER B 0061 101FD 059A 0316 302A 0062;0061 302A 101FD 0316 059A 0062;0061 302A 101FD 0316 059A 0062;0061 302A 101FD 0316 059A 0062;0061 302A 101FD 0316 059A 0062; # (a◌𐇽◌֚◌̖◌〪b; a◌〪◌𐇽◌̖◌֚b; a◌〪◌𐇽◌̖◌֚b; a◌〪◌𐇽◌̖◌֚b; a◌〪◌𐇽◌̖◌֚b; ) LATIN SMALL LETTER A, PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, LATIN SMALL LETTER B 0061 059A 0316 302A 102E0 0062;0061 302A 0316 102E0 059A 0062;0061 302A 0316 102E0 059A 0062;0061 302A 0316 102E0 059A 0062;0061 302A 0316 102E0 059A 0062; # (a◌֚◌̖◌〪◌𐋠b; a◌〪◌̖◌𐋠◌֚b; a◌〪◌̖◌𐋠◌֚b; a◌〪◌̖◌𐋠◌֚b; a◌〪◌̖◌𐋠◌֚b; ) LATIN SMALL LETTER A, HEBREW ACCENT YETIV, COMBINING GRAVE ACCENT BELOW, IDEOGRAPHIC LEVEL TONE MARK, COPTIC EPACT THOUSANDS MARK, LATIN SMALL LETTER B @@ -18297,6 +18305,8 @@ FFEE;FFEE;FFEE;25CB;25CB; # (○; ○; ○; ○; ○; ) HALFWIDTH WHITE CIRCLE 0061 11173 3099 093C 0334 0062;0061 0334 11173 093C 3099 0062;0061 0334 11173 093C 3099 0062;0061 0334 11173 093C 3099 0062;0061 0334 11173 093C 3099 0062; # (a◌𑅳◌゙◌़◌̴b; a◌̴◌𑅳◌़◌゙b; a◌̴◌𑅳◌़◌゙b; a◌̴◌𑅳◌़◌゙b; a◌̴◌𑅳◌़◌゙b; ) LATIN SMALL LETTER A, MAHAJANI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B 0061 05B0 094D 3099 111C0 0062;0061 3099 094D 111C0 05B0 0062;0061 3099 094D 111C0 05B0 0062;0061 3099 094D 111C0 05B0 0062;0061 3099 094D 111C0 05B0 0062; # (a◌ְ◌्◌゙𑇀b; a◌゙◌्𑇀◌ְb; a◌゙◌्𑇀◌ְb; a◌゙◌्𑇀◌ְb; a◌゙◌्𑇀◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, SHARADA SIGN VIRAMA, LATIN SMALL LETTER B 0061 111C0 05B0 094D 3099 0062;0061 3099 111C0 094D 05B0 0062;0061 3099 111C0 094D 05B0 0062;0061 3099 111C0 094D 05B0 0062;0061 3099 111C0 094D 05B0 0062; # (a𑇀◌ְ◌्◌゙b; a◌゙𑇀◌्◌ְb; a◌゙𑇀◌्◌ְb; a◌゙𑇀◌्◌ְb; a◌゙𑇀◌्◌ְb; ) LATIN SMALL LETTER A, SHARADA SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B +0061 3099 093C 0334 111CA 0062;0061 0334 093C 111CA 3099 0062;0061 0334 093C 111CA 3099 0062;0061 0334 093C 111CA 3099 0062;0061 0334 093C 111CA 3099 0062; # (a◌゙◌़◌̴◌𑇊b; a◌̴◌़◌𑇊◌゙b; a◌̴◌़◌𑇊◌゙b; a◌̴◌़◌𑇊◌゙b; a◌̴◌़◌𑇊◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, SHARADA SIGN NUKTA, LATIN SMALL LETTER B +0061 111CA 3099 093C 0334 0062;0061 0334 111CA 093C 3099 0062;0061 0334 111CA 093C 3099 0062;0061 0334 111CA 093C 3099 0062;0061 0334 111CA 093C 3099 0062; # (a◌𑇊◌゙◌़◌̴b; a◌̴◌𑇊◌़◌゙b; a◌̴◌𑇊◌़◌゙b; a◌̴◌𑇊◌़◌゙b; a◌̴◌𑇊◌़◌゙b; ) LATIN SMALL LETTER A, SHARADA SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B 0061 05B0 094D 3099 11235 0062;0061 3099 094D 11235 05B0 0062;0061 3099 094D 11235 05B0 0062;0061 3099 094D 11235 05B0 0062;0061 3099 094D 11235 05B0 0062; # (a◌ְ◌्◌゙𑈵b; a◌゙◌्𑈵◌ְb; a◌゙◌्𑈵◌ְb; a◌゙◌्𑈵◌ְb; a◌゙◌्𑈵◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, KHOJKI SIGN VIRAMA, LATIN SMALL LETTER B 0061 11235 05B0 094D 3099 0062;0061 3099 11235 094D 05B0 0062;0061 3099 11235 094D 05B0 0062;0061 3099 11235 094D 05B0 0062;0061 3099 11235 094D 05B0 0062; # (a𑈵◌ְ◌्◌゙b; a◌゙𑈵◌्◌ְb; a◌゙𑈵◌्◌ְb; a◌゙𑈵◌्◌ְb; a◌゙𑈵◌्◌ְb; ) LATIN SMALL LETTER A, KHOJKI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B 0061 3099 093C 0334 11236 0062;0061 0334 093C 11236 3099 0062;0061 0334 093C 11236 3099 0062;0061 0334 093C 11236 3099 0062;0061 0334 093C 11236 3099 0062; # (a◌゙◌़◌̴◌𑈶b; a◌̴◌़◌𑈶◌゙b; a◌̴◌़◌𑈶◌゙b; a◌̴◌़◌𑈶◌゙b; a◌̴◌़◌𑈶◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, KHOJKI SIGN NUKTA, LATIN SMALL LETTER B @@ -18347,6 +18357,8 @@ FFEE;FFEE;FFEE;25CB;25CB; # (○; ○; ○; ○; ○; ) HALFWIDTH WHITE CIRCLE 0061 116B6 05B0 094D 3099 0062;0061 3099 116B6 094D 05B0 0062;0061 3099 116B6 094D 05B0 0062;0061 3099 116B6 094D 05B0 0062;0061 3099 116B6 094D 05B0 0062; # (a𑚶◌ְ◌्◌゙b; a◌゙𑚶◌्◌ְb; a◌゙𑚶◌्◌ְb; a◌゙𑚶◌्◌ְb; a◌゙𑚶◌्◌ְb; ) LATIN SMALL LETTER A, TAKRI SIGN VIRAMA, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B 0061 3099 093C 0334 116B7 0062;0061 0334 093C 116B7 3099 0062;0061 0334 093C 116B7 3099 0062;0061 0334 093C 116B7 3099 0062;0061 0334 093C 116B7 3099 0062; # (a◌゙◌़◌̴◌𑚷b; a◌̴◌़◌𑚷◌゙b; a◌̴◌़◌𑚷◌゙b; a◌̴◌़◌𑚷◌゙b; a◌̴◌़◌𑚷◌゙b; ) LATIN SMALL LETTER A, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, TAKRI SIGN NUKTA, LATIN SMALL LETTER B 0061 116B7 3099 093C 0334 0062;0061 0334 116B7 093C 3099 0062;0061 0334 116B7 093C 3099 0062;0061 0334 116B7 093C 3099 0062;0061 0334 116B7 093C 3099 0062; # (a◌𑚷◌゙◌़◌̴b; a◌̴◌𑚷◌़◌゙b; a◌̴◌𑚷◌़◌゙b; a◌̴◌𑚷◌़◌゙b; a◌̴◌𑚷◌़◌゙b; ) LATIN SMALL LETTER A, TAKRI SIGN NUKTA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B +0061 05B0 094D 3099 1172B 0062;0061 3099 094D 1172B 05B0 0062;0061 3099 094D 1172B 05B0 0062;0061 3099 094D 1172B 05B0 0062;0061 3099 094D 1172B 05B0 0062; # (a◌ְ◌्◌゙◌𑜫b; a◌゙◌्◌𑜫◌ְb; a◌゙◌्◌𑜫◌ְb; a◌゙◌्◌𑜫◌ְb; a◌゙◌्◌𑜫◌ְb; ) LATIN SMALL LETTER A, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, AHOM SIGN KILLER, LATIN SMALL LETTER B +0061 1172B 05B0 094D 3099 0062;0061 3099 1172B 094D 05B0 0062;0061 3099 1172B 094D 05B0 0062;0061 3099 1172B 094D 05B0 0062;0061 3099 1172B 094D 05B0 0062; # (a◌𑜫◌ְ◌्◌゙b; a◌゙◌𑜫◌्◌ְb; a◌゙◌𑜫◌्◌ְb; a◌゙◌𑜫◌्◌ְb; a◌゙◌𑜫◌्◌ְb; ) LATIN SMALL LETTER A, AHOM SIGN KILLER, HEBREW POINT SHEVA, DEVANAGARI SIGN VIRAMA, COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK, LATIN SMALL LETTER B 0061 093C 0334 16AF0 0062;0061 0334 16AF0 093C 0062;0061 0334 16AF0 093C 0062;0061 0334 16AF0 093C 0062;0061 0334 16AF0 093C 0062; # (a◌़◌̴◌𖫰b; a◌̴◌𖫰◌़b; a◌̴◌𖫰◌़b; a◌̴◌𖫰◌़b; a◌̴◌𖫰◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BASSA VAH COMBINING HIGH TONE, LATIN SMALL LETTER B 0061 16AF0 093C 0334 0062;0061 16AF0 0334 093C 0062;0061 16AF0 0334 093C 0062;0061 16AF0 0334 093C 0062;0061 16AF0 0334 093C 0062; # (a◌𖫰◌़◌̴b; a◌𖫰◌̴◌़b; a◌𖫰◌̴◌़b; a◌𖫰◌̴◌़b; a◌𖫰◌̴◌़b; ) LATIN SMALL LETTER A, BASSA VAH COMBINING HIGH TONE, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, LATIN SMALL LETTER B 0061 093C 0334 16AF1 0062;0061 0334 16AF1 093C 0062;0061 0334 16AF1 093C 0062;0061 0334 16AF1 093C 0062;0061 0334 16AF1 093C 0062; # (a◌़◌̴◌𖫱b; a◌̴◌𖫱◌़b; a◌̴◌𖫱◌़b; a◌̴◌𖫱◌़b; a◌̴◌𖫱◌़b; ) LATIN SMALL LETTER A, DEVANAGARI SIGN NUKTA, COMBINING TILDE OVERLAY, BASSA VAH COMBINING LOW TONE, LATIN SMALL LETTER B diff --git a/tests/auto/corelib/tools/qtextboundaryfinder/data/GraphemeBreakTest.txt b/tests/auto/corelib/tools/qtextboundaryfinder/data/GraphemeBreakTest.txt index d39f2c760a..a3ed239c95 100644 --- a/tests/auto/corelib/tools/qtextboundaryfinder/data/GraphemeBreakTest.txt +++ b/tests/auto/corelib/tools/qtextboundaryfinder/data/GraphemeBreakTest.txt @@ -1,8 +1,8 @@ -# GraphemeBreakTest-7.0.0.txt -# Date: 2013-11-27, 09:54:39 GMT [MD] +# GraphemeBreakTest-8.0.0.txt +# Date: 2015-02-13, 13:47:15 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2013 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ # diff --git a/tests/auto/corelib/tools/qtextboundaryfinder/data/LineBreakTest.txt b/tests/auto/corelib/tools/qtextboundaryfinder/data/LineBreakTest.txt index f06917bb77..7f2e2cc54f 100644 --- a/tests/auto/corelib/tools/qtextboundaryfinder/data/LineBreakTest.txt +++ b/tests/auto/corelib/tools/qtextboundaryfinder/data/LineBreakTest.txt @@ -1,8 +1,8 @@ -# LineBreakTest-7.0.0.txt -# Date: 2014-02-19, 15:51:25 GMT [MD] +# LineBreakTest-8.0.0.txt +# Date: 2015-04-30, 09:40:15 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ # @@ -166,10 +166,10 @@ × 0023 × 0020 ÷ 00A7 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0023 × 0308 × 00A7 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0023 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0023 × E000 ÷ # × [0.3] NUMBER SIGN (AL) × [28.0] (XX_AL) ÷ [0.3] -× 0023 × 0020 ÷ E000 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0023 × 0308 × E000 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× 0023 × 0308 × 0020 ÷ E000 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0023 × 50005 ÷ # × [0.3] NUMBER SIGN (AL) × [28.0] (XX_AL) ÷ [0.3] +× 0023 × 0020 ÷ 50005 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0023 × 0308 × 50005 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 0023 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0023 × 0E01 ÷ # × [0.3] NUMBER SIGN (AL) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0023 × 0020 ÷ 0E01 ÷ # × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0023 × 0308 × 0E01 ÷ # × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -322,10 +322,10 @@ × 2014 × 0020 ÷ 00A7 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 2014 × 0308 ÷ 00A7 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 2014 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 2014 ÷ E000 ÷ # × [0.3] EM DASH (B2) ÷ [999.0] (XX_AL) ÷ [0.3] -× 2014 × 0020 ÷ E000 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 2014 × 0308 ÷ E000 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 2014 × 0308 × 0020 ÷ E000 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 2014 ÷ 50005 ÷ # × [0.3] EM DASH (B2) ÷ [999.0] (XX_AL) ÷ [0.3] +× 2014 × 0020 ÷ 50005 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 2014 × 0308 ÷ 50005 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 2014 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 2014 ÷ 0E01 ÷ # × [0.3] EM DASH (B2) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 2014 × 0020 ÷ 0E01 ÷ # × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 2014 × 0308 ÷ 0E01 ÷ # × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -478,10 +478,10 @@ × 0009 × 0020 ÷ 00A7 ÷ # × [0.3] (BA) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0009 × 0308 ÷ 00A7 ÷ # × [0.3] (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0009 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0009 ÷ E000 ÷ # × [0.3] (BA) ÷ [999.0] (XX_AL) ÷ [0.3] -× 0009 × 0020 ÷ E000 ÷ # × [0.3] (BA) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0009 × 0308 ÷ E000 ÷ # × [0.3] (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 0009 × 0308 × 0020 ÷ E000 ÷ # × [0.3] (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0009 ÷ 50005 ÷ # × [0.3] (BA) ÷ [999.0] (XX_AL) ÷ [0.3] +× 0009 × 0020 ÷ 50005 ÷ # × [0.3] (BA) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0009 × 0308 ÷ 50005 ÷ # × [0.3] (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 0009 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0009 ÷ 0E01 ÷ # × [0.3] (BA) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0009 × 0020 ÷ 0E01 ÷ # × [0.3] (BA) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0009 × 0308 ÷ 0E01 ÷ # × [0.3] (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -634,10 +634,10 @@ × 00B4 × 0020 ÷ 00A7 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 00B4 × 0308 × 00A7 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] SECTION SIGN (AI_AL) ÷ [0.3] × 00B4 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 00B4 × E000 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] (XX_AL) ÷ [0.3] -× 00B4 × 0020 ÷ E000 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 00B4 × 0308 × E000 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] (XX_AL) ÷ [0.3] -× 00B4 × 0308 × 0020 ÷ E000 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 00B4 × 50005 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] (XX_AL) ÷ [0.3] +× 00B4 × 0020 ÷ 50005 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 00B4 × 0308 × 50005 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] (XX_AL) ÷ [0.3] +× 00B4 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 00B4 × 0E01 ÷ # × [0.3] ACUTE ACCENT (BB) × [21.04] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 00B4 × 0020 ÷ 0E01 ÷ # × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 00B4 × 0308 × 0E01 ÷ # × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -790,10 +790,10 @@ × 000B ÷ 0020 ÷ 00A7 ÷ # × [0.3] (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 000B ÷ 0308 × 00A7 ÷ # × [0.3] (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] × 000B ÷ 0308 × 0020 ÷ 00A7 ÷ # × [0.3] (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 000B ÷ E000 ÷ # × [0.3] (BK) ÷ [4.0] (XX_AL) ÷ [0.3] -× 000B ÷ 0020 ÷ E000 ÷ # × [0.3] (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 000B ÷ 0308 × E000 ÷ # × [0.3] (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× 000B ÷ 0308 × 0020 ÷ E000 ÷ # × [0.3] (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 000B ÷ 50005 ÷ # × [0.3] (BK) ÷ [4.0] (XX_AL) ÷ [0.3] +× 000B ÷ 0020 ÷ 50005 ÷ # × [0.3] (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 000B ÷ 0308 × 50005 ÷ # × [0.3] (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 000B ÷ 0308 × 0020 ÷ 50005 ÷ # × [0.3] (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 000B ÷ 0E01 ÷ # × [0.3] (BK) ÷ [4.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 000B ÷ 0020 ÷ 0E01 ÷ # × [0.3] (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 000B ÷ 0308 × 0E01 ÷ # × [0.3] (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -946,10 +946,10 @@ × FFFC × 0020 ÷ 00A7 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × FFFC × 0308 ÷ 00A7 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] SECTION SIGN (AI_AL) ÷ [0.3] × FFFC × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× FFFC ÷ E000 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] (XX_AL) ÷ [0.3] -× FFFC × 0020 ÷ E000 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× FFFC × 0308 ÷ E000 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] (XX_AL) ÷ [0.3] -× FFFC × 0308 × 0020 ÷ E000 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× FFFC ÷ 50005 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] (XX_AL) ÷ [0.3] +× FFFC × 0020 ÷ 50005 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× FFFC × 0308 ÷ 50005 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] (XX_AL) ÷ [0.3] +× FFFC × 0308 × 0020 ÷ 50005 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × FFFC ÷ 0E01 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × FFFC × 0020 ÷ 0E01 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × FFFC × 0308 ÷ 0E01 ÷ # × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -1102,10 +1102,10 @@ × 007D × 0020 ÷ 00A7 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 007D × 0308 ÷ 00A7 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 007D × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 007D ÷ E000 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] (XX_AL) ÷ [0.3] -× 007D × 0020 ÷ E000 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 007D × 0308 ÷ E000 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 007D × 0308 × 0020 ÷ E000 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 007D ÷ 50005 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] (XX_AL) ÷ [0.3] +× 007D × 0020 ÷ 50005 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 007D × 0308 ÷ 50005 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 007D × 0308 × 0020 ÷ 50005 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 007D ÷ 0E01 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 007D × 0020 ÷ 0E01 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 007D × 0308 ÷ 0E01 ÷ # × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -1258,10 +1258,10 @@ × 0029 × 0020 ÷ 00A7 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0029 × 0308 × 00A7 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [30.02] SECTION SIGN (AI_AL) ÷ [0.3] × 0029 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0029 × E000 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [30.02] (XX_AL) ÷ [0.3] -× 0029 × 0020 ÷ E000 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0029 × 0308 × E000 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [30.02] (XX_AL) ÷ [0.3] -× 0029 × 0308 × 0020 ÷ E000 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0029 × 50005 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [30.02] (XX_AL) ÷ [0.3] +× 0029 × 0020 ÷ 50005 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0029 × 0308 × 50005 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [30.02] (XX_AL) ÷ [0.3] +× 0029 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0029 × 0E01 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [30.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0029 × 0020 ÷ 0E01 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0029 × 0308 × 0E01 ÷ # × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [30.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -1414,10 +1414,10 @@ × 0001 × 0020 ÷ 00A7 ÷ # × [0.3] (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0001 × 0308 × 00A7 ÷ # × [0.3] (CM) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0001 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0001 × E000 ÷ # × [0.3] (CM) × [28.0] (XX_AL) ÷ [0.3] -× 0001 × 0020 ÷ E000 ÷ # × [0.3] (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0001 × 0308 × E000 ÷ # × [0.3] (CM) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× 0001 × 0308 × 0020 ÷ E000 ÷ # × [0.3] (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0001 × 50005 ÷ # × [0.3] (CM) × [28.0] (XX_AL) ÷ [0.3] +× 0001 × 0020 ÷ 50005 ÷ # × [0.3] (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0001 × 0308 × 50005 ÷ # × [0.3] (CM) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 0001 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0001 × 0E01 ÷ # × [0.3] (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0001 × 0020 ÷ 0E01 ÷ # × [0.3] (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0001 × 0308 × 0E01 ÷ # × [0.3] (CM) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -1570,10 +1570,10 @@ × 000D ÷ 0020 ÷ 00A7 ÷ # × [0.3] (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 000D ÷ 0308 × 00A7 ÷ # × [0.3] (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] × 000D ÷ 0308 × 0020 ÷ 00A7 ÷ # × [0.3] (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 000D ÷ E000 ÷ # × [0.3] (CR) ÷ [5.02] (XX_AL) ÷ [0.3] -× 000D ÷ 0020 ÷ E000 ÷ # × [0.3] (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 000D ÷ 0308 × E000 ÷ # × [0.3] (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× 000D ÷ 0308 × 0020 ÷ E000 ÷ # × [0.3] (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 000D ÷ 50005 ÷ # × [0.3] (CR) ÷ [5.02] (XX_AL) ÷ [0.3] +× 000D ÷ 0020 ÷ 50005 ÷ # × [0.3] (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 000D ÷ 0308 × 50005 ÷ # × [0.3] (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 000D ÷ 0308 × 0020 ÷ 50005 ÷ # × [0.3] (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 000D ÷ 0E01 ÷ # × [0.3] (CR) ÷ [5.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 000D ÷ 0020 ÷ 0E01 ÷ # × [0.3] (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 000D ÷ 0308 × 0E01 ÷ # × [0.3] (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -1650,9 +1650,9 @@ × 0021 × 0020 ÷ 231A ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] × 0021 × 0308 ÷ 231A ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3] × 0021 × 0308 × 0020 ÷ 231A ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] -× 0021 ÷ 2024 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3] +× 0021 × 2024 ÷ # × [0.3] EXCLAMATION MARK (EX) × [22.02] ONE DOT LEADER (IN) ÷ [0.3] × 0021 × 0020 ÷ 2024 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] -× 0021 × 0308 ÷ 2024 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3] +× 0021 × 0308 × 2024 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [22.02] ONE DOT LEADER (IN) ÷ [0.3] × 0021 × 0308 × 0020 ÷ 2024 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] × 0021 × 002C ÷ # × [0.3] EXCLAMATION MARK (EX) × [13.02] COMMA (IS) ÷ [0.3] × 0021 × 0020 × 002C ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3] @@ -1726,10 +1726,10 @@ × 0021 × 0020 ÷ 00A7 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0021 × 0308 ÷ 00A7 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0021 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0021 ÷ E000 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] (XX_AL) ÷ [0.3] -× 0021 × 0020 ÷ E000 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0021 × 0308 ÷ E000 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 0021 × 0308 × 0020 ÷ E000 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0021 ÷ 50005 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] (XX_AL) ÷ [0.3] +× 0021 × 0020 ÷ 50005 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0021 × 0308 ÷ 50005 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 0021 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0021 ÷ 0E01 ÷ # × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0021 × 0020 ÷ 0E01 ÷ # × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0021 × 0308 ÷ 0E01 ÷ # × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -1882,10 +1882,10 @@ × 00A0 × 0020 ÷ 00A7 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 00A0 × 0308 × 00A7 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] SECTION SIGN (AI_AL) ÷ [0.3] × 00A0 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 00A0 × E000 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] (XX_AL) ÷ [0.3] -× 00A0 × 0020 ÷ E000 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 00A0 × 0308 × E000 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] (XX_AL) ÷ [0.3] -× 00A0 × 0308 × 0020 ÷ E000 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 00A0 × 50005 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] (XX_AL) ÷ [0.3] +× 00A0 × 0020 ÷ 50005 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 00A0 × 0308 × 50005 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] (XX_AL) ÷ [0.3] +× 00A0 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 00A0 × 0E01 ÷ # × [0.3] NO-BREAK SPACE (GL) × [12.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 00A0 × 0020 ÷ 0E01 ÷ # × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 00A0 × 0308 × 0E01 ÷ # × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -2038,10 +2038,10 @@ × AC00 × 0020 ÷ 00A7 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × AC00 × 0308 ÷ 00A7 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × AC00 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× AC00 ÷ E000 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] (XX_AL) ÷ [0.3] -× AC00 × 0020 ÷ E000 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× AC00 × 0308 ÷ E000 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× AC00 × 0308 × 0020 ÷ E000 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× AC00 ÷ 50005 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] (XX_AL) ÷ [0.3] +× AC00 × 0020 ÷ 50005 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× AC00 × 0308 ÷ 50005 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× AC00 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × AC00 ÷ 0E01 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × AC00 × 0020 ÷ 0E01 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × AC00 × 0308 ÷ 0E01 ÷ # × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -2194,10 +2194,10 @@ × AC01 × 0020 ÷ 00A7 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × AC01 × 0308 ÷ 00A7 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × AC01 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× AC01 ÷ E000 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] (XX_AL) ÷ [0.3] -× AC01 × 0020 ÷ E000 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× AC01 × 0308 ÷ E000 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× AC01 × 0308 × 0020 ÷ E000 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× AC01 ÷ 50005 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] (XX_AL) ÷ [0.3] +× AC01 × 0020 ÷ 50005 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× AC01 × 0308 ÷ 50005 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× AC01 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × AC01 ÷ 0E01 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × AC01 × 0020 ÷ 0E01 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × AC01 × 0308 ÷ 0E01 ÷ # × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -2350,10 +2350,10 @@ × 05D0 × 0020 ÷ 00A7 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 05D0 × 0308 × 00A7 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] × 05D0 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 05D0 × E000 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [28.0] (XX_AL) ÷ [0.3] -× 05D0 × 0020 ÷ E000 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 05D0 × 0308 × E000 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× 05D0 × 0308 × 0020 ÷ E000 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 05D0 × 50005 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [28.0] (XX_AL) ÷ [0.3] +× 05D0 × 0020 ÷ 50005 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 05D0 × 0308 × 50005 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 05D0 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 05D0 × 0E01 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 05D0 × 0020 ÷ 0E01 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 05D0 × 0308 × 0E01 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -2506,10 +2506,10 @@ × 002D × 0020 ÷ 00A7 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 002D × 0308 ÷ 00A7 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 002D × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 002D ÷ E000 ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] (XX_AL) ÷ [0.3] -× 002D × 0020 ÷ E000 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 002D × 0308 ÷ E000 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 002D × 0308 × 0020 ÷ E000 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 002D ÷ 50005 ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] (XX_AL) ÷ [0.3] +× 002D × 0020 ÷ 50005 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 002D × 0308 ÷ 50005 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 002D × 0308 × 0020 ÷ 50005 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 002D ÷ 0E01 ÷ # × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 002D × 0020 ÷ 0E01 ÷ # × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 002D × 0308 ÷ 0E01 ÷ # × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -2586,9 +2586,9 @@ × 231A × 0020 ÷ 231A ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] × 231A × 0308 ÷ 231A ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3] × 231A × 0308 × 0020 ÷ 231A ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] -× 231A × 2024 ÷ # × [0.3] WATCH (ID) × [22.02] ONE DOT LEADER (IN) ÷ [0.3] +× 231A × 2024 ÷ # × [0.3] WATCH (ID) × [22.03] ONE DOT LEADER (IN) ÷ [0.3] × 231A × 0020 ÷ 2024 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] -× 231A × 0308 × 2024 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [22.02] ONE DOT LEADER (IN) ÷ [0.3] +× 231A × 0308 × 2024 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [22.03] ONE DOT LEADER (IN) ÷ [0.3] × 231A × 0308 × 0020 ÷ 2024 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] × 231A × 002C ÷ # × [0.3] WATCH (ID) × [13.02] COMMA (IS) ÷ [0.3] × 231A × 0020 × 002C ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3] @@ -2662,10 +2662,10 @@ × 231A × 0020 ÷ 00A7 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 231A × 0308 ÷ 00A7 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 231A × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 231A ÷ E000 ÷ # × [0.3] WATCH (ID) ÷ [999.0] (XX_AL) ÷ [0.3] -× 231A × 0020 ÷ E000 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 231A × 0308 ÷ E000 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 231A × 0308 × 0020 ÷ E000 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 231A ÷ 50005 ÷ # × [0.3] WATCH (ID) ÷ [999.0] (XX_AL) ÷ [0.3] +× 231A × 0020 ÷ 50005 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 231A × 0308 ÷ 50005 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 231A × 0308 × 0020 ÷ 50005 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 231A ÷ 0E01 ÷ # × [0.3] WATCH (ID) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 231A × 0020 ÷ 0E01 ÷ # × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 231A × 0308 ÷ 0E01 ÷ # × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -2742,9 +2742,9 @@ × 2024 × 0020 ÷ 231A ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] × 2024 × 0308 ÷ 231A ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3] × 2024 × 0308 × 0020 ÷ 231A ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] -× 2024 × 2024 ÷ # × [0.3] ONE DOT LEADER (IN) × [22.03] ONE DOT LEADER (IN) ÷ [0.3] +× 2024 × 2024 ÷ # × [0.3] ONE DOT LEADER (IN) × [22.04] ONE DOT LEADER (IN) ÷ [0.3] × 2024 × 0020 ÷ 2024 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] -× 2024 × 0308 × 2024 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [22.03] ONE DOT LEADER (IN) ÷ [0.3] +× 2024 × 0308 × 2024 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [22.04] ONE DOT LEADER (IN) ÷ [0.3] × 2024 × 0308 × 0020 ÷ 2024 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] × 2024 × 002C ÷ # × [0.3] ONE DOT LEADER (IN) × [13.02] COMMA (IS) ÷ [0.3] × 2024 × 0020 × 002C ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3] @@ -2818,10 +2818,10 @@ × 2024 × 0020 ÷ 00A7 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 2024 × 0308 ÷ 00A7 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 2024 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 2024 ÷ E000 ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] (XX_AL) ÷ [0.3] -× 2024 × 0020 ÷ E000 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 2024 × 0308 ÷ E000 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 2024 × 0308 × 0020 ÷ E000 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 2024 ÷ 50005 ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] (XX_AL) ÷ [0.3] +× 2024 × 0020 ÷ 50005 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 2024 × 0308 ÷ 50005 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 2024 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 2024 ÷ 0E01 ÷ # × [0.3] ONE DOT LEADER (IN) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 2024 × 0020 ÷ 0E01 ÷ # × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 2024 × 0308 ÷ 0E01 ÷ # × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -2974,10 +2974,10 @@ × 002C × 0020 ÷ 00A7 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 002C × 0308 × 00A7 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [29.0] SECTION SIGN (AI_AL) ÷ [0.3] × 002C × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 002C × E000 ÷ # × [0.3] COMMA (IS) × [29.0] (XX_AL) ÷ [0.3] -× 002C × 0020 ÷ E000 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 002C × 0308 × E000 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [29.0] (XX_AL) ÷ [0.3] -× 002C × 0308 × 0020 ÷ E000 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 002C × 50005 ÷ # × [0.3] COMMA (IS) × [29.0] (XX_AL) ÷ [0.3] +× 002C × 0020 ÷ 50005 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 002C × 0308 × 50005 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [29.0] (XX_AL) ÷ [0.3] +× 002C × 0308 × 0020 ÷ 50005 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 002C × 0E01 ÷ # × [0.3] COMMA (IS) × [29.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 002C × 0020 ÷ 0E01 ÷ # × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 002C × 0308 × 0E01 ÷ # × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [29.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -3130,10 +3130,10 @@ × 1100 × 0020 ÷ 00A7 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 1100 × 0308 ÷ 00A7 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 1100 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 1100 ÷ E000 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] (XX_AL) ÷ [0.3] -× 1100 × 0020 ÷ E000 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 1100 × 0308 ÷ E000 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 1100 × 0308 × 0020 ÷ E000 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 1100 ÷ 50005 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] (XX_AL) ÷ [0.3] +× 1100 × 0020 ÷ 50005 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 1100 × 0308 ÷ 50005 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 1100 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 1100 ÷ 0E01 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 1100 × 0020 ÷ 0E01 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 1100 × 0308 ÷ 0E01 ÷ # × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -3286,10 +3286,10 @@ × 11A8 × 0020 ÷ 00A7 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 11A8 × 0308 ÷ 00A7 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 11A8 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 11A8 ÷ E000 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] (XX_AL) ÷ [0.3] -× 11A8 × 0020 ÷ E000 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 11A8 × 0308 ÷ E000 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 11A8 × 0308 × 0020 ÷ E000 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 11A8 ÷ 50005 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] (XX_AL) ÷ [0.3] +× 11A8 × 0020 ÷ 50005 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 11A8 × 0308 ÷ 50005 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 11A8 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 11A8 ÷ 0E01 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 11A8 × 0020 ÷ 0E01 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 11A8 × 0308 ÷ 0E01 ÷ # × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -3442,10 +3442,10 @@ × 1160 × 0020 ÷ 00A7 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 1160 × 0308 ÷ 00A7 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 1160 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 1160 ÷ E000 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] (XX_AL) ÷ [0.3] -× 1160 × 0020 ÷ E000 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 1160 × 0308 ÷ E000 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 1160 × 0308 × 0020 ÷ E000 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 1160 ÷ 50005 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] (XX_AL) ÷ [0.3] +× 1160 × 0020 ÷ 50005 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 1160 × 0308 ÷ 50005 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 1160 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 1160 ÷ 0E01 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 1160 × 0020 ÷ 0E01 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 1160 × 0308 ÷ 0E01 ÷ # × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -3598,10 +3598,10 @@ × 000A ÷ 0020 ÷ 00A7 ÷ # × [0.3] (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 000A ÷ 0308 × 00A7 ÷ # × [0.3] (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] × 000A ÷ 0308 × 0020 ÷ 00A7 ÷ # × [0.3] (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 000A ÷ E000 ÷ # × [0.3] (LF) ÷ [5.03] (XX_AL) ÷ [0.3] -× 000A ÷ 0020 ÷ E000 ÷ # × [0.3] (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 000A ÷ 0308 × E000 ÷ # × [0.3] (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× 000A ÷ 0308 × 0020 ÷ E000 ÷ # × [0.3] (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 000A ÷ 50005 ÷ # × [0.3] (LF) ÷ [5.03] (XX_AL) ÷ [0.3] +× 000A ÷ 0020 ÷ 50005 ÷ # × [0.3] (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 000A ÷ 0308 × 50005 ÷ # × [0.3] (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 000A ÷ 0308 × 0020 ÷ 50005 ÷ # × [0.3] (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 000A ÷ 0E01 ÷ # × [0.3] (LF) ÷ [5.03] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 000A ÷ 0020 ÷ 0E01 ÷ # × [0.3] (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 000A ÷ 0308 × 0E01 ÷ # × [0.3] (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -3754,10 +3754,10 @@ × 0085 ÷ 0020 ÷ 00A7 ÷ # × [0.3] (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0085 ÷ 0308 × 00A7 ÷ # × [0.3] (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0085 ÷ 0308 × 0020 ÷ 00A7 ÷ # × [0.3] (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0085 ÷ E000 ÷ # × [0.3] (NL) ÷ [5.04] (XX_AL) ÷ [0.3] -× 0085 ÷ 0020 ÷ E000 ÷ # × [0.3] (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0085 ÷ 0308 × E000 ÷ # × [0.3] (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× 0085 ÷ 0308 × 0020 ÷ E000 ÷ # × [0.3] (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0085 ÷ 50005 ÷ # × [0.3] (NL) ÷ [5.04] (XX_AL) ÷ [0.3] +× 0085 ÷ 0020 ÷ 50005 ÷ # × [0.3] (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0085 ÷ 0308 × 50005 ÷ # × [0.3] (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 0085 ÷ 0308 × 0020 ÷ 50005 ÷ # × [0.3] (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0085 ÷ 0E01 ÷ # × [0.3] (NL) ÷ [5.04] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0085 ÷ 0020 ÷ 0E01 ÷ # × [0.3] (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0085 ÷ 0308 × 0E01 ÷ # × [0.3] (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -3910,10 +3910,10 @@ × 17D6 × 0020 ÷ 00A7 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 17D6 × 0308 ÷ 00A7 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 17D6 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 17D6 ÷ E000 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] (XX_AL) ÷ [0.3] -× 17D6 × 0020 ÷ E000 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 17D6 × 0308 ÷ E000 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 17D6 × 0308 × 0020 ÷ E000 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 17D6 ÷ 50005 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] (XX_AL) ÷ [0.3] +× 17D6 × 0020 ÷ 50005 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 17D6 × 0308 ÷ 50005 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 17D6 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 17D6 ÷ 0E01 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 17D6 × 0020 ÷ 0E01 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 17D6 × 0308 ÷ 0E01 ÷ # × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -3990,9 +3990,9 @@ × 0030 × 0020 ÷ 231A ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] × 0030 × 0308 ÷ 231A ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3] × 0030 × 0308 × 0020 ÷ 231A ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] -× 0030 × 2024 ÷ # × [0.3] DIGIT ZERO (NU) × [22.04] ONE DOT LEADER (IN) ÷ [0.3] +× 0030 × 2024 ÷ # × [0.3] DIGIT ZERO (NU) × [22.05] ONE DOT LEADER (IN) ÷ [0.3] × 0030 × 0020 ÷ 2024 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] -× 0030 × 0308 × 2024 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [22.04] ONE DOT LEADER (IN) ÷ [0.3] +× 0030 × 0308 × 2024 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [22.05] ONE DOT LEADER (IN) ÷ [0.3] × 0030 × 0308 × 0020 ÷ 2024 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] × 0030 × 002C ÷ # × [0.3] DIGIT ZERO (NU) × [25.03] COMMA (IS) ÷ [0.3] × 0030 × 0020 × 002C ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3] @@ -4066,10 +4066,10 @@ × 0030 × 0020 ÷ 00A7 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0030 × 0308 × 00A7 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [23.03] SECTION SIGN (AI_AL) ÷ [0.3] × 0030 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0030 × E000 ÷ # × [0.3] DIGIT ZERO (NU) × [23.03] (XX_AL) ÷ [0.3] -× 0030 × 0020 ÷ E000 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0030 × 0308 × E000 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [23.03] (XX_AL) ÷ [0.3] -× 0030 × 0308 × 0020 ÷ E000 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0030 × 50005 ÷ # × [0.3] DIGIT ZERO (NU) × [23.03] (XX_AL) ÷ [0.3] +× 0030 × 0020 ÷ 50005 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0030 × 0308 × 50005 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [23.03] (XX_AL) ÷ [0.3] +× 0030 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0030 × 0E01 ÷ # × [0.3] DIGIT ZERO (NU) × [23.03] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0030 × 0020 ÷ 0E01 ÷ # × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0030 × 0308 × 0E01 ÷ # × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [23.03] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -4222,10 +4222,10 @@ × 0028 × 0020 × 00A7 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0028 × 0308 × 00A7 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0028 × 0308 × 0020 × 00A7 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0028 × E000 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [14.0] (XX_AL) ÷ [0.3] -× 0028 × 0020 × E000 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] (XX_AL) ÷ [0.3] -× 0028 × 0308 × E000 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] (XX_AL) ÷ [0.3] -× 0028 × 0308 × 0020 × E000 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] (XX_AL) ÷ [0.3] +× 0028 × 50005 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [14.0] (XX_AL) ÷ [0.3] +× 0028 × 0020 × 50005 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] (XX_AL) ÷ [0.3] +× 0028 × 0308 × 50005 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] (XX_AL) ÷ [0.3] +× 0028 × 0308 × 0020 × 50005 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] (XX_AL) ÷ [0.3] × 0028 × 0E01 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [14.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0028 × 0020 × 0E01 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0028 × 0308 × 0E01 ÷ # × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -4378,10 +4378,10 @@ × 0025 × 0020 ÷ 00A7 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0025 × 0308 × 00A7 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [24.03] SECTION SIGN (AI_AL) ÷ [0.3] × 0025 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0025 × E000 ÷ # × [0.3] PERCENT SIGN (PO) × [24.03] (XX_AL) ÷ [0.3] -× 0025 × 0020 ÷ E000 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0025 × 0308 × E000 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [24.03] (XX_AL) ÷ [0.3] -× 0025 × 0308 × 0020 ÷ E000 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0025 × 50005 ÷ # × [0.3] PERCENT SIGN (PO) × [24.03] (XX_AL) ÷ [0.3] +× 0025 × 0020 ÷ 50005 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0025 × 0308 × 50005 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [24.03] (XX_AL) ÷ [0.3] +× 0025 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0025 × 0E01 ÷ # × [0.3] PERCENT SIGN (PO) × [24.03] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0025 × 0020 ÷ 0E01 ÷ # × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0025 × 0308 × 0E01 ÷ # × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [24.03] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -4534,10 +4534,10 @@ × 0024 × 0020 ÷ 00A7 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0024 × 0308 × 00A7 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [24.02] SECTION SIGN (AI_AL) ÷ [0.3] × 0024 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0024 × E000 ÷ # × [0.3] DOLLAR SIGN (PR) × [24.02] (XX_AL) ÷ [0.3] -× 0024 × 0020 ÷ E000 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0024 × 0308 × E000 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [24.02] (XX_AL) ÷ [0.3] -× 0024 × 0308 × 0020 ÷ E000 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0024 × 50005 ÷ # × [0.3] DOLLAR SIGN (PR) × [24.02] (XX_AL) ÷ [0.3] +× 0024 × 0020 ÷ 50005 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0024 × 0308 × 50005 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [24.02] (XX_AL) ÷ [0.3] +× 0024 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0024 × 0E01 ÷ # × [0.3] DOLLAR SIGN (PR) × [24.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0024 × 0020 ÷ 0E01 ÷ # × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0024 × 0308 × 0E01 ÷ # × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [24.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -4690,10 +4690,10 @@ × 0022 × 0020 ÷ 00A7 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0022 × 0308 × 00A7 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] SECTION SIGN (AI_AL) ÷ [0.3] × 0022 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0022 × E000 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] (XX_AL) ÷ [0.3] -× 0022 × 0020 ÷ E000 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0022 × 0308 × E000 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] (XX_AL) ÷ [0.3] -× 0022 × 0308 × 0020 ÷ E000 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0022 × 50005 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] (XX_AL) ÷ [0.3] +× 0022 × 0020 ÷ 50005 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0022 × 0308 × 50005 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] (XX_AL) ÷ [0.3] +× 0022 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0022 × 0E01 ÷ # × [0.3] QUOTATION MARK (QU) × [19.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0022 × 0020 ÷ 0E01 ÷ # × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0022 × 0308 × 0E01 ÷ # × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -4846,10 +4846,10 @@ × 0020 × 0020 ÷ 00A7 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0020 ÷ 0308 × 00A7 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0020 ÷ 0308 × 0020 ÷ 00A7 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0020 ÷ E000 ÷ # × [0.3] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0020 × 0020 ÷ E000 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0020 ÷ 0308 × E000 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× 0020 ÷ 0308 × 0020 ÷ E000 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0020 ÷ 50005 ÷ # × [0.3] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0020 × 0020 ÷ 50005 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0020 ÷ 0308 × 50005 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 0020 ÷ 0308 × 0020 ÷ 50005 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0020 ÷ 0E01 ÷ # × [0.3] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0020 × 0020 ÷ 0E01 ÷ # × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0020 ÷ 0308 × 0E01 ÷ # × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -4914,9 +4914,9 @@ × 002F × 0020 ÷ AC01 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3] × 002F × 0308 ÷ AC01 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3] × 002F × 0308 × 0020 ÷ AC01 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3] -× 002F ÷ 05D0 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3] +× 002F × 05D0 ÷ # × [0.3] SOLIDUS (SY) × [21.2] HEBREW LETTER ALEF (HL) ÷ [0.3] × 002F × 0020 ÷ 05D0 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3] -× 002F × 0308 ÷ 05D0 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3] +× 002F × 0308 × 05D0 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [21.2] HEBREW LETTER ALEF (HL) ÷ [0.3] × 002F × 0308 × 0020 ÷ 05D0 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3] × 002F × 002D ÷ # × [0.3] SOLIDUS (SY) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3] × 002F × 0020 ÷ 002D ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3] @@ -5002,10 +5002,10 @@ × 002F × 0020 ÷ 00A7 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 002F × 0308 ÷ 00A7 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 002F × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 002F ÷ E000 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] (XX_AL) ÷ [0.3] -× 002F × 0020 ÷ E000 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 002F × 0308 ÷ E000 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 002F × 0308 × 0020 ÷ E000 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 002F ÷ 50005 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] (XX_AL) ÷ [0.3] +× 002F × 0020 ÷ 50005 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 002F × 0308 ÷ 50005 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 002F × 0308 × 0020 ÷ 50005 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 002F ÷ 0E01 ÷ # × [0.3] SOLIDUS (SY) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 002F × 0020 ÷ 0E01 ÷ # × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 002F × 0308 ÷ 0E01 ÷ # × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -5158,10 +5158,10 @@ × 2060 × 0020 ÷ 00A7 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 2060 × 0308 × 00A7 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] SECTION SIGN (AI_AL) ÷ [0.3] × 2060 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 2060 × E000 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] (XX_AL) ÷ [0.3] -× 2060 × 0020 ÷ E000 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 2060 × 0308 × E000 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] (XX_AL) ÷ [0.3] -× 2060 × 0308 × 0020 ÷ E000 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 2060 × 50005 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] (XX_AL) ÷ [0.3] +× 2060 × 0020 ÷ 50005 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 2060 × 0308 × 50005 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] (XX_AL) ÷ [0.3] +× 2060 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 2060 × 0E01 ÷ # × [0.3] WORD JOINER (WJ) × [11.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 2060 × 0020 ÷ 0E01 ÷ # × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 2060 × 0308 × 0E01 ÷ # × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -5314,10 +5314,10 @@ × 200B × 0020 ÷ 00A7 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] SECTION SIGN (AI_AL) ÷ [0.3] × 200B ÷ 0308 × 00A7 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] × 200B ÷ 0308 × 0020 ÷ 00A7 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 200B ÷ E000 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] (XX_AL) ÷ [0.3] -× 200B × 0020 ÷ E000 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] (XX_AL) ÷ [0.3] -× 200B ÷ 0308 × E000 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× 200B ÷ 0308 × 0020 ÷ E000 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 200B ÷ 50005 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] (XX_AL) ÷ [0.3] +× 200B × 0020 ÷ 50005 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] (XX_AL) ÷ [0.3] +× 200B ÷ 0308 × 50005 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 200B ÷ 0308 × 0020 ÷ 50005 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 200B ÷ 0E01 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 200B × 0020 ÷ 0E01 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 200B ÷ 0308 × 0E01 ÷ # × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -5470,10 +5470,10 @@ × 1F1E6 × 0020 ÷ 00A7 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 1F1E6 × 0308 ÷ 00A7 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 1F1E6 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 1F1E6 ÷ E000 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] (XX_AL) ÷ [0.3] -× 1F1E6 × 0020 ÷ E000 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 1F1E6 × 0308 ÷ E000 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 1F1E6 × 0308 × 0020 ÷ E000 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 1F1E6 ÷ 50005 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] (XX_AL) ÷ [0.3] +× 1F1E6 × 0020 ÷ 50005 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 1F1E6 × 0308 ÷ 50005 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 1F1E6 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 1F1E6 ÷ 0E01 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 1F1E6 × 0020 ÷ 0E01 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 1F1E6 × 0308 ÷ 0E01 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -5626,10 +5626,10 @@ × 00A7 × 0020 ÷ 00A7 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 00A7 × 0308 × 00A7 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] × 00A7 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 00A7 × E000 ÷ # × [0.3] SECTION SIGN (AI_AL) × [28.0] (XX_AL) ÷ [0.3] -× 00A7 × 0020 ÷ E000 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 00A7 × 0308 × E000 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× 00A7 × 0308 × 0020 ÷ E000 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 00A7 × 50005 ÷ # × [0.3] SECTION SIGN (AI_AL) × [28.0] (XX_AL) ÷ [0.3] +× 00A7 × 0020 ÷ 50005 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 00A7 × 0308 × 50005 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 00A7 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 00A7 × 0E01 ÷ # × [0.3] SECTION SIGN (AI_AL) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 00A7 × 0020 ÷ 0E01 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 00A7 × 0308 × 0E01 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -5638,162 +5638,162 @@ × 00A7 × 0020 ÷ 3041 ÷ # × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3] × 00A7 × 0308 × 3041 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3] × 00A7 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3] -× E000 × 0023 ÷ # × [0.3] (XX_AL) × [28.0] NUMBER SIGN (AL) ÷ [0.3] -× E000 × 0020 ÷ 0023 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3] -× E000 × 0308 × 0023 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3] -× E000 ÷ 2014 ÷ # × [0.3] (XX_AL) ÷ [999.0] EM DASH (B2) ÷ [0.3] -× E000 × 0020 ÷ 2014 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3] -× E000 × 0308 ÷ 2014 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 2014 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3] -× E000 × 0009 ÷ # × [0.3] (XX_AL) × [21.01] (BA) ÷ [0.3] -× E000 × 0020 ÷ 0009 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] (BA) ÷ [0.3] -× E000 × 0308 × 0009 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.01] (BA) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 0009 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (BA) ÷ [0.3] -× E000 ÷ 00B4 ÷ # × [0.3] (XX_AL) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3] -× E000 × 0020 ÷ 00B4 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3] -× E000 × 0308 ÷ 00B4 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 00B4 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3] -× E000 × 000B ÷ # × [0.3] (XX_AL) × [6.0] (BK) ÷ [0.3] -× E000 × 0020 × 000B ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [6.0] (BK) ÷ [0.3] -× E000 × 0308 × 000B ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] (BK) ÷ [0.3] -× E000 × 0308 × 0020 × 000B ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] (BK) ÷ [0.3] -× E000 ÷ FFFC ÷ # × [0.3] (XX_AL) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3] -× E000 × 0020 ÷ FFFC ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3] -× E000 × 0308 ÷ FFFC ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3] -× E000 × 0308 × 0020 ÷ FFFC ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3] -× E000 × 007D ÷ # × [0.3] (XX_AL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3] -× E000 × 0020 × 007D ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3] -× E000 × 0308 × 007D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3] -× E000 × 0308 × 0020 × 007D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3] -× E000 × 0029 ÷ # × [0.3] (XX_AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3] -× E000 × 0020 × 0029 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3] -× E000 × 0308 × 0029 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3] -× E000 × 0308 × 0020 × 0029 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3] -× E000 × 0001 ÷ # × [0.3] (XX_AL) × [9.0] (CM) ÷ [0.3] -× E000 × 0020 ÷ 0001 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] (CM) ÷ [0.3] -× E000 × 0308 × 0001 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [9.0] (CM) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 0001 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (CM) ÷ [0.3] -× E000 × 000D ÷ # × [0.3] (XX_AL) × [6.0] (CR) ÷ [0.3] -× E000 × 0020 × 000D ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [6.0] (CR) ÷ [0.3] -× E000 × 0308 × 000D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] (CR) ÷ [0.3] -× E000 × 0308 × 0020 × 000D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] (CR) ÷ [0.3] -× E000 × 0021 ÷ # × [0.3] (XX_AL) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3] -× E000 × 0020 × 0021 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3] -× E000 × 0308 × 0021 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3] -× E000 × 0308 × 0020 × 0021 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3] -× E000 × 00A0 ÷ # × [0.3] (XX_AL) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3] -× E000 × 0020 ÷ 00A0 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3] -× E000 × 0308 × 00A0 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 00A0 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3] -× E000 ÷ AC00 ÷ # × [0.3] (XX_AL) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3] -× E000 × 0020 ÷ AC00 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3] -× E000 × 0308 ÷ AC00 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3] -× E000 × 0308 × 0020 ÷ AC00 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3] -× E000 ÷ AC01 ÷ # × [0.3] (XX_AL) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3] -× E000 × 0020 ÷ AC01 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3] -× E000 × 0308 ÷ AC01 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3] -× E000 × 0308 × 0020 ÷ AC01 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3] -× E000 × 05D0 ÷ # × [0.3] (XX_AL) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3] -× E000 × 0020 ÷ 05D0 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3] -× E000 × 0308 × 05D0 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 05D0 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3] -× E000 × 002D ÷ # × [0.3] (XX_AL) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3] -× E000 × 0020 ÷ 002D ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3] -× E000 × 0308 × 002D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 002D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3] -× E000 ÷ 231A ÷ # × [0.3] (XX_AL) ÷ [999.0] WATCH (ID) ÷ [0.3] -× E000 × 0020 ÷ 231A ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] -× E000 × 0308 ÷ 231A ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 231A ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] -× E000 × 2024 ÷ # × [0.3] (XX_AL) × [22.01] ONE DOT LEADER (IN) ÷ [0.3] -× E000 × 0020 ÷ 2024 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] -× E000 × 0308 × 2024 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 2024 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] -× E000 × 002C ÷ # × [0.3] (XX_AL) × [13.02] COMMA (IS) ÷ [0.3] -× E000 × 0020 × 002C ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3] -× E000 × 0308 × 002C ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3] -× E000 × 0308 × 0020 × 002C ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3] -× E000 ÷ 1100 ÷ # × [0.3] (XX_AL) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3] -× E000 × 0020 ÷ 1100 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3] -× E000 × 0308 ÷ 1100 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 1100 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3] -× E000 ÷ 11A8 ÷ # × [0.3] (XX_AL) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3] -× E000 × 0020 ÷ 11A8 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3] -× E000 × 0308 ÷ 11A8 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 11A8 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3] -× E000 ÷ 1160 ÷ # × [0.3] (XX_AL) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3] -× E000 × 0020 ÷ 1160 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3] -× E000 × 0308 ÷ 1160 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 1160 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3] -× E000 × 000A ÷ # × [0.3] (XX_AL) × [6.0] (LF) ÷ [0.3] -× E000 × 0020 × 000A ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [6.0] (LF) ÷ [0.3] -× E000 × 0308 × 000A ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] (LF) ÷ [0.3] -× E000 × 0308 × 0020 × 000A ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] (LF) ÷ [0.3] -× E000 × 0085 ÷ # × [0.3] (XX_AL) × [6.0] (NL) ÷ [0.3] -× E000 × 0020 × 0085 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [6.0] (NL) ÷ [0.3] -× E000 × 0308 × 0085 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] (NL) ÷ [0.3] -× E000 × 0308 × 0020 × 0085 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] (NL) ÷ [0.3] -× E000 × 17D6 ÷ # × [0.3] (XX_AL) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3] -× E000 × 0020 ÷ 17D6 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3] -× E000 × 0308 × 17D6 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 17D6 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3] -× E000 × 0030 ÷ # × [0.3] (XX_AL) × [23.02] DIGIT ZERO (NU) ÷ [0.3] -× E000 × 0020 ÷ 0030 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3] -× E000 × 0308 × 0030 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 0030 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3] -× E000 × 0028 ÷ # × [0.3] (XX_AL) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3] -× E000 × 0020 ÷ 0028 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3] -× E000 × 0308 × 0028 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 0028 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3] -× E000 ÷ 0025 ÷ # × [0.3] (XX_AL) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3] -× E000 × 0020 ÷ 0025 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3] -× E000 × 0308 ÷ 0025 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 0025 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3] -× E000 ÷ 0024 ÷ # × [0.3] (XX_AL) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3] -× E000 × 0020 ÷ 0024 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3] -× E000 × 0308 ÷ 0024 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 0024 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3] -× E000 × 0022 ÷ # × [0.3] (XX_AL) × [19.01] QUOTATION MARK (QU) ÷ [0.3] -× E000 × 0020 ÷ 0022 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3] -× E000 × 0308 × 0022 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 0022 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3] -× E000 × 0020 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [0.3] -× E000 × 0020 × 0020 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3] -× E000 × 0308 × 0020 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3] -× E000 × 0308 × 0020 × 0020 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3] -× E000 × 002F ÷ # × [0.3] (XX_AL) × [13.02] SOLIDUS (SY) ÷ [0.3] -× E000 × 0020 × 002F ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3] -× E000 × 0308 × 002F ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3] -× E000 × 0308 × 0020 × 002F ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3] -× E000 × 2060 ÷ # × [0.3] (XX_AL) × [11.01] WORD JOINER (WJ) ÷ [0.3] -× E000 × 0020 × 2060 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3] -× E000 × 0308 × 2060 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3] -× E000 × 0308 × 0020 × 2060 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3] -× E000 × 200B ÷ # × [0.3] (XX_AL) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3] -× E000 × 0020 × 200B ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3] -× E000 × 0308 × 200B ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3] -× E000 × 0308 × 0020 × 200B ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3] -× E000 ÷ 1F1E6 ÷ # × [0.3] (XX_AL) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -× E000 × 0020 ÷ 1F1E6 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -× E000 × 0308 ÷ 1F1E6 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 1F1E6 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] -× E000 × 00A7 ÷ # × [0.3] (XX_AL) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] -× E000 × 0020 ÷ 00A7 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× E000 × 0308 × 00A7 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× E000 × E000 ÷ # × [0.3] (XX_AL) × [28.0] (XX_AL) ÷ [0.3] -× E000 × 0020 ÷ E000 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× E000 × 0308 × E000 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× E000 × 0308 × 0020 ÷ E000 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× E000 × 0E01 ÷ # × [0.3] (XX_AL) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] -× E000 × 0020 ÷ 0E01 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] -× E000 × 0308 × 0E01 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 0E01 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] -× E000 × 3041 ÷ # × [0.3] (XX_AL) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3] -× E000 × 0020 ÷ 3041 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3] -× E000 × 0308 × 3041 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3] -× E000 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3] +× 50005 × 0023 ÷ # × [0.3] (XX_AL) × [28.0] NUMBER SIGN (AL) ÷ [0.3] +× 50005 × 0020 ÷ 0023 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3] +× 50005 × 0308 × 0023 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 0023 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3] +× 50005 ÷ 2014 ÷ # × [0.3] (XX_AL) ÷ [999.0] EM DASH (B2) ÷ [0.3] +× 50005 × 0020 ÷ 2014 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3] +× 50005 × 0308 ÷ 2014 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 2014 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3] +× 50005 × 0009 ÷ # × [0.3] (XX_AL) × [21.01] (BA) ÷ [0.3] +× 50005 × 0020 ÷ 0009 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] (BA) ÷ [0.3] +× 50005 × 0308 × 0009 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.01] (BA) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 0009 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (BA) ÷ [0.3] +× 50005 ÷ 00B4 ÷ # × [0.3] (XX_AL) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3] +× 50005 × 0020 ÷ 00B4 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3] +× 50005 × 0308 ÷ 00B4 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 00B4 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3] +× 50005 × 000B ÷ # × [0.3] (XX_AL) × [6.0] (BK) ÷ [0.3] +× 50005 × 0020 × 000B ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [6.0] (BK) ÷ [0.3] +× 50005 × 0308 × 000B ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] (BK) ÷ [0.3] +× 50005 × 0308 × 0020 × 000B ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] (BK) ÷ [0.3] +× 50005 ÷ FFFC ÷ # × [0.3] (XX_AL) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3] +× 50005 × 0020 ÷ FFFC ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3] +× 50005 × 0308 ÷ FFFC ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ FFFC ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3] +× 50005 × 007D ÷ # × [0.3] (XX_AL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3] +× 50005 × 0020 × 007D ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3] +× 50005 × 0308 × 007D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3] +× 50005 × 0308 × 0020 × 007D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3] +× 50005 × 0029 ÷ # × [0.3] (XX_AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3] +× 50005 × 0020 × 0029 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3] +× 50005 × 0308 × 0029 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3] +× 50005 × 0308 × 0020 × 0029 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3] +× 50005 × 0001 ÷ # × [0.3] (XX_AL) × [9.0] (CM) ÷ [0.3] +× 50005 × 0020 ÷ 0001 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] (CM) ÷ [0.3] +× 50005 × 0308 × 0001 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [9.0] (CM) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 0001 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (CM) ÷ [0.3] +× 50005 × 000D ÷ # × [0.3] (XX_AL) × [6.0] (CR) ÷ [0.3] +× 50005 × 0020 × 000D ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [6.0] (CR) ÷ [0.3] +× 50005 × 0308 × 000D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] (CR) ÷ [0.3] +× 50005 × 0308 × 0020 × 000D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] (CR) ÷ [0.3] +× 50005 × 0021 ÷ # × [0.3] (XX_AL) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3] +× 50005 × 0020 × 0021 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3] +× 50005 × 0308 × 0021 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3] +× 50005 × 0308 × 0020 × 0021 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3] +× 50005 × 00A0 ÷ # × [0.3] (XX_AL) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3] +× 50005 × 0020 ÷ 00A0 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3] +× 50005 × 0308 × 00A0 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 00A0 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3] +× 50005 ÷ AC00 ÷ # × [0.3] (XX_AL) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3] +× 50005 × 0020 ÷ AC00 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3] +× 50005 × 0308 ÷ AC00 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ AC00 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3] +× 50005 ÷ AC01 ÷ # × [0.3] (XX_AL) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3] +× 50005 × 0020 ÷ AC01 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3] +× 50005 × 0308 ÷ AC01 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ AC01 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3] +× 50005 × 05D0 ÷ # × [0.3] (XX_AL) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3] +× 50005 × 0020 ÷ 05D0 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3] +× 50005 × 0308 × 05D0 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 05D0 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3] +× 50005 × 002D ÷ # × [0.3] (XX_AL) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3] +× 50005 × 0020 ÷ 002D ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3] +× 50005 × 0308 × 002D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 002D ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3] +× 50005 ÷ 231A ÷ # × [0.3] (XX_AL) ÷ [999.0] WATCH (ID) ÷ [0.3] +× 50005 × 0020 ÷ 231A ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] +× 50005 × 0308 ÷ 231A ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 231A ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3] +× 50005 × 2024 ÷ # × [0.3] (XX_AL) × [22.01] ONE DOT LEADER (IN) ÷ [0.3] +× 50005 × 0020 ÷ 2024 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] +× 50005 × 0308 × 2024 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 2024 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3] +× 50005 × 002C ÷ # × [0.3] (XX_AL) × [13.02] COMMA (IS) ÷ [0.3] +× 50005 × 0020 × 002C ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3] +× 50005 × 0308 × 002C ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3] +× 50005 × 0308 × 0020 × 002C ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3] +× 50005 ÷ 1100 ÷ # × [0.3] (XX_AL) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3] +× 50005 × 0020 ÷ 1100 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3] +× 50005 × 0308 ÷ 1100 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 1100 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3] +× 50005 ÷ 11A8 ÷ # × [0.3] (XX_AL) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3] +× 50005 × 0020 ÷ 11A8 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3] +× 50005 × 0308 ÷ 11A8 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 11A8 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3] +× 50005 ÷ 1160 ÷ # × [0.3] (XX_AL) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3] +× 50005 × 0020 ÷ 1160 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3] +× 50005 × 0308 ÷ 1160 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 1160 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3] +× 50005 × 000A ÷ # × [0.3] (XX_AL) × [6.0] (LF) ÷ [0.3] +× 50005 × 0020 × 000A ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [6.0] (LF) ÷ [0.3] +× 50005 × 0308 × 000A ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] (LF) ÷ [0.3] +× 50005 × 0308 × 0020 × 000A ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] (LF) ÷ [0.3] +× 50005 × 0085 ÷ # × [0.3] (XX_AL) × [6.0] (NL) ÷ [0.3] +× 50005 × 0020 × 0085 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [6.0] (NL) ÷ [0.3] +× 50005 × 0308 × 0085 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] (NL) ÷ [0.3] +× 50005 × 0308 × 0020 × 0085 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] (NL) ÷ [0.3] +× 50005 × 17D6 ÷ # × [0.3] (XX_AL) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3] +× 50005 × 0020 ÷ 17D6 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3] +× 50005 × 0308 × 17D6 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 17D6 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3] +× 50005 × 0030 ÷ # × [0.3] (XX_AL) × [23.02] DIGIT ZERO (NU) ÷ [0.3] +× 50005 × 0020 ÷ 0030 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3] +× 50005 × 0308 × 0030 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 0030 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3] +× 50005 × 0028 ÷ # × [0.3] (XX_AL) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3] +× 50005 × 0020 ÷ 0028 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3] +× 50005 × 0308 × 0028 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 0028 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3] +× 50005 ÷ 0025 ÷ # × [0.3] (XX_AL) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3] +× 50005 × 0020 ÷ 0025 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3] +× 50005 × 0308 ÷ 0025 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 0025 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3] +× 50005 ÷ 0024 ÷ # × [0.3] (XX_AL) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3] +× 50005 × 0020 ÷ 0024 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3] +× 50005 × 0308 ÷ 0024 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 0024 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3] +× 50005 × 0022 ÷ # × [0.3] (XX_AL) × [19.01] QUOTATION MARK (QU) ÷ [0.3] +× 50005 × 0020 ÷ 0022 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3] +× 50005 × 0308 × 0022 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 0022 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3] +× 50005 × 0020 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [0.3] +× 50005 × 0020 × 0020 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3] +× 50005 × 0308 × 0020 × 0020 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3] +× 50005 × 002F ÷ # × [0.3] (XX_AL) × [13.02] SOLIDUS (SY) ÷ [0.3] +× 50005 × 0020 × 002F ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3] +× 50005 × 0308 × 002F ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3] +× 50005 × 0308 × 0020 × 002F ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3] +× 50005 × 2060 ÷ # × [0.3] (XX_AL) × [11.01] WORD JOINER (WJ) ÷ [0.3] +× 50005 × 0020 × 2060 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3] +× 50005 × 0308 × 2060 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3] +× 50005 × 0308 × 0020 × 2060 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3] +× 50005 × 200B ÷ # × [0.3] (XX_AL) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3] +× 50005 × 0020 × 200B ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3] +× 50005 × 0308 × 200B ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3] +× 50005 × 0308 × 0020 × 200B ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3] +× 50005 ÷ 1F1E6 ÷ # × [0.3] (XX_AL) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] +× 50005 × 0020 ÷ 1F1E6 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] +× 50005 × 0308 ÷ 1F1E6 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 1F1E6 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] +× 50005 × 00A7 ÷ # × [0.3] (XX_AL) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] +× 50005 × 0020 ÷ 00A7 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] +× 50005 × 0308 × 00A7 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] +× 50005 × 50005 ÷ # × [0.3] (XX_AL) × [28.0] (XX_AL) ÷ [0.3] +× 50005 × 0020 ÷ 50005 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 50005 × 0308 × 50005 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 50005 × 0E01 ÷ # × [0.3] (XX_AL) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] +× 50005 × 0020 ÷ 0E01 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] +× 50005 × 0308 × 0E01 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 0E01 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] +× 50005 × 3041 ÷ # × [0.3] (XX_AL) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3] +× 50005 × 0020 ÷ 3041 ÷ # × [0.3] (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3] +× 50005 × 0308 × 3041 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3] +× 50005 × 0308 × 0020 ÷ 3041 ÷ # × [0.3] (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3] × 0E01 × 0023 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [28.0] NUMBER SIGN (AL) ÷ [0.3] × 0E01 × 0020 ÷ 0023 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3] × 0E01 × 0308 × 0023 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3] @@ -5938,10 +5938,10 @@ × 0E01 × 0020 ÷ 00A7 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0E01 × 0308 × 00A7 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3] × 0E01 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 0E01 × E000 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [28.0] (XX_AL) ÷ [0.3] -× 0E01 × 0020 ÷ E000 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 0E01 × 0308 × E000 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] -× 0E01 × 0308 × 0020 ÷ E000 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0E01 × 50005 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [28.0] (XX_AL) ÷ [0.3] +× 0E01 × 0020 ÷ 50005 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 0E01 × 0308 × 50005 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] (XX_AL) ÷ [0.3] +× 0E01 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 0E01 × 0E01 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0E01 × 0020 ÷ 0E01 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 0E01 × 0308 × 0E01 ÷ # × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -6094,10 +6094,10 @@ × 3041 × 0020 ÷ 00A7 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] × 3041 × 0308 ÷ 00A7 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3] × 3041 × 0308 × 0020 ÷ 00A7 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3] -× 3041 ÷ E000 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] (XX_AL) ÷ [0.3] -× 3041 × 0020 ÷ E000 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] -× 3041 × 0308 ÷ E000 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] -× 3041 × 0308 × 0020 ÷ E000 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 3041 ÷ 50005 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] (XX_AL) ÷ [0.3] +× 3041 × 0020 ÷ 50005 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] +× 3041 × 0308 ÷ 50005 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] (XX_AL) ÷ [0.3] +× 3041 × 0308 × 0020 ÷ 50005 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] (XX_AL) ÷ [0.3] × 3041 ÷ 0E01 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 3041 × 0020 ÷ 0E01 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] × 3041 × 0308 ÷ 0E01 ÷ # × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3] @@ -6297,7 +6297,7 @@ × 672C × 003A × 0020 ÷ # × [0.3] CJK UNIFIED IDEOGRAPH-672C (ID) × [13.02] COLON (IS) × [7.01] SPACE (SP) ÷ [0.3] × 672C × 003A × 0020 ÷ 30AF ÷ # × [0.3] CJK UNIFIED IDEOGRAPH-672C (ID) × [13.02] COLON (IS) × [7.01] SPACE (SP) ÷ [18.0] KATAKANA LETTER KU (ID) ÷ [0.3] × 51FA ÷ 5178 × 003A × 0020 ÷ 30D5 ÷ 30EA × 30FC ÷ 767E ÷ # × [0.3] CJK UNIFIED IDEOGRAPH-51FA (ID) ÷ [999.0] CJK UNIFIED IDEOGRAPH-5178 (ID) × [13.02] COLON (IS) × [7.01] SPACE (SP) ÷ [18.0] KATAKANA LETTER HU (ID) ÷ [999.0] KATAKANA LETTER RI (ID) × [21.03] KATAKANA-HIRAGANA PROLONGED SOUND MARK (CJ_NS) ÷ [999.0] CJK UNIFIED IDEOGRAPH-767E (ID) ÷ [0.3] -× 5F8C × 2026 ÷ 306B ÷ # × [0.3] CJK UNIFIED IDEOGRAPH-5F8C (ID) × [22.02] HORIZONTAL ELLIPSIS (IN) ÷ [999.0] HIRAGANA LETTER NI (ID) ÷ [0.3] +× 5F8C × 2026 ÷ 306B ÷ # × [0.3] CJK UNIFIED IDEOGRAPH-5F8C (ID) × [22.03] HORIZONTAL ELLIPSIS (IN) ÷ [999.0] HIRAGANA LETTER NI (ID) ÷ [0.3] × 3057 × 3087 ÷ 3046 × 3002 × 3002 × 3002 ÷ # × [0.3] HIRAGANA LETTER SI (ID) × [21.03] HIRAGANA LETTER SMALL YO (CJ_NS) ÷ [999.0] HIRAGANA LETTER U (ID) × [13.02] IDEOGRAPHIC FULL STOP (CL) × [13.02] IDEOGRAPHIC FULL STOP (CL) × [13.02] IDEOGRAPHIC FULL STOP (CL) ÷ [0.3] × 304D × 3001 × 0021 × 0021 × 3001 × 0021 × 0021 × 0021 ÷ 3068 ÷ # × [0.3] HIRAGANA LETTER KI (ID) × [13.02] IDEOGRAPHIC COMMA (CL) × [13.01] EXCLAMATION MARK (EX) × [13.01] EXCLAMATION MARK (EX) × [13.02] IDEOGRAPHIC COMMA (CL) × [13.01] EXCLAMATION MARK (EX) × [13.01] EXCLAMATION MARK (EX) × [13.01] EXCLAMATION MARK (EX) ÷ [999.0] HIRAGANA LETTER TO (ID) ÷ [0.3] × 306F × 3001 × 003F ÷ 3068 × 0021 ÷ 3092 ÷ # × [0.3] HIRAGANA LETTER HA (ID) × [13.02] IDEOGRAPHIC COMMA (CL) × [13.01] QUESTION MARK (EX) ÷ [999.0] HIRAGANA LETTER TO (ID) × [13.01] EXCLAMATION MARK (EX) ÷ [999.0] HIRAGANA LETTER WO (ID) ÷ [0.3] @@ -6327,12 +6327,13 @@ × 1F1F7 × 1F1FA × 1F1F8 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER S (RI) ÷ [0.3] × 1F1F7 × 1F1FA × 1F1F8 × 1F1EA ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER S (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER E (RI) ÷ [0.3] × 1F1F7 × 1F1FA × 200B ÷ 1F1F8 × 1F1EA ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [8.0] REGIONAL INDICATOR SYMBOL LETTER S (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER E (RI) ÷ [0.3] +× 05D0 × 002D × 05D0 ÷ # × [0.3] HEBREW LETTER ALEF (HL) × [21.02] HYPHEN-MINUS (HY) × [21.1] HEBREW LETTER ALEF (HL) ÷ [0.3] × 1F1E6 × 1F1E7 × 1F1E8 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [0.3] × 1F1E6 × 200D × 1F1E7 × 1F1E8 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (CM) × [30.11] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [0.3] × 1F1E6 × 1F1E7 × 200D × 1F1E8 ÷ # × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [9.0] ZERO WIDTH JOINER (CM) × [30.11] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [0.3] × 0020 ÷ 200D × 0646 ÷ # × [0.3] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (CM) × [28.0] ARABIC LETTER NOON (AL) ÷ [0.3] × 0646 × 200D × 0020 ÷ # × [0.3] ARABIC LETTER NOON (AL) × [9.0] ZERO WIDTH JOINER (CM) × [7.01] SPACE (SP) ÷ [0.3] # -# Lines: 6310 +# Lines: 6311 # # EOF diff --git a/tests/auto/corelib/tools/qtextboundaryfinder/data/SentenceBreakTest.txt b/tests/auto/corelib/tools/qtextboundaryfinder/data/SentenceBreakTest.txt index 638b22a378..279e6db06d 100644 --- a/tests/auto/corelib/tools/qtextboundaryfinder/data/SentenceBreakTest.txt +++ b/tests/auto/corelib/tools/qtextboundaryfinder/data/SentenceBreakTest.txt @@ -1,8 +1,8 @@ -# SentenceBreakTest-7.0.0.txt -# Date: 2013-11-27, 09:54:53 GMT [MD] +# SentenceBreakTest-8.0.0.txt +# Date: 2015-04-30, 09:40:15 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2013 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ # @@ -477,6 +477,9 @@ ÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3] ÷ 0033 × 002E × 0034 ÷ # ÷ [0.2] DIGIT THREE (Numeric) × [12.0] FULL STOP (ATerm) × [6.0] DIGIT FOUR (Numeric) ÷ [0.3] ÷ 0063 × 002E × 0064 ÷ # ÷ [0.2] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3] +÷ 0043 × 002E × 0064 ÷ # ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [12.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3] +÷ 0063 × 002E × 0044 ÷ # ÷ [0.2] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3] +÷ 0043 × 002E × 0044 ÷ # ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 ÷ 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 2018 × 0028 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [12.0] LEFT PARENTHESIS (Close) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3] @@ -490,6 +493,7 @@ ÷ 0065 × 0074 × 0063 × 002E ÷ 5B83 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3] ÷ 0065 × 0074 × 0063 × 002E × 3002 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [8.1] IDEOGRAPHIC FULL STOP (STerm) ÷ [0.3] ÷ 5B57 × 3002 ÷ 5B83 ÷ # ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [12.0] IDEOGRAPHIC FULL STOP (STerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3] +÷ 0021 × 0020 × 0020 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] SPACE (Sp) × [10.0] SPACE (Sp) ÷ [0.3] ÷ 2060 × 0028 × 2060 × 0022 × 2060 × 0047 × 2060 × 006F × 2060 × 002E × 2060 × 0022 × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0028 × 2060 × 201C × 2060 × 0047 × 2060 × 006F × 2060 × 003F × 2060 × 201D × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LEFT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 0020 × 2060 × 0069 × 2060 × 0073 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] @@ -497,6 +501,9 @@ ÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0033 × 2060 × 002E × 2060 × 0034 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] DIGIT THREE (Numeric) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [6.0] DIGIT FOUR (Numeric) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0063 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] +÷ 2060 × 0043 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] +÷ 2060 × 0063 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] +÷ 2060 × 0043 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 2018 × 2060 × 0028 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] @@ -510,12 +517,13 @@ ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 ÷ 5B83 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 3002 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.1] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 × 5B57 × 2060 × 3002 × 2060 ÷ 5B83 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [12.0] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] +÷ 2060 × 0021 × 2060 × 0020 × 2060 × 0020 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [12.0] EXCLAMATION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [10.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 1F1E6 × 1F1E7 × 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Other) × [12.0] REGIONAL INDICATOR SYMBOL LETTER B (Other) × [12.0] REGIONAL INDICATOR SYMBOL LETTER C (Other) ÷ [0.3] ÷ 1F1E6 × 200D × 1F1E7 × 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Other) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [12.0] REGIONAL INDICATOR SYMBOL LETTER B (Other) × [12.0] REGIONAL INDICATOR SYMBOL LETTER C (Other) ÷ [0.3] ÷ 1F1E6 × 1F1E7 × 200D × 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Other) × [12.0] REGIONAL INDICATOR SYMBOL LETTER B (Other) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [12.0] REGIONAL INDICATOR SYMBOL LETTER C (Other) ÷ [0.3] ÷ 0020 × 200D × 0646 ÷ # ÷ [0.2] SPACE (Sp) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [12.0] ARABIC LETTER NOON (OLetter) ÷ [0.3] ÷ 0646 × 200D × 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (OLetter) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [12.0] SPACE (Sp) ÷ [0.3] # -# Lines: 495 +# Lines: 503 # # EOF diff --git a/tests/auto/corelib/tools/qtextboundaryfinder/data/WordBreakTest.txt b/tests/auto/corelib/tools/qtextboundaryfinder/data/WordBreakTest.txt index 1f812f63bf..7e163f1e41 100644 --- a/tests/auto/corelib/tools/qtextboundaryfinder/data/WordBreakTest.txt +++ b/tests/auto/corelib/tools/qtextboundaryfinder/data/WordBreakTest.txt @@ -1,8 +1,8 @@ -# WordBreakTest-7.0.0.txt -# Date: 2013-11-27, 09:54:53 GMT [MD] +# WordBreakTest-8.0.0.txt +# Date: 2015-05-02, 14:48:55 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2013 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ # @@ -1377,22 +1377,139 @@ ÷ 0061 × 0062 × 00AD × 0062 × 0079 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER B (ALetter) × [4.0] SOFT HYPHEN (Format_FE) × [5.0] LATIN SMALL LETTER B (ALetter) × [5.0] LATIN SMALL LETTER Y (ALetter) ÷ [0.3] ÷ 0061 ÷ 0024 ÷ 002D ÷ 0033 × 0034 × 002C × 0035 × 0036 × 0037 × 002E × 0031 × 0034 ÷ 0025 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] DOLLAR SIGN (Other) ÷ [999.0] HYPHEN-MINUS (Other) ÷ [999.0] DIGIT THREE (Numeric) × [8.0] DIGIT FOUR (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT FIVE (Numeric) × [8.0] DIGIT SIX (Numeric) × [8.0] DIGIT SEVEN (Numeric) × [12.0] FULL STOP (MidNumLet) × [11.0] DIGIT ONE (Numeric) × [8.0] DIGIT FOUR (Numeric) ÷ [999.0] PERCENT SIGN (Other) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3] ÷ 0033 × 0061 ÷ # ÷ [0.2] DIGIT THREE (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0063 × 002E × 0064 ÷ # ÷ [0.2] LATIN SMALL LETTER C (ALetter) × [6.0] FULL STOP (MidNumLet) × [7.0] LATIN SMALL LETTER D (ALetter) ÷ [0.3] +÷ 0043 × 002E × 0064 ÷ # ÷ [0.2] LATIN CAPITAL LETTER C (ALetter) × [6.0] FULL STOP (MidNumLet) × [7.0] LATIN SMALL LETTER D (ALetter) ÷ [0.3] +÷ 0063 × 002E × 0044 ÷ # ÷ [0.2] LATIN SMALL LETTER C (ALetter) × [6.0] FULL STOP (MidNumLet) × [7.0] LATIN CAPITAL LETTER D (ALetter) ÷ [0.3] +÷ 0043 × 002E × 0044 ÷ # ÷ [0.2] LATIN CAPITAL LETTER C (ALetter) × [6.0] FULL STOP (MidNumLet) × [7.0] LATIN CAPITAL LETTER D (ALetter) ÷ [0.3] ÷ 2060 ÷ 0063 × 2060 × 0061 × 2060 × 006E × 2060 × 0027 × 2060 × 0074 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER N (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER T (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 ÷ 0063 × 2060 × 0061 × 2060 × 006E × 2060 × 2019 × 2060 × 0074 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER N (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] RIGHT SINGLE QUOTATION MARK (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER T (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 ÷ 0061 × 2060 × 0062 × 2060 × 00AD × 2060 × 0062 × 2060 × 0079 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER Y (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 ÷ 0061 × 2060 ÷ 0024 × 2060 ÷ 002D × 2060 ÷ 0033 × 2060 × 0034 × 2060 × 002C × 2060 × 0035 × 2060 × 0036 × 2060 × 0037 × 2060 × 002E × 2060 × 0031 × 2060 × 0034 × 2060 ÷ 0025 × 2060 ÷ 0062 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] DOLLAR SIGN (Other) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HYPHEN-MINUS (Other) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] DIGIT THREE (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT FOUR (Numeric) × [4.0] WORD JOINER (Format_FE) × [12.0] COMMA (MidNum) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT FIVE (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT SIX (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT SEVEN (Numeric) × [4.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT ONE (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT FOUR (Numeric) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] PERCENT SIGN (Other) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 2060 ÷ 0033 × 2060 × 0061 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] DIGIT THREE (Numeric) × [4.0] WORD JOINER (Format_FE) × [10.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] +÷ 2060 ÷ 0063 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER D (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] +÷ 2060 ÷ 0043 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN CAPITAL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER D (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] +÷ 2060 ÷ 0063 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] +÷ 2060 ÷ 0043 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN CAPITAL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3] ÷ 0061 ÷ 1F1E6 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3] ÷ 1F1F7 × 1F1FA ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) ÷ [0.3] ÷ 1F1F7 × 1F1FA × 1F1F8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) ÷ [0.3] ÷ 1F1F7 × 1F1FA × 1F1F8 × 1F1EA ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER E (Regional_Indicator) ÷ [0.3] ÷ 1F1F7 × 1F1FA ÷ 200B ÷ 1F1F8 × 1F1EA ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) ÷ [999.0] ZERO WIDTH SPACE (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER E (Regional_Indicator) ÷ [0.3] +÷ 05D0 × 0022 × 05D0 ÷ # ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [7.2] QUOTATION MARK (Double_Quote) × [7.3] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3] ÷ 1F1E6 × 1F1E7 × 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3] ÷ 1F1E6 × 200D × 1F1E7 × 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] ZERO WIDTH JOINER (Extend_FE) × [13.3] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3] ÷ 1F1E6 × 1F1E7 × 200D × 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [4.0] ZERO WIDTH JOINER (Extend_FE) × [13.3] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3] ÷ 0020 × 200D ÷ 0646 ÷ # ÷ [0.2] SPACE (Other) × [4.0] ZERO WIDTH JOINER (Extend_FE) ÷ [999.0] ARABIC LETTER NOON (ALetter) ÷ [0.3] ÷ 0646 × 200D ÷ 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (ALetter) × [4.0] ZERO WIDTH JOINER (Extend_FE) ÷ [999.0] SPACE (Other) ÷ [0.3] +÷ 0031 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0031 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0031 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0031 × 005F × 0061 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 003A ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 003A ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 003A ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 003A ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 003A ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 003A ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002E ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002E ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002E ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002E ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002E ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002E ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002C ÷ 003A ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002C ÷ 003A ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002C ÷ 002E ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002C ÷ 002E ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002C ÷ 002C ÷ 0031 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3] +÷ 0061 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0031 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] +÷ 0061 × 005F × 0061 ÷ 002C ÷ 002C ÷ 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3] # -# Lines: 1372 +# Lines: 1489 # # EOF diff --git a/util/unicode/data/ArabicShaping.txt b/util/unicode/data/ArabicShaping.txt index fe653fca97..b0e5b5b7af 100644 --- a/util/unicode/data/ArabicShaping.txt +++ b/util/unicode/data/ArabicShaping.txt @@ -1,5 +1,5 @@ -# ArabicShaping-7.0.0.txt -# Date: 2014-02-14, 21:00:00 GMT [RP, KW, LI] +# ArabicShaping-8.0.0.txt +# Date: 2015-02-17, 23:33:00 GMT [RP] # # This file is a normative contributory data file in the # Unicode Character Database. @@ -7,16 +7,17 @@ # Copyright (c) 1991-2014 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # -# This file defines the Joining_Type and Joining_Group property values for -# Arabic, Syriac, N'Ko, Mandaic, Manichaean, and Psalter Pahlavi positional -# shaping, repeating in machine readable form the information exemplified in -# Tables 9-3, 9-8, 9-9, 9-10, 9-14, 9-15, 9-16, 9-19, 9-20, 10-XX, 19-5 of The -# Unicode Standard, Version 7.0. This file also defines Joining_Type values -# for Mongolian and Phags-pa positional shaping, which are not listed in -# tables in the standard. +# This file defines the Joining_Type and Joining_Group property +# values for Arabic, Syriac, N'Ko, Mandaic, and Manichaean positional +# shaping, repeating in machine readable form the information +# exemplified in Tables 9-3, 9-8, 9-9, 9-10, 9-14, 9-15, 9-16, 9-19, +# 9-20, 10-4, 10-5, 10-6, 10-7, and 19-5 of The Unicode Standard core +# specification. This file also defines Joining_Type values for +# Mongolian, Phags-pa, and Psalter Pahlavi positional shaping, which +# are not listed in tables in the standard. # # See Sections 9.2, 9.3, 9.5, 10.5, 10.6, 13.4, 14.3, 19.4 of -# The Unicode Standard, Version 7.0 for more information. +# The Unicode Standard core specification for more information. # # Each line contains four fields, separated by a semicolon. # @@ -72,14 +73,15 @@ # no longer applies to its namesake character, U+06C2. # See PropertyValueAliases.txt. # -# When other cursive scripts are added to the Unicode Standard in -# the future, the joining group value of all its letters will default -# to jg=No_Joining_Group in this data file. Other, more specific +# When other cursive scripts are added to the Unicode Standard in the +# future, the joining group value of all its letters will default to +# jg=No_Joining_Group in this data file. Other, more specific # joining group values will be defined only if an explicit proposal # to define those values exactly has been approved by the UTC. This # is the convention exemplified by the N'Ko, Mandaic, Mongolian, -# and Phags-pa scripts. Only the Arabic and Syriac scripts -# currently have explicit joining group values defined. +# Phags-pa, and Psalter Pahlavi scripts. Only the Arabic, +# Manichaean, and Syriac scripts currently have explicit joining +# group values defined. # # Note: Code points that are not explicitly listed in this file are # either of joining type T or U: @@ -392,7 +394,7 @@ 0844; MANDAIC AH; D; No_Joining_Group 0845; MANDAIC USHENNA; D; No_Joining_Group 0846; MANDAIC AZ; R; No_Joining_Group -0847; MANDAIC IT; D; No_Joining_Group +0847; MANDAIC IT; R; No_Joining_Group 0848; MANDAIC ATT; D; No_Joining_Group 0849; MANDAIC AKSA; R; No_Joining_Group 084A; MANDAIC AK; D; No_Joining_Group @@ -400,7 +402,7 @@ 084C; MANDAIC AM; D; No_Joining_Group 084D; MANDAIC AN; D; No_Joining_Group 084E; MANDAIC AS; D; No_Joining_Group -084F; MANDAIC IN; R; No_Joining_Group +084F; MANDAIC IN; D; No_Joining_Group 0850; MANDAIC AP; D; No_Joining_Group 0851; MANDAIC ASZ; D; No_Joining_Group 0852; MANDAIC AQ; D; No_Joining_Group @@ -432,6 +434,8 @@ 08B0; KEHEH WITH STROKE BELOW; D; GAF 08B1; STRAIGHT WAW; R; STRAIGHT WAW 08B2; REH WITH DOT AND INVERTED V ABOVE; R; REH +08B3; AIN WITH 3 DOTS BELOW; D; AIN +08B4; KAF WITH DOT BELOW; D; KAF # Mongolian Characters diff --git a/util/unicode/data/BidiMirroring.txt b/util/unicode/data/BidiMirroring.txt index b1f7386d67..fbc60f1ab6 100644 --- a/util/unicode/data/BidiMirroring.txt +++ b/util/unicode/data/BidiMirroring.txt @@ -1,19 +1,19 @@ -# BidiMirroring-7.0.0.txt -# Date: 2013-12-17, 00:00:00 GMT [KW, LI] +# BidiMirroring-8.0.0.txt +# Date: 2015-01-20, 18:30:00 GMT [KW, LI] # # Bidi_Mirroring_Glyph Property # # This file is an informative contributory data file in the # Unicode Character Database. # -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # # This data file lists characters that have the Bidi_Mirrored=Yes property # value, for which there is another Unicode character that typically has a glyph # that is the mirror image of the original character's glyph. # -# The repertoire covered by the file is Unicode 7.0.0. +# The repertoire covered by the file is Unicode 8.0.0. # # The file contains a list of lines with mappings from one code point # to another one for character-based mirroring. @@ -42,7 +42,7 @@ # # This file was originally created by Markus Scherer. # Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler, -# and for Unicode 6.1, 6.2, 6.3, and 7.0 by Ken Whistler and Laurentiu Iancu. +# and for subsequent versions by Ken Whistler and Laurentiu Iancu. # # ############################################################ # diff --git a/util/unicode/data/Blocks.txt b/util/unicode/data/Blocks.txt index 3653af7a47..0a4a580763 100644 --- a/util/unicode/data/Blocks.txt +++ b/util/unicode/data/Blocks.txt @@ -1,14 +1,11 @@ -# Blocks-7.0.0.txt -# Date: 2014-04-03, 23:23:00 GMT [RP, KW] +# Blocks-8.0.0.txt +# Date: 2014-11-10, 23:04:00 GMT [KW] # # Unicode Character Database # Copyright (c) 1991-2014 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ # -# Note: The casing of block names is not normative. -# For example, "Basic Latin" and "BASIC LATIN" are equivalent. -# # Format: # Start Code..End Code; Block Name @@ -20,6 +17,14 @@ # For more information on the comparison of property values, # see UAX #44: http://www.unicode.org/reports/tr44/ # +# All block ranges start with a value where (cp MOD 16) = 0, +# and end with a value where (cp MOD 16) = 15. In other words, +# the last hexadecimal digit of the start of range is ...0 +# and the last hexadecimal digit of the end of range is ...F. +# This constraint on block ranges guarantees that allocations +# are done in terms of whole columns, and that code chart display +# never involves splitting columns in the charts. +# # All code points not explicitly listed for Block # have the value No_Block. @@ -168,6 +173,7 @@ AA80..AADF; Tai Viet AAE0..AAFF; Meetei Mayek Extensions AB00..AB2F; Ethiopic Extended-A AB30..AB6F; Latin Extended-E +AB70..ABBF; Cherokee Supplement ABC0..ABFF; Meetei Mayek AC00..D7AF; Hangul Syllables D7B0..D7FF; Hangul Jamo Extended-B @@ -210,6 +216,7 @@ FFF0..FFFF; Specials 10840..1085F; Imperial Aramaic 10860..1087F; Palmyrene 10880..108AF; Nabataean +108E0..108FF; Hatran 10900..1091F; Phoenician 10920..1093F; Lydian 10980..1099F; Meroitic Hieroglyphs @@ -223,6 +230,7 @@ FFF0..FFFF; Specials 10B60..10B7F; Inscriptional Pahlavi 10B80..10BAF; Psalter Pahlavi 10C00..10C4F; Old Turkic +10C80..10CFF; Old Hungarian 10E60..10E7F; Rumi Numeral Symbols 11000..1107F; Brahmi 11080..110CF; Kaithi @@ -232,17 +240,21 @@ FFF0..FFFF; Specials 11180..111DF; Sharada 111E0..111FF; Sinhala Archaic Numbers 11200..1124F; Khojki +11280..112AF; Multani 112B0..112FF; Khudawadi 11300..1137F; Grantha 11480..114DF; Tirhuta 11580..115FF; Siddham 11600..1165F; Modi 11680..116CF; Takri +11700..1173F; Ahom 118A0..118FF; Warang Citi 11AC0..11AFF; Pau Cin Hau 12000..123FF; Cuneiform 12400..1247F; Cuneiform Numbers and Punctuation +12480..1254F; Early Dynastic Cuneiform 13000..1342F; Egyptian Hieroglyphs +14400..1467F; Anatolian Hieroglyphs 16800..16A3F; Bamum Supplement 16A40..16A6F; Mro 16AD0..16AFF; Bassa Vah @@ -257,6 +269,7 @@ FFF0..FFFF; Specials 1D300..1D35F; Tai Xuan Jing Symbols 1D360..1D37F; Counting Rod Numerals 1D400..1D7FF; Mathematical Alphanumeric Symbols +1D800..1DAAF; Sutton SignWriting 1E800..1E8DF; Mende Kikakui 1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols 1F000..1F02F; Mahjong Tiles @@ -271,9 +284,11 @@ FFF0..FFFF; Specials 1F700..1F77F; Alchemical Symbols 1F780..1F7FF; Geometric Shapes Extended 1F800..1F8FF; Supplemental Arrows-C +1F900..1F9FF; Supplemental Symbols and Pictographs 20000..2A6DF; CJK Unified Ideographs Extension B 2A700..2B73F; CJK Unified Ideographs Extension C 2B740..2B81F; CJK Unified Ideographs Extension D +2B820..2CEAF; CJK Unified Ideographs Extension E 2F800..2FA1F; CJK Compatibility Ideographs Supplement E0000..E007F; Tags E0100..E01EF; Variation Selectors Supplement diff --git a/util/unicode/data/CaseFolding.txt b/util/unicode/data/CaseFolding.txt index 13c10a6c48..0197a6c40f 100644 --- a/util/unicode/data/CaseFolding.txt +++ b/util/unicode/data/CaseFolding.txt @@ -1,8 +1,8 @@ -# CaseFolding-7.0.0.txt -# Date: 2014-04-09, 20:00:56 GMT [MD] +# CaseFolding-8.0.0.txt +# Date: 2015-01-13, 18:16:36 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ # @@ -587,6 +587,12 @@ 10C5; C; 2D25; # GEORGIAN CAPITAL LETTER HOE 10C7; C; 2D27; # GEORGIAN CAPITAL LETTER YN 10CD; C; 2D2D; # GEORGIAN CAPITAL LETTER AEN +13F8; C; 13F0; # CHEROKEE SMALL LETTER YE +13F9; C; 13F1; # CHEROKEE SMALL LETTER YI +13FA; C; 13F2; # CHEROKEE SMALL LETTER YO +13FB; C; 13F3; # CHEROKEE SMALL LETTER YU +13FC; C; 13F4; # CHEROKEE SMALL LETTER YV +13FD; C; 13F5; # CHEROKEE SMALL LETTER MV 1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW 1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE 1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW @@ -1159,6 +1165,90 @@ A7AC; C; 0261; # LATIN CAPITAL LETTER SCRIPT G A7AD; C; 026C; # LATIN CAPITAL LETTER L WITH BELT A7B0; C; 029E; # LATIN CAPITAL LETTER TURNED K A7B1; C; 0287; # LATIN CAPITAL LETTER TURNED T +A7B2; C; 029D; # LATIN CAPITAL LETTER J WITH CROSSED-TAIL +A7B3; C; AB53; # LATIN CAPITAL LETTER CHI +A7B4; C; A7B5; # LATIN CAPITAL LETTER BETA +A7B6; C; A7B7; # LATIN CAPITAL LETTER OMEGA +AB70; C; 13A0; # CHEROKEE SMALL LETTER A +AB71; C; 13A1; # CHEROKEE SMALL LETTER E +AB72; C; 13A2; # CHEROKEE SMALL LETTER I +AB73; C; 13A3; # CHEROKEE SMALL LETTER O +AB74; C; 13A4; # CHEROKEE SMALL LETTER U +AB75; C; 13A5; # CHEROKEE SMALL LETTER V +AB76; C; 13A6; # CHEROKEE SMALL LETTER GA +AB77; C; 13A7; # CHEROKEE SMALL LETTER KA +AB78; C; 13A8; # CHEROKEE SMALL LETTER GE +AB79; C; 13A9; # CHEROKEE SMALL LETTER GI +AB7A; C; 13AA; # CHEROKEE SMALL LETTER GO +AB7B; C; 13AB; # CHEROKEE SMALL LETTER GU +AB7C; C; 13AC; # CHEROKEE SMALL LETTER GV +AB7D; C; 13AD; # CHEROKEE SMALL LETTER HA +AB7E; C; 13AE; # CHEROKEE SMALL LETTER HE +AB7F; C; 13AF; # CHEROKEE SMALL LETTER HI +AB80; C; 13B0; # CHEROKEE SMALL LETTER HO +AB81; C; 13B1; # CHEROKEE SMALL LETTER HU +AB82; C; 13B2; # CHEROKEE SMALL LETTER HV +AB83; C; 13B3; # CHEROKEE SMALL LETTER LA +AB84; C; 13B4; # CHEROKEE SMALL LETTER LE +AB85; C; 13B5; # CHEROKEE SMALL LETTER LI +AB86; C; 13B6; # CHEROKEE SMALL LETTER LO +AB87; C; 13B7; # CHEROKEE SMALL LETTER LU +AB88; C; 13B8; # CHEROKEE SMALL LETTER LV +AB89; C; 13B9; # CHEROKEE SMALL LETTER MA +AB8A; C; 13BA; # CHEROKEE SMALL LETTER ME +AB8B; C; 13BB; # CHEROKEE SMALL LETTER MI +AB8C; C; 13BC; # CHEROKEE SMALL LETTER MO +AB8D; C; 13BD; # CHEROKEE SMALL LETTER MU +AB8E; C; 13BE; # CHEROKEE SMALL LETTER NA +AB8F; C; 13BF; # CHEROKEE SMALL LETTER HNA +AB90; C; 13C0; # CHEROKEE SMALL LETTER NAH +AB91; C; 13C1; # CHEROKEE SMALL LETTER NE +AB92; C; 13C2; # CHEROKEE SMALL LETTER NI +AB93; C; 13C3; # CHEROKEE SMALL LETTER NO +AB94; C; 13C4; # CHEROKEE SMALL LETTER NU +AB95; C; 13C5; # CHEROKEE SMALL LETTER NV +AB96; C; 13C6; # CHEROKEE SMALL LETTER QUA +AB97; C; 13C7; # CHEROKEE SMALL LETTER QUE +AB98; C; 13C8; # CHEROKEE SMALL LETTER QUI +AB99; C; 13C9; # CHEROKEE SMALL LETTER QUO +AB9A; C; 13CA; # CHEROKEE SMALL LETTER QUU +AB9B; C; 13CB; # CHEROKEE SMALL LETTER QUV +AB9C; C; 13CC; # CHEROKEE SMALL LETTER SA +AB9D; C; 13CD; # CHEROKEE SMALL LETTER S +AB9E; C; 13CE; # CHEROKEE SMALL LETTER SE +AB9F; C; 13CF; # CHEROKEE SMALL LETTER SI +ABA0; C; 13D0; # CHEROKEE SMALL LETTER SO +ABA1; C; 13D1; # CHEROKEE SMALL LETTER SU +ABA2; C; 13D2; # CHEROKEE SMALL LETTER SV +ABA3; C; 13D3; # CHEROKEE SMALL LETTER DA +ABA4; C; 13D4; # CHEROKEE SMALL LETTER TA +ABA5; C; 13D5; # CHEROKEE SMALL LETTER DE +ABA6; C; 13D6; # CHEROKEE SMALL LETTER TE +ABA7; C; 13D7; # CHEROKEE SMALL LETTER DI +ABA8; C; 13D8; # CHEROKEE SMALL LETTER TI +ABA9; C; 13D9; # CHEROKEE SMALL LETTER DO +ABAA; C; 13DA; # CHEROKEE SMALL LETTER DU +ABAB; C; 13DB; # CHEROKEE SMALL LETTER DV +ABAC; C; 13DC; # CHEROKEE SMALL LETTER DLA +ABAD; C; 13DD; # CHEROKEE SMALL LETTER TLA +ABAE; C; 13DE; # CHEROKEE SMALL LETTER TLE +ABAF; C; 13DF; # CHEROKEE SMALL LETTER TLI +ABB0; C; 13E0; # CHEROKEE SMALL LETTER TLO +ABB1; C; 13E1; # CHEROKEE SMALL LETTER TLU +ABB2; C; 13E2; # CHEROKEE SMALL LETTER TLV +ABB3; C; 13E3; # CHEROKEE SMALL LETTER TSA +ABB4; C; 13E4; # CHEROKEE SMALL LETTER TSE +ABB5; C; 13E5; # CHEROKEE SMALL LETTER TSI +ABB6; C; 13E6; # CHEROKEE SMALL LETTER TSO +ABB7; C; 13E7; # CHEROKEE SMALL LETTER TSU +ABB8; C; 13E8; # CHEROKEE SMALL LETTER TSV +ABB9; C; 13E9; # CHEROKEE SMALL LETTER WA +ABBA; C; 13EA; # CHEROKEE SMALL LETTER WE +ABBB; C; 13EB; # CHEROKEE SMALL LETTER WI +ABBC; C; 13EC; # CHEROKEE SMALL LETTER WO +ABBD; C; 13ED; # CHEROKEE SMALL LETTER WU +ABBE; C; 13EE; # CHEROKEE SMALL LETTER WV +ABBF; C; 13EF; # CHEROKEE SMALL LETTER YA FB00; F; 0066 0066; # LATIN SMALL LIGATURE FF FB01; F; 0066 0069; # LATIN SMALL LIGATURE FI FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL @@ -1237,6 +1327,57 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z 10425; C; 1044D; # DESERET CAPITAL LETTER ENG 10426; C; 1044E; # DESERET CAPITAL LETTER OI 10427; C; 1044F; # DESERET CAPITAL LETTER EW +10C80; C; 10CC0; # OLD HUNGARIAN CAPITAL LETTER A +10C81; C; 10CC1; # OLD HUNGARIAN CAPITAL LETTER AA +10C82; C; 10CC2; # OLD HUNGARIAN CAPITAL LETTER EB +10C83; C; 10CC3; # OLD HUNGARIAN CAPITAL LETTER AMB +10C84; C; 10CC4; # OLD HUNGARIAN CAPITAL LETTER EC +10C85; C; 10CC5; # OLD HUNGARIAN CAPITAL LETTER ENC +10C86; C; 10CC6; # OLD HUNGARIAN CAPITAL LETTER ECS +10C87; C; 10CC7; # OLD HUNGARIAN CAPITAL LETTER ED +10C88; C; 10CC8; # OLD HUNGARIAN CAPITAL LETTER AND +10C89; C; 10CC9; # OLD HUNGARIAN CAPITAL LETTER E +10C8A; C; 10CCA; # OLD HUNGARIAN CAPITAL LETTER CLOSE E +10C8B; C; 10CCB; # OLD HUNGARIAN CAPITAL LETTER EE +10C8C; C; 10CCC; # OLD HUNGARIAN CAPITAL LETTER EF +10C8D; C; 10CCD; # OLD HUNGARIAN CAPITAL LETTER EG +10C8E; C; 10CCE; # OLD HUNGARIAN CAPITAL LETTER EGY +10C8F; C; 10CCF; # OLD HUNGARIAN CAPITAL LETTER EH +10C90; C; 10CD0; # OLD HUNGARIAN CAPITAL LETTER I +10C91; C; 10CD1; # OLD HUNGARIAN CAPITAL LETTER II +10C92; C; 10CD2; # OLD HUNGARIAN CAPITAL LETTER EJ +10C93; C; 10CD3; # OLD HUNGARIAN CAPITAL LETTER EK +10C94; C; 10CD4; # OLD HUNGARIAN CAPITAL LETTER AK +10C95; C; 10CD5; # OLD HUNGARIAN CAPITAL LETTER UNK +10C96; C; 10CD6; # OLD HUNGARIAN CAPITAL LETTER EL +10C97; C; 10CD7; # OLD HUNGARIAN CAPITAL LETTER ELY +10C98; C; 10CD8; # OLD HUNGARIAN CAPITAL LETTER EM +10C99; C; 10CD9; # OLD HUNGARIAN CAPITAL LETTER EN +10C9A; C; 10CDA; # OLD HUNGARIAN CAPITAL LETTER ENY +10C9B; C; 10CDB; # OLD HUNGARIAN CAPITAL LETTER O +10C9C; C; 10CDC; # OLD HUNGARIAN CAPITAL LETTER OO +10C9D; C; 10CDD; # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE +10C9E; C; 10CDE; # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE +10C9F; C; 10CDF; # OLD HUNGARIAN CAPITAL LETTER OEE +10CA0; C; 10CE0; # OLD HUNGARIAN CAPITAL LETTER EP +10CA1; C; 10CE1; # OLD HUNGARIAN CAPITAL LETTER EMP +10CA2; C; 10CE2; # OLD HUNGARIAN CAPITAL LETTER ER +10CA3; C; 10CE3; # OLD HUNGARIAN CAPITAL LETTER SHORT ER +10CA4; C; 10CE4; # OLD HUNGARIAN CAPITAL LETTER ES +10CA5; C; 10CE5; # OLD HUNGARIAN CAPITAL LETTER ESZ +10CA6; C; 10CE6; # OLD HUNGARIAN CAPITAL LETTER ET +10CA7; C; 10CE7; # OLD HUNGARIAN CAPITAL LETTER ENT +10CA8; C; 10CE8; # OLD HUNGARIAN CAPITAL LETTER ETY +10CA9; C; 10CE9; # OLD HUNGARIAN CAPITAL LETTER ECH +10CAA; C; 10CEA; # OLD HUNGARIAN CAPITAL LETTER U +10CAB; C; 10CEB; # OLD HUNGARIAN CAPITAL LETTER UU +10CAC; C; 10CEC; # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE +10CAD; C; 10CED; # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE +10CAE; C; 10CEE; # OLD HUNGARIAN CAPITAL LETTER EV +10CAF; C; 10CEF; # OLD HUNGARIAN CAPITAL LETTER EZ +10CB0; C; 10CF0; # OLD HUNGARIAN CAPITAL LETTER EZS +10CB1; C; 10CF1; # OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN +10CB2; C; 10CF2; # OLD HUNGARIAN CAPITAL LETTER US 118A0; C; 118C0; # WARANG CITI CAPITAL LETTER NGAA 118A1; C; 118C1; # WARANG CITI CAPITAL LETTER A 118A2; C; 118C2; # WARANG CITI CAPITAL LETTER WI diff --git a/util/unicode/data/DerivedAge.txt b/util/unicode/data/DerivedAge.txt index 134dbbbe44..f1b0addb1c 100644 --- a/util/unicode/data/DerivedAge.txt +++ b/util/unicode/data/DerivedAge.txt @@ -1,8 +1,8 @@ -# DerivedAge-7.0.0.txt -# Date: 2014-05-28, 18:42:04 GMT [MD] +# DerivedAge-8.0.0.txt +# Date: 2015-02-13, 13:30:18 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ # @@ -1467,4 +1467,72 @@ FE27..FE2D ; 7.0 # [7] COMBINING LIGATURE LEFT HALF BELOW..COMBINING CONJOI # Total code points: 2834 +# ================================================ + +# Age=V8_0 + +# Newly assigned in Unicode 8.0.0 (June, 2015) + +08B3..08B4 ; 8.0 # [2] ARABIC LETTER AIN WITH THREE DOTS BELOW..ARABIC LETTER KAF WITH DOT BELOW +08E3 ; 8.0 # ARABIC TURNED DAMMA BELOW +0AF9 ; 8.0 # GUJARATI LETTER ZHA +0C5A ; 8.0 # TELUGU LETTER RRRA +0D5F ; 8.0 # MALAYALAM LETTER ARCHAIC II +13F5 ; 8.0 # CHEROKEE LETTER MV +13F8..13FD ; 8.0 # [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV +20BE ; 8.0 # LARI SIGN +218A..218B ; 8.0 # [2] TURNED DIGIT TWO..TURNED DIGIT THREE +2BEC..2BEF ; 8.0 # [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS +9FCD..9FD5 ; 8.0 # [9] CJK UNIFIED IDEOGRAPH-9FCD..CJK UNIFIED IDEOGRAPH-9FD5 +A69E ; 8.0 # COMBINING CYRILLIC LETTER EF +A78F ; 8.0 # LATIN LETTER SINOLOGICAL DOT +A7B2..A7B7 ; 8.0 # [6] LATIN CAPITAL LETTER J WITH CROSSED-TAIL..LATIN SMALL LETTER OMEGA +A8FC..A8FD ; 8.0 # [2] DEVANAGARI SIGN SIDDHAM..DEVANAGARI JAIN OM +AB60..AB63 ; 8.0 # [4] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER UO +AB70..ABBF ; 8.0 # [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA +FE2E..FE2F ; 8.0 # [2] COMBINING CYRILLIC TITLO LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF +108E0..108F2 ; 8.0 # [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH +108F4..108F5 ; 8.0 # [2] HATRAN LETTER SHIN..HATRAN LETTER TAW +108FB..108FF ; 8.0 # [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED +109BC..109BD ; 8.0 # [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF +109C0..109CF ; 8.0 # [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY +109D2..109FF ; 8.0 # [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS +10C80..10CB2 ; 8.0 # [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US +10CC0..10CF2 ; 8.0 # [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US +10CFA..10CFF ; 8.0 # [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND +111C9..111CC ; 8.0 # [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK +111DB..111DF ; 8.0 # [5] SHARADA SIGN SIDDHAM..SHARADA SECTION MARK-2 +11280..11286 ; 8.0 # [7] MULTANI LETTER A..MULTANI LETTER GA +11288 ; 8.0 # MULTANI LETTER GHA +1128A..1128D ; 8.0 # [4] MULTANI LETTER CA..MULTANI LETTER JJA +1128F..1129D ; 8.0 # [15] MULTANI LETTER NYA..MULTANI LETTER BA +1129F..112A9 ; 8.0 # [11] MULTANI LETTER BHA..MULTANI SECTION MARK +11300 ; 8.0 # GRANTHA SIGN COMBINING ANUSVARA ABOVE +11350 ; 8.0 # GRANTHA OM +115CA..115DD ; 8.0 # [20] SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS..SIDDHAM VOWEL SIGN ALTERNATE UU +11700..11719 ; 8.0 # [26] AHOM LETTER KA..AHOM LETTER JHA +1171D..1172B ; 8.0 # [15] AHOM CONSONANT SIGN MEDIAL LA..AHOM SIGN KILLER +11730..1173F ; 8.0 # [16] AHOM DIGIT ZERO..AHOM SYMBOL VI +12399 ; 8.0 # CUNEIFORM SIGN U U +12480..12543 ; 8.0 # [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU +14400..14646 ; 8.0 # [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 +1D1DE..1D1E8 ; 8.0 # [11] MUSICAL SYMBOL KIEVAN C CLEF..MUSICAL SYMBOL KIEVAN FLAT SIGN +1D800..1DA8B ; 8.0 # [652] SIGNWRITING HAND-FIST INDEX..SIGNWRITING PARENTHESIS +1DA9B..1DA9F ; 8.0 # [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 +1DAA1..1DAAF ; 8.0 # [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 +1F32D..1F32F ; 8.0 # [3] HOT DOG..BURRITO +1F37E..1F37F ; 8.0 # [2] BOTTLE WITH POPPING CORK..POPCORN +1F3CF..1F3D3 ; 8.0 # [5] CRICKET BAT AND BALL..TABLE TENNIS PADDLE AND BALL +1F3F8..1F3FF ; 8.0 # [8] BADMINTON RACQUET AND SHUTTLECOCK..EMOJI MODIFIER FITZPATRICK TYPE-6 +1F4FF ; 8.0 # PRAYER BEADS +1F54B..1F54F ; 8.0 # [5] KAABA..BOWL OF HYGIEIA +1F643..1F644 ; 8.0 # [2] UPSIDE-DOWN FACE..FACE WITH ROLLING EYES +1F6D0 ; 8.0 # PLACE OF WORSHIP +1F910..1F918 ; 8.0 # [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS +1F980..1F984 ; 8.0 # [5] CRAB..UNICORN FACE +1F9C0 ; 8.0 # CHEESE WEDGE +2B820..2CEA1 ; 8.0 # [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 + +# Total code points: 7716 + # EOF diff --git a/util/unicode/data/DerivedNormalizationProps.txt b/util/unicode/data/DerivedNormalizationProps.txt index 147ef2b531..6492493da3 100644 --- a/util/unicode/data/DerivedNormalizationProps.txt +++ b/util/unicode/data/DerivedNormalizationProps.txt @@ -1,8 +1,8 @@ -# DerivedNormalizationProps-7.0.0.txt -# Date: 2013-12-03, 15:11:47 GMT [MD] +# DerivedNormalizationProps-8.0.0.txt +# Date: 2015-02-13, 13:30:23 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2013 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ @@ -3504,6 +3504,12 @@ FFE3 ; Expands_On_NFKC # Sk FULLWIDTH MACRON 10CD ; NFKC_CF; 2D2D # L& GEORGIAN CAPITAL LETTER AEN 10FC ; NFKC_CF; 10DC # Lm MODIFIER LETTER GEORGIAN NAR 115F..1160 ; NFKC_CF; # Lo [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER +13F8 ; NFKC_CF; 13F0 # L& CHEROKEE SMALL LETTER YE +13F9 ; NFKC_CF; 13F1 # L& CHEROKEE SMALL LETTER YI +13FA ; NFKC_CF; 13F2 # L& CHEROKEE SMALL LETTER YO +13FB ; NFKC_CF; 13F3 # L& CHEROKEE SMALL LETTER YU +13FC ; NFKC_CF; 13F4 # L& CHEROKEE SMALL LETTER YV +13FD ; NFKC_CF; 13F5 # L& CHEROKEE SMALL LETTER MV 17B4..17B5 ; NFKC_CF; # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA 180B..180D ; NFKC_CF; # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 180E ; NFKC_CF; # Cf MONGOLIAN VOWEL SEPARATOR @@ -5259,12 +5265,96 @@ A7AC ; NFKC_CF; 0261 # L& LATIN CAPITAL LETTER SCRIPT G A7AD ; NFKC_CF; 026C # L& LATIN CAPITAL LETTER L WITH BELT A7B0 ; NFKC_CF; 029E # L& LATIN CAPITAL LETTER TURNED K A7B1 ; NFKC_CF; 0287 # L& LATIN CAPITAL LETTER TURNED T +A7B2 ; NFKC_CF; 029D # L& LATIN CAPITAL LETTER J WITH CROSSED-TAIL +A7B3 ; NFKC_CF; AB53 # L& LATIN CAPITAL LETTER CHI +A7B4 ; NFKC_CF; A7B5 # L& LATIN CAPITAL LETTER BETA +A7B6 ; NFKC_CF; A7B7 # L& LATIN CAPITAL LETTER OMEGA A7F8 ; NFKC_CF; 0127 # Lm MODIFIER LETTER CAPITAL H WITH STROKE A7F9 ; NFKC_CF; 0153 # Lm MODIFIER LETTER SMALL LIGATURE OE AB5C ; NFKC_CF; A727 # Lm MODIFIER LETTER SMALL HENG AB5D ; NFKC_CF; AB37 # Lm MODIFIER LETTER SMALL L WITH INVERTED LAZY S AB5E ; NFKC_CF; 026B # Lm MODIFIER LETTER SMALL L WITH MIDDLE TILDE AB5F ; NFKC_CF; AB52 # Lm MODIFIER LETTER SMALL U WITH LEFT HOOK +AB70 ; NFKC_CF; 13A0 # L& CHEROKEE SMALL LETTER A +AB71 ; NFKC_CF; 13A1 # L& CHEROKEE SMALL LETTER E +AB72 ; NFKC_CF; 13A2 # L& CHEROKEE SMALL LETTER I +AB73 ; NFKC_CF; 13A3 # L& CHEROKEE SMALL LETTER O +AB74 ; NFKC_CF; 13A4 # L& CHEROKEE SMALL LETTER U +AB75 ; NFKC_CF; 13A5 # L& CHEROKEE SMALL LETTER V +AB76 ; NFKC_CF; 13A6 # L& CHEROKEE SMALL LETTER GA +AB77 ; NFKC_CF; 13A7 # L& CHEROKEE SMALL LETTER KA +AB78 ; NFKC_CF; 13A8 # L& CHEROKEE SMALL LETTER GE +AB79 ; NFKC_CF; 13A9 # L& CHEROKEE SMALL LETTER GI +AB7A ; NFKC_CF; 13AA # L& CHEROKEE SMALL LETTER GO +AB7B ; NFKC_CF; 13AB # L& CHEROKEE SMALL LETTER GU +AB7C ; NFKC_CF; 13AC # L& CHEROKEE SMALL LETTER GV +AB7D ; NFKC_CF; 13AD # L& CHEROKEE SMALL LETTER HA +AB7E ; NFKC_CF; 13AE # L& CHEROKEE SMALL LETTER HE +AB7F ; NFKC_CF; 13AF # L& CHEROKEE SMALL LETTER HI +AB80 ; NFKC_CF; 13B0 # L& CHEROKEE SMALL LETTER HO +AB81 ; NFKC_CF; 13B1 # L& CHEROKEE SMALL LETTER HU +AB82 ; NFKC_CF; 13B2 # L& CHEROKEE SMALL LETTER HV +AB83 ; NFKC_CF; 13B3 # L& CHEROKEE SMALL LETTER LA +AB84 ; NFKC_CF; 13B4 # L& CHEROKEE SMALL LETTER LE +AB85 ; NFKC_CF; 13B5 # L& CHEROKEE SMALL LETTER LI +AB86 ; NFKC_CF; 13B6 # L& CHEROKEE SMALL LETTER LO +AB87 ; NFKC_CF; 13B7 # L& CHEROKEE SMALL LETTER LU +AB88 ; NFKC_CF; 13B8 # L& CHEROKEE SMALL LETTER LV +AB89 ; NFKC_CF; 13B9 # L& CHEROKEE SMALL LETTER MA +AB8A ; NFKC_CF; 13BA # L& CHEROKEE SMALL LETTER ME +AB8B ; NFKC_CF; 13BB # L& CHEROKEE SMALL LETTER MI +AB8C ; NFKC_CF; 13BC # L& CHEROKEE SMALL LETTER MO +AB8D ; NFKC_CF; 13BD # L& CHEROKEE SMALL LETTER MU +AB8E ; NFKC_CF; 13BE # L& CHEROKEE SMALL LETTER NA +AB8F ; NFKC_CF; 13BF # L& CHEROKEE SMALL LETTER HNA +AB90 ; NFKC_CF; 13C0 # L& CHEROKEE SMALL LETTER NAH +AB91 ; NFKC_CF; 13C1 # L& CHEROKEE SMALL LETTER NE +AB92 ; NFKC_CF; 13C2 # L& CHEROKEE SMALL LETTER NI +AB93 ; NFKC_CF; 13C3 # L& CHEROKEE SMALL LETTER NO +AB94 ; NFKC_CF; 13C4 # L& CHEROKEE SMALL LETTER NU +AB95 ; NFKC_CF; 13C5 # L& CHEROKEE SMALL LETTER NV +AB96 ; NFKC_CF; 13C6 # L& CHEROKEE SMALL LETTER QUA +AB97 ; NFKC_CF; 13C7 # L& CHEROKEE SMALL LETTER QUE +AB98 ; NFKC_CF; 13C8 # L& CHEROKEE SMALL LETTER QUI +AB99 ; NFKC_CF; 13C9 # L& CHEROKEE SMALL LETTER QUO +AB9A ; NFKC_CF; 13CA # L& CHEROKEE SMALL LETTER QUU +AB9B ; NFKC_CF; 13CB # L& CHEROKEE SMALL LETTER QUV +AB9C ; NFKC_CF; 13CC # L& CHEROKEE SMALL LETTER SA +AB9D ; NFKC_CF; 13CD # L& CHEROKEE SMALL LETTER S +AB9E ; NFKC_CF; 13CE # L& CHEROKEE SMALL LETTER SE +AB9F ; NFKC_CF; 13CF # L& CHEROKEE SMALL LETTER SI +ABA0 ; NFKC_CF; 13D0 # L& CHEROKEE SMALL LETTER SO +ABA1 ; NFKC_CF; 13D1 # L& CHEROKEE SMALL LETTER SU +ABA2 ; NFKC_CF; 13D2 # L& CHEROKEE SMALL LETTER SV +ABA3 ; NFKC_CF; 13D3 # L& CHEROKEE SMALL LETTER DA +ABA4 ; NFKC_CF; 13D4 # L& CHEROKEE SMALL LETTER TA +ABA5 ; NFKC_CF; 13D5 # L& CHEROKEE SMALL LETTER DE +ABA6 ; NFKC_CF; 13D6 # L& CHEROKEE SMALL LETTER TE +ABA7 ; NFKC_CF; 13D7 # L& CHEROKEE SMALL LETTER DI +ABA8 ; NFKC_CF; 13D8 # L& CHEROKEE SMALL LETTER TI +ABA9 ; NFKC_CF; 13D9 # L& CHEROKEE SMALL LETTER DO +ABAA ; NFKC_CF; 13DA # L& CHEROKEE SMALL LETTER DU +ABAB ; NFKC_CF; 13DB # L& CHEROKEE SMALL LETTER DV +ABAC ; NFKC_CF; 13DC # L& CHEROKEE SMALL LETTER DLA +ABAD ; NFKC_CF; 13DD # L& CHEROKEE SMALL LETTER TLA +ABAE ; NFKC_CF; 13DE # L& CHEROKEE SMALL LETTER TLE +ABAF ; NFKC_CF; 13DF # L& CHEROKEE SMALL LETTER TLI +ABB0 ; NFKC_CF; 13E0 # L& CHEROKEE SMALL LETTER TLO +ABB1 ; NFKC_CF; 13E1 # L& CHEROKEE SMALL LETTER TLU +ABB2 ; NFKC_CF; 13E2 # L& CHEROKEE SMALL LETTER TLV +ABB3 ; NFKC_CF; 13E3 # L& CHEROKEE SMALL LETTER TSA +ABB4 ; NFKC_CF; 13E4 # L& CHEROKEE SMALL LETTER TSE +ABB5 ; NFKC_CF; 13E5 # L& CHEROKEE SMALL LETTER TSI +ABB6 ; NFKC_CF; 13E6 # L& CHEROKEE SMALL LETTER TSO +ABB7 ; NFKC_CF; 13E7 # L& CHEROKEE SMALL LETTER TSU +ABB8 ; NFKC_CF; 13E8 # L& CHEROKEE SMALL LETTER TSV +ABB9 ; NFKC_CF; 13E9 # L& CHEROKEE SMALL LETTER WA +ABBA ; NFKC_CF; 13EA # L& CHEROKEE SMALL LETTER WE +ABBB ; NFKC_CF; 13EB # L& CHEROKEE SMALL LETTER WI +ABBC ; NFKC_CF; 13EC # L& CHEROKEE SMALL LETTER WO +ABBD ; NFKC_CF; 13ED # L& CHEROKEE SMALL LETTER WU +ABBE ; NFKC_CF; 13EE # L& CHEROKEE SMALL LETTER WV +ABBF ; NFKC_CF; 13EF # L& CHEROKEE SMALL LETTER YA F900 ; NFKC_CF; 8C48 # Lo CJK COMPATIBILITY IDEOGRAPH-F900 F901 ; NFKC_CF; 66F4 # Lo CJK COMPATIBILITY IDEOGRAPH-F901 F902 ; NFKC_CF; 8ECA # Lo CJK COMPATIBILITY IDEOGRAPH-F902 @@ -6641,6 +6731,57 @@ FFF0..FFF8 ; NFKC_CF; # Cn [9] ...... -# Total code points: 10005 +# Total code points: 10146 # ================================================ @@ -8827,6 +8968,7 @@ E01F0..E0FFF ; NFKC_CF; # Cn [3600] .... 10400..10427 ; Changes_When_NFKC_Casefolded # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW +10C80..10CB2 ; Changes_When_NFKC_Casefolded # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 118A0..118BF ; Changes_When_NFKC_Casefolded # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO 1BCA0..1BCA3 ; Changes_When_NFKC_Casefolded # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP 1D15E..1D164 ; Changes_When_NFKC_Casefolded # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE @@ -9472,6 +9617,6 @@ E0080..E00FF ; Changes_When_NFKC_Casefolded # Cn [128] .... -# Total code points: 10005 +# Total code points: 10146 # EOF diff --git a/util/unicode/data/GraphemeBreakProperty.txt b/util/unicode/data/GraphemeBreakProperty.txt index 752ee7926a..fba2ee8793 100644 --- a/util/unicode/data/GraphemeBreakProperty.txt +++ b/util/unicode/data/GraphemeBreakProperty.txt @@ -1,8 +1,8 @@ -# GraphemeBreakProperty-7.0.0.txt -# Date: 2014-02-19, 15:51:21 GMT [MD] +# GraphemeBreakProperty-8.0.0.txt +# Date: 2015-02-13, 13:47:14 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ @@ -89,7 +89,7 @@ E01F0..E0FFF ; Control # Cn [3600] .. 0825..0827 ; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0829..082D ; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA 0859..085B ; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK -08E4..0902 ; Extend # Mn [31] ARABIC CURLY FATHA..DEVANAGARI SIGN ANUSVARA +08E3..0902 ; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA 093A ; Extend # Mn DEVANAGARI VOWEL SIGN OE 093C ; Extend # Mn DEVANAGARI SIGN NUKTA 0941..0948 ; Extend # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI @@ -250,7 +250,7 @@ E01F0..E0FFF ; Control # Cn [3600] .. A66F ; Extend # Mn COMBINING CYRILLIC VZMET A670..A672 ; Extend # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN A674..A67D ; Extend # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK -A69F ; Extend # Mn COMBINING CYRILLIC LETTER IOTIFIED E +A69E..A69F ; Extend # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A6F0..A6F1 ; Extend # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS A802 ; Extend # Mn SYLOTI NAGRI SIGN DVISVARA A806 ; Extend # Mn SYLOTI NAGRI SIGN HASANTA @@ -283,7 +283,7 @@ ABE8 ; Extend # Mn MEETEI MAYEK VOWEL SIGN UNAP ABED ; Extend # Mn MEETEI MAYEK APUN IYEK FB1E ; Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA FE00..FE0F ; Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 -FE20..FE2D ; Extend # Mn [14] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON BELOW +FE20..FE2F ; Extend # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK 101FD ; Extend # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE 102E0 ; Extend # Mn COPTIC EPACT THOUSANDS MARK @@ -305,12 +305,13 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 11173 ; Extend # Mn MAHAJANI SIGN NUKTA 11180..11181 ; Extend # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA 111B6..111BE ; Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O +111CA..111CC ; Extend # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 1122F..11231 ; Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11234 ; Extend # Mn KHOJKI SIGN ANUSVARA 11236..11237 ; Extend # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 112DF ; Extend # Mn KHUDAWADI SIGN ANUSVARA 112E3..112EA ; Extend # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA -11301 ; Extend # Mn GRANTHA SIGN CANDRABINDU +11300..11301 ; Extend # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 1133C ; Extend # Mn GRANTHA SIGN NUKTA 1133E ; Extend # Mc GRANTHA VOWEL SIGN AA 11340 ; Extend # Mn GRANTHA VOWEL SIGN II @@ -327,6 +328,7 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 115B2..115B5 ; Extend # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR 115BC..115BD ; Extend # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BF..115C0 ; Extend # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA +115DC..115DD ; Extend # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11633..1163A ; Extend # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163D ; Extend # Mn MODI SIGN ANUSVARA 1163F..11640 ; Extend # Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA @@ -334,6 +336,9 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 116AD ; Extend # Mn TAKRI VOWEL SIGN AA 116B0..116B5 ; Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B7 ; Extend # Mn TAKRI SIGN NUKTA +1171D..1171F ; Extend # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +11722..11725 ; Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU +11727..1172B ; Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER 16AF0..16AF4 ; Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B30..16B36 ; Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16F8F..16F92 ; Extend # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW @@ -345,10 +350,16 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 1D185..1D18B ; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D1AA..1D1AD ; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1D242..1D244 ; Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME +1DA00..1DA36 ; Extend # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN +1DA3B..1DA6C ; Extend # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT +1DA75 ; Extend # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS +1DA84 ; Extend # Mn SIGNWRITING LOCATION HEAD NECK +1DA9B..1DA9F ; Extend # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 +1DAA1..1DAAF ; Extend # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 1E8D0..1E8D6 ; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -# Total code points: 1461 +# Total code points: 1610 # ================================================ @@ -412,8 +423,6 @@ E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 1929..192B ; SpacingMark # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA 1930..1931 ; SpacingMark # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA 1933..1938 ; SpacingMark # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA -19B5..19B7 ; SpacingMark # Mc [3] NEW TAI LUE VOWEL SIGN E..NEW TAI LUE VOWEL SIGN O -19BA ; SpacingMark # Mc NEW TAI LUE VOWEL SIGN AY 1A19..1A1A ; SpacingMark # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A55 ; SpacingMark # Mc TAI THAM CONSONANT SIGN MEDIAL RA 1A57 ; SpacingMark # Mc TAI THAM CONSONANT SIGN LA TANG LAI @@ -487,11 +496,13 @@ ABEC ; SpacingMark # Mc MEETEI MAYEK LUM IYEK 116AC ; SpacingMark # Mc TAKRI SIGN VISARGA 116AE..116AF ; SpacingMark # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II 116B6 ; SpacingMark # Mc TAKRI SIGN VIRAMA +11720..11721 ; SpacingMark # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA +11726 ; SpacingMark # Mc AHOM VOWEL SIGN E 16F51..16F7E ; SpacingMark # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG 1D166 ; SpacingMark # Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM 1D16D ; SpacingMark # Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT -# Total code points: 331 +# Total code points: 330 # ================================================ diff --git a/util/unicode/data/LineBreak.txt b/util/unicode/data/LineBreak.txt index e496c5fc0e..b627f874d0 100644 --- a/util/unicode/data/LineBreak.txt +++ b/util/unicode/data/LineBreak.txt @@ -1,5 +1,5 @@ -# LineBreak-7.0.0.txt -# Date: 2014-02-28, 23:15:00 GMT [KW, LI] +# LineBreak-8.0.0.txt +# Date: 2015-02-13, 09:15:00 GMT [KW, LI] # # Line_Break Property # @@ -7,7 +7,7 @@ # Unicode Character Database. # It contains both normative and informative data. # -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # # The format is two fields separated by a semicolon. @@ -30,6 +30,7 @@ # CJK Unified Ideographs Extension B: U+20000..U+2A6DF # CJK Unified Ideographs Extension C: U+2A700..U+2B73F # CJK Unified Ideographs Extension D: U+2B740..U+2B81F +# CJK Unified Ideographs Extension E: U+2B820..U+2CEAF # CJK Compatibility Ideographs Supplement: U+2F800..U+2FA1F # and any other reserved code points on # Planes 2 and 3: U+20000..U+2FFFD @@ -272,8 +273,8 @@ 0840..0858;AL # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 0859..085B;CM # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK 085E;AL # Po MANDAIC PUNCTUATION -08A0..08B2;AL # Lo [19] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER ZAIN WITH INVERTED V ABOVE -08E4..08FF;CM # Mn [28] ARABIC CURLY FATHA..ARABIC MARK SIDEWAYS NOON GHUNNA +08A0..08B4;AL # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW +08E3..08FF;CM # Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA 0900..0902;CM # Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA 0903;CM # Mc DEVANAGARI SIGN VISARGA 0904..0939;AL # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA @@ -366,6 +367,7 @@ 0AE6..0AEF;NU # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE 0AF0;AL # Po GUJARATI ABBREVIATION SIGN 0AF1;PR # Sc GUJARATI RUPEE SIGN +0AF9;AL # Lo GUJARATI LETTER ZHA 0B01;CM # Mn ORIYA SIGN CANDRABINDU 0B02..0B03;CM # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA 0B05..0B0C;AL # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L @@ -428,7 +430,7 @@ 0C46..0C48;CM # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4D;CM # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56;CM # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK -0C58..0C59;AL # Lo [2] TELUGU LETTER TSA..TELUGU LETTER DZA +0C58..0C5A;AL # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61;AL # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63;CM # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F;NU # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE @@ -469,7 +471,7 @@ 0D4D;CM # Mn MALAYALAM SIGN VIRAMA 0D4E;AL # Lo MALAYALAM LETTER DOT REPH 0D57;CM # Mc MALAYALAM AU LENGTH MARK -0D60..0D61;AL # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL +0D5F..0D61;AL # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D62..0D63;CM # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0D66..0D6F;NU # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE 0D70..0D75;AL # No [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS @@ -641,7 +643,8 @@ 1369..137C;AL # No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND 1380..138F;AL # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE 1390..1399;AL # So [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT -13A0..13F4;AL # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV +13A0..13F5;AL # Lu [86] CHEROKEE LETTER A..CHEROKEE LETTER MV +13F8..13FD;AL # Ll [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1400;BA # Pd CANADIAN SYLLABICS HYPHEN 1401..166C;AL # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA 166D..166E;AL # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP @@ -716,9 +719,7 @@ 1950..196D;SA # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI 1970..1974;SA # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 1980..19AB;SA # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA -19B0..19C0;SA # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY -19C1..19C7;SA # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B -19C8..19C9;SA # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 +19B0..19C9;SA # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 19D0..19D9;NU # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE 19DA;SA # No NEW TAI LUE THAM DIGIT ONE 19DE..19DF;SA # So [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV @@ -926,7 +927,8 @@ 20B7..20BA;PR # Sc [4] SPESMILO SIGN..TURKISH LIRA SIGN 20BB;PO # Sc NORDIC MARK SIGN 20BC..20BD;PR # Sc [2] MANAT SIGN..RUBLE SIGN -20BE..20CF;PR # Cn [18] .. +20BE;PO # Sc LARI SIGN +20BF..20CF;PR # Cn [17] .. 20D0..20DC;CM # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE 20DD..20E0;CM # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH 20E1;CM # Mn COMBINING LEFT RIGHT ARROW ABOVE @@ -988,6 +990,7 @@ 2183..2184;AL # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188;AL # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND 2189;AI # No VULGAR FRACTION ZERO THIRDS +218A..218B;AL # So [2] TURNED DIGIT TWO..TURNED DIGIT THREE 2190..2194;AI # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW 2195..2199;AI # So [5] UP DOWN ARROW..SOUTH WEST ARROW 219A..219B;AL # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE @@ -1063,7 +1066,9 @@ 22A5;AI # Sm UP TACK 22A6..22BE;AL # Sm [25] ASSERTION..RIGHT ANGLE WITH ARC 22BF;AI # Sm RIGHT TRIANGLE -22C0..22FF;AL # Sm [64] N-ARY LOGICAL AND..Z NOTATION BAG MEMBERSHIP +22C0..22EE;AL # Sm [47] N-ARY LOGICAL AND..VERTICAL ELLIPSIS +22EF;IN # Sm MIDLINE HORIZONTAL ELLIPSIS +22F0..22FF;AL # Sm [16] UP RIGHT DIAGONAL ELLIPSIS..Z NOTATION BAG MEMBERSHIP 2300..2307;AL # So [8] DIAMETER SIGN..WAVY LINE 2308;OP # Ps LEFT CEILING 2309;CL # Pe RIGHT CEILING @@ -1273,6 +1278,7 @@ 2B98..2BB9;AL # So [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX 2BBD..2BC8;AL # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED 2BCA..2BD1;AL # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN +2BEC..2BEF;AL # So [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS 2C00..2C2E;AL # Lu [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C30..2C5E;AL # Ll [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C60..2C7B;AL # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E @@ -1470,8 +1476,8 @@ 3400..4DB5;ID # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 4DB6..4DBF;ID # Cn [10] .. 4DC0..4DFF;AL # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION -4E00..9FCC;ID # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC -9FCD..9FFF;ID # Cn [51] .. +4E00..9FD5;ID # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 +9FD6..9FFF;ID # Cn [42] .. A000..A014;ID # Lo [21] YI SYLLABLE IT..YI SYLLABLE E A015;NS # Lm YI SYLLABLE WU A016..A48C;ID # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR @@ -1497,7 +1503,7 @@ A67E;AL # Po CYRILLIC KAVYKA A67F;AL # Lm CYRILLIC PAYEROK A680..A69B;AL # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A69C..A69D;AL # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN -A69F;CM # Mn COMBINING CYRILLIC LETTER IOTIFIED E +A69E..A69F;CM # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A6A0..A6E5;AL # Lo [70] BAMUM LETTER A..BAMUM LETTER KI A6E6..A6EF;AL # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM A6F0..A6F1;CM # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS @@ -1512,8 +1518,9 @@ A771..A787;AL # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULA A788;AL # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A789..A78A;AL # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN A78B..A78E;AL # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT +A78F;AL # Lo LATIN LETTER SINOLOGICAL DOT A790..A7AD;AL # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT -A7B0..A7B1;AL # Lu [2] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER TURNED T +A7B0..A7B7;AL # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F7;AL # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9;AL # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA;AL # Ll LATIN LETTER SMALL CAPITAL TURNED M @@ -1546,6 +1553,8 @@ A8E0..A8F1;CM # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANA A8F2..A8F7;AL # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8F8..A8FA;AL # Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET A8FB;AL # Lo DEVANAGARI HEADSTROKE +A8FC;BB # Po DEVANAGARI SIGN SIDDHAM +A8FD;AL # Lo DEVANAGARI JAIN OM A900..A909;NU # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE A90A..A925;AL # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO A926..A92D;CM # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU @@ -1630,7 +1639,8 @@ AB28..AB2E;AL # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO AB30..AB5A;AL # Ll [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5B;AL # Sk MODIFIER BREVE WITH INVERTED BREVE AB5C..AB5F;AL # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK -AB64..AB65;AL # Ll [2] LATIN SMALL LETTER INVERTED ALPHA..GREEK LETTER SMALL CAPITAL OMEGA +AB60..AB65;AL # Ll [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA +AB70..ABBF;AL # Ll [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA ABC0..ABE2;AL # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM ABE3..ABE4;CM # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP ABE5;CM # Mn MEETEI MAYEK VOWEL SIGN ANAP @@ -2479,7 +2489,7 @@ FE15..FE16;EX # Po [2] PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK.. FE17;OP # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET FE18;CL # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET FE19;IN # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS -FE20..FE2D;CM # Mn [14] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON BELOW +FE20..FE2F;CM # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF FE30;ID # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER FE31..FE32;ID # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH FE33..FE34;ID # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE @@ -2647,6 +2657,9 @@ FFFD;AI # So REPLACEMENT CHARACTER 10879..1087F;AL # No [7] PALMYRENE NUMBER ONE..PALMYRENE NUMBER TWENTY 10880..1089E;AL # Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW 108A7..108AF;AL # No [9] NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED +108E0..108F2;AL # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH +108F4..108F5;AL # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW +108FB..108FF;AL # No [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED 10900..10915;AL # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU 10916..1091B;AL # No [6] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER THREE 1091F;BA # Po PHOENICIAN WORD SEPARATOR @@ -2654,7 +2667,10 @@ FFFD;AI # So REPLACEMENT CHARACTER 1093F;AL # Po LYDIAN TRIANGULAR MARK 10980..1099F;AL # Lo [32] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2 109A0..109B7;AL # Lo [24] MEROITIC CURSIVE LETTER A..MEROITIC CURSIVE LETTER DA +109BC..109BD;AL # No [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF 109BE..109BF;AL # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN +109C0..109CF;AL # No [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY +109D2..109FF;AL # No [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS 10A00;AL # Lo KHAROSHTHI LETTER A 10A01..10A03;CM # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R 10A05..10A06;CM # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O @@ -2689,6 +2705,9 @@ FFFD;AI # So REPLACEMENT CHARACTER 10B99..10B9C;AL # Po [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT 10BA9..10BAF;AL # No [7] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED 10C00..10C48;AL # Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH +10C80..10CB2;AL # Lu [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US +10CC0..10CF2;AL # Ll [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US +10CFA..10CFF;AL # No [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND 10E60..10E7E;AL # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS 11000;CM # Mc BRAHMI SIGN CANDRABINDU 11001;CM # Mn BRAHMI SIGN ANUSVARA @@ -2734,9 +2753,14 @@ FFFD;AI # So REPLACEMENT CHARACTER 111C5..111C6;BA # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA 111C7;AL # Po SHARADA ABBREVIATION SIGN 111C8;BA # Po SHARADA SEPARATOR +111C9;AL # Po SHARADA SANDHI MARK +111CA..111CC;CM # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 111CD;AL # Po SHARADA SUTRA MARK 111D0..111D9;NU # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111DA;AL # Lo SHARADA EKAM +111DB;BB # Po SHARADA SIGN SIDDHAM +111DC;AL # Lo SHARADA HEADSTROKE +111DD..111DF;BA # Po [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2 111E1..111F4;AL # No [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND 11200..11211;AL # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B;AL # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA @@ -2750,12 +2774,18 @@ FFFD;AI # So REPLACEMENT CHARACTER 1123A;AL # Po KHOJKI WORD SEPARATOR 1123B..1123C;BA # Po [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK 1123D;AL # Po KHOJKI ABBREVIATION SIGN +11280..11286;AL # Lo [7] MULTANI LETTER A..MULTANI LETTER GA +11288;AL # Lo MULTANI LETTER GHA +1128A..1128D;AL # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA +1128F..1129D;AL # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA +1129F..112A8;AL # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA +112A9;BA # Po MULTANI SECTION MARK 112B0..112DE;AL # Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA 112DF;CM # Mn KHUDAWADI SIGN ANUSVARA 112E0..112E2;CM # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E3..112EA;CM # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA 112F0..112F9;NU # Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE -11301;CM # Mn GRANTHA SIGN CANDRABINDU +11300..11301;CM # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302..11303;CM # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 11305..1130C;AL # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310;AL # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI @@ -2770,6 +2800,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 11341..11344;CM # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR 11347..11348;CM # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 1134B..1134D;CM # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA +11350;AL # Lo GRANTHA OM 11357;CM # Mc GRANTHA AU LENGTH MARK 1135D..11361;AL # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11362..11363;CM # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL @@ -2799,7 +2830,9 @@ FFFD;AI # So REPLACEMENT CHARACTER 115C2..115C3;BA # Po [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA 115C4..115C5;EX # Po [2] SIDDHAM SEPARATOR DOT..SIDDHAM SEPARATOR BAR 115C6..115C8;AL # Po [3] SIDDHAM REPETITION MARK-1..SIDDHAM REPETITION MARK-3 -115C9;BA # Po SIDDHAM END OF TEXT MARK +115C9..115D7;BA # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES +115D8..115DB;AL # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U +115DC..115DD;CM # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11600..1162F;AL # Lo [48] MODI LETTER A..MODI LETTER LLA 11630..11632;CM # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 11633..1163A;CM # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI @@ -2820,14 +2853,25 @@ FFFD;AI # So REPLACEMENT CHARACTER 116B6;CM # Mc TAKRI SIGN VIRAMA 116B7;CM # Mn TAKRI SIGN NUKTA 116C0..116C9;NU # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE +11700..11719;SA # Lo [26] AHOM LETTER KA..AHOM LETTER JHA +1171D..1171F;SA # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +11720..11721;SA # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA +11722..11725;SA # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU +11726;SA # Mc AHOM VOWEL SIGN E +11727..1172B;SA # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER +11730..11739;NU # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE +1173A..1173B;SA # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY +1173C..1173E;BA # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI +1173F;SA # So AHOM SYMBOL VI 118A0..118DF;AL # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 118E0..118E9;NU # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE 118EA..118F2;AL # No [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY 118FF;AL # Lo WARANG CITI OM 11AC0..11AF8;AL # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL -12000..12398;AL # Lo [921] CUNEIFORM SIGN A..CUNEIFORM SIGN UM TIMES ME +12000..12399;AL # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E;AL # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12470..12474;BA # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON +12480..12543;AL # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 13000..13257;AL # Lo [600] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH O006 13258..1325A;OP # Lo [3] EGYPTIAN HIEROGLYPH O006A..EGYPTIAN HIEROGLYPH O006C 1325B..1325D;CL # Lo [3] EGYPTIAN HIEROGLYPH O006D..EGYPTIAN HIEROGLYPH O006F @@ -2842,6 +2886,10 @@ FFFD;AI # So REPLACEMENT CHARACTER 13379;OP # Lo EGYPTIAN HIEROGLYPH V011A 1337A..1337B;CL # Lo [2] EGYPTIAN HIEROGLYPH V011B..EGYPTIAN HIEROGLYPH V011C 1337C..1342E;AL # Lo [179] EGYPTIAN HIEROGLYPH V012..EGYPTIAN HIEROGLYPH AA032 +14400..145CD;AL # Lo [462] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A409 +145CE;OP # Lo ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK +145CF;CL # Lo ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK +145D0..14646;AL # Lo [119] ANATOLIAN HIEROGLYPH A411..ANATOLIAN HIEROGLYPH A530 16800..16A38;AL # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E;AL # Lo [31] MRO LETTER TA..MRO LETTER TEK 16A60..16A69;NU # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE @@ -2888,7 +2936,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 1D185..1D18B;CM # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D18C..1D1A9;AL # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH 1D1AA..1D1AD;CM # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO -1D1AE..1D1DD;AL # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS +1D1AE..1D1E8;AL # So [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN 1D200..1D241;AL # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 1D242..1D244;CM # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME 1D245;AL # So GREEK MUSICAL LEIMMA @@ -2935,6 +2983,19 @@ FFFD;AI # So REPLACEMENT CHARACTER 1D7C3;AL # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL 1D7C4..1D7CB;AL # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA 1D7CE..1D7FF;NU # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE +1D800..1D9FF;AL # So [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD +1DA00..1DA36;CM # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN +1DA37..1DA3A;AL # So [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE +1DA3B..1DA6C;CM # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT +1DA6D..1DA74;AL # So [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING +1DA75;CM # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS +1DA76..1DA83;AL # So [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH +1DA84;CM # Mn SIGNWRITING LOCATION HEAD NECK +1DA85..1DA86;AL # So [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS +1DA87..1DA8A;BA # Po [4] SIGNWRITING COMMA..SIGNWRITING COLON +1DA8B;AL # Po SIGNWRITING PARENTHESIS +1DA9B..1DA9F;CM # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 +1DAA1..1DAAF;CM # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 1E800..1E8C4;AL # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E8C7..1E8CF;AL # No [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE 1E8D0..1E8D6;CM # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS @@ -2989,16 +3050,14 @@ FFFD;AI # So REPLACEMENT CHARACTER 1F210..1F23A;ID # So [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6 1F240..1F248;ID # So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 1F250..1F251;ID # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT -1F300..1F32C;ID # So [45] CYCLONE..WIND BLOWING FACE -1F330..1F37D;ID # So [78] CHESTNUT..FORK AND KNIFE WITH PLATE -1F380..1F39B;ID # So [28] RIBBON..CONTROL KNOBS +1F300..1F39B;ID # So [156] CYCLONE..CONTROL KNOBS 1F39C..1F39D;AL # So [2] BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES 1F39E..1F3B4;ID # So [23] FILM FRAMES..FLOWER PLAYING CARDS 1F3B5..1F3B6;AL # So [2] MUSICAL NOTE..MULTIPLE MUSICAL NOTES 1F3B7..1F3BB;ID # So [5] SAXOPHONE..VIOLIN 1F3BC;AL # So MUSICAL SCORE -1F3BD..1F3CE;ID # So [18] RUNNING SHIRT WITH SASH..RACING CAR -1F3D4..1F3F7;ID # So [36] SNOW CAPPED MOUNTAIN..LABEL +1F3BD..1F3FA;ID # So [62] RUNNING SHIRT WITH SASH..AMPHORA +1F3FB..1F3FF;AL # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 1F400..1F49F;ID # So [160] RAT..HEART DECORATION 1F4A0;AL # So DIAMOND SHAPE WITH A DOT INSIDE 1F4A1;ID # So ELECTRIC LIGHT BULB @@ -3009,27 +3068,25 @@ FFFD;AI # So REPLACEMENT CHARACTER 1F4AF;AL # So HUNDRED POINTS SYMBOL 1F4B0;ID # So MONEY BAG 1F4B1..1F4B2;AL # So [2] CURRENCY EXCHANGE..HEAVY DOLLAR SIGN -1F4B3..1F4FE;ID # So [76] CREDIT CARD..PORTABLE STEREO +1F4B3..1F4FF;ID # So [77] CREDIT CARD..PRAYER BEADS 1F500..1F506;AL # So [7] TWISTED RIGHTWARDS ARROWS..HIGH BRIGHTNESS SYMBOL 1F507..1F516;ID # So [16] SPEAKER WITH CANCELLATION STROKE..BOOKMARK 1F517..1F524;AL # So [14] LINK SYMBOL..INPUT SYMBOL FOR LATIN LETTERS 1F525..1F531;ID # So [13] FIRE..TRIDENT EMBLEM 1F532..1F549;AL # So [24] BLACK SQUARE BUTTON..OM SYMBOL -1F54A;ID # So DOVE OF PEACE -1F550..1F579;ID # So [42] CLOCK FACE ONE OCLOCK..JOYSTICK +1F54A..1F579;ID # So [48] DOVE OF PEACE..JOYSTICK 1F57B..1F5A3;ID # So [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX 1F5A5..1F5D3;ID # So [47] DESKTOP COMPUTER..SPIRAL CALENDAR PAD 1F5D4..1F5DB;AL # So [8] DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL 1F5DC..1F5F3;ID # So [24] COMPRESSION..BALLOT BOX WITH BALLOT 1F5F4..1F5F9;AL # So [6] BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK 1F5FA..1F5FF;ID # So [6] WORLD MAP..MOYAI -1F600..1F642;ID # So [67] GRINNING FACE..SLIGHTLY SMILING FACE -1F645..1F64F;ID # So [11] FACE WITH NO GOOD GESTURE..PERSON WITH FOLDED HANDS +1F600..1F64F;ID # So [80] GRINNING FACE..PERSON WITH FOLDED HANDS 1F650..1F675;AL # So [38] NORTH WEST POINTING LEAF..SWASH AMPERSAND ORNAMENT 1F676..1F678;QU # So [3] SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT..SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT 1F679..1F67B;NS # So [3] HEAVY INTERROBANG ORNAMENT..HEAVY SANS-SERIF INTERROBANG ORNAMENT 1F67C..1F67F;AL # So [4] VERY HEAVY SOLIDUS..REVERSE CHECKER BOARD -1F680..1F6CF;ID # So [80] ROCKET..BED +1F680..1F6D0;ID # So [81] ROCKET..PLACE OF WORSHIP 1F6E0..1F6EC;ID # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING 1F6F0..1F6F3;ID # So [4] SATELLITE..PASSENGER SHIP 1F700..1F773;AL # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE @@ -3039,12 +3096,17 @@ FFFD;AI # So REPLACEMENT CHARACTER 1F850..1F859;AL # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW 1F860..1F887;AL # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F890..1F8AD;AL # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS +1F910..1F918;ID # So [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS +1F980..1F984;ID # So [5] CRAB..UNICORN FACE +1F9C0;ID # So CHEESE WEDGE 20000..2A6D6;ID # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A6D7..2A6FF;ID # Cn [41] .. 2A700..2B734;ID # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B735..2B73F;ID # Cn [11] .. 2B740..2B81D;ID # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D -2B81E..2F7FF;ID # Cn [16354] .. +2B81E..2B81F;ID # Cn [2] .. +2B820..2CEA1;ID # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 +2CEA2..2F7FF;ID # Cn [10590] .. 2F800..2FA1D;ID # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 2FA1E..2FFFD;ID # Cn [1504] .. 30000..3FFFD;ID # Cn [65534] .. diff --git a/util/unicode/data/NormalizationCorrections.txt b/util/unicode/data/NormalizationCorrections.txt index 79c77da79a..04fc10d11c 100644 --- a/util/unicode/data/NormalizationCorrections.txt +++ b/util/unicode/data/NormalizationCorrections.txt @@ -1,10 +1,10 @@ -# NormalizationCorrections-7.0.0.txt -# Date: 2013-12-17, 00:00:00 GMT [KW, LI] +# NormalizationCorrections-8.0.0.txt +# Date: 2015-03-07, 01:30:00 GMT [KW, LI] # # This file is a normative contributory data file in the # Unicode Character Database. # -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # # The normalization stability policy of the Unicode Consortium diff --git a/util/unicode/data/Scripts.txt b/util/unicode/data/Scripts.txt index 0b69438a57..7e42740407 100644 --- a/util/unicode/data/Scripts.txt +++ b/util/unicode/data/Scripts.txt @@ -1,10 +1,16 @@ -# Scripts-7.0.0.txt -# Date: 2014-05-15, 00:11:35 GMT [MD] +# Scripts-8.0.0.txt +# Date: 2015-03-11, 22:29:42 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ +# For more information, see: +# UAX #24, Unicode Script Property: http://www.unicode.org/reports/tr24/ +# Especially the sections: +# http://www.unicode.org/reports/tr24/#Assignment_Script_Values +# http://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values +# # ================================================ @@ -89,7 +95,6 @@ 061C ; Common # Cf ARABIC LETTER MARK 061F ; Common # Po ARABIC QUESTION MARK 0640 ; Common # Lm ARABIC TATWEEL -0660..0669 ; Common # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE 06DD ; Common # Cf ARABIC END OF AYAH 0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA 0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT @@ -148,7 +153,7 @@ 208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN 208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS 208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS -20A0..20BD ; Common # Sc [30] EURO-CURRENCY SIGN..RUBLE SIGN +20A0..20BE ; Common # Sc [31] EURO-CURRENCY SIGN..LARI SIGN 2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT 2102 ; Common # L& DOUBLE-STRUCK CAPITAL C 2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA @@ -182,6 +187,7 @@ 214F ; Common # So SYMBOL FOR SAMARITAN SOURCE 2150..215F ; Common # No [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE 2189 ; Common # No VULGAR FRACTION ZERO THIRDS +218A..218B ; Common # So [2] TURNED DIGIT TWO..TURNED DIGIT THREE 2190..2194 ; Common # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW 2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW 219A..219B ; Common # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE @@ -304,6 +310,7 @@ 2B98..2BB9 ; Common # So [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX 2BBD..2BC8 ; Common # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED 2BCA..2BD1 ; Common # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN +2BEC..2BEF ; Common # So [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS 2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET 2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET @@ -512,7 +519,7 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE 1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN 1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH -1D1AE..1D1DD ; Common # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS +1D1AE..1D1E8 ; Common # So [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN 1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING 1D360..1D371 ; Common # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE 1D400..1D454 ; Common # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G @@ -571,16 +578,11 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1F210..1F23A ; Common # So [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6 1F240..1F248 ; Common # So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 1F250..1F251 ; Common # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT -1F300..1F32C ; Common # So [45] CYCLONE..WIND BLOWING FACE -1F330..1F37D ; Common # So [78] CHESTNUT..FORK AND KNIFE WITH PLATE -1F380..1F3CE ; Common # So [79] RIBBON..RACING CAR -1F3D4..1F3F7 ; Common # So [36] SNOW CAPPED MOUNTAIN..LABEL -1F400..1F4FE ; Common # So [255] RAT..PORTABLE STEREO -1F500..1F54A ; Common # So [75] TWISTED RIGHTWARDS ARROWS..DOVE OF PEACE -1F550..1F579 ; Common # So [42] CLOCK FACE ONE OCLOCK..JOYSTICK +1F300..1F3FA ; Common # So [251] CYCLONE..AMPHORA +1F3FB..1F3FF ; Common # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 +1F400..1F579 ; Common # So [378] RAT..JOYSTICK 1F57B..1F5A3 ; Common # So [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX -1F5A5..1F642 ; Common # So [158] DESKTOP COMPUTER..SLIGHTLY SMILING FACE -1F645..1F6CF ; Common # So [139] FACE WITH NO GOOD GESTURE..BED +1F5A5..1F6D0 ; Common # So [300] DESKTOP COMPUTER..PLACE OF WORSHIP 1F6E0..1F6EC ; Common # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING 1F6F0..1F6F3 ; Common # So [4] SATELLITE..PASSENGER SHIP 1F700..1F773 ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE @@ -590,10 +592,13 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR 1F850..1F859 ; Common # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW 1F860..1F887 ; Common # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F890..1F8AD ; Common # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS +1F910..1F918 ; Common # So [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS +1F980..1F984 ; Common # So [5] CRAB..UNICORN FACE +1F9C0 ; Common # So CHEESE WEDGE E0001 ; Common # Cf LANGUAGE TAG E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG -# Total code points: 7129 +# Total code points: 7179 # ================================================ @@ -635,20 +640,21 @@ A722..A76F ; Latin # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN A770 ; Latin # Lm MODIFIER LETTER US A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A78B..A78E ; Latin # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT +A78F ; Latin # Lo LATIN LETTER SINOLOGICAL DOT A790..A7AD ; Latin # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT -A7B0..A7B1 ; Latin # L& [2] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER TURNED T +A7B0..A7B7 ; Latin # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F7 ; Latin # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; Latin # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Latin # L& LATIN LETTER SMALL CAPITAL TURNED M A7FB..A7FF ; Latin # Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M AB30..AB5A ; Latin # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Latin # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK -AB64 ; Latin # L& LATIN SMALL LETTER INVERTED ALPHA +AB60..AB64 ; Latin # L& [5] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER INVERTED ALPHA FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z -# Total code points: 1338 +# Total code points: 1349 # ================================================ @@ -731,9 +737,10 @@ A67E ; Cyrillic # Po CYRILLIC KAVYKA A67F ; Cyrillic # Lm CYRILLIC PAYEROK A680..A69B ; Cyrillic # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A69C..A69D ; Cyrillic # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN -A69F ; Cyrillic # Mn COMBINING CYRILLIC LETTER IOTIFIED E +A69E..A69F ; Cyrillic # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E +FE2E..FE2F ; Cyrillic # Mn [2] COMBINING CYRILLIC TITLO LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF -# Total code points: 431 +# Total code points: 434 # ================================================ @@ -788,6 +795,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU 0620..063F ; Arabic # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH 0656..065F ; Arabic # Mn [10] ARABIC SUBSCRIPT ALEF..ARABIC WAVY HAMZA BELOW +0660..0669 ; Arabic # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE 066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR 066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE @@ -806,8 +814,8 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU 06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN 06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V 0750..077F ; Arabic # Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE -08A0..08B2 ; Arabic # Lo [19] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER ZAIN WITH INVERTED V ABOVE -08E4..08FF ; Arabic # Mn [28] ARABIC CURLY FATHA..ARABIC MARK SIDEWAYS NOON GHUNNA +08A0..08B4 ; Arabic # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW +08E3..08FF ; Arabic # Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FBB2..FBC1 ; Arabic # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM @@ -854,7 +862,7 @@ FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LA 1EEAB..1EEBB ; Arabic # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1EEF0..1EEF1 ; Arabic # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL -# Total code points: 1244 +# Total code points: 1257 # ================================================ @@ -902,8 +910,10 @@ A8E0..A8F1 ; Devanagari # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING A8F2..A8F7 ; Devanagari # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8F8..A8FA ; Devanagari # Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE +A8FC ; Devanagari # Po DEVANAGARI SIGN SIDDHAM +A8FD ; Devanagari # Lo DEVANAGARI JAIN OM -# Total code points: 152 +# Total code points: 154 # ================================================ @@ -987,8 +997,9 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE 0AE6..0AEF ; Gujarati # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE 0AF0 ; Gujarati # Po GUJARATI ABBREVIATION SIGN 0AF1 ; Gujarati # Sc GUJARATI RUPEE SIGN +0AF9 ; Gujarati # Lo GUJARATI LETTER ZHA -# Total code points: 84 +# Total code points: 85 # ================================================ @@ -1064,14 +1075,14 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE 0C46..0C48 ; Telugu # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK -0C58..0C59 ; Telugu # Lo [2] TELUGU LETTER TSA..TELUGU LETTER DZA +0C58..0C5A ; Telugu # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63 ; Telugu # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE 0C78..0C7E ; Telugu # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR 0C7F ; Telugu # So TELUGU SIGN TUUMU -# Total code points: 95 +# Total code points: 96 # ================================================ @@ -1115,14 +1126,14 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE 0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA 0D4E ; Malayalam # Lo MALAYALAM LETTER DOT REPH 0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK -0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL +0D5F..0D61 ; Malayalam # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D62..0D63 ; Malayalam # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE 0D70..0D75 ; Malayalam # No [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS 0D79 ; Malayalam # So MALAYALAM DATE MARK 0D7A..0D7F ; Malayalam # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K -# Total code points: 99 +# Total code points: 100 # ================================================ @@ -1358,9 +1369,11 @@ AB28..AB2E ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO # ================================================ -13A0..13F4 ; Cherokee # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV +13A0..13F5 ; Cherokee # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV +13F8..13FD ; Cherokee # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV +AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA -# Total code points: 85 +# Total code points: 172 # ================================================ @@ -1472,15 +1485,16 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK 3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK 3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FCC ; Han # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC +4E00..9FD5 ; Han # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 F900..FA6D ; Han # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; Han # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; Han # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D +2B820..2CEA1 ; Han # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D -# Total code points: 75963 +# Total code points: 81734 # ================================================ @@ -1680,9 +1694,7 @@ E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-2 # ================================================ 1980..19AB ; New_Tai_Lue # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA -19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY -19C1..19C7 ; New_Tai_Lue # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B -19C8..19C9 ; New_Tai_Lue # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 +19B0..19C9 ; New_Tai_Lue # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 19D0..19D9 ; New_Tai_Lue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE 19DA ; New_Tai_Lue # No NEW TAI LUE THAM DIGIT ONE 19DE..19DF ; New_Tai_Lue # So [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV @@ -1770,11 +1782,12 @@ A828..A82B ; Syloti_Nagri # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI # ================================================ -12000..12398 ; Cuneiform # Lo [921] CUNEIFORM SIGN A..CUNEIFORM SIGN UM TIMES ME +12000..12399 ; Cuneiform # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; Cuneiform # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12470..12474 ; Cuneiform # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON +12480..12543 ; Cuneiform # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU -# Total code points: 1037 +# Total code points: 1234 # ================================================ @@ -2151,9 +2164,12 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI # ================================================ 109A0..109B7 ; Meroitic_Cursive # Lo [24] MEROITIC CURSIVE LETTER A..MEROITIC CURSIVE LETTER DA +109BC..109BD ; Meroitic_Cursive # No [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF 109BE..109BF ; Meroitic_Cursive # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN +109C0..109CF ; Meroitic_Cursive # No [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY +109D2..109FF ; Meroitic_Cursive # No [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS -# Total code points: 26 +# Total code points: 90 # ================================================ @@ -2180,12 +2196,16 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 111B6..111BE ; Sharada # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111BF..111C0 ; Sharada # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA 111C1..111C4 ; Sharada # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM -111C5..111C8 ; Sharada # Po [4] SHARADA DANDA..SHARADA SEPARATOR +111C5..111C9 ; Sharada # Po [5] SHARADA DANDA..SHARADA SANDHI MARK +111CA..111CC ; Sharada # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 111CD ; Sharada # Po SHARADA SUTRA MARK 111D0..111D9 ; Sharada # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111DA ; Sharada # Lo SHARADA EKAM +111DB ; Sharada # Po SHARADA SIGN SIDDHAM +111DC ; Sharada # Lo SHARADA HEADSTROKE +111DD..111DF ; Sharada # Po [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2 -# Total code points: 85 +# Total code points: 94 # ================================================ @@ -2243,7 +2263,7 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI # ================================================ -11301 ; Grantha # Mn GRANTHA SIGN CANDRABINDU +11300..11301 ; Grantha # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302..11303 ; Grantha # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 11305..1130C ; Grantha # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; Grantha # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI @@ -2258,13 +2278,14 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 11341..11344 ; Grantha # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR 11347..11348 ; Grantha # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 1134B..1134D ; Grantha # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA +11350 ; Grantha # Lo GRANTHA OM 11357 ; Grantha # Mc GRANTHA AU LENGTH MARK 1135D..11361 ; Grantha # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11362..11363 ; Grantha # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 11366..1136C ; Grantha # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; Grantha # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA -# Total code points: 83 +# Total code points: 85 # ================================================ @@ -2407,9 +2428,11 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI 115BC..115BD ; Siddham # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BE ; Siddham # Mc SIDDHAM SIGN VISARGA 115BF..115C0 ; Siddham # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA -115C1..115C9 ; Siddham # Po [9] SIDDHAM SIGN SIDDHAM..SIDDHAM END OF TEXT MARK +115C1..115D7 ; Siddham # Po [23] SIDDHAM SIGN SIDDHAM..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES +115D8..115DB ; Siddham # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U +115DC..115DD ; Siddham # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU -# Total code points: 72 +# Total code points: 92 # ================================================ @@ -2448,4 +2471,69 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI # Total code points: 84 +# ================================================ + +11700..11719 ; Ahom # Lo [26] AHOM LETTER KA..AHOM LETTER JHA +1171D..1171F ; Ahom # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +11720..11721 ; Ahom # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA +11722..11725 ; Ahom # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU +11726 ; Ahom # Mc AHOM VOWEL SIGN E +11727..1172B ; Ahom # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER +11730..11739 ; Ahom # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE +1173A..1173B ; Ahom # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY +1173C..1173E ; Ahom # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI +1173F ; Ahom # So AHOM SYMBOL VI + +# Total code points: 57 + +# ================================================ + +14400..14646 ; Anatolian_Hieroglyphs # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 + +# Total code points: 583 + +# ================================================ + +108E0..108F2 ; Hatran # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH +108F4..108F5 ; Hatran # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW +108FB..108FF ; Hatran # No [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED + +# Total code points: 26 + +# ================================================ + +11280..11286 ; Multani # Lo [7] MULTANI LETTER A..MULTANI LETTER GA +11288 ; Multani # Lo MULTANI LETTER GHA +1128A..1128D ; Multani # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA +1128F..1129D ; Multani # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA +1129F..112A8 ; Multani # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA +112A9 ; Multani # Po MULTANI SECTION MARK + +# Total code points: 38 + +# ================================================ + +10C80..10CB2 ; Old_Hungarian # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US +10CC0..10CF2 ; Old_Hungarian # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US +10CFA..10CFF ; Old_Hungarian # No [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND + +# Total code points: 108 + +# ================================================ + +1D800..1D9FF ; SignWriting # So [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD +1DA00..1DA36 ; SignWriting # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN +1DA37..1DA3A ; SignWriting # So [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE +1DA3B..1DA6C ; SignWriting # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT +1DA6D..1DA74 ; SignWriting # So [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING +1DA75 ; SignWriting # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS +1DA76..1DA83 ; SignWriting # So [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH +1DA84 ; SignWriting # Mn SIGNWRITING LOCATION HEAD NECK +1DA85..1DA86 ; SignWriting # So [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS +1DA87..1DA8B ; SignWriting # Po [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS +1DA9B..1DA9F ; SignWriting # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 +1DAA1..1DAAF ; SignWriting # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 + +# Total code points: 672 + # EOF diff --git a/util/unicode/data/SentenceBreakProperty.txt b/util/unicode/data/SentenceBreakProperty.txt index 19752103f9..8dd1abff0f 100644 --- a/util/unicode/data/SentenceBreakProperty.txt +++ b/util/unicode/data/SentenceBreakProperty.txt @@ -1,8 +1,8 @@ -# SentenceBreakProperty-7.0.0.txt -# Date: 2014-02-19, 15:51:38 GMT [MD] +# SentenceBreakProperty-8.0.0.txt +# Date: 2015-03-11, 22:29:43 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ @@ -53,7 +53,7 @@ 0825..0827 ; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0829..082D ; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA 0859..085B ; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK -08E4..0902 ; Extend # Mn [31] ARABIC CURLY FATHA..DEVANAGARI SIGN ANUSVARA +08E3..0902 ; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA 0903 ; Extend # Mc DEVANAGARI SIGN VISARGA 093A ; Extend # Mn DEVANAGARI VOWEL SIGN OE 093B ; Extend # Mc DEVANAGARI VOWEL SIGN OOE @@ -216,8 +216,6 @@ 1932 ; Extend # Mn LIMBU SMALL LETTER ANUSVARA 1933..1938 ; Extend # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA 1939..193B ; Extend # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I -19B0..19C0 ; Extend # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY -19C8..19C9 ; Extend # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 1A17..1A18 ; Extend # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A19..1A1A ; Extend # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A1B ; Extend # Mn BUGINESE VOWEL SIGN AE @@ -291,7 +289,7 @@ A66F ; Extend # Mn COMBINING CYRILLIC VZMET A670..A672 ; Extend # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN A674..A67D ; Extend # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK -A69F ; Extend # Mn COMBINING CYRILLIC LETTER IOTIFIED E +A69E..A69F ; Extend # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A6F0..A6F1 ; Extend # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS A802 ; Extend # Mn SYLOTI NAGRI SIGN DVISVARA A806 ; Extend # Mn SYLOTI NAGRI SIGN HASANTA @@ -345,7 +343,7 @@ ABEC ; Extend # Mc MEETEI MAYEK LUM IYEK ABED ; Extend # Mn MEETEI MAYEK APUN IYEK FB1E ; Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA FE00..FE0F ; Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 -FE20..FE2D ; Extend # Mn [14] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON BELOW +FE20..FE2F ; Extend # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK 101FD ; Extend # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE 102E0 ; Extend # Mn COPTIC EPACT THOUSANDS MARK @@ -376,6 +374,7 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 111B3..111B5 ; Extend # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II 111B6..111BE ; Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111BF..111C0 ; Extend # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA +111CA..111CC ; Extend # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 1122C..1122E ; Extend # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II 1122F..11231 ; Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11232..11233 ; Extend # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU @@ -385,7 +384,7 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 112DF ; Extend # Mn KHUDAWADI SIGN ANUSVARA 112E0..112E2 ; Extend # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E3..112EA ; Extend # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA -11301 ; Extend # Mn GRANTHA SIGN CANDRABINDU +11300..11301 ; Extend # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302..11303 ; Extend # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 1133C ; Extend # Mn GRANTHA SIGN NUKTA 1133E..1133F ; Extend # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I @@ -411,6 +410,7 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 115BC..115BD ; Extend # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BE ; Extend # Mc SIDDHAM SIGN VISARGA 115BF..115C0 ; Extend # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA +115DC..115DD ; Extend # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11630..11632 ; Extend # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 11633..1163A ; Extend # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163B..1163C ; Extend # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU @@ -424,6 +424,11 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 116B0..116B5 ; Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B6 ; Extend # Mc TAKRI SIGN VIRAMA 116B7 ; Extend # Mn TAKRI SIGN NUKTA +1171D..1171F ; Extend # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +11720..11721 ; Extend # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA +11722..11725 ; Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU +11726 ; Extend # Mc AHOM VOWEL SIGN E +11727..1172B ; Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER 16AF0..16AF4 ; Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B30..16B36 ; Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16F51..16F7E ; Extend # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG @@ -436,10 +441,16 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 1D185..1D18B ; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D1AA..1D1AD ; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1D242..1D244 ; Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME +1DA00..1DA36 ; Extend # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN +1DA3B..1DA6C ; Extend # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT +1DA75 ; Extend # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS +1DA84 ; Extend # Mn SIGNWRITING LOCATION HEAD NECK +1DA9B..1DA9F ; Extend # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 +1DAA1..1DAAF ; Extend # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 1E8D0..1E8D6 ; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -# Total code points: 1834 +# Total code points: 1967 # ================================================ @@ -764,6 +775,7 @@ E0020..E007F ; Format # Cf [96] TAG SPACE..CANCEL TAG 052D ; Lower # L& CYRILLIC SMALL LETTER DCHE 052F ; Lower # L& CYRILLIC SMALL LETTER EL WITH DESCENDER 0561..0587 ; Lower # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN +13F8..13FD ; Lower # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1D00..1D2B ; Lower # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D2C..1D6A ; Lower # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D6B..1D77 ; Lower # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G @@ -1094,15 +1106,19 @@ A7A3 ; Lower # L& LATIN SMALL LETTER K WITH OBLIQUE STROKE A7A5 ; Lower # L& LATIN SMALL LETTER N WITH OBLIQUE STROKE A7A7 ; Lower # L& LATIN SMALL LETTER R WITH OBLIQUE STROKE A7A9 ; Lower # L& LATIN SMALL LETTER S WITH OBLIQUE STROKE +A7B5 ; Lower # L& LATIN SMALL LETTER BETA +A7B7 ; Lower # L& LATIN SMALL LETTER OMEGA A7F8..A7F9 ; Lower # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Lower # L& LATIN LETTER SMALL CAPITAL TURNED M AB30..AB5A ; Lower # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Lower # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK -AB64..AB65 ; Lower # L& [2] LATIN SMALL LETTER INVERTED ALPHA..GREEK LETTER SMALL CAPITAL OMEGA +AB60..AB65 ; Lower # L& [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA +AB70..ABBF ; Lower # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Lower # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Lower # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FF41..FF5A ; Lower # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z 10428..1044F ; Lower # L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW +10CC0..10CF2 ; Lower # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 118C0..118DF ; Lower # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 1D41A..1D433 ; Lower # L& [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z 1D44E..1D454 ; Lower # L& [7] MATHEMATICAL ITALIC SMALL A..MATHEMATICAL ITALIC SMALL G @@ -1133,7 +1149,7 @@ FF41..FF5A ; Lower # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 1D7C4..1D7C9 ; Lower # L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL 1D7CB ; Lower # L& MATHEMATICAL BOLD SMALL DIGAMMA -# Total code points: 2029 +# Total code points: 2172 # ================================================ @@ -1412,6 +1428,7 @@ FF41..FF5A ; Lower # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 10A0..10C5 ; Upper # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; Upper # L& GEORGIAN CAPITAL LETTER YN 10CD ; Upper # L& GEORGIAN CAPITAL LETTER AEN +13A0..13F5 ; Upper # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 1E00 ; Upper # L& LATIN CAPITAL LETTER A WITH RING BELOW 1E02 ; Upper # L& LATIN CAPITAL LETTER B WITH DOT ABOVE 1E04 ; Upper # L& LATIN CAPITAL LETTER B WITH DOT BELOW @@ -1729,9 +1746,11 @@ A7A4 ; Upper # L& LATIN CAPITAL LETTER N WITH OBLIQUE STROKE A7A6 ; Upper # L& LATIN CAPITAL LETTER R WITH OBLIQUE STROKE A7A8 ; Upper # L& LATIN CAPITAL LETTER S WITH OBLIQUE STROKE A7AA..A7AD ; Upper # L& [4] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER L WITH BELT -A7B0..A7B1 ; Upper # L& [2] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER TURNED T +A7B0..A7B4 ; Upper # L& [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA +A7B6 ; Upper # L& LATIN CAPITAL LETTER OMEGA FF21..FF3A ; Upper # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z 10400..10427 ; Upper # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW +10C80..10CB2 ; Upper # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 118A0..118BF ; Upper # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO 1D400..1D419 ; Upper # L& [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z 1D434..1D44D ; Upper # L& [26] MATHEMATICAL ITALIC CAPITAL A..MATHEMATICAL ITALIC CAPITAL Z @@ -1768,7 +1787,7 @@ FF21..FF3A ; Upper # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT 1F150..1F169 ; Upper # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; Upper # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z -# Total code points: 1641 +# Total code points: 1782 # ================================================ @@ -1806,7 +1825,7 @@ FF21..FF3A ; Upper # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT 0824 ; OLetter # Lm SAMARITAN MODIFIER LETTER SHORT A 0828 ; OLetter # Lm SAMARITAN MODIFIER LETTER I 0840..0858 ; OLetter # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN -08A0..08B2 ; OLetter # Lo [19] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER ZAIN WITH INVERTED V ABOVE +08A0..08B4 ; OLetter # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW 0904..0939 ; OLetter # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA 093D ; OLetter # Lo DEVANAGARI SIGN AVAGRAHA 0950 ; OLetter # Lo DEVANAGARI OM @@ -1843,6 +1862,7 @@ FF21..FF3A ; Upper # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT 0ABD ; OLetter # Lo GUJARATI SIGN AVAGRAHA 0AD0 ; OLetter # Lo GUJARATI OM 0AE0..0AE1 ; OLetter # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL +0AF9 ; OLetter # Lo GUJARATI LETTER ZHA 0B05..0B0C ; OLetter # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L 0B0F..0B10 ; OLetter # Lo [2] ORIYA LETTER E..ORIYA LETTER AI 0B13..0B28 ; OLetter # Lo [22] ORIYA LETTER O..ORIYA LETTER NA @@ -1869,7 +1889,7 @@ FF21..FF3A ; Upper # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT 0C12..0C28 ; OLetter # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; OLetter # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA 0C3D ; OLetter # Lo TELUGU SIGN AVAGRAHA -0C58..0C59 ; OLetter # Lo [2] TELUGU LETTER TSA..TELUGU LETTER DZA +0C58..0C5A ; OLetter # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61 ; OLetter # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C85..0C8C ; OLetter # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; OLetter # Lo [3] KANNADA LETTER E..KANNADA LETTER AI @@ -1885,7 +1905,7 @@ FF21..FF3A ; Upper # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT 0D12..0D3A ; OLetter # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3D ; OLetter # Lo MALAYALAM SIGN AVAGRAHA 0D4E ; OLetter # Lo MALAYALAM LETTER DOT REPH -0D60..0D61 ; OLetter # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL +0D5F..0D61 ; OLetter # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D7A..0D7F ; OLetter # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K 0D85..0D96 ; OLetter # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1 ; OLetter # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA @@ -1945,7 +1965,6 @@ FF21..FF3A ; Upper # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT 1312..1315 ; OLetter # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE 1318..135A ; OLetter # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA 1380..138F ; OLetter # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE -13A0..13F4 ; OLetter # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV 1401..166C ; OLetter # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA 166F..167F ; OLetter # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W 1681..169A ; OLetter # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH @@ -1971,7 +1990,7 @@ FF21..FF3A ; Upper # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT 1950..196D ; OLetter # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI 1970..1974 ; OLetter # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 1980..19AB ; OLetter # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA -19C1..19C7 ; OLetter # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B +19B0..19C9 ; OLetter # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 1A00..1A16 ; OLetter # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA 1A20..1A54 ; OLetter # Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA 1AA7 ; OLetter # Lm TAI THAM SIGN MAI YAMOK @@ -2021,7 +2040,7 @@ FF21..FF3A ; Upper # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT 31A0..31BA ; OLetter # Lo [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY 31F0..31FF ; OLetter # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DB5 ; OLetter # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FCC ; OLetter # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC +4E00..9FD5 ; OLetter # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 A000..A014 ; OLetter # Lo [21] YI SYLLABLE IT..YI SYLLABLE E A015 ; OLetter # Lm YI SYLLABLE WU A016..A48C ; OLetter # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR @@ -2037,6 +2056,7 @@ A6A0..A6E5 ; OLetter # Lo [70] BAMUM LETTER A..BAMUM LETTER KI A6E6..A6EF ; OLetter # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM A717..A71F ; OLetter # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK A788 ; OLetter # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT +A78F ; OLetter # Lo LATIN LETTER SINOLOGICAL DOT A7F7 ; OLetter # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7FB..A801 ; OLetter # Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I A803..A805 ; OLetter # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O @@ -2046,6 +2066,7 @@ A840..A873 ; OLetter # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABIN A882..A8B3 ; OLetter # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA A8F2..A8F7 ; OLetter # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8FB ; OLetter # Lo DEVANAGARI HEADSTROKE +A8FD ; OLetter # Lo DEVANAGARI JAIN OM A90A..A925 ; OLetter # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO A930..A946 ; OLetter # Lo [23] REJANG LETTER KA..REJANG LETTER A A960..A97C ; OLetter # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH @@ -2140,6 +2161,8 @@ FFDA..FFDC ; OLetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1083F..10855 ; OLetter # Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW 10860..10876 ; OLetter # Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW 10880..1089E ; OLetter # Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW +108E0..108F2 ; OLetter # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH +108F4..108F5 ; OLetter # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW 10900..10915 ; OLetter # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU 10920..10939 ; OLetter # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C 10980..109B7 ; OLetter # Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA @@ -2166,8 +2189,14 @@ FFDA..FFDC ; OLetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 11183..111B2 ; OLetter # Lo [48] SHARADA LETTER A..SHARADA LETTER HA 111C1..111C4 ; OLetter # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM 111DA ; OLetter # Lo SHARADA EKAM +111DC ; OLetter # Lo SHARADA HEADSTROKE 11200..11211 ; OLetter # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; OLetter # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA +11280..11286 ; OLetter # Lo [7] MULTANI LETTER A..MULTANI LETTER GA +11288 ; OLetter # Lo MULTANI LETTER GHA +1128A..1128D ; OLetter # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA +1128F..1129D ; OLetter # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA +1129F..112A8 ; OLetter # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA 112B0..112DE ; OLetter # Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA 11305..1130C ; OLetter # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; OLetter # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI @@ -2176,19 +2205,24 @@ FFDA..FFDC ; OLetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 11332..11333 ; OLetter # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; OLetter # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA 1133D ; OLetter # Lo GRANTHA SIGN AVAGRAHA +11350 ; OLetter # Lo GRANTHA OM 1135D..11361 ; OLetter # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11480..114AF ; OLetter # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114C4..114C5 ; OLetter # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG 114C7 ; OLetter # Lo TIRHUTA OM 11580..115AE ; OLetter # Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA +115D8..115DB ; OLetter # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U 11600..1162F ; OLetter # Lo [48] MODI LETTER A..MODI LETTER LLA 11644 ; OLetter # Lo MODI SIGN HUVA 11680..116AA ; OLetter # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA +11700..11719 ; OLetter # Lo [26] AHOM LETTER KA..AHOM LETTER JHA 118FF ; OLetter # Lo WARANG CITI OM 11AC0..11AF8 ; OLetter # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL -12000..12398 ; OLetter # Lo [921] CUNEIFORM SIGN A..CUNEIFORM SIGN UM TIMES ME +12000..12399 ; OLetter # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; OLetter # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM +12480..12543 ; OLetter # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 13000..1342E ; OLetter # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +14400..14646 ; OLetter # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; OLetter # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; OLetter # Lo [31] MRO LETTER TA..MRO LETTER TEK 16AD0..16AED ; OLetter # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I @@ -2241,9 +2275,10 @@ FFDA..FFDC ; OLetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 20000..2A6D6 ; OLetter # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; OLetter # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; OLetter # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D +2B820..2CEA1 ; OLetter # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; OLetter # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D -# Total code points: 99420 +# Total code points: 106002 # ================================================ @@ -2293,12 +2328,13 @@ ABF0..ABF9 ; Numeric # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT N 114D0..114D9 ; Numeric # Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE 11650..11659 ; Numeric # Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE 116C0..116C9 ; Numeric # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE +11730..11739 ; Numeric # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE 118E0..118E9 ; Numeric # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE 16A60..16A69 ; Numeric # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE 16B50..16B59 ; Numeric # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE 1D7CE..1D7FF ; Numeric # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE -# Total code points: 532 +# Total code points: 542 # ================================================ @@ -2358,18 +2394,22 @@ FF61 ; STerm # Po HALFWIDTH IDEOGRAPHIC FULL STOP 11141..11143 ; STerm # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK 111C5..111C6 ; STerm # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA 111CD ; STerm # Po SHARADA SUTRA MARK +111DE..111DF ; STerm # Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2 11238..11239 ; STerm # Po [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA 1123B..1123C ; STerm # Po [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK +112A9 ; STerm # Po MULTANI SECTION MARK 115C2..115C3 ; STerm # Po [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA -115C9 ; STerm # Po SIDDHAM END OF TEXT MARK +115C9..115D7 ; STerm # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES 11641..11642 ; STerm # Po [2] MODI DANDA..MODI DOUBLE DANDA +1173C..1173E ; STerm # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI 16A6E..16A6F ; STerm # Po [2] MRO DANDA..MRO DOUBLE DANDA 16AF5 ; STerm # Po BASSA VAH FULL STOP 16B37..16B38 ; STerm # Po [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB 16B44 ; STerm # Po PAHAWH HMONG SIGN XAUS 1BC9F ; STerm # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP +1DA88 ; STerm # Po SIGNWRITING FULL STOP -# Total code points: 96 +# Total code points: 117 # ================================================ diff --git a/util/unicode/data/SpecialCasing.txt b/util/unicode/data/SpecialCasing.txt index 43645bd2d1..8de6462f18 100644 --- a/util/unicode/data/SpecialCasing.txt +++ b/util/unicode/data/SpecialCasing.txt @@ -1,5 +1,5 @@ -# SpecialCasing-7.0.0.txt -# Date: 2014-03-18, 07:18:02 GMT [MD] +# SpecialCasing-8.0.0.txt +# Date: 2014-12-16, 23:08:04 GMT [MD] # # Unicode Character Database # Copyright (c) 1991-2014 Unicode, Inc. diff --git a/util/unicode/data/UnicodeData.txt b/util/unicode/data/UnicodeData.txt index 31c8a7eaa0..aa0e914f84 100644 --- a/util/unicode/data/UnicodeData.txt +++ b/util/unicode/data/UnicodeData.txt @@ -667,7 +667,7 @@ 029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; 029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; 029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; -029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; +029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;A7B2;;A7B2 029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;A7B0;;A7B0 029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; 02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; @@ -2091,6 +2091,9 @@ 08B0;ARABIC LETTER GAF WITH INVERTED STROKE;Lo;0;AL;;;;;N;;;;; 08B1;ARABIC LETTER STRAIGHT WAW;Lo;0;AL;;;;;N;;;;; 08B2;ARABIC LETTER ZAIN WITH INVERTED V ABOVE;Lo;0;AL;;;;;N;;;;; +08B3;ARABIC LETTER AIN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +08B4;ARABIC LETTER KAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +08E3;ARABIC TURNED DAMMA BELOW;Mn;220;NSM;;;;;N;;;;; 08E4;ARABIC CURLY FATHA;Mn;230;NSM;;;;;N;;;;; 08E5;ARABIC CURLY DAMMA;Mn;230;NSM;;;;;N;;;;; 08E6;ARABIC CURLY KASRA;Mn;220;NSM;;;;;N;;;;; @@ -2503,6 +2506,7 @@ 0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0AF0;GUJARATI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; 0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; +0AF9;GUJARATI LETTER ZHA;Lo;0;L;;;;;N;;;;; 0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; 0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; @@ -2738,6 +2742,7 @@ 0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; 0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;; 0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;; +0C5A;TELUGU LETTER RRRA;Lo;0;L;;;;;N;;;;; 0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; @@ -2919,6 +2924,7 @@ 0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0D4E;MALAYALAM LETTER DOT REPH;Lo;0;L;;;;;N;;;;; 0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; +0D5F;MALAYALAM LETTER ARCHAIC II;Lo;0;L;;;;;N;;;;; 0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; @@ -4289,91 +4295,98 @@ 1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;; 1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;; 1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;; -13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; -13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; -13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; -13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; -13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; -13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; -13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; -13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; -13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; -13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; -13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; -13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; -13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; -13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; -13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; -13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; -13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; -13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; -13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; -13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; -13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; -13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; -13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; -13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; -13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; -13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; -13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; -13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; -13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; -13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; -13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; -13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; -13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; -13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; -13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; -13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; -13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; -13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; -13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; -13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; -13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; -13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; -13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; -13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; -13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; -13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; -13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; -13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; -13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; -13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; -13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; -13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; -13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; -13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; -13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; -13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; -13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; -13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; -13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; -13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; -13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; -13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; -13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; -13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; -13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; -13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; -13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; -13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; -13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; -13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; -13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; -13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; -13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; -13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; -13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; -13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; -13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; -13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; -13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; -13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; -13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; -13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; -13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; -13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; -13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; +13A0;CHEROKEE LETTER A;Lu;0;L;;;;;N;;;;AB70; +13A1;CHEROKEE LETTER E;Lu;0;L;;;;;N;;;;AB71; +13A2;CHEROKEE LETTER I;Lu;0;L;;;;;N;;;;AB72; +13A3;CHEROKEE LETTER O;Lu;0;L;;;;;N;;;;AB73; +13A4;CHEROKEE LETTER U;Lu;0;L;;;;;N;;;;AB74; +13A5;CHEROKEE LETTER V;Lu;0;L;;;;;N;;;;AB75; +13A6;CHEROKEE LETTER GA;Lu;0;L;;;;;N;;;;AB76; +13A7;CHEROKEE LETTER KA;Lu;0;L;;;;;N;;;;AB77; +13A8;CHEROKEE LETTER GE;Lu;0;L;;;;;N;;;;AB78; +13A9;CHEROKEE LETTER GI;Lu;0;L;;;;;N;;;;AB79; +13AA;CHEROKEE LETTER GO;Lu;0;L;;;;;N;;;;AB7A; +13AB;CHEROKEE LETTER GU;Lu;0;L;;;;;N;;;;AB7B; +13AC;CHEROKEE LETTER GV;Lu;0;L;;;;;N;;;;AB7C; +13AD;CHEROKEE LETTER HA;Lu;0;L;;;;;N;;;;AB7D; +13AE;CHEROKEE LETTER HE;Lu;0;L;;;;;N;;;;AB7E; +13AF;CHEROKEE LETTER HI;Lu;0;L;;;;;N;;;;AB7F; +13B0;CHEROKEE LETTER HO;Lu;0;L;;;;;N;;;;AB80; +13B1;CHEROKEE LETTER HU;Lu;0;L;;;;;N;;;;AB81; +13B2;CHEROKEE LETTER HV;Lu;0;L;;;;;N;;;;AB82; +13B3;CHEROKEE LETTER LA;Lu;0;L;;;;;N;;;;AB83; +13B4;CHEROKEE LETTER LE;Lu;0;L;;;;;N;;;;AB84; +13B5;CHEROKEE LETTER LI;Lu;0;L;;;;;N;;;;AB85; +13B6;CHEROKEE LETTER LO;Lu;0;L;;;;;N;;;;AB86; +13B7;CHEROKEE LETTER LU;Lu;0;L;;;;;N;;;;AB87; +13B8;CHEROKEE LETTER LV;Lu;0;L;;;;;N;;;;AB88; +13B9;CHEROKEE LETTER MA;Lu;0;L;;;;;N;;;;AB89; +13BA;CHEROKEE LETTER ME;Lu;0;L;;;;;N;;;;AB8A; +13BB;CHEROKEE LETTER MI;Lu;0;L;;;;;N;;;;AB8B; +13BC;CHEROKEE LETTER MO;Lu;0;L;;;;;N;;;;AB8C; +13BD;CHEROKEE LETTER MU;Lu;0;L;;;;;N;;;;AB8D; +13BE;CHEROKEE LETTER NA;Lu;0;L;;;;;N;;;;AB8E; +13BF;CHEROKEE LETTER HNA;Lu;0;L;;;;;N;;;;AB8F; +13C0;CHEROKEE LETTER NAH;Lu;0;L;;;;;N;;;;AB90; +13C1;CHEROKEE LETTER NE;Lu;0;L;;;;;N;;;;AB91; +13C2;CHEROKEE LETTER NI;Lu;0;L;;;;;N;;;;AB92; +13C3;CHEROKEE LETTER NO;Lu;0;L;;;;;N;;;;AB93; +13C4;CHEROKEE LETTER NU;Lu;0;L;;;;;N;;;;AB94; +13C5;CHEROKEE LETTER NV;Lu;0;L;;;;;N;;;;AB95; +13C6;CHEROKEE LETTER QUA;Lu;0;L;;;;;N;;;;AB96; +13C7;CHEROKEE LETTER QUE;Lu;0;L;;;;;N;;;;AB97; +13C8;CHEROKEE LETTER QUI;Lu;0;L;;;;;N;;;;AB98; +13C9;CHEROKEE LETTER QUO;Lu;0;L;;;;;N;;;;AB99; +13CA;CHEROKEE LETTER QUU;Lu;0;L;;;;;N;;;;AB9A; +13CB;CHEROKEE LETTER QUV;Lu;0;L;;;;;N;;;;AB9B; +13CC;CHEROKEE LETTER SA;Lu;0;L;;;;;N;;;;AB9C; +13CD;CHEROKEE LETTER S;Lu;0;L;;;;;N;;;;AB9D; +13CE;CHEROKEE LETTER SE;Lu;0;L;;;;;N;;;;AB9E; +13CF;CHEROKEE LETTER SI;Lu;0;L;;;;;N;;;;AB9F; +13D0;CHEROKEE LETTER SO;Lu;0;L;;;;;N;;;;ABA0; +13D1;CHEROKEE LETTER SU;Lu;0;L;;;;;N;;;;ABA1; +13D2;CHEROKEE LETTER SV;Lu;0;L;;;;;N;;;;ABA2; +13D3;CHEROKEE LETTER DA;Lu;0;L;;;;;N;;;;ABA3; +13D4;CHEROKEE LETTER TA;Lu;0;L;;;;;N;;;;ABA4; +13D5;CHEROKEE LETTER DE;Lu;0;L;;;;;N;;;;ABA5; +13D6;CHEROKEE LETTER TE;Lu;0;L;;;;;N;;;;ABA6; +13D7;CHEROKEE LETTER DI;Lu;0;L;;;;;N;;;;ABA7; +13D8;CHEROKEE LETTER TI;Lu;0;L;;;;;N;;;;ABA8; +13D9;CHEROKEE LETTER DO;Lu;0;L;;;;;N;;;;ABA9; +13DA;CHEROKEE LETTER DU;Lu;0;L;;;;;N;;;;ABAA; +13DB;CHEROKEE LETTER DV;Lu;0;L;;;;;N;;;;ABAB; +13DC;CHEROKEE LETTER DLA;Lu;0;L;;;;;N;;;;ABAC; +13DD;CHEROKEE LETTER TLA;Lu;0;L;;;;;N;;;;ABAD; +13DE;CHEROKEE LETTER TLE;Lu;0;L;;;;;N;;;;ABAE; +13DF;CHEROKEE LETTER TLI;Lu;0;L;;;;;N;;;;ABAF; +13E0;CHEROKEE LETTER TLO;Lu;0;L;;;;;N;;;;ABB0; +13E1;CHEROKEE LETTER TLU;Lu;0;L;;;;;N;;;;ABB1; +13E2;CHEROKEE LETTER TLV;Lu;0;L;;;;;N;;;;ABB2; +13E3;CHEROKEE LETTER TSA;Lu;0;L;;;;;N;;;;ABB3; +13E4;CHEROKEE LETTER TSE;Lu;0;L;;;;;N;;;;ABB4; +13E5;CHEROKEE LETTER TSI;Lu;0;L;;;;;N;;;;ABB5; +13E6;CHEROKEE LETTER TSO;Lu;0;L;;;;;N;;;;ABB6; +13E7;CHEROKEE LETTER TSU;Lu;0;L;;;;;N;;;;ABB7; +13E8;CHEROKEE LETTER TSV;Lu;0;L;;;;;N;;;;ABB8; +13E9;CHEROKEE LETTER WA;Lu;0;L;;;;;N;;;;ABB9; +13EA;CHEROKEE LETTER WE;Lu;0;L;;;;;N;;;;ABBA; +13EB;CHEROKEE LETTER WI;Lu;0;L;;;;;N;;;;ABBB; +13EC;CHEROKEE LETTER WO;Lu;0;L;;;;;N;;;;ABBC; +13ED;CHEROKEE LETTER WU;Lu;0;L;;;;;N;;;;ABBD; +13EE;CHEROKEE LETTER WV;Lu;0;L;;;;;N;;;;ABBE; +13EF;CHEROKEE LETTER YA;Lu;0;L;;;;;N;;;;ABBF; +13F0;CHEROKEE LETTER YE;Lu;0;L;;;;;N;;;;13F8; +13F1;CHEROKEE LETTER YI;Lu;0;L;;;;;N;;;;13F9; +13F2;CHEROKEE LETTER YO;Lu;0;L;;;;;N;;;;13FA; +13F3;CHEROKEE LETTER YU;Lu;0;L;;;;;N;;;;13FB; +13F4;CHEROKEE LETTER YV;Lu;0;L;;;;;N;;;;13FC; +13F5;CHEROKEE LETTER MV;Lu;0;L;;;;;N;;;;13FD; +13F8;CHEROKEE SMALL LETTER YE;Ll;0;L;;;;;N;;;13F0;;13F0 +13F9;CHEROKEE SMALL LETTER YI;Ll;0;L;;;;;N;;;13F1;;13F1 +13FA;CHEROKEE SMALL LETTER YO;Ll;0;L;;;;;N;;;13F2;;13F2 +13FB;CHEROKEE SMALL LETTER YU;Ll;0;L;;;;;N;;;13F3;;13F3 +13FC;CHEROKEE SMALL LETTER YV;Ll;0;L;;;;;N;;;13F4;;13F4 +13FD;CHEROKEE SMALL LETTER MV;Ll;0;L;;;;;N;;;13F5;;13F5 1400;CANADIAN SYLLABICS HYPHEN;Pd;0;ON;;;;;N;;;;; 1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; 1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; @@ -5700,23 +5713,23 @@ 19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;; 19AA;NEW TAI LUE LETTER HIGH SUA;Lo;0;L;;;;;N;;;;; 19AB;NEW TAI LUE LETTER LOW SUA;Lo;0;L;;;;;N;;;;; -19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;; -19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;; -19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;; -19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;; -19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;; -19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;; -19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; -19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;; -19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;; -19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;; +19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Lo;0;L;;;;;N;;;;; +19B1;NEW TAI LUE VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; +19B2;NEW TAI LUE VOWEL SIGN II;Lo;0;L;;;;;N;;;;; +19B3;NEW TAI LUE VOWEL SIGN U;Lo;0;L;;;;;N;;;;; +19B4;NEW TAI LUE VOWEL SIGN UU;Lo;0;L;;;;;N;;;;; +19B5;NEW TAI LUE VOWEL SIGN E;Lo;0;L;;;;;N;;;;; +19B6;NEW TAI LUE VOWEL SIGN AE;Lo;0;L;;;;;N;;;;; +19B7;NEW TAI LUE VOWEL SIGN O;Lo;0;L;;;;;N;;;;; +19B8;NEW TAI LUE VOWEL SIGN OA;Lo;0;L;;;;;N;;;;; +19B9;NEW TAI LUE VOWEL SIGN UE;Lo;0;L;;;;;N;;;;; +19BA;NEW TAI LUE VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; +19BB;NEW TAI LUE VOWEL SIGN AAY;Lo;0;L;;;;;N;;;;; +19BC;NEW TAI LUE VOWEL SIGN UY;Lo;0;L;;;;;N;;;;; +19BD;NEW TAI LUE VOWEL SIGN OY;Lo;0;L;;;;;N;;;;; +19BE;NEW TAI LUE VOWEL SIGN OAY;Lo;0;L;;;;;N;;;;; +19BF;NEW TAI LUE VOWEL SIGN UEY;Lo;0;L;;;;;N;;;;; +19C0;NEW TAI LUE VOWEL SIGN IY;Lo;0;L;;;;;N;;;;; 19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;; 19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;; 19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;; @@ -5724,8 +5737,8 @@ 19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;; 19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;; 19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;; -19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;; -19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;; +19C8;NEW TAI LUE TONE MARK-1;Lo;0;L;;;;;N;;;;; +19C9;NEW TAI LUE TONE MARK-2;Lo;0;L;;;;;N;;;;; 19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -7277,6 +7290,7 @@ 20BB;NORDIC MARK SIGN;Sc;0;ET;;;;;N;;;;; 20BC;MANAT SIGN;Sc;0;ET;;;;;N;;;;; 20BD;RUBLE SIGN;Sc;0;ET;;;;;N;;;;; +20BE;LARI SIGN;Sc;0;ET;;;;;N;;;;; 20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; 20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; 20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; @@ -7448,6 +7462,8 @@ 2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;; 2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;; 2189;VULGAR FRACTION ZERO THIRDS;No;0;ON; 0030 2044 0033;;;0;N;;;;; +218A;TURNED DIGIT TWO;So;0;ON;;;;;N;;;;; +218B;TURNED DIGIT THREE;So;0;ON;;;;;N;;;;; 2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; 2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; 2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; @@ -10015,6 +10031,10 @@ 2BCF;ROTATED WHITE FOUR POINTED CUSP;So;0;ON;;;;;N;;;;; 2BD0;SQUARE POSITION INDICATOR;So;0;ON;;;;;N;;;;; 2BD1;UNCERTAINTY SIGN;So;0;ON;;;;;N;;;;; +2BEC;LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;; +2BED;UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;; +2BEE;RIGHTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;; +2BEF;DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS;So;0;ON;;;;;N;;;;; 2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30; 2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31; 2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32; @@ -11942,7 +11962,7 @@ 4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; 4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; 4E00;;Lo;0;L;;;;;N;;;;; -9FCC;;Lo;0;L;;;;;N;;;;; +9FD5;;Lo;0;L;;;;;N;;;;; A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; @@ -13605,6 +13625,7 @@ A69A;CYRILLIC CAPITAL LETTER CROSSED O;Lu;0;L;;;;;N;;;;A69B; A69B;CYRILLIC SMALL LETTER CROSSED O;Ll;0;L;;;;;N;;;A69A;;A69A A69C;MODIFIER LETTER CYRILLIC HARD SIGN;Lm;0;L; 044A;;;;N;;;;; A69D;MODIFIER LETTER CYRILLIC SOFT SIGN;Lm;0;L; 044C;;;;N;;;;; +A69E;COMBINING CYRILLIC LETTER EF;Mn;230;NSM;;;;;N;;;;; A69F;COMBINING CYRILLIC LETTER IOTIFIED E;Mn;230;NSM;;;;;N;;;;; A6A0;BAMUM LETTER A;Lo;0;L;;;;;N;;;;; A6A1;BAMUM LETTER KA;Lo;0;L;;;;;N;;;;; @@ -13837,6 +13858,7 @@ A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C; A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B A78D;LATIN CAPITAL LETTER TURNED H;Lu;0;L;;;;;N;;;;0265; A78E;LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT;Ll;0;L;;;;;N;;;;; +A78F;LATIN LETTER SINOLOGICAL DOT;Lo;0;L;;;;;N;;;;; A790;LATIN CAPITAL LETTER N WITH DESCENDER;Lu;0;L;;;;;N;;;;A791; A791;LATIN SMALL LETTER N WITH DESCENDER;Ll;0;L;;;;;N;;;A790;;A790 A792;LATIN CAPITAL LETTER C WITH BAR;Lu;0;L;;;;;N;;;;A793; @@ -13869,6 +13891,12 @@ A7AC;LATIN CAPITAL LETTER SCRIPT G;Lu;0;L;;;;;N;;;;0261; A7AD;LATIN CAPITAL LETTER L WITH BELT;Lu;0;L;;;;;N;;;;026C; A7B0;LATIN CAPITAL LETTER TURNED K;Lu;0;L;;;;;N;;;;029E; A7B1;LATIN CAPITAL LETTER TURNED T;Lu;0;L;;;;;N;;;;0287; +A7B2;LATIN CAPITAL LETTER J WITH CROSSED-TAIL;Lu;0;L;;;;;N;;;;029D; +A7B3;LATIN CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;AB53; +A7B4;LATIN CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;A7B5; +A7B5;LATIN SMALL LETTER BETA;Ll;0;L;;;;;N;;;A7B4;;A7B4 +A7B6;LATIN CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;A7B7; +A7B7;LATIN SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;A7B6;;A7B6 A7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;; A7F8;MODIFIER LETTER CAPITAL H WITH STROKE;Lm;0;L; 0126;;;;N;;;;; A7F9;MODIFIER LETTER SMALL LIGATURE OE;Lm;0;L; 0153;;;;N;;;;; @@ -14097,6 +14125,8 @@ A8F8;DEVANAGARI SIGN PUSHPIKA;Po;0;L;;;;;N;;;;; A8F9;DEVANAGARI GAP FILLER;Po;0;L;;;;;N;;;;; A8FA;DEVANAGARI CARET;Po;0;L;;;;;N;;;;; A8FB;DEVANAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;; +A8FC;DEVANAGARI SIGN SIDDHAM;Po;0;L;;;;;N;;;;; +A8FD;DEVANAGARI JAIN OM;Lo;0;L;;;;;N;;;;; A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -14610,7 +14640,7 @@ AB4F;LATIN SMALL LETTER U BAR WITH SHORT RIGHT LEG;Ll;0;L;;;;;N;;;;; AB50;LATIN SMALL LETTER UI;Ll;0;L;;;;;N;;;;; AB51;LATIN SMALL LETTER TURNED UI;Ll;0;L;;;;;N;;;;; AB52;LATIN SMALL LETTER U WITH LEFT HOOK;Ll;0;L;;;;;N;;;;; -AB53;LATIN SMALL LETTER CHI;Ll;0;L;;;;;N;;;;; +AB53;LATIN SMALL LETTER CHI;Ll;0;L;;;;;N;;;A7B3;;A7B3 AB54;LATIN SMALL LETTER CHI WITH LOW RIGHT RING;Ll;0;L;;;;;N;;;;; AB55;LATIN SMALL LETTER CHI WITH LOW LEFT SERIF;Ll;0;L;;;;;N;;;;; AB56;LATIN SMALL LETTER X WITH LOW RIGHT RING;Ll;0;L;;;;;N;;;;; @@ -14623,8 +14653,92 @@ AB5C;MODIFIER LETTER SMALL HENG;Lm;0;L; A727;;;;N;;;;; AB5D;MODIFIER LETTER SMALL L WITH INVERTED LAZY S;Lm;0;L; AB37;;;;N;;;;; AB5E;MODIFIER LETTER SMALL L WITH MIDDLE TILDE;Lm;0;L; 026B;;;;N;;;;; AB5F;MODIFIER LETTER SMALL U WITH LEFT HOOK;Lm;0;L; AB52;;;;N;;;;; +AB60;LATIN SMALL LETTER SAKHA YAT;Ll;0;L;;;;;N;;;;; +AB61;LATIN SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;;; +AB62;LATIN SMALL LETTER OPEN OE;Ll;0;L;;;;;N;;;;; +AB63;LATIN SMALL LETTER UO;Ll;0;L;;;;;N;;;;; AB64;LATIN SMALL LETTER INVERTED ALPHA;Ll;0;L;;;;;N;;;;; AB65;GREEK LETTER SMALL CAPITAL OMEGA;Ll;0;L;;;;;N;;;;; +AB70;CHEROKEE SMALL LETTER A;Ll;0;L;;;;;N;;;13A0;;13A0 +AB71;CHEROKEE SMALL LETTER E;Ll;0;L;;;;;N;;;13A1;;13A1 +AB72;CHEROKEE SMALL LETTER I;Ll;0;L;;;;;N;;;13A2;;13A2 +AB73;CHEROKEE SMALL LETTER O;Ll;0;L;;;;;N;;;13A3;;13A3 +AB74;CHEROKEE SMALL LETTER U;Ll;0;L;;;;;N;;;13A4;;13A4 +AB75;CHEROKEE SMALL LETTER V;Ll;0;L;;;;;N;;;13A5;;13A5 +AB76;CHEROKEE SMALL LETTER GA;Ll;0;L;;;;;N;;;13A6;;13A6 +AB77;CHEROKEE SMALL LETTER KA;Ll;0;L;;;;;N;;;13A7;;13A7 +AB78;CHEROKEE SMALL LETTER GE;Ll;0;L;;;;;N;;;13A8;;13A8 +AB79;CHEROKEE SMALL LETTER GI;Ll;0;L;;;;;N;;;13A9;;13A9 +AB7A;CHEROKEE SMALL LETTER GO;Ll;0;L;;;;;N;;;13AA;;13AA +AB7B;CHEROKEE SMALL LETTER GU;Ll;0;L;;;;;N;;;13AB;;13AB +AB7C;CHEROKEE SMALL LETTER GV;Ll;0;L;;;;;N;;;13AC;;13AC +AB7D;CHEROKEE SMALL LETTER HA;Ll;0;L;;;;;N;;;13AD;;13AD +AB7E;CHEROKEE SMALL LETTER HE;Ll;0;L;;;;;N;;;13AE;;13AE +AB7F;CHEROKEE SMALL LETTER HI;Ll;0;L;;;;;N;;;13AF;;13AF +AB80;CHEROKEE SMALL LETTER HO;Ll;0;L;;;;;N;;;13B0;;13B0 +AB81;CHEROKEE SMALL LETTER HU;Ll;0;L;;;;;N;;;13B1;;13B1 +AB82;CHEROKEE SMALL LETTER HV;Ll;0;L;;;;;N;;;13B2;;13B2 +AB83;CHEROKEE SMALL LETTER LA;Ll;0;L;;;;;N;;;13B3;;13B3 +AB84;CHEROKEE SMALL LETTER LE;Ll;0;L;;;;;N;;;13B4;;13B4 +AB85;CHEROKEE SMALL LETTER LI;Ll;0;L;;;;;N;;;13B5;;13B5 +AB86;CHEROKEE SMALL LETTER LO;Ll;0;L;;;;;N;;;13B6;;13B6 +AB87;CHEROKEE SMALL LETTER LU;Ll;0;L;;;;;N;;;13B7;;13B7 +AB88;CHEROKEE SMALL LETTER LV;Ll;0;L;;;;;N;;;13B8;;13B8 +AB89;CHEROKEE SMALL LETTER MA;Ll;0;L;;;;;N;;;13B9;;13B9 +AB8A;CHEROKEE SMALL LETTER ME;Ll;0;L;;;;;N;;;13BA;;13BA +AB8B;CHEROKEE SMALL LETTER MI;Ll;0;L;;;;;N;;;13BB;;13BB +AB8C;CHEROKEE SMALL LETTER MO;Ll;0;L;;;;;N;;;13BC;;13BC +AB8D;CHEROKEE SMALL LETTER MU;Ll;0;L;;;;;N;;;13BD;;13BD +AB8E;CHEROKEE SMALL LETTER NA;Ll;0;L;;;;;N;;;13BE;;13BE +AB8F;CHEROKEE SMALL LETTER HNA;Ll;0;L;;;;;N;;;13BF;;13BF +AB90;CHEROKEE SMALL LETTER NAH;Ll;0;L;;;;;N;;;13C0;;13C0 +AB91;CHEROKEE SMALL LETTER NE;Ll;0;L;;;;;N;;;13C1;;13C1 +AB92;CHEROKEE SMALL LETTER NI;Ll;0;L;;;;;N;;;13C2;;13C2 +AB93;CHEROKEE SMALL LETTER NO;Ll;0;L;;;;;N;;;13C3;;13C3 +AB94;CHEROKEE SMALL LETTER NU;Ll;0;L;;;;;N;;;13C4;;13C4 +AB95;CHEROKEE SMALL LETTER NV;Ll;0;L;;;;;N;;;13C5;;13C5 +AB96;CHEROKEE SMALL LETTER QUA;Ll;0;L;;;;;N;;;13C6;;13C6 +AB97;CHEROKEE SMALL LETTER QUE;Ll;0;L;;;;;N;;;13C7;;13C7 +AB98;CHEROKEE SMALL LETTER QUI;Ll;0;L;;;;;N;;;13C8;;13C8 +AB99;CHEROKEE SMALL LETTER QUO;Ll;0;L;;;;;N;;;13C9;;13C9 +AB9A;CHEROKEE SMALL LETTER QUU;Ll;0;L;;;;;N;;;13CA;;13CA +AB9B;CHEROKEE SMALL LETTER QUV;Ll;0;L;;;;;N;;;13CB;;13CB +AB9C;CHEROKEE SMALL LETTER SA;Ll;0;L;;;;;N;;;13CC;;13CC +AB9D;CHEROKEE SMALL LETTER S;Ll;0;L;;;;;N;;;13CD;;13CD +AB9E;CHEROKEE SMALL LETTER SE;Ll;0;L;;;;;N;;;13CE;;13CE +AB9F;CHEROKEE SMALL LETTER SI;Ll;0;L;;;;;N;;;13CF;;13CF +ABA0;CHEROKEE SMALL LETTER SO;Ll;0;L;;;;;N;;;13D0;;13D0 +ABA1;CHEROKEE SMALL LETTER SU;Ll;0;L;;;;;N;;;13D1;;13D1 +ABA2;CHEROKEE SMALL LETTER SV;Ll;0;L;;;;;N;;;13D2;;13D2 +ABA3;CHEROKEE SMALL LETTER DA;Ll;0;L;;;;;N;;;13D3;;13D3 +ABA4;CHEROKEE SMALL LETTER TA;Ll;0;L;;;;;N;;;13D4;;13D4 +ABA5;CHEROKEE SMALL LETTER DE;Ll;0;L;;;;;N;;;13D5;;13D5 +ABA6;CHEROKEE SMALL LETTER TE;Ll;0;L;;;;;N;;;13D6;;13D6 +ABA7;CHEROKEE SMALL LETTER DI;Ll;0;L;;;;;N;;;13D7;;13D7 +ABA8;CHEROKEE SMALL LETTER TI;Ll;0;L;;;;;N;;;13D8;;13D8 +ABA9;CHEROKEE SMALL LETTER DO;Ll;0;L;;;;;N;;;13D9;;13D9 +ABAA;CHEROKEE SMALL LETTER DU;Ll;0;L;;;;;N;;;13DA;;13DA +ABAB;CHEROKEE SMALL LETTER DV;Ll;0;L;;;;;N;;;13DB;;13DB +ABAC;CHEROKEE SMALL LETTER DLA;Ll;0;L;;;;;N;;;13DC;;13DC +ABAD;CHEROKEE SMALL LETTER TLA;Ll;0;L;;;;;N;;;13DD;;13DD +ABAE;CHEROKEE SMALL LETTER TLE;Ll;0;L;;;;;N;;;13DE;;13DE +ABAF;CHEROKEE SMALL LETTER TLI;Ll;0;L;;;;;N;;;13DF;;13DF +ABB0;CHEROKEE SMALL LETTER TLO;Ll;0;L;;;;;N;;;13E0;;13E0 +ABB1;CHEROKEE SMALL LETTER TLU;Ll;0;L;;;;;N;;;13E1;;13E1 +ABB2;CHEROKEE SMALL LETTER TLV;Ll;0;L;;;;;N;;;13E2;;13E2 +ABB3;CHEROKEE SMALL LETTER TSA;Ll;0;L;;;;;N;;;13E3;;13E3 +ABB4;CHEROKEE SMALL LETTER TSE;Ll;0;L;;;;;N;;;13E4;;13E4 +ABB5;CHEROKEE SMALL LETTER TSI;Ll;0;L;;;;;N;;;13E5;;13E5 +ABB6;CHEROKEE SMALL LETTER TSO;Ll;0;L;;;;;N;;;13E6;;13E6 +ABB7;CHEROKEE SMALL LETTER TSU;Ll;0;L;;;;;N;;;13E7;;13E7 +ABB8;CHEROKEE SMALL LETTER TSV;Ll;0;L;;;;;N;;;13E8;;13E8 +ABB9;CHEROKEE SMALL LETTER WA;Ll;0;L;;;;;N;;;13E9;;13E9 +ABBA;CHEROKEE SMALL LETTER WE;Ll;0;L;;;;;N;;;13EA;;13EA +ABBB;CHEROKEE SMALL LETTER WI;Ll;0;L;;;;;N;;;13EB;;13EB +ABBC;CHEROKEE SMALL LETTER WO;Ll;0;L;;;;;N;;;13EC;;13EC +ABBD;CHEROKEE SMALL LETTER WU;Ll;0;L;;;;;N;;;13ED;;13ED +ABBE;CHEROKEE SMALL LETTER WV;Ll;0;L;;;;;N;;;13EE;;13EE +ABBF;CHEROKEE SMALL LETTER YA;Ll;0;L;;;;;N;;;13EF;;13EF ABC0;MEETEI MAYEK LETTER KOK;Lo;0;L;;;;;N;;;;; ABC1;MEETEI MAYEK LETTER SAM;Lo;0;L;;;;;N;;;;; ABC2;MEETEI MAYEK LETTER LAI;Lo;0;L;;;;;N;;;;; @@ -15944,6 +16058,8 @@ FE2A;COMBINING TILDE RIGHT HALF BELOW;Mn;220;NSM;;;;;N;;;;; FE2B;COMBINING MACRON LEFT HALF BELOW;Mn;220;NSM;;;;;N;;;;; FE2C;COMBINING MACRON RIGHT HALF BELOW;Mn;220;NSM;;;;;N;;;;; FE2D;COMBINING CONJOINING MACRON BELOW;Mn;220;NSM;;;;;N;;;;; +FE2E;COMBINING CYRILLIC TITLO LEFT HALF;Mn;230;NSM;;;;;N;;;;; +FE2F;COMBINING CYRILLIC TITLO RIGHT HALF;Mn;230;NSM;;;;;N;;;;; FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON; 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON; 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON; 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; @@ -17830,6 +17946,32 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 108AD;NABATAEAN NUMBER TEN;No;0;R;;;;10;N;;;;; 108AE;NABATAEAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; 108AF;NABATAEAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; +108E0;HATRAN LETTER ALEPH;Lo;0;R;;;;;N;;;;; +108E1;HATRAN LETTER BETH;Lo;0;R;;;;;N;;;;; +108E2;HATRAN LETTER GIMEL;Lo;0;R;;;;;N;;;;; +108E3;HATRAN LETTER DALETH-RESH;Lo;0;R;;;;;N;;;;; +108E4;HATRAN LETTER HE;Lo;0;R;;;;;N;;;;; +108E5;HATRAN LETTER WAW;Lo;0;R;;;;;N;;;;; +108E6;HATRAN LETTER ZAYN;Lo;0;R;;;;;N;;;;; +108E7;HATRAN LETTER HETH;Lo;0;R;;;;;N;;;;; +108E8;HATRAN LETTER TETH;Lo;0;R;;;;;N;;;;; +108E9;HATRAN LETTER YODH;Lo;0;R;;;;;N;;;;; +108EA;HATRAN LETTER KAPH;Lo;0;R;;;;;N;;;;; +108EB;HATRAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;; +108EC;HATRAN LETTER MEM;Lo;0;R;;;;;N;;;;; +108ED;HATRAN LETTER NUN;Lo;0;R;;;;;N;;;;; +108EE;HATRAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;; +108EF;HATRAN LETTER AYN;Lo;0;R;;;;;N;;;;; +108F0;HATRAN LETTER PE;Lo;0;R;;;;;N;;;;; +108F1;HATRAN LETTER SADHE;Lo;0;R;;;;;N;;;;; +108F2;HATRAN LETTER QOPH;Lo;0;R;;;;;N;;;;; +108F4;HATRAN LETTER SHIN;Lo;0;R;;;;;N;;;;; +108F5;HATRAN LETTER TAW;Lo;0;R;;;;;N;;;;; +108FB;HATRAN NUMBER ONE;No;0;R;;;;1;N;;;;; +108FC;HATRAN NUMBER FIVE;No;0;R;;;;5;N;;;;; +108FD;HATRAN NUMBER TEN;No;0;R;;;;10;N;;;;; +108FE;HATRAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; +108FF;HATRAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; 10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;; 10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;; 10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;; @@ -17942,8 +18084,72 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 109B5;MEROITIC CURSIVE LETTER TE;Lo;0;R;;;;;N;;;;; 109B6;MEROITIC CURSIVE LETTER TO;Lo;0;R;;;;;N;;;;; 109B7;MEROITIC CURSIVE LETTER DA;Lo;0;R;;;;;N;;;;; +109BC;MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS;No;0;R;;;;11/12;N;;;;; +109BD;MEROITIC CURSIVE FRACTION ONE HALF;No;0;R;;;;1/2;N;;;;; 109BE;MEROITIC CURSIVE LOGOGRAM RMT;Lo;0;R;;;;;N;;;;; 109BF;MEROITIC CURSIVE LOGOGRAM IMN;Lo;0;R;;;;;N;;;;; +109C0;MEROITIC CURSIVE NUMBER ONE;No;0;R;;;;1;N;;;;; +109C1;MEROITIC CURSIVE NUMBER TWO;No;0;R;;;;2;N;;;;; +109C2;MEROITIC CURSIVE NUMBER THREE;No;0;R;;;;3;N;;;;; +109C3;MEROITIC CURSIVE NUMBER FOUR;No;0;R;;;;4;N;;;;; +109C4;MEROITIC CURSIVE NUMBER FIVE;No;0;R;;;;5;N;;;;; +109C5;MEROITIC CURSIVE NUMBER SIX;No;0;R;;;;6;N;;;;; +109C6;MEROITIC CURSIVE NUMBER SEVEN;No;0;R;;;;7;N;;;;; +109C7;MEROITIC CURSIVE NUMBER EIGHT;No;0;R;;;;8;N;;;;; +109C8;MEROITIC CURSIVE NUMBER NINE;No;0;R;;;;9;N;;;;; +109C9;MEROITIC CURSIVE NUMBER TEN;No;0;R;;;;10;N;;;;; +109CA;MEROITIC CURSIVE NUMBER TWENTY;No;0;R;;;;20;N;;;;; +109CB;MEROITIC CURSIVE NUMBER THIRTY;No;0;R;;;;30;N;;;;; +109CC;MEROITIC CURSIVE NUMBER FORTY;No;0;R;;;;40;N;;;;; +109CD;MEROITIC CURSIVE NUMBER FIFTY;No;0;R;;;;50;N;;;;; +109CE;MEROITIC CURSIVE NUMBER SIXTY;No;0;R;;;;60;N;;;;; +109CF;MEROITIC CURSIVE NUMBER SEVENTY;No;0;R;;;;70;N;;;;; +109D2;MEROITIC CURSIVE NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; +109D3;MEROITIC CURSIVE NUMBER TWO HUNDRED;No;0;R;;;;200;N;;;;; +109D4;MEROITIC CURSIVE NUMBER THREE HUNDRED;No;0;R;;;;300;N;;;;; +109D5;MEROITIC CURSIVE NUMBER FOUR HUNDRED;No;0;R;;;;400;N;;;;; +109D6;MEROITIC CURSIVE NUMBER FIVE HUNDRED;No;0;R;;;;500;N;;;;; +109D7;MEROITIC CURSIVE NUMBER SIX HUNDRED;No;0;R;;;;600;N;;;;; +109D8;MEROITIC CURSIVE NUMBER SEVEN HUNDRED;No;0;R;;;;700;N;;;;; +109D9;MEROITIC CURSIVE NUMBER EIGHT HUNDRED;No;0;R;;;;800;N;;;;; +109DA;MEROITIC CURSIVE NUMBER NINE HUNDRED;No;0;R;;;;900;N;;;;; +109DB;MEROITIC CURSIVE NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; +109DC;MEROITIC CURSIVE NUMBER TWO THOUSAND;No;0;R;;;;2000;N;;;;; +109DD;MEROITIC CURSIVE NUMBER THREE THOUSAND;No;0;R;;;;3000;N;;;;; +109DE;MEROITIC CURSIVE NUMBER FOUR THOUSAND;No;0;R;;;;4000;N;;;;; +109DF;MEROITIC CURSIVE NUMBER FIVE THOUSAND;No;0;R;;;;5000;N;;;;; +109E0;MEROITIC CURSIVE NUMBER SIX THOUSAND;No;0;R;;;;6000;N;;;;; +109E1;MEROITIC CURSIVE NUMBER SEVEN THOUSAND;No;0;R;;;;7000;N;;;;; +109E2;MEROITIC CURSIVE NUMBER EIGHT THOUSAND;No;0;R;;;;8000;N;;;;; +109E3;MEROITIC CURSIVE NUMBER NINE THOUSAND;No;0;R;;;;9000;N;;;;; +109E4;MEROITIC CURSIVE NUMBER TEN THOUSAND;No;0;R;;;;10000;N;;;;; +109E5;MEROITIC CURSIVE NUMBER TWENTY THOUSAND;No;0;R;;;;20000;N;;;;; +109E6;MEROITIC CURSIVE NUMBER THIRTY THOUSAND;No;0;R;;;;30000;N;;;;; +109E7;MEROITIC CURSIVE NUMBER FORTY THOUSAND;No;0;R;;;;40000;N;;;;; +109E8;MEROITIC CURSIVE NUMBER FIFTY THOUSAND;No;0;R;;;;50000;N;;;;; +109E9;MEROITIC CURSIVE NUMBER SIXTY THOUSAND;No;0;R;;;;60000;N;;;;; +109EA;MEROITIC CURSIVE NUMBER SEVENTY THOUSAND;No;0;R;;;;70000;N;;;;; +109EB;MEROITIC CURSIVE NUMBER EIGHTY THOUSAND;No;0;R;;;;80000;N;;;;; +109EC;MEROITIC CURSIVE NUMBER NINETY THOUSAND;No;0;R;;;;90000;N;;;;; +109ED;MEROITIC CURSIVE NUMBER ONE HUNDRED THOUSAND;No;0;R;;;;100000;N;;;;; +109EE;MEROITIC CURSIVE NUMBER TWO HUNDRED THOUSAND;No;0;R;;;;200000;N;;;;; +109EF;MEROITIC CURSIVE NUMBER THREE HUNDRED THOUSAND;No;0;R;;;;300000;N;;;;; +109F0;MEROITIC CURSIVE NUMBER FOUR HUNDRED THOUSAND;No;0;R;;;;400000;N;;;;; +109F1;MEROITIC CURSIVE NUMBER FIVE HUNDRED THOUSAND;No;0;R;;;;500000;N;;;;; +109F2;MEROITIC CURSIVE NUMBER SIX HUNDRED THOUSAND;No;0;R;;;;600000;N;;;;; +109F3;MEROITIC CURSIVE NUMBER SEVEN HUNDRED THOUSAND;No;0;R;;;;700000;N;;;;; +109F4;MEROITIC CURSIVE NUMBER EIGHT HUNDRED THOUSAND;No;0;R;;;;800000;N;;;;; +109F5;MEROITIC CURSIVE NUMBER NINE HUNDRED THOUSAND;No;0;R;;;;900000;N;;;;; +109F6;MEROITIC CURSIVE FRACTION ONE TWELFTH;No;0;R;;;;1/12;N;;;;; +109F7;MEROITIC CURSIVE FRACTION TWO TWELFTHS;No;0;R;;;;2/12;N;;;;; +109F8;MEROITIC CURSIVE FRACTION THREE TWELFTHS;No;0;R;;;;3/12;N;;;;; +109F9;MEROITIC CURSIVE FRACTION FOUR TWELFTHS;No;0;R;;;;4/12;N;;;;; +109FA;MEROITIC CURSIVE FRACTION FIVE TWELFTHS;No;0;R;;;;5/12;N;;;;; +109FB;MEROITIC CURSIVE FRACTION SIX TWELFTHS;No;0;R;;;;6/12;N;;;;; +109FC;MEROITIC CURSIVE FRACTION SEVEN TWELFTHS;No;0;R;;;;7/12;N;;;;; +109FD;MEROITIC CURSIVE FRACTION EIGHT TWELFTHS;No;0;R;;;;8/12;N;;;;; +109FE;MEROITIC CURSIVE FRACTION NINE TWELFTHS;No;0;R;;;;9/12;N;;;;; +109FF;MEROITIC CURSIVE FRACTION TEN TWELFTHS;No;0;R;;;;10/12;N;;;;; 10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;; 10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; @@ -18344,6 +18550,114 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10C46;OLD TURKIC LETTER YENISEI AET;Lo;0;R;;;;;N;;;;; 10C47;OLD TURKIC LETTER ORKHON OT;Lo;0;R;;;;;N;;;;; 10C48;OLD TURKIC LETTER ORKHON BASH;Lo;0;R;;;;;N;;;;; +10C80;OLD HUNGARIAN CAPITAL LETTER A;Lu;0;R;;;;;N;;;;10CC0; +10C81;OLD HUNGARIAN CAPITAL LETTER AA;Lu;0;R;;;;;N;;;;10CC1; +10C82;OLD HUNGARIAN CAPITAL LETTER EB;Lu;0;R;;;;;N;;;;10CC2; +10C83;OLD HUNGARIAN CAPITAL LETTER AMB;Lu;0;R;;;;;N;;;;10CC3; +10C84;OLD HUNGARIAN CAPITAL LETTER EC;Lu;0;R;;;;;N;;;;10CC4; +10C85;OLD HUNGARIAN CAPITAL LETTER ENC;Lu;0;R;;;;;N;;;;10CC5; +10C86;OLD HUNGARIAN CAPITAL LETTER ECS;Lu;0;R;;;;;N;;;;10CC6; +10C87;OLD HUNGARIAN CAPITAL LETTER ED;Lu;0;R;;;;;N;;;;10CC7; +10C88;OLD HUNGARIAN CAPITAL LETTER AND;Lu;0;R;;;;;N;;;;10CC8; +10C89;OLD HUNGARIAN CAPITAL LETTER E;Lu;0;R;;;;;N;;;;10CC9; +10C8A;OLD HUNGARIAN CAPITAL LETTER CLOSE E;Lu;0;R;;;;;N;;;;10CCA; +10C8B;OLD HUNGARIAN CAPITAL LETTER EE;Lu;0;R;;;;;N;;;;10CCB; +10C8C;OLD HUNGARIAN CAPITAL LETTER EF;Lu;0;R;;;;;N;;;;10CCC; +10C8D;OLD HUNGARIAN CAPITAL LETTER EG;Lu;0;R;;;;;N;;;;10CCD; +10C8E;OLD HUNGARIAN CAPITAL LETTER EGY;Lu;0;R;;;;;N;;;;10CCE; +10C8F;OLD HUNGARIAN CAPITAL LETTER EH;Lu;0;R;;;;;N;;;;10CCF; +10C90;OLD HUNGARIAN CAPITAL LETTER I;Lu;0;R;;;;;N;;;;10CD0; +10C91;OLD HUNGARIAN CAPITAL LETTER II;Lu;0;R;;;;;N;;;;10CD1; +10C92;OLD HUNGARIAN CAPITAL LETTER EJ;Lu;0;R;;;;;N;;;;10CD2; +10C93;OLD HUNGARIAN CAPITAL LETTER EK;Lu;0;R;;;;;N;;;;10CD3; +10C94;OLD HUNGARIAN CAPITAL LETTER AK;Lu;0;R;;;;;N;;;;10CD4; +10C95;OLD HUNGARIAN CAPITAL LETTER UNK;Lu;0;R;;;;;N;;;;10CD5; +10C96;OLD HUNGARIAN CAPITAL LETTER EL;Lu;0;R;;;;;N;;;;10CD6; +10C97;OLD HUNGARIAN CAPITAL LETTER ELY;Lu;0;R;;;;;N;;;;10CD7; +10C98;OLD HUNGARIAN CAPITAL LETTER EM;Lu;0;R;;;;;N;;;;10CD8; +10C99;OLD HUNGARIAN CAPITAL LETTER EN;Lu;0;R;;;;;N;;;;10CD9; +10C9A;OLD HUNGARIAN CAPITAL LETTER ENY;Lu;0;R;;;;;N;;;;10CDA; +10C9B;OLD HUNGARIAN CAPITAL LETTER O;Lu;0;R;;;;;N;;;;10CDB; +10C9C;OLD HUNGARIAN CAPITAL LETTER OO;Lu;0;R;;;;;N;;;;10CDC; +10C9D;OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE;Lu;0;R;;;;;N;;;;10CDD; +10C9E;OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE;Lu;0;R;;;;;N;;;;10CDE; +10C9F;OLD HUNGARIAN CAPITAL LETTER OEE;Lu;0;R;;;;;N;;;;10CDF; +10CA0;OLD HUNGARIAN CAPITAL LETTER EP;Lu;0;R;;;;;N;;;;10CE0; +10CA1;OLD HUNGARIAN CAPITAL LETTER EMP;Lu;0;R;;;;;N;;;;10CE1; +10CA2;OLD HUNGARIAN CAPITAL LETTER ER;Lu;0;R;;;;;N;;;;10CE2; +10CA3;OLD HUNGARIAN CAPITAL LETTER SHORT ER;Lu;0;R;;;;;N;;;;10CE3; +10CA4;OLD HUNGARIAN CAPITAL LETTER ES;Lu;0;R;;;;;N;;;;10CE4; +10CA5;OLD HUNGARIAN CAPITAL LETTER ESZ;Lu;0;R;;;;;N;;;;10CE5; +10CA6;OLD HUNGARIAN CAPITAL LETTER ET;Lu;0;R;;;;;N;;;;10CE6; +10CA7;OLD HUNGARIAN CAPITAL LETTER ENT;Lu;0;R;;;;;N;;;;10CE7; +10CA8;OLD HUNGARIAN CAPITAL LETTER ETY;Lu;0;R;;;;;N;;;;10CE8; +10CA9;OLD HUNGARIAN CAPITAL LETTER ECH;Lu;0;R;;;;;N;;;;10CE9; +10CAA;OLD HUNGARIAN CAPITAL LETTER U;Lu;0;R;;;;;N;;;;10CEA; +10CAB;OLD HUNGARIAN CAPITAL LETTER UU;Lu;0;R;;;;;N;;;;10CEB; +10CAC;OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE;Lu;0;R;;;;;N;;;;10CEC; +10CAD;OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE;Lu;0;R;;;;;N;;;;10CED; +10CAE;OLD HUNGARIAN CAPITAL LETTER EV;Lu;0;R;;;;;N;;;;10CEE; +10CAF;OLD HUNGARIAN CAPITAL LETTER EZ;Lu;0;R;;;;;N;;;;10CEF; +10CB0;OLD HUNGARIAN CAPITAL LETTER EZS;Lu;0;R;;;;;N;;;;10CF0; +10CB1;OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN;Lu;0;R;;;;;N;;;;10CF1; +10CB2;OLD HUNGARIAN CAPITAL LETTER US;Lu;0;R;;;;;N;;;;10CF2; +10CC0;OLD HUNGARIAN SMALL LETTER A;Ll;0;R;;;;;N;;;10C80;;10C80 +10CC1;OLD HUNGARIAN SMALL LETTER AA;Ll;0;R;;;;;N;;;10C81;;10C81 +10CC2;OLD HUNGARIAN SMALL LETTER EB;Ll;0;R;;;;;N;;;10C82;;10C82 +10CC3;OLD HUNGARIAN SMALL LETTER AMB;Ll;0;R;;;;;N;;;10C83;;10C83 +10CC4;OLD HUNGARIAN SMALL LETTER EC;Ll;0;R;;;;;N;;;10C84;;10C84 +10CC5;OLD HUNGARIAN SMALL LETTER ENC;Ll;0;R;;;;;N;;;10C85;;10C85 +10CC6;OLD HUNGARIAN SMALL LETTER ECS;Ll;0;R;;;;;N;;;10C86;;10C86 +10CC7;OLD HUNGARIAN SMALL LETTER ED;Ll;0;R;;;;;N;;;10C87;;10C87 +10CC8;OLD HUNGARIAN SMALL LETTER AND;Ll;0;R;;;;;N;;;10C88;;10C88 +10CC9;OLD HUNGARIAN SMALL LETTER E;Ll;0;R;;;;;N;;;10C89;;10C89 +10CCA;OLD HUNGARIAN SMALL LETTER CLOSE E;Ll;0;R;;;;;N;;;10C8A;;10C8A +10CCB;OLD HUNGARIAN SMALL LETTER EE;Ll;0;R;;;;;N;;;10C8B;;10C8B +10CCC;OLD HUNGARIAN SMALL LETTER EF;Ll;0;R;;;;;N;;;10C8C;;10C8C +10CCD;OLD HUNGARIAN SMALL LETTER EG;Ll;0;R;;;;;N;;;10C8D;;10C8D +10CCE;OLD HUNGARIAN SMALL LETTER EGY;Ll;0;R;;;;;N;;;10C8E;;10C8E +10CCF;OLD HUNGARIAN SMALL LETTER EH;Ll;0;R;;;;;N;;;10C8F;;10C8F +10CD0;OLD HUNGARIAN SMALL LETTER I;Ll;0;R;;;;;N;;;10C90;;10C90 +10CD1;OLD HUNGARIAN SMALL LETTER II;Ll;0;R;;;;;N;;;10C91;;10C91 +10CD2;OLD HUNGARIAN SMALL LETTER EJ;Ll;0;R;;;;;N;;;10C92;;10C92 +10CD3;OLD HUNGARIAN SMALL LETTER EK;Ll;0;R;;;;;N;;;10C93;;10C93 +10CD4;OLD HUNGARIAN SMALL LETTER AK;Ll;0;R;;;;;N;;;10C94;;10C94 +10CD5;OLD HUNGARIAN SMALL LETTER UNK;Ll;0;R;;;;;N;;;10C95;;10C95 +10CD6;OLD HUNGARIAN SMALL LETTER EL;Ll;0;R;;;;;N;;;10C96;;10C96 +10CD7;OLD HUNGARIAN SMALL LETTER ELY;Ll;0;R;;;;;N;;;10C97;;10C97 +10CD8;OLD HUNGARIAN SMALL LETTER EM;Ll;0;R;;;;;N;;;10C98;;10C98 +10CD9;OLD HUNGARIAN SMALL LETTER EN;Ll;0;R;;;;;N;;;10C99;;10C99 +10CDA;OLD HUNGARIAN SMALL LETTER ENY;Ll;0;R;;;;;N;;;10C9A;;10C9A +10CDB;OLD HUNGARIAN SMALL LETTER O;Ll;0;R;;;;;N;;;10C9B;;10C9B +10CDC;OLD HUNGARIAN SMALL LETTER OO;Ll;0;R;;;;;N;;;10C9C;;10C9C +10CDD;OLD HUNGARIAN SMALL LETTER NIKOLSBURG OE;Ll;0;R;;;;;N;;;10C9D;;10C9D +10CDE;OLD HUNGARIAN SMALL LETTER RUDIMENTA OE;Ll;0;R;;;;;N;;;10C9E;;10C9E +10CDF;OLD HUNGARIAN SMALL LETTER OEE;Ll;0;R;;;;;N;;;10C9F;;10C9F +10CE0;OLD HUNGARIAN SMALL LETTER EP;Ll;0;R;;;;;N;;;10CA0;;10CA0 +10CE1;OLD HUNGARIAN SMALL LETTER EMP;Ll;0;R;;;;;N;;;10CA1;;10CA1 +10CE2;OLD HUNGARIAN SMALL LETTER ER;Ll;0;R;;;;;N;;;10CA2;;10CA2 +10CE3;OLD HUNGARIAN SMALL LETTER SHORT ER;Ll;0;R;;;;;N;;;10CA3;;10CA3 +10CE4;OLD HUNGARIAN SMALL LETTER ES;Ll;0;R;;;;;N;;;10CA4;;10CA4 +10CE5;OLD HUNGARIAN SMALL LETTER ESZ;Ll;0;R;;;;;N;;;10CA5;;10CA5 +10CE6;OLD HUNGARIAN SMALL LETTER ET;Ll;0;R;;;;;N;;;10CA6;;10CA6 +10CE7;OLD HUNGARIAN SMALL LETTER ENT;Ll;0;R;;;;;N;;;10CA7;;10CA7 +10CE8;OLD HUNGARIAN SMALL LETTER ETY;Ll;0;R;;;;;N;;;10CA8;;10CA8 +10CE9;OLD HUNGARIAN SMALL LETTER ECH;Ll;0;R;;;;;N;;;10CA9;;10CA9 +10CEA;OLD HUNGARIAN SMALL LETTER U;Ll;0;R;;;;;N;;;10CAA;;10CAA +10CEB;OLD HUNGARIAN SMALL LETTER UU;Ll;0;R;;;;;N;;;10CAB;;10CAB +10CEC;OLD HUNGARIAN SMALL LETTER NIKOLSBURG UE;Ll;0;R;;;;;N;;;10CAC;;10CAC +10CED;OLD HUNGARIAN SMALL LETTER RUDIMENTA UE;Ll;0;R;;;;;N;;;10CAD;;10CAD +10CEE;OLD HUNGARIAN SMALL LETTER EV;Ll;0;R;;;;;N;;;10CAE;;10CAE +10CEF;OLD HUNGARIAN SMALL LETTER EZ;Ll;0;R;;;;;N;;;10CAF;;10CAF +10CF0;OLD HUNGARIAN SMALL LETTER EZS;Ll;0;R;;;;;N;;;10CB0;;10CB0 +10CF1;OLD HUNGARIAN SMALL LETTER ENT-SHAPED SIGN;Ll;0;R;;;;;N;;;10CB1;;10CB1 +10CF2;OLD HUNGARIAN SMALL LETTER US;Ll;0;R;;;;;N;;;10CB2;;10CB2 +10CFA;OLD HUNGARIAN NUMBER ONE;No;0;R;;;;1;N;;;;; +10CFB;OLD HUNGARIAN NUMBER FIVE;No;0;R;;;;5;N;;;;; +10CFC;OLD HUNGARIAN NUMBER TEN;No;0;R;;;;10;N;;;;; +10CFD;OLD HUNGARIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;; +10CFE;OLD HUNGARIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; +10CFF;OLD HUNGARIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; 10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;; 10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;; 10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;; @@ -18764,6 +19078,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 111C6;SHARADA DOUBLE DANDA;Po;0;L;;;;;N;;;;; 111C7;SHARADA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; 111C8;SHARADA SEPARATOR;Po;0;L;;;;;N;;;;; +111C9;SHARADA SANDHI MARK;Po;0;L;;;;;N;;;;; +111CA;SHARADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; +111CB;SHARADA VOWEL MODIFIER MARK;Mn;0;NSM;;;;;N;;;;; +111CC;SHARADA EXTRA SHORT VOWEL MARK;Mn;0;NSM;;;;;N;;;;; 111CD;SHARADA SUTRA MARK;Po;0;L;;;;;N;;;;; 111D0;SHARADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 111D1;SHARADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; @@ -18776,6 +19094,11 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 111D8;SHARADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 111D9;SHARADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 111DA;SHARADA EKAM;Lo;0;L;;;;;N;;;;; +111DB;SHARADA SIGN SIDDHAM;Po;0;L;;;;;N;;;;; +111DC;SHARADA HEADSTROKE;Lo;0;L;;;;;N;;;;; +111DD;SHARADA CONTINUATION SIGN;Po;0;L;;;;;N;;;;; +111DE;SHARADA SECTION MARK-1;Po;0;L;;;;;N;;;;; +111DF;SHARADA SECTION MARK-2;Po;0;L;;;;;N;;;;; 111E1;SINHALA ARCHAIC DIGIT ONE;No;0;L;;;;1;N;;;;; 111E2;SINHALA ARCHAIC DIGIT TWO;No;0;L;;;;2;N;;;;; 111E3;SINHALA ARCHAIC DIGIT THREE;No;0;L;;;;3;N;;;;; @@ -18857,6 +19180,44 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1123B;KHOJKI SECTION MARK;Po;0;L;;;;;N;;;;; 1123C;KHOJKI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;; 1123D;KHOJKI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; +11280;MULTANI LETTER A;Lo;0;L;;;;;N;;;;; +11281;MULTANI LETTER I;Lo;0;L;;;;;N;;;;; +11282;MULTANI LETTER U;Lo;0;L;;;;;N;;;;; +11283;MULTANI LETTER E;Lo;0;L;;;;;N;;;;; +11284;MULTANI LETTER KA;Lo;0;L;;;;;N;;;;; +11285;MULTANI LETTER KHA;Lo;0;L;;;;;N;;;;; +11286;MULTANI LETTER GA;Lo;0;L;;;;;N;;;;; +11288;MULTANI LETTER GHA;Lo;0;L;;;;;N;;;;; +1128A;MULTANI LETTER CA;Lo;0;L;;;;;N;;;;; +1128B;MULTANI LETTER CHA;Lo;0;L;;;;;N;;;;; +1128C;MULTANI LETTER JA;Lo;0;L;;;;;N;;;;; +1128D;MULTANI LETTER JJA;Lo;0;L;;;;;N;;;;; +1128F;MULTANI LETTER NYA;Lo;0;L;;;;;N;;;;; +11290;MULTANI LETTER TTA;Lo;0;L;;;;;N;;;;; +11291;MULTANI LETTER TTHA;Lo;0;L;;;;;N;;;;; +11292;MULTANI LETTER DDA;Lo;0;L;;;;;N;;;;; +11293;MULTANI LETTER DDDA;Lo;0;L;;;;;N;;;;; +11294;MULTANI LETTER DDHA;Lo;0;L;;;;;N;;;;; +11295;MULTANI LETTER NNA;Lo;0;L;;;;;N;;;;; +11296;MULTANI LETTER TA;Lo;0;L;;;;;N;;;;; +11297;MULTANI LETTER THA;Lo;0;L;;;;;N;;;;; +11298;MULTANI LETTER DA;Lo;0;L;;;;;N;;;;; +11299;MULTANI LETTER DHA;Lo;0;L;;;;;N;;;;; +1129A;MULTANI LETTER NA;Lo;0;L;;;;;N;;;;; +1129B;MULTANI LETTER PA;Lo;0;L;;;;;N;;;;; +1129C;MULTANI LETTER PHA;Lo;0;L;;;;;N;;;;; +1129D;MULTANI LETTER BA;Lo;0;L;;;;;N;;;;; +1129F;MULTANI LETTER BHA;Lo;0;L;;;;;N;;;;; +112A0;MULTANI LETTER MA;Lo;0;L;;;;;N;;;;; +112A1;MULTANI LETTER YA;Lo;0;L;;;;;N;;;;; +112A2;MULTANI LETTER RA;Lo;0;L;;;;;N;;;;; +112A3;MULTANI LETTER LA;Lo;0;L;;;;;N;;;;; +112A4;MULTANI LETTER VA;Lo;0;L;;;;;N;;;;; +112A5;MULTANI LETTER SA;Lo;0;L;;;;;N;;;;; +112A6;MULTANI LETTER HA;Lo;0;L;;;;;N;;;;; +112A7;MULTANI LETTER RRA;Lo;0;L;;;;;N;;;;; +112A8;MULTANI LETTER RHA;Lo;0;L;;;;;N;;;;; +112A9;MULTANI SECTION MARK;Po;0;L;;;;;N;;;;; 112B0;KHUDAWADI LETTER A;Lo;0;L;;;;;N;;;;; 112B1;KHUDAWADI LETTER AA;Lo;0;L;;;;;N;;;;; 112B2;KHUDAWADI LETTER I;Lo;0;L;;;;;N;;;;; @@ -18926,6 +19287,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 112F7;KHUDAWADI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 112F8;KHUDAWADI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 112F9;KHUDAWADI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +11300;GRANTHA SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;; 11301;GRANTHA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 11302;GRANTHA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; 11303;GRANTHA SIGN VISARGA;Mc;0;L;;;;;N;;;;; @@ -18989,6 +19351,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1134B;GRANTHA VOWEL SIGN OO;Mc;0;L;11347 1133E;;;;N;;;;; 1134C;GRANTHA VOWEL SIGN AU;Mc;0;L;11347 11357;;;;N;;;;; 1134D;GRANTHA SIGN VIRAMA;Mc;9;L;;;;;N;;;;; +11350;GRANTHA OM;Lo;0;L;;;;;N;;;;; 11357;GRANTHA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; 1135D;GRANTHA SIGN PLUTA;Lo;0;L;;;;;N;;;;; 1135E;GRANTHA LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;; @@ -19163,6 +19526,26 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 115C7;SIDDHAM REPETITION MARK-2;Po;0;L;;;;;N;;;;; 115C8;SIDDHAM REPETITION MARK-3;Po;0;L;;;;;N;;;;; 115C9;SIDDHAM END OF TEXT MARK;Po;0;L;;;;;N;;;;; +115CA;SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS;Po;0;L;;;;;N;;;;; +115CB;SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS;Po;0;L;;;;;N;;;;; +115CC;SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS;Po;0;L;;;;;N;;;;; +115CD;SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS;Po;0;L;;;;;N;;;;; +115CE;SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS;Po;0;L;;;;;N;;;;; +115CF;SIDDHAM SECTION MARK DOUBLE RING;Po;0;L;;;;;N;;;;; +115D0;SIDDHAM SECTION MARK DOUBLE RING WITH RAYS;Po;0;L;;;;;N;;;;; +115D1;SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS;Po;0;L;;;;;N;;;;; +115D2;SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS;Po;0;L;;;;;N;;;;; +115D3;SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS;Po;0;L;;;;;N;;;;; +115D4;SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS;Po;0;L;;;;;N;;;;; +115D5;SIDDHAM SECTION MARK WITH CIRCLES AND RAYS;Po;0;L;;;;;N;;;;; +115D6;SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES;Po;0;L;;;;;N;;;;; +115D7;SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES;Po;0;L;;;;;N;;;;; +115D8;SIDDHAM LETTER THREE-CIRCLE ALTERNATE I;Lo;0;L;;;;;N;;;;; +115D9;SIDDHAM LETTER TWO-CIRCLE ALTERNATE I;Lo;0;L;;;;;N;;;;; +115DA;SIDDHAM LETTER TWO-CIRCLE ALTERNATE II;Lo;0;L;;;;;N;;;;; +115DB;SIDDHAM LETTER ALTERNATE U;Lo;0;L;;;;;N;;;;; +115DC;SIDDHAM VOWEL SIGN ALTERNATE U;Mn;0;NSM;;;;;N;;;;; +115DD;SIDDHAM VOWEL SIGN ALTERNATE UU;Mn;0;NSM;;;;;N;;;;; 11600;MODI LETTER A;Lo;0;L;;;;;N;;;;; 11601;MODI LETTER AA;Lo;0;L;;;;;N;;;;; 11602;MODI LETTER I;Lo;0;L;;;;;N;;;;; @@ -19308,6 +19691,63 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 116C7;TAKRI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 116C8;TAKRI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 116C9;TAKRI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +11700;AHOM LETTER KA;Lo;0;L;;;;;N;;;;; +11701;AHOM LETTER KHA;Lo;0;L;;;;;N;;;;; +11702;AHOM LETTER NGA;Lo;0;L;;;;;N;;;;; +11703;AHOM LETTER NA;Lo;0;L;;;;;N;;;;; +11704;AHOM LETTER TA;Lo;0;L;;;;;N;;;;; +11705;AHOM LETTER ALTERNATE TA;Lo;0;L;;;;;N;;;;; +11706;AHOM LETTER PA;Lo;0;L;;;;;N;;;;; +11707;AHOM LETTER PHA;Lo;0;L;;;;;N;;;;; +11708;AHOM LETTER BA;Lo;0;L;;;;;N;;;;; +11709;AHOM LETTER MA;Lo;0;L;;;;;N;;;;; +1170A;AHOM LETTER JA;Lo;0;L;;;;;N;;;;; +1170B;AHOM LETTER CHA;Lo;0;L;;;;;N;;;;; +1170C;AHOM LETTER THA;Lo;0;L;;;;;N;;;;; +1170D;AHOM LETTER RA;Lo;0;L;;;;;N;;;;; +1170E;AHOM LETTER LA;Lo;0;L;;;;;N;;;;; +1170F;AHOM LETTER SA;Lo;0;L;;;;;N;;;;; +11710;AHOM LETTER NYA;Lo;0;L;;;;;N;;;;; +11711;AHOM LETTER HA;Lo;0;L;;;;;N;;;;; +11712;AHOM LETTER A;Lo;0;L;;;;;N;;;;; +11713;AHOM LETTER DA;Lo;0;L;;;;;N;;;;; +11714;AHOM LETTER DHA;Lo;0;L;;;;;N;;;;; +11715;AHOM LETTER GA;Lo;0;L;;;;;N;;;;; +11716;AHOM LETTER ALTERNATE GA;Lo;0;L;;;;;N;;;;; +11717;AHOM LETTER GHA;Lo;0;L;;;;;N;;;;; +11718;AHOM LETTER BHA;Lo;0;L;;;;;N;;;;; +11719;AHOM LETTER JHA;Lo;0;L;;;;;N;;;;; +1171D;AHOM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;; +1171E;AHOM CONSONANT SIGN MEDIAL RA;Mn;0;NSM;;;;;N;;;;; +1171F;AHOM CONSONANT SIGN MEDIAL LIGATING RA;Mn;0;NSM;;;;;N;;;;; +11720;AHOM VOWEL SIGN A;Mc;0;L;;;;;N;;;;; +11721;AHOM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +11722;AHOM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +11723;AHOM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +11724;AHOM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +11725;AHOM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +11726;AHOM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +11727;AHOM VOWEL SIGN AW;Mn;0;NSM;;;;;N;;;;; +11728;AHOM VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +11729;AHOM VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +1172A;AHOM VOWEL SIGN AM;Mn;0;NSM;;;;;N;;;;; +1172B;AHOM SIGN KILLER;Mn;9;NSM;;;;;N;;;;; +11730;AHOM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +11731;AHOM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +11732;AHOM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +11733;AHOM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +11734;AHOM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +11735;AHOM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +11736;AHOM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +11737;AHOM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +11738;AHOM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +11739;AHOM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1173A;AHOM NUMBER TEN;No;0;L;;;;10;N;;;;; +1173B;AHOM NUMBER TWENTY;No;0;L;;;;20;N;;;;; +1173C;AHOM SIGN SMALL SECTION;Po;0;L;;;;;N;;;;; +1173D;AHOM SIGN SECTION;Po;0;L;;;;;N;;;;; +1173E;AHOM SIGN RULAI;Po;0;L;;;;;N;;;;; +1173F;AHOM SYMBOL VI;So;0;L;;;;;N;;;;; 118A0;WARANG CITI CAPITAL LETTER NGAA;Lu;0;L;;;;;N;;;;118C0; 118A1;WARANG CITI CAPITAL LETTER A;Lu;0;L;;;;;N;;;;118C1; 118A2;WARANG CITI CAPITAL LETTER WI;Lu;0;L;;;;;N;;;;118C2; @@ -20370,6 +20810,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 12396;CUNEIFORM SIGN SAG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; 12397;CUNEIFORM SIGN TI2;Lo;0;L;;;;;N;;;;; 12398;CUNEIFORM SIGN UM TIMES ME;Lo;0;L;;;;;N;;;;; +12399;CUNEIFORM SIGN U U;Lo;0;L;;;;;N;;;;; 12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;; 12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;; 12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;; @@ -20486,6 +20927,202 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;; 12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;; 12474;CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON;Po;0;L;;;;;N;;;;; +12480;CUNEIFORM SIGN AB TIMES NUN TENU;Lo;0;L;;;;;N;;;;; +12481;CUNEIFORM SIGN AB TIMES SHU2;Lo;0;L;;;;;N;;;;; +12482;CUNEIFORM SIGN AD TIMES ESH2;Lo;0;L;;;;;N;;;;; +12483;CUNEIFORM SIGN BAD TIMES DISH TENU;Lo;0;L;;;;;N;;;;; +12484;CUNEIFORM SIGN BAHAR2 TIMES AB2;Lo;0;L;;;;;N;;;;; +12485;CUNEIFORM SIGN BAHAR2 TIMES NI;Lo;0;L;;;;;N;;;;; +12486;CUNEIFORM SIGN BAHAR2 TIMES ZA;Lo;0;L;;;;;N;;;;; +12487;CUNEIFORM SIGN BU OVER BU TIMES NA2;Lo;0;L;;;;;N;;;;; +12488;CUNEIFORM SIGN DA TIMES TAK4;Lo;0;L;;;;;N;;;;; +12489;CUNEIFORM SIGN DAG TIMES KUR;Lo;0;L;;;;;N;;;;; +1248A;CUNEIFORM SIGN DIM TIMES IGI;Lo;0;L;;;;;N;;;;; +1248B;CUNEIFORM SIGN DIM TIMES U U U;Lo;0;L;;;;;N;;;;; +1248C;CUNEIFORM SIGN DIM2 TIMES UD;Lo;0;L;;;;;N;;;;; +1248D;CUNEIFORM SIGN DUG TIMES ANSHE;Lo;0;L;;;;;N;;;;; +1248E;CUNEIFORM SIGN DUG TIMES ASH;Lo;0;L;;;;;N;;;;; +1248F;CUNEIFORM SIGN DUG TIMES ASH AT LEFT;Lo;0;L;;;;;N;;;;; +12490;CUNEIFORM SIGN DUG TIMES DIN;Lo;0;L;;;;;N;;;;; +12491;CUNEIFORM SIGN DUG TIMES DUN;Lo;0;L;;;;;N;;;;; +12492;CUNEIFORM SIGN DUG TIMES ERIN2;Lo;0;L;;;;;N;;;;; +12493;CUNEIFORM SIGN DUG TIMES GA;Lo;0;L;;;;;N;;;;; +12494;CUNEIFORM SIGN DUG TIMES GI;Lo;0;L;;;;;N;;;;; +12495;CUNEIFORM SIGN DUG TIMES GIR2 GUNU;Lo;0;L;;;;;N;;;;; +12496;CUNEIFORM SIGN DUG TIMES GISH;Lo;0;L;;;;;N;;;;; +12497;CUNEIFORM SIGN DUG TIMES HA;Lo;0;L;;;;;N;;;;; +12498;CUNEIFORM SIGN DUG TIMES HI;Lo;0;L;;;;;N;;;;; +12499;CUNEIFORM SIGN DUG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +1249A;CUNEIFORM SIGN DUG TIMES KASKAL;Lo;0;L;;;;;N;;;;; +1249B;CUNEIFORM SIGN DUG TIMES KUR;Lo;0;L;;;;;N;;;;; +1249C;CUNEIFORM SIGN DUG TIMES KUSHU2;Lo;0;L;;;;;N;;;;; +1249D;CUNEIFORM SIGN DUG TIMES KUSHU2 PLUS KASKAL;Lo;0;L;;;;;N;;;;; +1249E;CUNEIFORM SIGN DUG TIMES LAK-020;Lo;0;L;;;;;N;;;;; +1249F;CUNEIFORM SIGN DUG TIMES LAM;Lo;0;L;;;;;N;;;;; +124A0;CUNEIFORM SIGN DUG TIMES LAM TIMES KUR;Lo;0;L;;;;;N;;;;; +124A1;CUNEIFORM SIGN DUG TIMES LUH PLUS GISH;Lo;0;L;;;;;N;;;;; +124A2;CUNEIFORM SIGN DUG TIMES MASH;Lo;0;L;;;;;N;;;;; +124A3;CUNEIFORM SIGN DUG TIMES MES;Lo;0;L;;;;;N;;;;; +124A4;CUNEIFORM SIGN DUG TIMES MI;Lo;0;L;;;;;N;;;;; +124A5;CUNEIFORM SIGN DUG TIMES NI;Lo;0;L;;;;;N;;;;; +124A6;CUNEIFORM SIGN DUG TIMES PI;Lo;0;L;;;;;N;;;;; +124A7;CUNEIFORM SIGN DUG TIMES SHE;Lo;0;L;;;;;N;;;;; +124A8;CUNEIFORM SIGN DUG TIMES SI GUNU;Lo;0;L;;;;;N;;;;; +124A9;CUNEIFORM SIGN E2 TIMES KUR;Lo;0;L;;;;;N;;;;; +124AA;CUNEIFORM SIGN E2 TIMES PAP;Lo;0;L;;;;;N;;;;; +124AB;CUNEIFORM SIGN ERIN2 X;Lo;0;L;;;;;N;;;;; +124AC;CUNEIFORM SIGN ESH2 CROSSING ESH2;Lo;0;L;;;;;N;;;;; +124AD;CUNEIFORM SIGN EZEN SHESHIG TIMES ASH;Lo;0;L;;;;;N;;;;; +124AE;CUNEIFORM SIGN EZEN SHESHIG TIMES HI;Lo;0;L;;;;;N;;;;; +124AF;CUNEIFORM SIGN EZEN SHESHIG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +124B0;CUNEIFORM SIGN EZEN SHESHIG TIMES LA;Lo;0;L;;;;;N;;;;; +124B1;CUNEIFORM SIGN EZEN SHESHIG TIMES LAL;Lo;0;L;;;;;N;;;;; +124B2;CUNEIFORM SIGN EZEN SHESHIG TIMES ME;Lo;0;L;;;;;N;;;;; +124B3;CUNEIFORM SIGN EZEN SHESHIG TIMES MES;Lo;0;L;;;;;N;;;;; +124B4;CUNEIFORM SIGN EZEN SHESHIG TIMES SU;Lo;0;L;;;;;N;;;;; +124B5;CUNEIFORM SIGN EZEN TIMES SU;Lo;0;L;;;;;N;;;;; +124B6;CUNEIFORM SIGN GA2 TIMES BAHAR2;Lo;0;L;;;;;N;;;;; +124B7;CUNEIFORM SIGN GA2 TIMES DIM GUNU;Lo;0;L;;;;;N;;;;; +124B8;CUNEIFORM SIGN GA2 TIMES DUG TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +124B9;CUNEIFORM SIGN GA2 TIMES DUG TIMES KASKAL;Lo;0;L;;;;;N;;;;; +124BA;CUNEIFORM SIGN GA2 TIMES EREN;Lo;0;L;;;;;N;;;;; +124BB;CUNEIFORM SIGN GA2 TIMES GA;Lo;0;L;;;;;N;;;;; +124BC;CUNEIFORM SIGN GA2 TIMES GAR PLUS DI;Lo;0;L;;;;;N;;;;; +124BD;CUNEIFORM SIGN GA2 TIMES GAR PLUS NE;Lo;0;L;;;;;N;;;;; +124BE;CUNEIFORM SIGN GA2 TIMES HA PLUS A;Lo;0;L;;;;;N;;;;; +124BF;CUNEIFORM SIGN GA2 TIMES KUSHU2 PLUS KASKAL;Lo;0;L;;;;;N;;;;; +124C0;CUNEIFORM SIGN GA2 TIMES LAM;Lo;0;L;;;;;N;;;;; +124C1;CUNEIFORM SIGN GA2 TIMES LAM TIMES KUR;Lo;0;L;;;;;N;;;;; +124C2;CUNEIFORM SIGN GA2 TIMES LUH;Lo;0;L;;;;;N;;;;; +124C3;CUNEIFORM SIGN GA2 TIMES MUSH;Lo;0;L;;;;;N;;;;; +124C4;CUNEIFORM SIGN GA2 TIMES NE;Lo;0;L;;;;;N;;;;; +124C5;CUNEIFORM SIGN GA2 TIMES NE PLUS E2;Lo;0;L;;;;;N;;;;; +124C6;CUNEIFORM SIGN GA2 TIMES NE PLUS GI;Lo;0;L;;;;;N;;;;; +124C7;CUNEIFORM SIGN GA2 TIMES SHIM;Lo;0;L;;;;;N;;;;; +124C8;CUNEIFORM SIGN GA2 TIMES ZIZ2;Lo;0;L;;;;;N;;;;; +124C9;CUNEIFORM SIGN GABA ROTATED NINETY DEGREES;Lo;0;L;;;;;N;;;;; +124CA;CUNEIFORM SIGN GESHTIN TIMES U;Lo;0;L;;;;;N;;;;; +124CB;CUNEIFORM SIGN GISH TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; +124CC;CUNEIFORM SIGN GU2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +124CD;CUNEIFORM SIGN GUD PLUS GISH TIMES TAK4;Lo;0;L;;;;;N;;;;; +124CE;CUNEIFORM SIGN HA TENU GUNU;Lo;0;L;;;;;N;;;;; +124CF;CUNEIFORM SIGN HI TIMES ASH OVER HI TIMES ASH;Lo;0;L;;;;;N;;;;; +124D0;CUNEIFORM SIGN KA TIMES BU;Lo;0;L;;;;;N;;;;; +124D1;CUNEIFORM SIGN KA TIMES KA;Lo;0;L;;;;;N;;;;; +124D2;CUNEIFORM SIGN KA TIMES U U U;Lo;0;L;;;;;N;;;;; +124D3;CUNEIFORM SIGN KA TIMES UR;Lo;0;L;;;;;N;;;;; +124D4;CUNEIFORM SIGN LAGAB TIMES ZU OVER ZU;Lo;0;L;;;;;N;;;;; +124D5;CUNEIFORM SIGN LAK-003;Lo;0;L;;;;;N;;;;; +124D6;CUNEIFORM SIGN LAK-021;Lo;0;L;;;;;N;;;;; +124D7;CUNEIFORM SIGN LAK-025;Lo;0;L;;;;;N;;;;; +124D8;CUNEIFORM SIGN LAK-030;Lo;0;L;;;;;N;;;;; +124D9;CUNEIFORM SIGN LAK-050;Lo;0;L;;;;;N;;;;; +124DA;CUNEIFORM SIGN LAK-051;Lo;0;L;;;;;N;;;;; +124DB;CUNEIFORM SIGN LAK-062;Lo;0;L;;;;;N;;;;; +124DC;CUNEIFORM SIGN LAK-079 OVER LAK-079 GUNU;Lo;0;L;;;;;N;;;;; +124DD;CUNEIFORM SIGN LAK-080;Lo;0;L;;;;;N;;;;; +124DE;CUNEIFORM SIGN LAK-081 OVER LAK-081;Lo;0;L;;;;;N;;;;; +124DF;CUNEIFORM SIGN LAK-092;Lo;0;L;;;;;N;;;;; +124E0;CUNEIFORM SIGN LAK-130;Lo;0;L;;;;;N;;;;; +124E1;CUNEIFORM SIGN LAK-142;Lo;0;L;;;;;N;;;;; +124E2;CUNEIFORM SIGN LAK-210;Lo;0;L;;;;;N;;;;; +124E3;CUNEIFORM SIGN LAK-219;Lo;0;L;;;;;N;;;;; +124E4;CUNEIFORM SIGN LAK-220;Lo;0;L;;;;;N;;;;; +124E5;CUNEIFORM SIGN LAK-225;Lo;0;L;;;;;N;;;;; +124E6;CUNEIFORM SIGN LAK-228;Lo;0;L;;;;;N;;;;; +124E7;CUNEIFORM SIGN LAK-238;Lo;0;L;;;;;N;;;;; +124E8;CUNEIFORM SIGN LAK-265;Lo;0;L;;;;;N;;;;; +124E9;CUNEIFORM SIGN LAK-266;Lo;0;L;;;;;N;;;;; +124EA;CUNEIFORM SIGN LAK-343;Lo;0;L;;;;;N;;;;; +124EB;CUNEIFORM SIGN LAK-347;Lo;0;L;;;;;N;;;;; +124EC;CUNEIFORM SIGN LAK-348;Lo;0;L;;;;;N;;;;; +124ED;CUNEIFORM SIGN LAK-383;Lo;0;L;;;;;N;;;;; +124EE;CUNEIFORM SIGN LAK-384;Lo;0;L;;;;;N;;;;; +124EF;CUNEIFORM SIGN LAK-390;Lo;0;L;;;;;N;;;;; +124F0;CUNEIFORM SIGN LAK-441;Lo;0;L;;;;;N;;;;; +124F1;CUNEIFORM SIGN LAK-449;Lo;0;L;;;;;N;;;;; +124F2;CUNEIFORM SIGN LAK-449 TIMES GU;Lo;0;L;;;;;N;;;;; +124F3;CUNEIFORM SIGN LAK-449 TIMES IGI;Lo;0;L;;;;;N;;;;; +124F4;CUNEIFORM SIGN LAK-449 TIMES PAP PLUS LU3;Lo;0;L;;;;;N;;;;; +124F5;CUNEIFORM SIGN LAK-449 TIMES PAP PLUS PAP PLUS LU3;Lo;0;L;;;;;N;;;;; +124F6;CUNEIFORM SIGN LAK-449 TIMES U2 PLUS BA;Lo;0;L;;;;;N;;;;; +124F7;CUNEIFORM SIGN LAK-450;Lo;0;L;;;;;N;;;;; +124F8;CUNEIFORM SIGN LAK-457;Lo;0;L;;;;;N;;;;; +124F9;CUNEIFORM SIGN LAK-470;Lo;0;L;;;;;N;;;;; +124FA;CUNEIFORM SIGN LAK-483;Lo;0;L;;;;;N;;;;; +124FB;CUNEIFORM SIGN LAK-490;Lo;0;L;;;;;N;;;;; +124FC;CUNEIFORM SIGN LAK-492;Lo;0;L;;;;;N;;;;; +124FD;CUNEIFORM SIGN LAK-493;Lo;0;L;;;;;N;;;;; +124FE;CUNEIFORM SIGN LAK-495;Lo;0;L;;;;;N;;;;; +124FF;CUNEIFORM SIGN LAK-550;Lo;0;L;;;;;N;;;;; +12500;CUNEIFORM SIGN LAK-608;Lo;0;L;;;;;N;;;;; +12501;CUNEIFORM SIGN LAK-617;Lo;0;L;;;;;N;;;;; +12502;CUNEIFORM SIGN LAK-617 TIMES ASH;Lo;0;L;;;;;N;;;;; +12503;CUNEIFORM SIGN LAK-617 TIMES BAD;Lo;0;L;;;;;N;;;;; +12504;CUNEIFORM SIGN LAK-617 TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; +12505;CUNEIFORM SIGN LAK-617 TIMES KU3;Lo;0;L;;;;;N;;;;; +12506;CUNEIFORM SIGN LAK-617 TIMES LA;Lo;0;L;;;;;N;;;;; +12507;CUNEIFORM SIGN LAK-617 TIMES TAR;Lo;0;L;;;;;N;;;;; +12508;CUNEIFORM SIGN LAK-617 TIMES TE;Lo;0;L;;;;;N;;;;; +12509;CUNEIFORM SIGN LAK-617 TIMES U2;Lo;0;L;;;;;N;;;;; +1250A;CUNEIFORM SIGN LAK-617 TIMES UD;Lo;0;L;;;;;N;;;;; +1250B;CUNEIFORM SIGN LAK-617 TIMES URUDA;Lo;0;L;;;;;N;;;;; +1250C;CUNEIFORM SIGN LAK-636;Lo;0;L;;;;;N;;;;; +1250D;CUNEIFORM SIGN LAK-648;Lo;0;L;;;;;N;;;;; +1250E;CUNEIFORM SIGN LAK-648 TIMES DUB;Lo;0;L;;;;;N;;;;; +1250F;CUNEIFORM SIGN LAK-648 TIMES GA;Lo;0;L;;;;;N;;;;; +12510;CUNEIFORM SIGN LAK-648 TIMES IGI;Lo;0;L;;;;;N;;;;; +12511;CUNEIFORM SIGN LAK-648 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; +12512;CUNEIFORM SIGN LAK-648 TIMES NI;Lo;0;L;;;;;N;;;;; +12513;CUNEIFORM SIGN LAK-648 TIMES PAP PLUS PAP PLUS LU3;Lo;0;L;;;;;N;;;;; +12514;CUNEIFORM SIGN LAK-648 TIMES SHESH PLUS KI;Lo;0;L;;;;;N;;;;; +12515;CUNEIFORM SIGN LAK-648 TIMES UD;Lo;0;L;;;;;N;;;;; +12516;CUNEIFORM SIGN LAK-648 TIMES URUDA;Lo;0;L;;;;;N;;;;; +12517;CUNEIFORM SIGN LAK-724;Lo;0;L;;;;;N;;;;; +12518;CUNEIFORM SIGN LAK-749;Lo;0;L;;;;;N;;;;; +12519;CUNEIFORM SIGN LU2 GUNU TIMES ASH;Lo;0;L;;;;;N;;;;; +1251A;CUNEIFORM SIGN LU2 TIMES DISH;Lo;0;L;;;;;N;;;;; +1251B;CUNEIFORM SIGN LU2 TIMES HAL;Lo;0;L;;;;;N;;;;; +1251C;CUNEIFORM SIGN LU2 TIMES PAP;Lo;0;L;;;;;N;;;;; +1251D;CUNEIFORM SIGN LU2 TIMES PAP PLUS PAP PLUS LU3;Lo;0;L;;;;;N;;;;; +1251E;CUNEIFORM SIGN LU2 TIMES TAK4;Lo;0;L;;;;;N;;;;; +1251F;CUNEIFORM SIGN MI PLUS ZA7;Lo;0;L;;;;;N;;;;; +12520;CUNEIFORM SIGN MUSH OVER MUSH TIMES GA;Lo;0;L;;;;;N;;;;; +12521;CUNEIFORM SIGN MUSH OVER MUSH TIMES KAK;Lo;0;L;;;;;N;;;;; +12522;CUNEIFORM SIGN NINDA2 TIMES DIM GUNU;Lo;0;L;;;;;N;;;;; +12523;CUNEIFORM SIGN NINDA2 TIMES GISH;Lo;0;L;;;;;N;;;;; +12524;CUNEIFORM SIGN NINDA2 TIMES GUL;Lo;0;L;;;;;N;;;;; +12525;CUNEIFORM SIGN NINDA2 TIMES HI;Lo;0;L;;;;;N;;;;; +12526;CUNEIFORM SIGN NINDA2 TIMES KESH2;Lo;0;L;;;;;N;;;;; +12527;CUNEIFORM SIGN NINDA2 TIMES LAK-050;Lo;0;L;;;;;N;;;;; +12528;CUNEIFORM SIGN NINDA2 TIMES MASH;Lo;0;L;;;;;N;;;;; +12529;CUNEIFORM SIGN NINDA2 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;; +1252A;CUNEIFORM SIGN NINDA2 TIMES U;Lo;0;L;;;;;N;;;;; +1252B;CUNEIFORM SIGN NINDA2 TIMES U PLUS U;Lo;0;L;;;;;N;;;;; +1252C;CUNEIFORM SIGN NINDA2 TIMES URUDA;Lo;0;L;;;;;N;;;;; +1252D;CUNEIFORM SIGN SAG GUNU TIMES HA;Lo;0;L;;;;;N;;;;; +1252E;CUNEIFORM SIGN SAG TIMES EN;Lo;0;L;;;;;N;;;;; +1252F;CUNEIFORM SIGN SAG TIMES SHE AT LEFT;Lo;0;L;;;;;N;;;;; +12530;CUNEIFORM SIGN SAG TIMES TAK4;Lo;0;L;;;;;N;;;;; +12531;CUNEIFORM SIGN SHA6 TENU;Lo;0;L;;;;;N;;;;; +12532;CUNEIFORM SIGN SHE OVER SHE;Lo;0;L;;;;;N;;;;; +12533;CUNEIFORM SIGN SHE PLUS HUB2;Lo;0;L;;;;;N;;;;; +12534;CUNEIFORM SIGN SHE PLUS NAM2;Lo;0;L;;;;;N;;;;; +12535;CUNEIFORM SIGN SHE PLUS SAR;Lo;0;L;;;;;N;;;;; +12536;CUNEIFORM SIGN SHU2 PLUS DUG TIMES NI;Lo;0;L;;;;;N;;;;; +12537;CUNEIFORM SIGN SHU2 PLUS E2 TIMES AN;Lo;0;L;;;;;N;;;;; +12538;CUNEIFORM SIGN SI TIMES TAK4;Lo;0;L;;;;;N;;;;; +12539;CUNEIFORM SIGN TAK4 PLUS SAG;Lo;0;L;;;;;N;;;;; +1253A;CUNEIFORM SIGN TUM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; +1253B;CUNEIFORM SIGN TUM TIMES THREE DISH;Lo;0;L;;;;;N;;;;; +1253C;CUNEIFORM SIGN UR2 INVERTED;Lo;0;L;;;;;N;;;;; +1253D;CUNEIFORM SIGN UR2 TIMES UD;Lo;0;L;;;;;N;;;;; +1253E;CUNEIFORM SIGN URU TIMES DARA3;Lo;0;L;;;;;N;;;;; +1253F;CUNEIFORM SIGN URU TIMES LAK-668;Lo;0;L;;;;;N;;;;; +12540;CUNEIFORM SIGN URU TIMES LU3;Lo;0;L;;;;;N;;;;; +12541;CUNEIFORM SIGN ZA7;Lo;0;L;;;;;N;;;;; +12542;CUNEIFORM SIGN ZU OVER ZU PLUS SAR;Lo;0;L;;;;;N;;;;; +12543;CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU;Lo;0;L;;;;;N;;;;; 13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; 13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; 13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; @@ -21557,6 +22194,589 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;; 1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;; 1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;; +14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; +14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; +14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; +14403;ANATOLIAN HIEROGLYPH A004;Lo;0;L;;;;;N;;;;; +14404;ANATOLIAN HIEROGLYPH A005;Lo;0;L;;;;;N;;;;; +14405;ANATOLIAN HIEROGLYPH A006;Lo;0;L;;;;;N;;;;; +14406;ANATOLIAN HIEROGLYPH A007;Lo;0;L;;;;;N;;;;; +14407;ANATOLIAN HIEROGLYPH A008;Lo;0;L;;;;;N;;;;; +14408;ANATOLIAN HIEROGLYPH A009;Lo;0;L;;;;;N;;;;; +14409;ANATOLIAN HIEROGLYPH A010;Lo;0;L;;;;;N;;;;; +1440A;ANATOLIAN HIEROGLYPH A010A;Lo;0;L;;;;;N;;;;; +1440B;ANATOLIAN HIEROGLYPH A011;Lo;0;L;;;;;N;;;;; +1440C;ANATOLIAN HIEROGLYPH A012;Lo;0;L;;;;;N;;;;; +1440D;ANATOLIAN HIEROGLYPH A013;Lo;0;L;;;;;N;;;;; +1440E;ANATOLIAN HIEROGLYPH A014;Lo;0;L;;;;;N;;;;; +1440F;ANATOLIAN HIEROGLYPH A015;Lo;0;L;;;;;N;;;;; +14410;ANATOLIAN HIEROGLYPH A016;Lo;0;L;;;;;N;;;;; +14411;ANATOLIAN HIEROGLYPH A017;Lo;0;L;;;;;N;;;;; +14412;ANATOLIAN HIEROGLYPH A018;Lo;0;L;;;;;N;;;;; +14413;ANATOLIAN HIEROGLYPH A019;Lo;0;L;;;;;N;;;;; +14414;ANATOLIAN HIEROGLYPH A020;Lo;0;L;;;;;N;;;;; +14415;ANATOLIAN HIEROGLYPH A021;Lo;0;L;;;;;N;;;;; +14416;ANATOLIAN HIEROGLYPH A022;Lo;0;L;;;;;N;;;;; +14417;ANATOLIAN HIEROGLYPH A023;Lo;0;L;;;;;N;;;;; +14418;ANATOLIAN HIEROGLYPH A024;Lo;0;L;;;;;N;;;;; +14419;ANATOLIAN HIEROGLYPH A025;Lo;0;L;;;;;N;;;;; +1441A;ANATOLIAN HIEROGLYPH A026;Lo;0;L;;;;;N;;;;; +1441B;ANATOLIAN HIEROGLYPH A026A;Lo;0;L;;;;;N;;;;; +1441C;ANATOLIAN HIEROGLYPH A027;Lo;0;L;;;;;N;;;;; +1441D;ANATOLIAN HIEROGLYPH A028;Lo;0;L;;;;;N;;;;; +1441E;ANATOLIAN HIEROGLYPH A029;Lo;0;L;;;;;N;;;;; +1441F;ANATOLIAN HIEROGLYPH A030;Lo;0;L;;;;;N;;;;; +14420;ANATOLIAN HIEROGLYPH A031;Lo;0;L;;;;;N;;;;; +14421;ANATOLIAN HIEROGLYPH A032;Lo;0;L;;;;;N;;;;; +14422;ANATOLIAN HIEROGLYPH A033;Lo;0;L;;;;;N;;;;; +14423;ANATOLIAN HIEROGLYPH A034;Lo;0;L;;;;;N;;;;; +14424;ANATOLIAN HIEROGLYPH A035;Lo;0;L;;;;;N;;;;; +14425;ANATOLIAN HIEROGLYPH A036;Lo;0;L;;;;;N;;;;; +14426;ANATOLIAN HIEROGLYPH A037;Lo;0;L;;;;;N;;;;; +14427;ANATOLIAN HIEROGLYPH A038;Lo;0;L;;;;;N;;;;; +14428;ANATOLIAN HIEROGLYPH A039;Lo;0;L;;;;;N;;;;; +14429;ANATOLIAN HIEROGLYPH A039A;Lo;0;L;;;;;N;;;;; +1442A;ANATOLIAN HIEROGLYPH A040;Lo;0;L;;;;;N;;;;; +1442B;ANATOLIAN HIEROGLYPH A041;Lo;0;L;;;;;N;;;;; +1442C;ANATOLIAN HIEROGLYPH A041A;Lo;0;L;;;;;N;;;;; +1442D;ANATOLIAN HIEROGLYPH A042;Lo;0;L;;;;;N;;;;; +1442E;ANATOLIAN HIEROGLYPH A043;Lo;0;L;;;;;N;;;;; +1442F;ANATOLIAN HIEROGLYPH A044;Lo;0;L;;;;;N;;;;; +14430;ANATOLIAN HIEROGLYPH A045;Lo;0;L;;;;;N;;;;; +14431;ANATOLIAN HIEROGLYPH A045A;Lo;0;L;;;;;N;;;;; +14432;ANATOLIAN HIEROGLYPH A046;Lo;0;L;;;;;N;;;;; +14433;ANATOLIAN HIEROGLYPH A046A;Lo;0;L;;;;;N;;;;; +14434;ANATOLIAN HIEROGLYPH A046B;Lo;0;L;;;;;N;;;;; +14435;ANATOLIAN HIEROGLYPH A047;Lo;0;L;;;;;N;;;;; +14436;ANATOLIAN HIEROGLYPH A048;Lo;0;L;;;;;N;;;;; +14437;ANATOLIAN HIEROGLYPH A049;Lo;0;L;;;;;N;;;;; +14438;ANATOLIAN HIEROGLYPH A050;Lo;0;L;;;;;N;;;;; +14439;ANATOLIAN HIEROGLYPH A051;Lo;0;L;;;;;N;;;;; +1443A;ANATOLIAN HIEROGLYPH A052;Lo;0;L;;;;;N;;;;; +1443B;ANATOLIAN HIEROGLYPH A053;Lo;0;L;;;;;N;;;;; +1443C;ANATOLIAN HIEROGLYPH A054;Lo;0;L;;;;;N;;;;; +1443D;ANATOLIAN HIEROGLYPH A055;Lo;0;L;;;;;N;;;;; +1443E;ANATOLIAN HIEROGLYPH A056;Lo;0;L;;;;;N;;;;; +1443F;ANATOLIAN HIEROGLYPH A057;Lo;0;L;;;;;N;;;;; +14440;ANATOLIAN HIEROGLYPH A058;Lo;0;L;;;;;N;;;;; +14441;ANATOLIAN HIEROGLYPH A059;Lo;0;L;;;;;N;;;;; +14442;ANATOLIAN HIEROGLYPH A060;Lo;0;L;;;;;N;;;;; +14443;ANATOLIAN HIEROGLYPH A061;Lo;0;L;;;;;N;;;;; +14444;ANATOLIAN HIEROGLYPH A062;Lo;0;L;;;;;N;;;;; +14445;ANATOLIAN HIEROGLYPH A063;Lo;0;L;;;;;N;;;;; +14446;ANATOLIAN HIEROGLYPH A064;Lo;0;L;;;;;N;;;;; +14447;ANATOLIAN HIEROGLYPH A065;Lo;0;L;;;;;N;;;;; +14448;ANATOLIAN HIEROGLYPH A066;Lo;0;L;;;;;N;;;;; +14449;ANATOLIAN HIEROGLYPH A066A;Lo;0;L;;;;;N;;;;; +1444A;ANATOLIAN HIEROGLYPH A066B;Lo;0;L;;;;;N;;;;; +1444B;ANATOLIAN HIEROGLYPH A066C;Lo;0;L;;;;;N;;;;; +1444C;ANATOLIAN HIEROGLYPH A067;Lo;0;L;;;;;N;;;;; +1444D;ANATOLIAN HIEROGLYPH A068;Lo;0;L;;;;;N;;;;; +1444E;ANATOLIAN HIEROGLYPH A069;Lo;0;L;;;;;N;;;;; +1444F;ANATOLIAN HIEROGLYPH A070;Lo;0;L;;;;;N;;;;; +14450;ANATOLIAN HIEROGLYPH A071;Lo;0;L;;;;;N;;;;; +14451;ANATOLIAN HIEROGLYPH A072;Lo;0;L;;;;;N;;;;; +14452;ANATOLIAN HIEROGLYPH A073;Lo;0;L;;;;;N;;;;; +14453;ANATOLIAN HIEROGLYPH A074;Lo;0;L;;;;;N;;;;; +14454;ANATOLIAN HIEROGLYPH A075;Lo;0;L;;;;;N;;;;; +14455;ANATOLIAN HIEROGLYPH A076;Lo;0;L;;;;;N;;;;; +14456;ANATOLIAN HIEROGLYPH A077;Lo;0;L;;;;;N;;;;; +14457;ANATOLIAN HIEROGLYPH A078;Lo;0;L;;;;;N;;;;; +14458;ANATOLIAN HIEROGLYPH A079;Lo;0;L;;;;;N;;;;; +14459;ANATOLIAN HIEROGLYPH A080;Lo;0;L;;;;;N;;;;; +1445A;ANATOLIAN HIEROGLYPH A081;Lo;0;L;;;;;N;;;;; +1445B;ANATOLIAN HIEROGLYPH A082;Lo;0;L;;;;;N;;;;; +1445C;ANATOLIAN HIEROGLYPH A083;Lo;0;L;;;;;N;;;;; +1445D;ANATOLIAN HIEROGLYPH A084;Lo;0;L;;;;;N;;;;; +1445E;ANATOLIAN HIEROGLYPH A085;Lo;0;L;;;;;N;;;;; +1445F;ANATOLIAN HIEROGLYPH A086;Lo;0;L;;;;;N;;;;; +14460;ANATOLIAN HIEROGLYPH A087;Lo;0;L;;;;;N;;;;; +14461;ANATOLIAN HIEROGLYPH A088;Lo;0;L;;;;;N;;;;; +14462;ANATOLIAN HIEROGLYPH A089;Lo;0;L;;;;;N;;;;; +14463;ANATOLIAN HIEROGLYPH A090;Lo;0;L;;;;;N;;;;; +14464;ANATOLIAN HIEROGLYPH A091;Lo;0;L;;;;;N;;;;; +14465;ANATOLIAN HIEROGLYPH A092;Lo;0;L;;;;;N;;;;; +14466;ANATOLIAN HIEROGLYPH A093;Lo;0;L;;;;;N;;;;; +14467;ANATOLIAN HIEROGLYPH A094;Lo;0;L;;;;;N;;;;; +14468;ANATOLIAN HIEROGLYPH A095;Lo;0;L;;;;;N;;;;; +14469;ANATOLIAN HIEROGLYPH A096;Lo;0;L;;;;;N;;;;; +1446A;ANATOLIAN HIEROGLYPH A097;Lo;0;L;;;;;N;;;;; +1446B;ANATOLIAN HIEROGLYPH A097A;Lo;0;L;;;;;N;;;;; +1446C;ANATOLIAN HIEROGLYPH A098;Lo;0;L;;;;;N;;;;; +1446D;ANATOLIAN HIEROGLYPH A098A;Lo;0;L;;;;;N;;;;; +1446E;ANATOLIAN HIEROGLYPH A099;Lo;0;L;;;;;N;;;;; +1446F;ANATOLIAN HIEROGLYPH A100;Lo;0;L;;;;;N;;;;; +14470;ANATOLIAN HIEROGLYPH A100A;Lo;0;L;;;;;N;;;;; +14471;ANATOLIAN HIEROGLYPH A101;Lo;0;L;;;;;N;;;;; +14472;ANATOLIAN HIEROGLYPH A101A;Lo;0;L;;;;;N;;;;; +14473;ANATOLIAN HIEROGLYPH A102;Lo;0;L;;;;;N;;;;; +14474;ANATOLIAN HIEROGLYPH A102A;Lo;0;L;;;;;N;;;;; +14475;ANATOLIAN HIEROGLYPH A103;Lo;0;L;;;;;N;;;;; +14476;ANATOLIAN HIEROGLYPH A104;Lo;0;L;;;;;N;;;;; +14477;ANATOLIAN HIEROGLYPH A104A;Lo;0;L;;;;;N;;;;; +14478;ANATOLIAN HIEROGLYPH A104B;Lo;0;L;;;;;N;;;;; +14479;ANATOLIAN HIEROGLYPH A104C;Lo;0;L;;;;;N;;;;; +1447A;ANATOLIAN HIEROGLYPH A105;Lo;0;L;;;;;N;;;;; +1447B;ANATOLIAN HIEROGLYPH A105A;Lo;0;L;;;;;N;;;;; +1447C;ANATOLIAN HIEROGLYPH A105B;Lo;0;L;;;;;N;;;;; +1447D;ANATOLIAN HIEROGLYPH A106;Lo;0;L;;;;;N;;;;; +1447E;ANATOLIAN HIEROGLYPH A107;Lo;0;L;;;;;N;;;;; +1447F;ANATOLIAN HIEROGLYPH A107A;Lo;0;L;;;;;N;;;;; +14480;ANATOLIAN HIEROGLYPH A107B;Lo;0;L;;;;;N;;;;; +14481;ANATOLIAN HIEROGLYPH A107C;Lo;0;L;;;;;N;;;;; +14482;ANATOLIAN HIEROGLYPH A108;Lo;0;L;;;;;N;;;;; +14483;ANATOLIAN HIEROGLYPH A109;Lo;0;L;;;;;N;;;;; +14484;ANATOLIAN HIEROGLYPH A110;Lo;0;L;;;;;N;;;;; +14485;ANATOLIAN HIEROGLYPH A110A;Lo;0;L;;;;;N;;;;; +14486;ANATOLIAN HIEROGLYPH A110B;Lo;0;L;;;;;N;;;;; +14487;ANATOLIAN HIEROGLYPH A111;Lo;0;L;;;;;N;;;;; +14488;ANATOLIAN HIEROGLYPH A112;Lo;0;L;;;;;N;;;;; +14489;ANATOLIAN HIEROGLYPH A113;Lo;0;L;;;;;N;;;;; +1448A;ANATOLIAN HIEROGLYPH A114;Lo;0;L;;;;;N;;;;; +1448B;ANATOLIAN HIEROGLYPH A115;Lo;0;L;;;;;N;;;;; +1448C;ANATOLIAN HIEROGLYPH A115A;Lo;0;L;;;;;N;;;;; +1448D;ANATOLIAN HIEROGLYPH A116;Lo;0;L;;;;;N;;;;; +1448E;ANATOLIAN HIEROGLYPH A117;Lo;0;L;;;;;N;;;;; +1448F;ANATOLIAN HIEROGLYPH A118;Lo;0;L;;;;;N;;;;; +14490;ANATOLIAN HIEROGLYPH A119;Lo;0;L;;;;;N;;;;; +14491;ANATOLIAN HIEROGLYPH A120;Lo;0;L;;;;;N;;;;; +14492;ANATOLIAN HIEROGLYPH A121;Lo;0;L;;;;;N;;;;; +14493;ANATOLIAN HIEROGLYPH A122;Lo;0;L;;;;;N;;;;; +14494;ANATOLIAN HIEROGLYPH A123;Lo;0;L;;;;;N;;;;; +14495;ANATOLIAN HIEROGLYPH A124;Lo;0;L;;;;;N;;;;; +14496;ANATOLIAN HIEROGLYPH A125;Lo;0;L;;;;;N;;;;; +14497;ANATOLIAN HIEROGLYPH A125A;Lo;0;L;;;;;N;;;;; +14498;ANATOLIAN HIEROGLYPH A126;Lo;0;L;;;;;N;;;;; +14499;ANATOLIAN HIEROGLYPH A127;Lo;0;L;;;;;N;;;;; +1449A;ANATOLIAN HIEROGLYPH A128;Lo;0;L;;;;;N;;;;; +1449B;ANATOLIAN HIEROGLYPH A129;Lo;0;L;;;;;N;;;;; +1449C;ANATOLIAN HIEROGLYPH A130;Lo;0;L;;;;;N;;;;; +1449D;ANATOLIAN HIEROGLYPH A131;Lo;0;L;;;;;N;;;;; +1449E;ANATOLIAN HIEROGLYPH A132;Lo;0;L;;;;;N;;;;; +1449F;ANATOLIAN HIEROGLYPH A133;Lo;0;L;;;;;N;;;;; +144A0;ANATOLIAN HIEROGLYPH A134;Lo;0;L;;;;;N;;;;; +144A1;ANATOLIAN HIEROGLYPH A135;Lo;0;L;;;;;N;;;;; +144A2;ANATOLIAN HIEROGLYPH A135A;Lo;0;L;;;;;N;;;;; +144A3;ANATOLIAN HIEROGLYPH A136;Lo;0;L;;;;;N;;;;; +144A4;ANATOLIAN HIEROGLYPH A137;Lo;0;L;;;;;N;;;;; +144A5;ANATOLIAN HIEROGLYPH A138;Lo;0;L;;;;;N;;;;; +144A6;ANATOLIAN HIEROGLYPH A139;Lo;0;L;;;;;N;;;;; +144A7;ANATOLIAN HIEROGLYPH A140;Lo;0;L;;;;;N;;;;; +144A8;ANATOLIAN HIEROGLYPH A141;Lo;0;L;;;;;N;;;;; +144A9;ANATOLIAN HIEROGLYPH A142;Lo;0;L;;;;;N;;;;; +144AA;ANATOLIAN HIEROGLYPH A143;Lo;0;L;;;;;N;;;;; +144AB;ANATOLIAN HIEROGLYPH A144;Lo;0;L;;;;;N;;;;; +144AC;ANATOLIAN HIEROGLYPH A145;Lo;0;L;;;;;N;;;;; +144AD;ANATOLIAN HIEROGLYPH A146;Lo;0;L;;;;;N;;;;; +144AE;ANATOLIAN HIEROGLYPH A147;Lo;0;L;;;;;N;;;;; +144AF;ANATOLIAN HIEROGLYPH A148;Lo;0;L;;;;;N;;;;; +144B0;ANATOLIAN HIEROGLYPH A149;Lo;0;L;;;;;N;;;;; +144B1;ANATOLIAN HIEROGLYPH A150;Lo;0;L;;;;;N;;;;; +144B2;ANATOLIAN HIEROGLYPH A151;Lo;0;L;;;;;N;;;;; +144B3;ANATOLIAN HIEROGLYPH A152;Lo;0;L;;;;;N;;;;; +144B4;ANATOLIAN HIEROGLYPH A153;Lo;0;L;;;;;N;;;;; +144B5;ANATOLIAN HIEROGLYPH A154;Lo;0;L;;;;;N;;;;; +144B6;ANATOLIAN HIEROGLYPH A155;Lo;0;L;;;;;N;;;;; +144B7;ANATOLIAN HIEROGLYPH A156;Lo;0;L;;;;;N;;;;; +144B8;ANATOLIAN HIEROGLYPH A157;Lo;0;L;;;;;N;;;;; +144B9;ANATOLIAN HIEROGLYPH A158;Lo;0;L;;;;;N;;;;; +144BA;ANATOLIAN HIEROGLYPH A159;Lo;0;L;;;;;N;;;;; +144BB;ANATOLIAN HIEROGLYPH A160;Lo;0;L;;;;;N;;;;; +144BC;ANATOLIAN HIEROGLYPH A161;Lo;0;L;;;;;N;;;;; +144BD;ANATOLIAN HIEROGLYPH A162;Lo;0;L;;;;;N;;;;; +144BE;ANATOLIAN HIEROGLYPH A163;Lo;0;L;;;;;N;;;;; +144BF;ANATOLIAN HIEROGLYPH A164;Lo;0;L;;;;;N;;;;; +144C0;ANATOLIAN HIEROGLYPH A165;Lo;0;L;;;;;N;;;;; +144C1;ANATOLIAN HIEROGLYPH A166;Lo;0;L;;;;;N;;;;; +144C2;ANATOLIAN HIEROGLYPH A167;Lo;0;L;;;;;N;;;;; +144C3;ANATOLIAN HIEROGLYPH A168;Lo;0;L;;;;;N;;;;; +144C4;ANATOLIAN HIEROGLYPH A169;Lo;0;L;;;;;N;;;;; +144C5;ANATOLIAN HIEROGLYPH A170;Lo;0;L;;;;;N;;;;; +144C6;ANATOLIAN HIEROGLYPH A171;Lo;0;L;;;;;N;;;;; +144C7;ANATOLIAN HIEROGLYPH A172;Lo;0;L;;;;;N;;;;; +144C8;ANATOLIAN HIEROGLYPH A173;Lo;0;L;;;;;N;;;;; +144C9;ANATOLIAN HIEROGLYPH A174;Lo;0;L;;;;;N;;;;; +144CA;ANATOLIAN HIEROGLYPH A175;Lo;0;L;;;;;N;;;;; +144CB;ANATOLIAN HIEROGLYPH A176;Lo;0;L;;;;;N;;;;; +144CC;ANATOLIAN HIEROGLYPH A177;Lo;0;L;;;;;N;;;;; +144CD;ANATOLIAN HIEROGLYPH A178;Lo;0;L;;;;;N;;;;; +144CE;ANATOLIAN HIEROGLYPH A179;Lo;0;L;;;;;N;;;;; +144CF;ANATOLIAN HIEROGLYPH A180;Lo;0;L;;;;;N;;;;; +144D0;ANATOLIAN HIEROGLYPH A181;Lo;0;L;;;;;N;;;;; +144D1;ANATOLIAN HIEROGLYPH A182;Lo;0;L;;;;;N;;;;; +144D2;ANATOLIAN HIEROGLYPH A183;Lo;0;L;;;;;N;;;;; +144D3;ANATOLIAN HIEROGLYPH A184;Lo;0;L;;;;;N;;;;; +144D4;ANATOLIAN HIEROGLYPH A185;Lo;0;L;;;;;N;;;;; +144D5;ANATOLIAN HIEROGLYPH A186;Lo;0;L;;;;;N;;;;; +144D6;ANATOLIAN HIEROGLYPH A187;Lo;0;L;;;;;N;;;;; +144D7;ANATOLIAN HIEROGLYPH A188;Lo;0;L;;;;;N;;;;; +144D8;ANATOLIAN HIEROGLYPH A189;Lo;0;L;;;;;N;;;;; +144D9;ANATOLIAN HIEROGLYPH A190;Lo;0;L;;;;;N;;;;; +144DA;ANATOLIAN HIEROGLYPH A191;Lo;0;L;;;;;N;;;;; +144DB;ANATOLIAN HIEROGLYPH A192;Lo;0;L;;;;;N;;;;; +144DC;ANATOLIAN HIEROGLYPH A193;Lo;0;L;;;;;N;;;;; +144DD;ANATOLIAN HIEROGLYPH A194;Lo;0;L;;;;;N;;;;; +144DE;ANATOLIAN HIEROGLYPH A195;Lo;0;L;;;;;N;;;;; +144DF;ANATOLIAN HIEROGLYPH A196;Lo;0;L;;;;;N;;;;; +144E0;ANATOLIAN HIEROGLYPH A197;Lo;0;L;;;;;N;;;;; +144E1;ANATOLIAN HIEROGLYPH A198;Lo;0;L;;;;;N;;;;; +144E2;ANATOLIAN HIEROGLYPH A199;Lo;0;L;;;;;N;;;;; +144E3;ANATOLIAN HIEROGLYPH A200;Lo;0;L;;;;;N;;;;; +144E4;ANATOLIAN HIEROGLYPH A201;Lo;0;L;;;;;N;;;;; +144E5;ANATOLIAN HIEROGLYPH A202;Lo;0;L;;;;;N;;;;; +144E6;ANATOLIAN HIEROGLYPH A202A;Lo;0;L;;;;;N;;;;; +144E7;ANATOLIAN HIEROGLYPH A202B;Lo;0;L;;;;;N;;;;; +144E8;ANATOLIAN HIEROGLYPH A203;Lo;0;L;;;;;N;;;;; +144E9;ANATOLIAN HIEROGLYPH A204;Lo;0;L;;;;;N;;;;; +144EA;ANATOLIAN HIEROGLYPH A205;Lo;0;L;;;;;N;;;;; +144EB;ANATOLIAN HIEROGLYPH A206;Lo;0;L;;;;;N;;;;; +144EC;ANATOLIAN HIEROGLYPH A207;Lo;0;L;;;;;N;;;;; +144ED;ANATOLIAN HIEROGLYPH A207A;Lo;0;L;;;;;N;;;;; +144EE;ANATOLIAN HIEROGLYPH A208;Lo;0;L;;;;;N;;;;; +144EF;ANATOLIAN HIEROGLYPH A209;Lo;0;L;;;;;N;;;;; +144F0;ANATOLIAN HIEROGLYPH A209A;Lo;0;L;;;;;N;;;;; +144F1;ANATOLIAN HIEROGLYPH A210;Lo;0;L;;;;;N;;;;; +144F2;ANATOLIAN HIEROGLYPH A211;Lo;0;L;;;;;N;;;;; +144F3;ANATOLIAN HIEROGLYPH A212;Lo;0;L;;;;;N;;;;; +144F4;ANATOLIAN HIEROGLYPH A213;Lo;0;L;;;;;N;;;;; +144F5;ANATOLIAN HIEROGLYPH A214;Lo;0;L;;;;;N;;;;; +144F6;ANATOLIAN HIEROGLYPH A215;Lo;0;L;;;;;N;;;;; +144F7;ANATOLIAN HIEROGLYPH A215A;Lo;0;L;;;;;N;;;;; +144F8;ANATOLIAN HIEROGLYPH A216;Lo;0;L;;;;;N;;;;; +144F9;ANATOLIAN HIEROGLYPH A216A;Lo;0;L;;;;;N;;;;; +144FA;ANATOLIAN HIEROGLYPH A217;Lo;0;L;;;;;N;;;;; +144FB;ANATOLIAN HIEROGLYPH A218;Lo;0;L;;;;;N;;;;; +144FC;ANATOLIAN HIEROGLYPH A219;Lo;0;L;;;;;N;;;;; +144FD;ANATOLIAN HIEROGLYPH A220;Lo;0;L;;;;;N;;;;; +144FE;ANATOLIAN HIEROGLYPH A221;Lo;0;L;;;;;N;;;;; +144FF;ANATOLIAN HIEROGLYPH A222;Lo;0;L;;;;;N;;;;; +14500;ANATOLIAN HIEROGLYPH A223;Lo;0;L;;;;;N;;;;; +14501;ANATOLIAN HIEROGLYPH A224;Lo;0;L;;;;;N;;;;; +14502;ANATOLIAN HIEROGLYPH A225;Lo;0;L;;;;;N;;;;; +14503;ANATOLIAN HIEROGLYPH A226;Lo;0;L;;;;;N;;;;; +14504;ANATOLIAN HIEROGLYPH A227;Lo;0;L;;;;;N;;;;; +14505;ANATOLIAN HIEROGLYPH A227A;Lo;0;L;;;;;N;;;;; +14506;ANATOLIAN HIEROGLYPH A228;Lo;0;L;;;;;N;;;;; +14507;ANATOLIAN HIEROGLYPH A229;Lo;0;L;;;;;N;;;;; +14508;ANATOLIAN HIEROGLYPH A230;Lo;0;L;;;;;N;;;;; +14509;ANATOLIAN HIEROGLYPH A231;Lo;0;L;;;;;N;;;;; +1450A;ANATOLIAN HIEROGLYPH A232;Lo;0;L;;;;;N;;;;; +1450B;ANATOLIAN HIEROGLYPH A233;Lo;0;L;;;;;N;;;;; +1450C;ANATOLIAN HIEROGLYPH A234;Lo;0;L;;;;;N;;;;; +1450D;ANATOLIAN HIEROGLYPH A235;Lo;0;L;;;;;N;;;;; +1450E;ANATOLIAN HIEROGLYPH A236;Lo;0;L;;;;;N;;;;; +1450F;ANATOLIAN HIEROGLYPH A237;Lo;0;L;;;;;N;;;;; +14510;ANATOLIAN HIEROGLYPH A238;Lo;0;L;;;;;N;;;;; +14511;ANATOLIAN HIEROGLYPH A239;Lo;0;L;;;;;N;;;;; +14512;ANATOLIAN HIEROGLYPH A240;Lo;0;L;;;;;N;;;;; +14513;ANATOLIAN HIEROGLYPH A241;Lo;0;L;;;;;N;;;;; +14514;ANATOLIAN HIEROGLYPH A242;Lo;0;L;;;;;N;;;;; +14515;ANATOLIAN HIEROGLYPH A243;Lo;0;L;;;;;N;;;;; +14516;ANATOLIAN HIEROGLYPH A244;Lo;0;L;;;;;N;;;;; +14517;ANATOLIAN HIEROGLYPH A245;Lo;0;L;;;;;N;;;;; +14518;ANATOLIAN HIEROGLYPH A246;Lo;0;L;;;;;N;;;;; +14519;ANATOLIAN HIEROGLYPH A247;Lo;0;L;;;;;N;;;;; +1451A;ANATOLIAN HIEROGLYPH A248;Lo;0;L;;;;;N;;;;; +1451B;ANATOLIAN HIEROGLYPH A249;Lo;0;L;;;;;N;;;;; +1451C;ANATOLIAN HIEROGLYPH A250;Lo;0;L;;;;;N;;;;; +1451D;ANATOLIAN HIEROGLYPH A251;Lo;0;L;;;;;N;;;;; +1451E;ANATOLIAN HIEROGLYPH A252;Lo;0;L;;;;;N;;;;; +1451F;ANATOLIAN HIEROGLYPH A253;Lo;0;L;;;;;N;;;;; +14520;ANATOLIAN HIEROGLYPH A254;Lo;0;L;;;;;N;;;;; +14521;ANATOLIAN HIEROGLYPH A255;Lo;0;L;;;;;N;;;;; +14522;ANATOLIAN HIEROGLYPH A256;Lo;0;L;;;;;N;;;;; +14523;ANATOLIAN HIEROGLYPH A257;Lo;0;L;;;;;N;;;;; +14524;ANATOLIAN HIEROGLYPH A258;Lo;0;L;;;;;N;;;;; +14525;ANATOLIAN HIEROGLYPH A259;Lo;0;L;;;;;N;;;;; +14526;ANATOLIAN HIEROGLYPH A260;Lo;0;L;;;;;N;;;;; +14527;ANATOLIAN HIEROGLYPH A261;Lo;0;L;;;;;N;;;;; +14528;ANATOLIAN HIEROGLYPH A262;Lo;0;L;;;;;N;;;;; +14529;ANATOLIAN HIEROGLYPH A263;Lo;0;L;;;;;N;;;;; +1452A;ANATOLIAN HIEROGLYPH A264;Lo;0;L;;;;;N;;;;; +1452B;ANATOLIAN HIEROGLYPH A265;Lo;0;L;;;;;N;;;;; +1452C;ANATOLIAN HIEROGLYPH A266;Lo;0;L;;;;;N;;;;; +1452D;ANATOLIAN HIEROGLYPH A267;Lo;0;L;;;;;N;;;;; +1452E;ANATOLIAN HIEROGLYPH A267A;Lo;0;L;;;;;N;;;;; +1452F;ANATOLIAN HIEROGLYPH A268;Lo;0;L;;;;;N;;;;; +14530;ANATOLIAN HIEROGLYPH A269;Lo;0;L;;;;;N;;;;; +14531;ANATOLIAN HIEROGLYPH A270;Lo;0;L;;;;;N;;;;; +14532;ANATOLIAN HIEROGLYPH A271;Lo;0;L;;;;;N;;;;; +14533;ANATOLIAN HIEROGLYPH A272;Lo;0;L;;;;;N;;;;; +14534;ANATOLIAN HIEROGLYPH A273;Lo;0;L;;;;;N;;;;; +14535;ANATOLIAN HIEROGLYPH A274;Lo;0;L;;;;;N;;;;; +14536;ANATOLIAN HIEROGLYPH A275;Lo;0;L;;;;;N;;;;; +14537;ANATOLIAN HIEROGLYPH A276;Lo;0;L;;;;;N;;;;; +14538;ANATOLIAN HIEROGLYPH A277;Lo;0;L;;;;;N;;;;; +14539;ANATOLIAN HIEROGLYPH A278;Lo;0;L;;;;;N;;;;; +1453A;ANATOLIAN HIEROGLYPH A279;Lo;0;L;;;;;N;;;;; +1453B;ANATOLIAN HIEROGLYPH A280;Lo;0;L;;;;;N;;;;; +1453C;ANATOLIAN HIEROGLYPH A281;Lo;0;L;;;;;N;;;;; +1453D;ANATOLIAN HIEROGLYPH A282;Lo;0;L;;;;;N;;;;; +1453E;ANATOLIAN HIEROGLYPH A283;Lo;0;L;;;;;N;;;;; +1453F;ANATOLIAN HIEROGLYPH A284;Lo;0;L;;;;;N;;;;; +14540;ANATOLIAN HIEROGLYPH A285;Lo;0;L;;;;;N;;;;; +14541;ANATOLIAN HIEROGLYPH A286;Lo;0;L;;;;;N;;;;; +14542;ANATOLIAN HIEROGLYPH A287;Lo;0;L;;;;;N;;;;; +14543;ANATOLIAN HIEROGLYPH A288;Lo;0;L;;;;;N;;;;; +14544;ANATOLIAN HIEROGLYPH A289;Lo;0;L;;;;;N;;;;; +14545;ANATOLIAN HIEROGLYPH A289A;Lo;0;L;;;;;N;;;;; +14546;ANATOLIAN HIEROGLYPH A290;Lo;0;L;;;;;N;;;;; +14547;ANATOLIAN HIEROGLYPH A291;Lo;0;L;;;;;N;;;;; +14548;ANATOLIAN HIEROGLYPH A292;Lo;0;L;;;;;N;;;;; +14549;ANATOLIAN HIEROGLYPH A293;Lo;0;L;;;;;N;;;;; +1454A;ANATOLIAN HIEROGLYPH A294;Lo;0;L;;;;;N;;;;; +1454B;ANATOLIAN HIEROGLYPH A294A;Lo;0;L;;;;;N;;;;; +1454C;ANATOLIAN HIEROGLYPH A295;Lo;0;L;;;;;N;;;;; +1454D;ANATOLIAN HIEROGLYPH A296;Lo;0;L;;;;;N;;;;; +1454E;ANATOLIAN HIEROGLYPH A297;Lo;0;L;;;;;N;;;;; +1454F;ANATOLIAN HIEROGLYPH A298;Lo;0;L;;;;;N;;;;; +14550;ANATOLIAN HIEROGLYPH A299;Lo;0;L;;;;;N;;;;; +14551;ANATOLIAN HIEROGLYPH A299A;Lo;0;L;;;;;N;;;;; +14552;ANATOLIAN HIEROGLYPH A300;Lo;0;L;;;;;N;;;;; +14553;ANATOLIAN HIEROGLYPH A301;Lo;0;L;;;;;N;;;;; +14554;ANATOLIAN HIEROGLYPH A302;Lo;0;L;;;;;N;;;;; +14555;ANATOLIAN HIEROGLYPH A303;Lo;0;L;;;;;N;;;;; +14556;ANATOLIAN HIEROGLYPH A304;Lo;0;L;;;;;N;;;;; +14557;ANATOLIAN HIEROGLYPH A305;Lo;0;L;;;;;N;;;;; +14558;ANATOLIAN HIEROGLYPH A306;Lo;0;L;;;;;N;;;;; +14559;ANATOLIAN HIEROGLYPH A307;Lo;0;L;;;;;N;;;;; +1455A;ANATOLIAN HIEROGLYPH A308;Lo;0;L;;;;;N;;;;; +1455B;ANATOLIAN HIEROGLYPH A309;Lo;0;L;;;;;N;;;;; +1455C;ANATOLIAN HIEROGLYPH A309A;Lo;0;L;;;;;N;;;;; +1455D;ANATOLIAN HIEROGLYPH A310;Lo;0;L;;;;;N;;;;; +1455E;ANATOLIAN HIEROGLYPH A311;Lo;0;L;;;;;N;;;;; +1455F;ANATOLIAN HIEROGLYPH A312;Lo;0;L;;;;;N;;;;; +14560;ANATOLIAN HIEROGLYPH A313;Lo;0;L;;;;;N;;;;; +14561;ANATOLIAN HIEROGLYPH A314;Lo;0;L;;;;;N;;;;; +14562;ANATOLIAN HIEROGLYPH A315;Lo;0;L;;;;;N;;;;; +14563;ANATOLIAN HIEROGLYPH A316;Lo;0;L;;;;;N;;;;; +14564;ANATOLIAN HIEROGLYPH A317;Lo;0;L;;;;;N;;;;; +14565;ANATOLIAN HIEROGLYPH A318;Lo;0;L;;;;;N;;;;; +14566;ANATOLIAN HIEROGLYPH A319;Lo;0;L;;;;;N;;;;; +14567;ANATOLIAN HIEROGLYPH A320;Lo;0;L;;;;;N;;;;; +14568;ANATOLIAN HIEROGLYPH A321;Lo;0;L;;;;;N;;;;; +14569;ANATOLIAN HIEROGLYPH A322;Lo;0;L;;;;;N;;;;; +1456A;ANATOLIAN HIEROGLYPH A323;Lo;0;L;;;;;N;;;;; +1456B;ANATOLIAN HIEROGLYPH A324;Lo;0;L;;;;;N;;;;; +1456C;ANATOLIAN HIEROGLYPH A325;Lo;0;L;;;;;N;;;;; +1456D;ANATOLIAN HIEROGLYPH A326;Lo;0;L;;;;;N;;;;; +1456E;ANATOLIAN HIEROGLYPH A327;Lo;0;L;;;;;N;;;;; +1456F;ANATOLIAN HIEROGLYPH A328;Lo;0;L;;;;;N;;;;; +14570;ANATOLIAN HIEROGLYPH A329;Lo;0;L;;;;;N;;;;; +14571;ANATOLIAN HIEROGLYPH A329A;Lo;0;L;;;;;N;;;;; +14572;ANATOLIAN HIEROGLYPH A330;Lo;0;L;;;;;N;;;;; +14573;ANATOLIAN HIEROGLYPH A331;Lo;0;L;;;;;N;;;;; +14574;ANATOLIAN HIEROGLYPH A332A;Lo;0;L;;;;;N;;;;; +14575;ANATOLIAN HIEROGLYPH A332B;Lo;0;L;;;;;N;;;;; +14576;ANATOLIAN HIEROGLYPH A332C;Lo;0;L;;;;;N;;;;; +14577;ANATOLIAN HIEROGLYPH A333;Lo;0;L;;;;;N;;;;; +14578;ANATOLIAN HIEROGLYPH A334;Lo;0;L;;;;;N;;;;; +14579;ANATOLIAN HIEROGLYPH A335;Lo;0;L;;;;;N;;;;; +1457A;ANATOLIAN HIEROGLYPH A336;Lo;0;L;;;;;N;;;;; +1457B;ANATOLIAN HIEROGLYPH A336A;Lo;0;L;;;;;N;;;;; +1457C;ANATOLIAN HIEROGLYPH A336B;Lo;0;L;;;;;N;;;;; +1457D;ANATOLIAN HIEROGLYPH A336C;Lo;0;L;;;;;N;;;;; +1457E;ANATOLIAN HIEROGLYPH A337;Lo;0;L;;;;;N;;;;; +1457F;ANATOLIAN HIEROGLYPH A338;Lo;0;L;;;;;N;;;;; +14580;ANATOLIAN HIEROGLYPH A339;Lo;0;L;;;;;N;;;;; +14581;ANATOLIAN HIEROGLYPH A340;Lo;0;L;;;;;N;;;;; +14582;ANATOLIAN HIEROGLYPH A341;Lo;0;L;;;;;N;;;;; +14583;ANATOLIAN HIEROGLYPH A342;Lo;0;L;;;;;N;;;;; +14584;ANATOLIAN HIEROGLYPH A343;Lo;0;L;;;;;N;;;;; +14585;ANATOLIAN HIEROGLYPH A344;Lo;0;L;;;;;N;;;;; +14586;ANATOLIAN HIEROGLYPH A345;Lo;0;L;;;;;N;;;;; +14587;ANATOLIAN HIEROGLYPH A346;Lo;0;L;;;;;N;;;;; +14588;ANATOLIAN HIEROGLYPH A347;Lo;0;L;;;;;N;;;;; +14589;ANATOLIAN HIEROGLYPH A348;Lo;0;L;;;;;N;;;;; +1458A;ANATOLIAN HIEROGLYPH A349;Lo;0;L;;;;;N;;;;; +1458B;ANATOLIAN HIEROGLYPH A350;Lo;0;L;;;;;N;;;;; +1458C;ANATOLIAN HIEROGLYPH A351;Lo;0;L;;;;;N;;;;; +1458D;ANATOLIAN HIEROGLYPH A352;Lo;0;L;;;;;N;;;;; +1458E;ANATOLIAN HIEROGLYPH A353;Lo;0;L;;;;;N;;;;; +1458F;ANATOLIAN HIEROGLYPH A354;Lo;0;L;;;;;N;;;;; +14590;ANATOLIAN HIEROGLYPH A355;Lo;0;L;;;;;N;;;;; +14591;ANATOLIAN HIEROGLYPH A356;Lo;0;L;;;;;N;;;;; +14592;ANATOLIAN HIEROGLYPH A357;Lo;0;L;;;;;N;;;;; +14593;ANATOLIAN HIEROGLYPH A358;Lo;0;L;;;;;N;;;;; +14594;ANATOLIAN HIEROGLYPH A359;Lo;0;L;;;;;N;;;;; +14595;ANATOLIAN HIEROGLYPH A359A;Lo;0;L;;;;;N;;;;; +14596;ANATOLIAN HIEROGLYPH A360;Lo;0;L;;;;;N;;;;; +14597;ANATOLIAN HIEROGLYPH A361;Lo;0;L;;;;;N;;;;; +14598;ANATOLIAN HIEROGLYPH A362;Lo;0;L;;;;;N;;;;; +14599;ANATOLIAN HIEROGLYPH A363;Lo;0;L;;;;;N;;;;; +1459A;ANATOLIAN HIEROGLYPH A364;Lo;0;L;;;;;N;;;;; +1459B;ANATOLIAN HIEROGLYPH A364A;Lo;0;L;;;;;N;;;;; +1459C;ANATOLIAN HIEROGLYPH A365;Lo;0;L;;;;;N;;;;; +1459D;ANATOLIAN HIEROGLYPH A366;Lo;0;L;;;;;N;;;;; +1459E;ANATOLIAN HIEROGLYPH A367;Lo;0;L;;;;;N;;;;; +1459F;ANATOLIAN HIEROGLYPH A368;Lo;0;L;;;;;N;;;;; +145A0;ANATOLIAN HIEROGLYPH A368A;Lo;0;L;;;;;N;;;;; +145A1;ANATOLIAN HIEROGLYPH A369;Lo;0;L;;;;;N;;;;; +145A2;ANATOLIAN HIEROGLYPH A370;Lo;0;L;;;;;N;;;;; +145A3;ANATOLIAN HIEROGLYPH A371;Lo;0;L;;;;;N;;;;; +145A4;ANATOLIAN HIEROGLYPH A371A;Lo;0;L;;;;;N;;;;; +145A5;ANATOLIAN HIEROGLYPH A372;Lo;0;L;;;;;N;;;;; +145A6;ANATOLIAN HIEROGLYPH A373;Lo;0;L;;;;;N;;;;; +145A7;ANATOLIAN HIEROGLYPH A374;Lo;0;L;;;;;N;;;;; +145A8;ANATOLIAN HIEROGLYPH A375;Lo;0;L;;;;;N;;;;; +145A9;ANATOLIAN HIEROGLYPH A376;Lo;0;L;;;;;N;;;;; +145AA;ANATOLIAN HIEROGLYPH A377;Lo;0;L;;;;;N;;;;; +145AB;ANATOLIAN HIEROGLYPH A378;Lo;0;L;;;;;N;;;;; +145AC;ANATOLIAN HIEROGLYPH A379;Lo;0;L;;;;;N;;;;; +145AD;ANATOLIAN HIEROGLYPH A380;Lo;0;L;;;;;N;;;;; +145AE;ANATOLIAN HIEROGLYPH A381;Lo;0;L;;;;;N;;;;; +145AF;ANATOLIAN HIEROGLYPH A381A;Lo;0;L;;;;;N;;;;; +145B0;ANATOLIAN HIEROGLYPH A382;Lo;0;L;;;;;N;;;;; +145B1;ANATOLIAN HIEROGLYPH A383 RA OR RI;Lo;0;L;;;;;N;;;;; +145B2;ANATOLIAN HIEROGLYPH A383A;Lo;0;L;;;;;N;;;;; +145B3;ANATOLIAN HIEROGLYPH A384;Lo;0;L;;;;;N;;;;; +145B4;ANATOLIAN HIEROGLYPH A385;Lo;0;L;;;;;N;;;;; +145B5;ANATOLIAN HIEROGLYPH A386;Lo;0;L;;;;;N;;;;; +145B6;ANATOLIAN HIEROGLYPH A386A;Lo;0;L;;;;;N;;;;; +145B7;ANATOLIAN HIEROGLYPH A387;Lo;0;L;;;;;N;;;;; +145B8;ANATOLIAN HIEROGLYPH A388;Lo;0;L;;;;;N;;;;; +145B9;ANATOLIAN HIEROGLYPH A389;Lo;0;L;;;;;N;;;;; +145BA;ANATOLIAN HIEROGLYPH A390;Lo;0;L;;;;;N;;;;; +145BB;ANATOLIAN HIEROGLYPH A391;Lo;0;L;;;;;N;;;;; +145BC;ANATOLIAN HIEROGLYPH A392;Lo;0;L;;;;;N;;;;; +145BD;ANATOLIAN HIEROGLYPH A393 EIGHT;Lo;0;L;;;;;N;;;;; +145BE;ANATOLIAN HIEROGLYPH A394;Lo;0;L;;;;;N;;;;; +145BF;ANATOLIAN HIEROGLYPH A395;Lo;0;L;;;;;N;;;;; +145C0;ANATOLIAN HIEROGLYPH A396;Lo;0;L;;;;;N;;;;; +145C1;ANATOLIAN HIEROGLYPH A397;Lo;0;L;;;;;N;;;;; +145C2;ANATOLIAN HIEROGLYPH A398;Lo;0;L;;;;;N;;;;; +145C3;ANATOLIAN HIEROGLYPH A399;Lo;0;L;;;;;N;;;;; +145C4;ANATOLIAN HIEROGLYPH A400;Lo;0;L;;;;;N;;;;; +145C5;ANATOLIAN HIEROGLYPH A401;Lo;0;L;;;;;N;;;;; +145C6;ANATOLIAN HIEROGLYPH A402;Lo;0;L;;;;;N;;;;; +145C7;ANATOLIAN HIEROGLYPH A403;Lo;0;L;;;;;N;;;;; +145C8;ANATOLIAN HIEROGLYPH A404;Lo;0;L;;;;;N;;;;; +145C9;ANATOLIAN HIEROGLYPH A405;Lo;0;L;;;;;N;;;;; +145CA;ANATOLIAN HIEROGLYPH A406;Lo;0;L;;;;;N;;;;; +145CB;ANATOLIAN HIEROGLYPH A407;Lo;0;L;;;;;N;;;;; +145CC;ANATOLIAN HIEROGLYPH A408;Lo;0;L;;;;;N;;;;; +145CD;ANATOLIAN HIEROGLYPH A409;Lo;0;L;;;;;N;;;;; +145CE;ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK;Lo;0;L;;;;;N;;;;; +145CF;ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK;Lo;0;L;;;;;N;;;;; +145D0;ANATOLIAN HIEROGLYPH A411;Lo;0;L;;;;;N;;;;; +145D1;ANATOLIAN HIEROGLYPH A412;Lo;0;L;;;;;N;;;;; +145D2;ANATOLIAN HIEROGLYPH A413;Lo;0;L;;;;;N;;;;; +145D3;ANATOLIAN HIEROGLYPH A414;Lo;0;L;;;;;N;;;;; +145D4;ANATOLIAN HIEROGLYPH A415;Lo;0;L;;;;;N;;;;; +145D5;ANATOLIAN HIEROGLYPH A416;Lo;0;L;;;;;N;;;;; +145D6;ANATOLIAN HIEROGLYPH A417;Lo;0;L;;;;;N;;;;; +145D7;ANATOLIAN HIEROGLYPH A418;Lo;0;L;;;;;N;;;;; +145D8;ANATOLIAN HIEROGLYPH A419;Lo;0;L;;;;;N;;;;; +145D9;ANATOLIAN HIEROGLYPH A420;Lo;0;L;;;;;N;;;;; +145DA;ANATOLIAN HIEROGLYPH A421;Lo;0;L;;;;;N;;;;; +145DB;ANATOLIAN HIEROGLYPH A422;Lo;0;L;;;;;N;;;;; +145DC;ANATOLIAN HIEROGLYPH A423;Lo;0;L;;;;;N;;;;; +145DD;ANATOLIAN HIEROGLYPH A424;Lo;0;L;;;;;N;;;;; +145DE;ANATOLIAN HIEROGLYPH A425;Lo;0;L;;;;;N;;;;; +145DF;ANATOLIAN HIEROGLYPH A426;Lo;0;L;;;;;N;;;;; +145E0;ANATOLIAN HIEROGLYPH A427;Lo;0;L;;;;;N;;;;; +145E1;ANATOLIAN HIEROGLYPH A428;Lo;0;L;;;;;N;;;;; +145E2;ANATOLIAN HIEROGLYPH A429;Lo;0;L;;;;;N;;;;; +145E3;ANATOLIAN HIEROGLYPH A430;Lo;0;L;;;;;N;;;;; +145E4;ANATOLIAN HIEROGLYPH A431;Lo;0;L;;;;;N;;;;; +145E5;ANATOLIAN HIEROGLYPH A432;Lo;0;L;;;;;N;;;;; +145E6;ANATOLIAN HIEROGLYPH A433;Lo;0;L;;;;;N;;;;; +145E7;ANATOLIAN HIEROGLYPH A434;Lo;0;L;;;;;N;;;;; +145E8;ANATOLIAN HIEROGLYPH A435;Lo;0;L;;;;;N;;;;; +145E9;ANATOLIAN HIEROGLYPH A436;Lo;0;L;;;;;N;;;;; +145EA;ANATOLIAN HIEROGLYPH A437;Lo;0;L;;;;;N;;;;; +145EB;ANATOLIAN HIEROGLYPH A438;Lo;0;L;;;;;N;;;;; +145EC;ANATOLIAN HIEROGLYPH A439;Lo;0;L;;;;;N;;;;; +145ED;ANATOLIAN HIEROGLYPH A440;Lo;0;L;;;;;N;;;;; +145EE;ANATOLIAN HIEROGLYPH A441;Lo;0;L;;;;;N;;;;; +145EF;ANATOLIAN HIEROGLYPH A442;Lo;0;L;;;;;N;;;;; +145F0;ANATOLIAN HIEROGLYPH A443;Lo;0;L;;;;;N;;;;; +145F1;ANATOLIAN HIEROGLYPH A444;Lo;0;L;;;;;N;;;;; +145F2;ANATOLIAN HIEROGLYPH A445;Lo;0;L;;;;;N;;;;; +145F3;ANATOLIAN HIEROGLYPH A446;Lo;0;L;;;;;N;;;;; +145F4;ANATOLIAN HIEROGLYPH A447;Lo;0;L;;;;;N;;;;; +145F5;ANATOLIAN HIEROGLYPH A448;Lo;0;L;;;;;N;;;;; +145F6;ANATOLIAN HIEROGLYPH A449;Lo;0;L;;;;;N;;;;; +145F7;ANATOLIAN HIEROGLYPH A450;Lo;0;L;;;;;N;;;;; +145F8;ANATOLIAN HIEROGLYPH A450A;Lo;0;L;;;;;N;;;;; +145F9;ANATOLIAN HIEROGLYPH A451;Lo;0;L;;;;;N;;;;; +145FA;ANATOLIAN HIEROGLYPH A452;Lo;0;L;;;;;N;;;;; +145FB;ANATOLIAN HIEROGLYPH A453;Lo;0;L;;;;;N;;;;; +145FC;ANATOLIAN HIEROGLYPH A454;Lo;0;L;;;;;N;;;;; +145FD;ANATOLIAN HIEROGLYPH A455;Lo;0;L;;;;;N;;;;; +145FE;ANATOLIAN HIEROGLYPH A456;Lo;0;L;;;;;N;;;;; +145FF;ANATOLIAN HIEROGLYPH A457;Lo;0;L;;;;;N;;;;; +14600;ANATOLIAN HIEROGLYPH A457A;Lo;0;L;;;;;N;;;;; +14601;ANATOLIAN HIEROGLYPH A458;Lo;0;L;;;;;N;;;;; +14602;ANATOLIAN HIEROGLYPH A459;Lo;0;L;;;;;N;;;;; +14603;ANATOLIAN HIEROGLYPH A460;Lo;0;L;;;;;N;;;;; +14604;ANATOLIAN HIEROGLYPH A461;Lo;0;L;;;;;N;;;;; +14605;ANATOLIAN HIEROGLYPH A462;Lo;0;L;;;;;N;;;;; +14606;ANATOLIAN HIEROGLYPH A463;Lo;0;L;;;;;N;;;;; +14607;ANATOLIAN HIEROGLYPH A464;Lo;0;L;;;;;N;;;;; +14608;ANATOLIAN HIEROGLYPH A465;Lo;0;L;;;;;N;;;;; +14609;ANATOLIAN HIEROGLYPH A466;Lo;0;L;;;;;N;;;;; +1460A;ANATOLIAN HIEROGLYPH A467;Lo;0;L;;;;;N;;;;; +1460B;ANATOLIAN HIEROGLYPH A468;Lo;0;L;;;;;N;;;;; +1460C;ANATOLIAN HIEROGLYPH A469;Lo;0;L;;;;;N;;;;; +1460D;ANATOLIAN HIEROGLYPH A470;Lo;0;L;;;;;N;;;;; +1460E;ANATOLIAN HIEROGLYPH A471;Lo;0;L;;;;;N;;;;; +1460F;ANATOLIAN HIEROGLYPH A472;Lo;0;L;;;;;N;;;;; +14610;ANATOLIAN HIEROGLYPH A473;Lo;0;L;;;;;N;;;;; +14611;ANATOLIAN HIEROGLYPH A474;Lo;0;L;;;;;N;;;;; +14612;ANATOLIAN HIEROGLYPH A475;Lo;0;L;;;;;N;;;;; +14613;ANATOLIAN HIEROGLYPH A476;Lo;0;L;;;;;N;;;;; +14614;ANATOLIAN HIEROGLYPH A477;Lo;0;L;;;;;N;;;;; +14615;ANATOLIAN HIEROGLYPH A478;Lo;0;L;;;;;N;;;;; +14616;ANATOLIAN HIEROGLYPH A479;Lo;0;L;;;;;N;;;;; +14617;ANATOLIAN HIEROGLYPH A480;Lo;0;L;;;;;N;;;;; +14618;ANATOLIAN HIEROGLYPH A481;Lo;0;L;;;;;N;;;;; +14619;ANATOLIAN HIEROGLYPH A482;Lo;0;L;;;;;N;;;;; +1461A;ANATOLIAN HIEROGLYPH A483;Lo;0;L;;;;;N;;;;; +1461B;ANATOLIAN HIEROGLYPH A484;Lo;0;L;;;;;N;;;;; +1461C;ANATOLIAN HIEROGLYPH A485;Lo;0;L;;;;;N;;;;; +1461D;ANATOLIAN HIEROGLYPH A486;Lo;0;L;;;;;N;;;;; +1461E;ANATOLIAN HIEROGLYPH A487;Lo;0;L;;;;;N;;;;; +1461F;ANATOLIAN HIEROGLYPH A488;Lo;0;L;;;;;N;;;;; +14620;ANATOLIAN HIEROGLYPH A489;Lo;0;L;;;;;N;;;;; +14621;ANATOLIAN HIEROGLYPH A490;Lo;0;L;;;;;N;;;;; +14622;ANATOLIAN HIEROGLYPH A491;Lo;0;L;;;;;N;;;;; +14623;ANATOLIAN HIEROGLYPH A492;Lo;0;L;;;;;N;;;;; +14624;ANATOLIAN HIEROGLYPH A493;Lo;0;L;;;;;N;;;;; +14625;ANATOLIAN HIEROGLYPH A494;Lo;0;L;;;;;N;;;;; +14626;ANATOLIAN HIEROGLYPH A495;Lo;0;L;;;;;N;;;;; +14627;ANATOLIAN HIEROGLYPH A496;Lo;0;L;;;;;N;;;;; +14628;ANATOLIAN HIEROGLYPH A497;Lo;0;L;;;;;N;;;;; +14629;ANATOLIAN HIEROGLYPH A501;Lo;0;L;;;;;N;;;;; +1462A;ANATOLIAN HIEROGLYPH A502;Lo;0;L;;;;;N;;;;; +1462B;ANATOLIAN HIEROGLYPH A503;Lo;0;L;;;;;N;;;;; +1462C;ANATOLIAN HIEROGLYPH A504;Lo;0;L;;;;;N;;;;; +1462D;ANATOLIAN HIEROGLYPH A505;Lo;0;L;;;;;N;;;;; +1462E;ANATOLIAN HIEROGLYPH A506;Lo;0;L;;;;;N;;;;; +1462F;ANATOLIAN HIEROGLYPH A507;Lo;0;L;;;;;N;;;;; +14630;ANATOLIAN HIEROGLYPH A508;Lo;0;L;;;;;N;;;;; +14631;ANATOLIAN HIEROGLYPH A509;Lo;0;L;;;;;N;;;;; +14632;ANATOLIAN HIEROGLYPH A510;Lo;0;L;;;;;N;;;;; +14633;ANATOLIAN HIEROGLYPH A511;Lo;0;L;;;;;N;;;;; +14634;ANATOLIAN HIEROGLYPH A512;Lo;0;L;;;;;N;;;;; +14635;ANATOLIAN HIEROGLYPH A513;Lo;0;L;;;;;N;;;;; +14636;ANATOLIAN HIEROGLYPH A514;Lo;0;L;;;;;N;;;;; +14637;ANATOLIAN HIEROGLYPH A515;Lo;0;L;;;;;N;;;;; +14638;ANATOLIAN HIEROGLYPH A516;Lo;0;L;;;;;N;;;;; +14639;ANATOLIAN HIEROGLYPH A517;Lo;0;L;;;;;N;;;;; +1463A;ANATOLIAN HIEROGLYPH A518;Lo;0;L;;;;;N;;;;; +1463B;ANATOLIAN HIEROGLYPH A519;Lo;0;L;;;;;N;;;;; +1463C;ANATOLIAN HIEROGLYPH A520;Lo;0;L;;;;;N;;;;; +1463D;ANATOLIAN HIEROGLYPH A521;Lo;0;L;;;;;N;;;;; +1463E;ANATOLIAN HIEROGLYPH A522;Lo;0;L;;;;;N;;;;; +1463F;ANATOLIAN HIEROGLYPH A523;Lo;0;L;;;;;N;;;;; +14640;ANATOLIAN HIEROGLYPH A524;Lo;0;L;;;;;N;;;;; +14641;ANATOLIAN HIEROGLYPH A525;Lo;0;L;;;;;N;;;;; +14642;ANATOLIAN HIEROGLYPH A526;Lo;0;L;;;;;N;;;;; +14643;ANATOLIAN HIEROGLYPH A527;Lo;0;L;;;;;N;;;;; +14644;ANATOLIAN HIEROGLYPH A528;Lo;0;L;;;;;N;;;;; +14645;ANATOLIAN HIEROGLYPH A529;Lo;0;L;;;;;N;;;;; +14646;ANATOLIAN HIEROGLYPH A530;Lo;0;L;;;;;N;;;;; 16800;BAMUM LETTER PHASE-A NGKUE MFON;Lo;0;L;;;;;N;;;;; 16801;BAMUM LETTER PHASE-A GBIEE FON;Lo;0;L;;;;;N;;;;; 16802;BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE;Lo;0;L;;;;;N;;;;; @@ -23080,6 +24300,17 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; 1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; 1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; +1D1DE;MUSICAL SYMBOL KIEVAN C CLEF;So;0;L;;;;;N;;;;; +1D1DF;MUSICAL SYMBOL KIEVAN END OF PIECE;So;0;L;;;;;N;;;;; +1D1E0;MUSICAL SYMBOL KIEVAN FINAL NOTE;So;0;L;;;;;N;;;;; +1D1E1;MUSICAL SYMBOL KIEVAN RECITATIVE MARK;So;0;L;;;;;N;;;;; +1D1E2;MUSICAL SYMBOL KIEVAN WHOLE NOTE;So;0;L;;;;;N;;;;; +1D1E3;MUSICAL SYMBOL KIEVAN HALF NOTE;So;0;L;;;;;N;;;;; +1D1E4;MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM DOWN;So;0;L;;;;;N;;;;; +1D1E5;MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM UP;So;0;L;;;;;N;;;;; +1D1E6;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN;So;0;L;;;;;N;;;;; +1D1E7;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP;So;0;L;;;;;N;;;;; +1D1E8;MUSICAL SYMBOL KIEVAN FLAT SIGN;So;0;L;;;;;N;;;;; 1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; 1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; 1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; @@ -24251,6 +25482,678 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; 1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; 1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; +1D800;SIGNWRITING HAND-FIST INDEX;So;0;L;;;;;N;;;;; +1D801;SIGNWRITING HAND-CIRCLE INDEX;So;0;L;;;;;N;;;;; +1D802;SIGNWRITING HAND-CUP INDEX;So;0;L;;;;;N;;;;; +1D803;SIGNWRITING HAND-OVAL INDEX;So;0;L;;;;;N;;;;; +1D804;SIGNWRITING HAND-HINGE INDEX;So;0;L;;;;;N;;;;; +1D805;SIGNWRITING HAND-ANGLE INDEX;So;0;L;;;;;N;;;;; +1D806;SIGNWRITING HAND-FIST INDEX BENT;So;0;L;;;;;N;;;;; +1D807;SIGNWRITING HAND-CIRCLE INDEX BENT;So;0;L;;;;;N;;;;; +1D808;SIGNWRITING HAND-FIST THUMB UNDER INDEX BENT;So;0;L;;;;;N;;;;; +1D809;SIGNWRITING HAND-FIST INDEX RAISED KNUCKLE;So;0;L;;;;;N;;;;; +1D80A;SIGNWRITING HAND-FIST INDEX CUPPED;So;0;L;;;;;N;;;;; +1D80B;SIGNWRITING HAND-FIST INDEX HINGED;So;0;L;;;;;N;;;;; +1D80C;SIGNWRITING HAND-FIST INDEX HINGED LOW;So;0;L;;;;;N;;;;; +1D80D;SIGNWRITING HAND-CIRCLE INDEX HINGE;So;0;L;;;;;N;;;;; +1D80E;SIGNWRITING HAND-FIST INDEX MIDDLE;So;0;L;;;;;N;;;;; +1D80F;SIGNWRITING HAND-CIRCLE INDEX MIDDLE;So;0;L;;;;;N;;;;; +1D810;SIGNWRITING HAND-FIST INDEX MIDDLE BENT;So;0;L;;;;;N;;;;; +1D811;SIGNWRITING HAND-FIST INDEX MIDDLE RAISED KNUCKLES;So;0;L;;;;;N;;;;; +1D812;SIGNWRITING HAND-FIST INDEX MIDDLE HINGED;So;0;L;;;;;N;;;;; +1D813;SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED;So;0;L;;;;;N;;;;; +1D814;SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP;So;0;L;;;;;N;;;;; +1D815;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED;So;0;L;;;;;N;;;;; +1D816;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED INDEX BENT;So;0;L;;;;;N;;;;; +1D817;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED MIDDLE BENT;So;0;L;;;;;N;;;;; +1D818;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED;So;0;L;;;;;N;;;;; +1D819;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED;So;0;L;;;;;N;;;;; +1D81A;SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED;So;0;L;;;;;N;;;;; +1D81B;SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSSED;So;0;L;;;;;N;;;;; +1D81C;SIGNWRITING HAND-FIST MIDDLE BENT OVER INDEX;So;0;L;;;;;N;;;;; +1D81D;SIGNWRITING HAND-FIST INDEX BENT OVER MIDDLE;So;0;L;;;;;N;;;;; +1D81E;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB;So;0;L;;;;;N;;;;; +1D81F;SIGNWRITING HAND-CIRCLE INDEX MIDDLE THUMB;So;0;L;;;;;N;;;;; +1D820;SIGNWRITING HAND-FIST INDEX MIDDLE STRAIGHT THUMB BENT;So;0;L;;;;;N;;;;; +1D821;SIGNWRITING HAND-FIST INDEX MIDDLE BENT THUMB STRAIGHT;So;0;L;;;;;N;;;;; +1D822;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB BENT;So;0;L;;;;;N;;;;; +1D823;SIGNWRITING HAND-FIST INDEX MIDDLE HINGED SPREAD THUMB SIDE;So;0;L;;;;;N;;;;; +1D824;SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB SIDE;So;0;L;;;;;N;;;;; +1D825;SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB CONJOINED;So;0;L;;;;;N;;;;; +1D826;SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP THUMB SIDE;So;0;L;;;;;N;;;;; +1D827;SIGNWRITING HAND-FIST INDEX MIDDLE UP SPREAD THUMB FORWARD;So;0;L;;;;;N;;;;; +1D828;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CUPPED;So;0;L;;;;;N;;;;; +1D829;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CIRCLED;So;0;L;;;;;N;;;;; +1D82A;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HOOKED;So;0;L;;;;;N;;;;; +1D82B;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HINGED;So;0;L;;;;;N;;;;; +1D82C;SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE STRAIGHT;So;0;L;;;;;N;;;;; +1D82D;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE;So;0;L;;;;;N;;;;; +1D82E;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE CONJOINED;So;0;L;;;;;N;;;;; +1D82F;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE BENT;So;0;L;;;;;N;;;;; +1D830;SIGNWRITING HAND-FIST MIDDLE THUMB HOOKED INDEX UP;So;0;L;;;;;N;;;;; +1D831;SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE UP;So;0;L;;;;;N;;;;; +1D832;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED THUMB SIDE;So;0;L;;;;;N;;;;; +1D833;SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED THUMB SIDE;So;0;L;;;;;N;;;;; +1D834;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB FORWARD;So;0;L;;;;;N;;;;; +1D835;SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED THUMB FORWARD;So;0;L;;;;;N;;;;; +1D836;SIGNWRITING HAND-FIST MIDDLE THUMB CUPPED INDEX UP;So;0;L;;;;;N;;;;; +1D837;SIGNWRITING HAND-FIST INDEX THUMB CUPPED MIDDLE UP;So;0;L;;;;;N;;;;; +1D838;SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX UP;So;0;L;;;;;N;;;;; +1D839;SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX HINGED;So;0;L;;;;;N;;;;; +1D83A;SIGNWRITING HAND-FIST INDEX THUMB ANGLED OUT MIDDLE UP;So;0;L;;;;;N;;;;; +1D83B;SIGNWRITING HAND-FIST INDEX THUMB ANGLED IN MIDDLE UP;So;0;L;;;;;N;;;;; +1D83C;SIGNWRITING HAND-FIST INDEX THUMB CIRCLED MIDDLE UP;So;0;L;;;;;N;;;;; +1D83D;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CONJOINED HINGED;So;0;L;;;;;N;;;;; +1D83E;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED OUT;So;0;L;;;;;N;;;;; +1D83F;SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED;So;0;L;;;;;N;;;;; +1D840;SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX UP;So;0;L;;;;;N;;;;; +1D841;SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX CROSSED;So;0;L;;;;;N;;;;; +1D842;SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED INDEX UP;So;0;L;;;;;N;;;;; +1D843;SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE HINGED;So;0;L;;;;;N;;;;; +1D844;SIGNWRITING HAND-FLAT FOUR FINGERS;So;0;L;;;;;N;;;;; +1D845;SIGNWRITING HAND-FLAT FOUR FINGERS BENT;So;0;L;;;;;N;;;;; +1D846;SIGNWRITING HAND-FLAT FOUR FINGERS HINGED;So;0;L;;;;;N;;;;; +1D847;SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED;So;0;L;;;;;N;;;;; +1D848;SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED SPLIT;So;0;L;;;;;N;;;;; +1D849;SIGNWRITING HAND-CLAW FOUR FINGERS CONJOINED;So;0;L;;;;;N;;;;; +1D84A;SIGNWRITING HAND-FIST FOUR FINGERS CONJOINED BENT;So;0;L;;;;;N;;;;; +1D84B;SIGNWRITING HAND-HINGE FOUR FINGERS CONJOINED;So;0;L;;;;;N;;;;; +1D84C;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;; +1D84D;SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;; +1D84E;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD FOUR BENT;So;0;L;;;;;N;;;;; +1D84F;SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD FOUR BENT;So;0;L;;;;;N;;;;; +1D850;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD BENT;So;0;L;;;;;N;;;;; +1D851;SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD BENT;So;0;L;;;;;N;;;;; +1D852;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD THUMB FORWARD;So;0;L;;;;;N;;;;; +1D853;SIGNWRITING HAND-CUP FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;; +1D854;SIGNWRITING HAND-CUP FIVE FINGERS SPREAD OPEN;So;0;L;;;;;N;;;;; +1D855;SIGNWRITING HAND-HINGE FIVE FINGERS SPREAD OPEN;So;0;L;;;;;N;;;;; +1D856;SIGNWRITING HAND-OVAL FIVE FINGERS SPREAD;So;0;L;;;;;N;;;;; +1D857;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED;So;0;L;;;;;N;;;;; +1D858;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED THUMB SIDE;So;0;L;;;;;N;;;;; +1D859;SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED NO THUMB;So;0;L;;;;;N;;;;; +1D85A;SIGNWRITING HAND-FLAT;So;0;L;;;;;N;;;;; +1D85B;SIGNWRITING HAND-FLAT BETWEEN PALM FACINGS;So;0;L;;;;;N;;;;; +1D85C;SIGNWRITING HAND-FLAT HEEL;So;0;L;;;;;N;;;;; +1D85D;SIGNWRITING HAND-FLAT THUMB SIDE;So;0;L;;;;;N;;;;; +1D85E;SIGNWRITING HAND-FLAT HEEL THUMB SIDE;So;0;L;;;;;N;;;;; +1D85F;SIGNWRITING HAND-FLAT THUMB BENT;So;0;L;;;;;N;;;;; +1D860;SIGNWRITING HAND-FLAT THUMB FORWARD;So;0;L;;;;;N;;;;; +1D861;SIGNWRITING HAND-FLAT SPLIT INDEX THUMB SIDE;So;0;L;;;;;N;;;;; +1D862;SIGNWRITING HAND-FLAT SPLIT CENTRE;So;0;L;;;;;N;;;;; +1D863;SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE;So;0;L;;;;;N;;;;; +1D864;SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE BENT;So;0;L;;;;;N;;;;; +1D865;SIGNWRITING HAND-FLAT SPLIT LITTLE;So;0;L;;;;;N;;;;; +1D866;SIGNWRITING HAND-CLAW;So;0;L;;;;;N;;;;; +1D867;SIGNWRITING HAND-CLAW THUMB SIDE;So;0;L;;;;;N;;;;; +1D868;SIGNWRITING HAND-CLAW NO THUMB;So;0;L;;;;;N;;;;; +1D869;SIGNWRITING HAND-CLAW THUMB FORWARD;So;0;L;;;;;N;;;;; +1D86A;SIGNWRITING HAND-HOOK CURLICUE;So;0;L;;;;;N;;;;; +1D86B;SIGNWRITING HAND-HOOK;So;0;L;;;;;N;;;;; +1D86C;SIGNWRITING HAND-CUP OPEN;So;0;L;;;;;N;;;;; +1D86D;SIGNWRITING HAND-CUP;So;0;L;;;;;N;;;;; +1D86E;SIGNWRITING HAND-CUP OPEN THUMB SIDE;So;0;L;;;;;N;;;;; +1D86F;SIGNWRITING HAND-CUP THUMB SIDE;So;0;L;;;;;N;;;;; +1D870;SIGNWRITING HAND-CUP OPEN NO THUMB;So;0;L;;;;;N;;;;; +1D871;SIGNWRITING HAND-CUP NO THUMB;So;0;L;;;;;N;;;;; +1D872;SIGNWRITING HAND-CUP OPEN THUMB FORWARD;So;0;L;;;;;N;;;;; +1D873;SIGNWRITING HAND-CUP THUMB FORWARD;So;0;L;;;;;N;;;;; +1D874;SIGNWRITING HAND-CURLICUE OPEN;So;0;L;;;;;N;;;;; +1D875;SIGNWRITING HAND-CURLICUE;So;0;L;;;;;N;;;;; +1D876;SIGNWRITING HAND-CIRCLE;So;0;L;;;;;N;;;;; +1D877;SIGNWRITING HAND-OVAL;So;0;L;;;;;N;;;;; +1D878;SIGNWRITING HAND-OVAL THUMB SIDE;So;0;L;;;;;N;;;;; +1D879;SIGNWRITING HAND-OVAL NO THUMB;So;0;L;;;;;N;;;;; +1D87A;SIGNWRITING HAND-OVAL THUMB FORWARD;So;0;L;;;;;N;;;;; +1D87B;SIGNWRITING HAND-HINGE OPEN;So;0;L;;;;;N;;;;; +1D87C;SIGNWRITING HAND-HINGE OPEN THUMB FORWARD;So;0;L;;;;;N;;;;; +1D87D;SIGNWRITING HAND-HINGE;So;0;L;;;;;N;;;;; +1D87E;SIGNWRITING HAND-HINGE SMALL;So;0;L;;;;;N;;;;; +1D87F;SIGNWRITING HAND-HINGE OPEN THUMB SIDE;So;0;L;;;;;N;;;;; +1D880;SIGNWRITING HAND-HINGE THUMB SIDE;So;0;L;;;;;N;;;;; +1D881;SIGNWRITING HAND-HINGE OPEN NO THUMB;So;0;L;;;;;N;;;;; +1D882;SIGNWRITING HAND-HINGE NO THUMB;So;0;L;;;;;N;;;;; +1D883;SIGNWRITING HAND-HINGE THUMB SIDE TOUCHING INDEX;So;0;L;;;;;N;;;;; +1D884;SIGNWRITING HAND-HINGE THUMB BETWEEN MIDDLE RING;So;0;L;;;;;N;;;;; +1D885;SIGNWRITING HAND-ANGLE;So;0;L;;;;;N;;;;; +1D886;SIGNWRITING HAND-FIST INDEX MIDDLE RING;So;0;L;;;;;N;;;;; +1D887;SIGNWRITING HAND-CIRCLE INDEX MIDDLE RING;So;0;L;;;;;N;;;;; +1D888;SIGNWRITING HAND-HINGE INDEX MIDDLE RING;So;0;L;;;;;N;;;;; +1D889;SIGNWRITING HAND-ANGLE INDEX MIDDLE RING;So;0;L;;;;;N;;;;; +1D88A;SIGNWRITING HAND-HINGE LITTLE;So;0;L;;;;;N;;;;; +1D88B;SIGNWRITING HAND-FIST INDEX MIDDLE RING BENT;So;0;L;;;;;N;;;;; +1D88C;SIGNWRITING HAND-FIST INDEX MIDDLE RING CONJOINED;So;0;L;;;;;N;;;;; +1D88D;SIGNWRITING HAND-HINGE INDEX MIDDLE RING CONJOINED;So;0;L;;;;;N;;;;; +1D88E;SIGNWRITING HAND-FIST LITTLE DOWN;So;0;L;;;;;N;;;;; +1D88F;SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE STRAIGHT;So;0;L;;;;;N;;;;; +1D890;SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE CURVED;So;0;L;;;;;N;;;;; +1D891;SIGNWRITING HAND-FIST LITTLE DOWN OTHERS CIRCLED;So;0;L;;;;;N;;;;; +1D892;SIGNWRITING HAND-FIST LITTLE UP;So;0;L;;;;;N;;;;; +1D893;SIGNWRITING HAND-FIST THUMB UNDER LITTLE UP;So;0;L;;;;;N;;;;; +1D894;SIGNWRITING HAND-CIRCLE LITTLE UP;So;0;L;;;;;N;;;;; +1D895;SIGNWRITING HAND-OVAL LITTLE UP;So;0;L;;;;;N;;;;; +1D896;SIGNWRITING HAND-ANGLE LITTLE UP;So;0;L;;;;;N;;;;; +1D897;SIGNWRITING HAND-FIST LITTLE RAISED KNUCKLE;So;0;L;;;;;N;;;;; +1D898;SIGNWRITING HAND-FIST LITTLE BENT;So;0;L;;;;;N;;;;; +1D899;SIGNWRITING HAND-FIST LITTLE TOUCHES THUMB;So;0;L;;;;;N;;;;; +1D89A;SIGNWRITING HAND-FIST LITTLE THUMB;So;0;L;;;;;N;;;;; +1D89B;SIGNWRITING HAND-HINGE LITTLE THUMB;So;0;L;;;;;N;;;;; +1D89C;SIGNWRITING HAND-FIST LITTLE INDEX THUMB;So;0;L;;;;;N;;;;; +1D89D;SIGNWRITING HAND-HINGE LITTLE INDEX THUMB;So;0;L;;;;;N;;;;; +1D89E;SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB OUT;So;0;L;;;;;N;;;;; +1D89F;SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB;So;0;L;;;;;N;;;;; +1D8A0;SIGNWRITING HAND-FIST LITTLE INDEX;So;0;L;;;;;N;;;;; +1D8A1;SIGNWRITING HAND-CIRCLE LITTLE INDEX;So;0;L;;;;;N;;;;; +1D8A2;SIGNWRITING HAND-HINGE LITTLE INDEX;So;0;L;;;;;N;;;;; +1D8A3;SIGNWRITING HAND-ANGLE LITTLE INDEX;So;0;L;;;;;N;;;;; +1D8A4;SIGNWRITING HAND-FIST INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;; +1D8A5;SIGNWRITING HAND-CIRCLE INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;; +1D8A6;SIGNWRITING HAND-HINGE INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;; +1D8A7;SIGNWRITING HAND-HINGE RING;So;0;L;;;;;N;;;;; +1D8A8;SIGNWRITING HAND-ANGLE INDEX MIDDLE LITTLE;So;0;L;;;;;N;;;;; +1D8A9;SIGNWRITING HAND-FIST INDEX MIDDLE CROSS LITTLE;So;0;L;;;;;N;;;;; +1D8AA;SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSS LITTLE;So;0;L;;;;;N;;;;; +1D8AB;SIGNWRITING HAND-FIST RING DOWN;So;0;L;;;;;N;;;;; +1D8AC;SIGNWRITING HAND-HINGE RING DOWN INDEX THUMB HOOK MIDDLE;So;0;L;;;;;N;;;;; +1D8AD;SIGNWRITING HAND-ANGLE RING DOWN MIDDLE THUMB INDEX CROSS;So;0;L;;;;;N;;;;; +1D8AE;SIGNWRITING HAND-FIST RING UP;So;0;L;;;;;N;;;;; +1D8AF;SIGNWRITING HAND-FIST RING RAISED KNUCKLE;So;0;L;;;;;N;;;;; +1D8B0;SIGNWRITING HAND-FIST RING LITTLE;So;0;L;;;;;N;;;;; +1D8B1;SIGNWRITING HAND-CIRCLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8B2;SIGNWRITING HAND-OVAL RING LITTLE;So;0;L;;;;;N;;;;; +1D8B3;SIGNWRITING HAND-ANGLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8B4;SIGNWRITING HAND-FIST RING MIDDLE;So;0;L;;;;;N;;;;; +1D8B5;SIGNWRITING HAND-FIST RING MIDDLE CONJOINED;So;0;L;;;;;N;;;;; +1D8B6;SIGNWRITING HAND-FIST RING MIDDLE RAISED KNUCKLES;So;0;L;;;;;N;;;;; +1D8B7;SIGNWRITING HAND-FIST RING INDEX;So;0;L;;;;;N;;;;; +1D8B8;SIGNWRITING HAND-FIST RING THUMB;So;0;L;;;;;N;;;;; +1D8B9;SIGNWRITING HAND-HOOK RING THUMB;So;0;L;;;;;N;;;;; +1D8BA;SIGNWRITING HAND-FIST INDEX RING LITTLE;So;0;L;;;;;N;;;;; +1D8BB;SIGNWRITING HAND-CIRCLE INDEX RING LITTLE;So;0;L;;;;;N;;;;; +1D8BC;SIGNWRITING HAND-CURLICUE INDEX RING LITTLE ON;So;0;L;;;;;N;;;;; +1D8BD;SIGNWRITING HAND-HOOK INDEX RING LITTLE OUT;So;0;L;;;;;N;;;;; +1D8BE;SIGNWRITING HAND-HOOK INDEX RING LITTLE IN;So;0;L;;;;;N;;;;; +1D8BF;SIGNWRITING HAND-HOOK INDEX RING LITTLE UNDER;So;0;L;;;;;N;;;;; +1D8C0;SIGNWRITING HAND-CUP INDEX RING LITTLE;So;0;L;;;;;N;;;;; +1D8C1;SIGNWRITING HAND-HINGE INDEX RING LITTLE;So;0;L;;;;;N;;;;; +1D8C2;SIGNWRITING HAND-ANGLE INDEX RING LITTLE OUT;So;0;L;;;;;N;;;;; +1D8C3;SIGNWRITING HAND-ANGLE INDEX RING LITTLE;So;0;L;;;;;N;;;;; +1D8C4;SIGNWRITING HAND-FIST MIDDLE DOWN;So;0;L;;;;;N;;;;; +1D8C5;SIGNWRITING HAND-HINGE MIDDLE;So;0;L;;;;;N;;;;; +1D8C6;SIGNWRITING HAND-FIST MIDDLE UP;So;0;L;;;;;N;;;;; +1D8C7;SIGNWRITING HAND-CIRCLE MIDDLE UP;So;0;L;;;;;N;;;;; +1D8C8;SIGNWRITING HAND-FIST MIDDLE RAISED KNUCKLE;So;0;L;;;;;N;;;;; +1D8C9;SIGNWRITING HAND-FIST MIDDLE UP THUMB SIDE;So;0;L;;;;;N;;;;; +1D8CA;SIGNWRITING HAND-HOOK MIDDLE THUMB;So;0;L;;;;;N;;;;; +1D8CB;SIGNWRITING HAND-FIST MIDDLE THUMB LITTLE;So;0;L;;;;;N;;;;; +1D8CC;SIGNWRITING HAND-FIST MIDDLE LITTLE;So;0;L;;;;;N;;;;; +1D8CD;SIGNWRITING HAND-FIST MIDDLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8CE;SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8CF;SIGNWRITING HAND-CURLICUE MIDDLE RING LITTLE ON;So;0;L;;;;;N;;;;; +1D8D0;SIGNWRITING HAND-CUP MIDDLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8D1;SIGNWRITING HAND-HINGE MIDDLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8D2;SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE OUT;So;0;L;;;;;N;;;;; +1D8D3;SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE IN;So;0;L;;;;;N;;;;; +1D8D4;SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE;So;0;L;;;;;N;;;;; +1D8D5;SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE BENT;So;0;L;;;;;N;;;;; +1D8D6;SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED;So;0;L;;;;;N;;;;; +1D8D7;SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED SIDE;So;0;L;;;;;N;;;;; +1D8D8;SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED OUT;So;0;L;;;;;N;;;;; +1D8D9;SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED IN;So;0;L;;;;;N;;;;; +1D8DA;SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED;So;0;L;;;;;N;;;;; +1D8DB;SIGNWRITING HAND-HINGE INDEX HINGED;So;0;L;;;;;N;;;;; +1D8DC;SIGNWRITING HAND-FIST INDEX THUMB SIDE;So;0;L;;;;;N;;;;; +1D8DD;SIGNWRITING HAND-HINGE INDEX THUMB SIDE;So;0;L;;;;;N;;;;; +1D8DE;SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB DIAGONAL;So;0;L;;;;;N;;;;; +1D8DF;SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB CONJOINED;So;0;L;;;;;N;;;;; +1D8E0;SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB BENT;So;0;L;;;;;N;;;;; +1D8E1;SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX BENT;So;0;L;;;;;N;;;;; +1D8E2;SIGNWRITING HAND-FIST INDEX THUMB SIDE BOTH BENT;So;0;L;;;;;N;;;;; +1D8E3;SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX HINGE;So;0;L;;;;;N;;;;; +1D8E4;SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX STRAIGHT;So;0;L;;;;;N;;;;; +1D8E5;SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX BENT;So;0;L;;;;;N;;;;; +1D8E6;SIGNWRITING HAND-FIST INDEX THUMB HOOK;So;0;L;;;;;N;;;;; +1D8E7;SIGNWRITING HAND-FIST INDEX THUMB CURLICUE;So;0;L;;;;;N;;;;; +1D8E8;SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB INSIDE;So;0;L;;;;;N;;;;; +1D8E9;SIGNWRITING HAND-CLAW INDEX THUMB CURVE THUMB INSIDE;So;0;L;;;;;N;;;;; +1D8EA;SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB UNDER;So;0;L;;;;;N;;;;; +1D8EB;SIGNWRITING HAND-FIST INDEX THUMB CIRCLE;So;0;L;;;;;N;;;;; +1D8EC;SIGNWRITING HAND-CUP INDEX THUMB;So;0;L;;;;;N;;;;; +1D8ED;SIGNWRITING HAND-CUP INDEX THUMB OPEN;So;0;L;;;;;N;;;;; +1D8EE;SIGNWRITING HAND-HINGE INDEX THUMB OPEN;So;0;L;;;;;N;;;;; +1D8EF;SIGNWRITING HAND-HINGE INDEX THUMB LARGE;So;0;L;;;;;N;;;;; +1D8F0;SIGNWRITING HAND-HINGE INDEX THUMB;So;0;L;;;;;N;;;;; +1D8F1;SIGNWRITING HAND-HINGE INDEX THUMB SMALL;So;0;L;;;;;N;;;;; +1D8F2;SIGNWRITING HAND-ANGLE INDEX THUMB OUT;So;0;L;;;;;N;;;;; +1D8F3;SIGNWRITING HAND-ANGLE INDEX THUMB IN;So;0;L;;;;;N;;;;; +1D8F4;SIGNWRITING HAND-ANGLE INDEX THUMB;So;0;L;;;;;N;;;;; +1D8F5;SIGNWRITING HAND-FIST THUMB;So;0;L;;;;;N;;;;; +1D8F6;SIGNWRITING HAND-FIST THUMB HEEL;So;0;L;;;;;N;;;;; +1D8F7;SIGNWRITING HAND-FIST THUMB SIDE DIAGONAL;So;0;L;;;;;N;;;;; +1D8F8;SIGNWRITING HAND-FIST THUMB SIDE CONJOINED;So;0;L;;;;;N;;;;; +1D8F9;SIGNWRITING HAND-FIST THUMB SIDE BENT;So;0;L;;;;;N;;;;; +1D8FA;SIGNWRITING HAND-FIST THUMB FORWARD;So;0;L;;;;;N;;;;; +1D8FB;SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE;So;0;L;;;;;N;;;;; +1D8FC;SIGNWRITING HAND-FIST THUMB BETWEEN MIDDLE RING;So;0;L;;;;;N;;;;; +1D8FD;SIGNWRITING HAND-FIST THUMB BETWEEN RING LITTLE;So;0;L;;;;;N;;;;; +1D8FE;SIGNWRITING HAND-FIST THUMB UNDER TWO FINGERS;So;0;L;;;;;N;;;;; +1D8FF;SIGNWRITING HAND-FIST THUMB OVER TWO FINGERS;So;0;L;;;;;N;;;;; +1D900;SIGNWRITING HAND-FIST THUMB UNDER THREE FINGERS;So;0;L;;;;;N;;;;; +1D901;SIGNWRITING HAND-FIST THUMB UNDER FOUR FINGERS;So;0;L;;;;;N;;;;; +1D902;SIGNWRITING HAND-FIST THUMB OVER FOUR RAISED KNUCKLES;So;0;L;;;;;N;;;;; +1D903;SIGNWRITING HAND-FIST;So;0;L;;;;;N;;;;; +1D904;SIGNWRITING HAND-FIST HEEL;So;0;L;;;;;N;;;;; +1D905;SIGNWRITING TOUCH SINGLE;So;0;L;;;;;N;;;;; +1D906;SIGNWRITING TOUCH MULTIPLE;So;0;L;;;;;N;;;;; +1D907;SIGNWRITING TOUCH BETWEEN;So;0;L;;;;;N;;;;; +1D908;SIGNWRITING GRASP SINGLE;So;0;L;;;;;N;;;;; +1D909;SIGNWRITING GRASP MULTIPLE;So;0;L;;;;;N;;;;; +1D90A;SIGNWRITING GRASP BETWEEN;So;0;L;;;;;N;;;;; +1D90B;SIGNWRITING STRIKE SINGLE;So;0;L;;;;;N;;;;; +1D90C;SIGNWRITING STRIKE MULTIPLE;So;0;L;;;;;N;;;;; +1D90D;SIGNWRITING STRIKE BETWEEN;So;0;L;;;;;N;;;;; +1D90E;SIGNWRITING BRUSH SINGLE;So;0;L;;;;;N;;;;; +1D90F;SIGNWRITING BRUSH MULTIPLE;So;0;L;;;;;N;;;;; +1D910;SIGNWRITING BRUSH BETWEEN;So;0;L;;;;;N;;;;; +1D911;SIGNWRITING RUB SINGLE;So;0;L;;;;;N;;;;; +1D912;SIGNWRITING RUB MULTIPLE;So;0;L;;;;;N;;;;; +1D913;SIGNWRITING RUB BETWEEN;So;0;L;;;;;N;;;;; +1D914;SIGNWRITING SURFACE SYMBOLS;So;0;L;;;;;N;;;;; +1D915;SIGNWRITING SURFACE BETWEEN;So;0;L;;;;;N;;;;; +1D916;SIGNWRITING SQUEEZE LARGE SINGLE;So;0;L;;;;;N;;;;; +1D917;SIGNWRITING SQUEEZE SMALL SINGLE;So;0;L;;;;;N;;;;; +1D918;SIGNWRITING SQUEEZE LARGE MULTIPLE;So;0;L;;;;;N;;;;; +1D919;SIGNWRITING SQUEEZE SMALL MULTIPLE;So;0;L;;;;;N;;;;; +1D91A;SIGNWRITING SQUEEZE SEQUENTIAL;So;0;L;;;;;N;;;;; +1D91B;SIGNWRITING FLICK LARGE SINGLE;So;0;L;;;;;N;;;;; +1D91C;SIGNWRITING FLICK SMALL SINGLE;So;0;L;;;;;N;;;;; +1D91D;SIGNWRITING FLICK LARGE MULTIPLE;So;0;L;;;;;N;;;;; +1D91E;SIGNWRITING FLICK SMALL MULTIPLE;So;0;L;;;;;N;;;;; +1D91F;SIGNWRITING FLICK SEQUENTIAL;So;0;L;;;;;N;;;;; +1D920;SIGNWRITING SQUEEZE FLICK ALTERNATING;So;0;L;;;;;N;;;;; +1D921;SIGNWRITING MOVEMENT-HINGE UP DOWN LARGE;So;0;L;;;;;N;;;;; +1D922;SIGNWRITING MOVEMENT-HINGE UP DOWN SMALL;So;0;L;;;;;N;;;;; +1D923;SIGNWRITING MOVEMENT-HINGE UP SEQUENTIAL;So;0;L;;;;;N;;;;; +1D924;SIGNWRITING MOVEMENT-HINGE DOWN SEQUENTIAL;So;0;L;;;;;N;;;;; +1D925;SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING LARGE;So;0;L;;;;;N;;;;; +1D926;SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING SMALL;So;0;L;;;;;N;;;;; +1D927;SIGNWRITING MOVEMENT-HINGE SIDE TO SIDE SCISSORS;So;0;L;;;;;N;;;;; +1D928;SIGNWRITING MOVEMENT-WALLPLANE FINGER CONTACT;So;0;L;;;;;N;;;;; +1D929;SIGNWRITING MOVEMENT-FLOORPLANE FINGER CONTACT;So;0;L;;;;;N;;;;; +1D92A;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT SMALL;So;0;L;;;;;N;;;;; +1D92B;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT MEDIUM;So;0;L;;;;;N;;;;; +1D92C;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGE;So;0;L;;;;;N;;;;; +1D92D;SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGEST;So;0;L;;;;;N;;;;; +1D92E;SIGNWRITING MOVEMENT-WALLPLANE SINGLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D92F;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE STRAIGHT;So;0;L;;;;;N;;;;; +1D930;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D931;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING;So;0;L;;;;;N;;;;; +1D932;SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;; +1D933;SIGNWRITING MOVEMENT-WALLPLANE CROSS;So;0;L;;;;;N;;;;; +1D934;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE STRAIGHT MOVEMENT;So;0;L;;;;;N;;;;; +1D935;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D936;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING;So;0;L;;;;;N;;;;; +1D937;SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;; +1D938;SIGNWRITING MOVEMENT-WALLPLANE BEND SMALL;So;0;L;;;;;N;;;;; +1D939;SIGNWRITING MOVEMENT-WALLPLANE BEND MEDIUM;So;0;L;;;;;N;;;;; +1D93A;SIGNWRITING MOVEMENT-WALLPLANE BEND LARGE;So;0;L;;;;;N;;;;; +1D93B;SIGNWRITING MOVEMENT-WALLPLANE CORNER SMALL;So;0;L;;;;;N;;;;; +1D93C;SIGNWRITING MOVEMENT-WALLPLANE CORNER MEDIUM;So;0;L;;;;;N;;;;; +1D93D;SIGNWRITING MOVEMENT-WALLPLANE CORNER LARGE;So;0;L;;;;;N;;;;; +1D93E;SIGNWRITING MOVEMENT-WALLPLANE CORNER ROTATION;So;0;L;;;;;N;;;;; +1D93F;SIGNWRITING MOVEMENT-WALLPLANE CHECK SMALL;So;0;L;;;;;N;;;;; +1D940;SIGNWRITING MOVEMENT-WALLPLANE CHECK MEDIUM;So;0;L;;;;;N;;;;; +1D941;SIGNWRITING MOVEMENT-WALLPLANE CHECK LARGE;So;0;L;;;;;N;;;;; +1D942;SIGNWRITING MOVEMENT-WALLPLANE BOX SMALL;So;0;L;;;;;N;;;;; +1D943;SIGNWRITING MOVEMENT-WALLPLANE BOX MEDIUM;So;0;L;;;;;N;;;;; +1D944;SIGNWRITING MOVEMENT-WALLPLANE BOX LARGE;So;0;L;;;;;N;;;;; +1D945;SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG SMALL;So;0;L;;;;;N;;;;; +1D946;SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG MEDIUM;So;0;L;;;;;N;;;;; +1D947;SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG LARGE;So;0;L;;;;;N;;;;; +1D948;SIGNWRITING MOVEMENT-WALLPLANE PEAKS SMALL;So;0;L;;;;;N;;;;; +1D949;SIGNWRITING MOVEMENT-WALLPLANE PEAKS MEDIUM;So;0;L;;;;;N;;;;; +1D94A;SIGNWRITING MOVEMENT-WALLPLANE PEAKS LARGE;So;0;L;;;;;N;;;;; +1D94B;SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE SINGLE;So;0;L;;;;;N;;;;; +1D94C;SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D94D;SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE ALTERNATING;So;0;L;;;;;N;;;;; +1D94E;SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE SINGLE;So;0;L;;;;;N;;;;; +1D94F;SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D950;SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE ALTERNATING;So;0;L;;;;;N;;;;; +1D951;SIGNWRITING TRAVEL-WALLPLANE SHAKING;So;0;L;;;;;N;;;;; +1D952;SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL SINGLE;So;0;L;;;;;N;;;;; +1D953;SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL DOUBLE;So;0;L;;;;;N;;;;; +1D954;SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL TRIPLE;So;0;L;;;;;N;;;;; +1D955;SIGNWRITING MOVEMENT-DIAGONAL AWAY SMALL;So;0;L;;;;;N;;;;; +1D956;SIGNWRITING MOVEMENT-DIAGONAL AWAY MEDIUM;So;0;L;;;;;N;;;;; +1D957;SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGE;So;0;L;;;;;N;;;;; +1D958;SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGEST;So;0;L;;;;;N;;;;; +1D959;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS SMALL;So;0;L;;;;;N;;;;; +1D95A;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS MEDIUM;So;0;L;;;;;N;;;;; +1D95B;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGE;So;0;L;;;;;N;;;;; +1D95C;SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGEST;So;0;L;;;;;N;;;;; +1D95D;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY SMALL;So;0;L;;;;;N;;;;; +1D95E;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY MEDIUM;So;0;L;;;;;N;;;;; +1D95F;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGE;So;0;L;;;;;N;;;;; +1D960;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGEST;So;0;L;;;;;N;;;;; +1D961;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS SMALL;So;0;L;;;;;N;;;;; +1D962;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS MEDIUM;So;0;L;;;;;N;;;;; +1D963;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGE;So;0;L;;;;;N;;;;; +1D964;SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGEST;So;0;L;;;;;N;;;;; +1D965;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT SMALL;So;0;L;;;;;N;;;;; +1D966;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT MEDIUM;So;0;L;;;;;N;;;;; +1D967;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGE;So;0;L;;;;;N;;;;; +1D968;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGEST;So;0;L;;;;;N;;;;; +1D969;SIGNWRITING MOVEMENT-FLOORPLANE SINGLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D96A;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE STRAIGHT;So;0;L;;;;;N;;;;; +1D96B;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D96C;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING;So;0;L;;;;;N;;;;; +1D96D;SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;; +1D96E;SIGNWRITING MOVEMENT-FLOORPLANE CROSS;So;0;L;;;;;N;;;;; +1D96F;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE STRAIGHT MOVEMENT;So;0;L;;;;;N;;;;; +1D970;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE WRIST FLEX;So;0;L;;;;;N;;;;; +1D971;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING MOVEMENT;So;0;L;;;;;N;;;;; +1D972;SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING WRIST FLEX;So;0;L;;;;;N;;;;; +1D973;SIGNWRITING MOVEMENT-FLOORPLANE BEND;So;0;L;;;;;N;;;;; +1D974;SIGNWRITING MOVEMENT-FLOORPLANE CORNER SMALL;So;0;L;;;;;N;;;;; +1D975;SIGNWRITING MOVEMENT-FLOORPLANE CORNER MEDIUM;So;0;L;;;;;N;;;;; +1D976;SIGNWRITING MOVEMENT-FLOORPLANE CORNER LARGE;So;0;L;;;;;N;;;;; +1D977;SIGNWRITING MOVEMENT-FLOORPLANE CHECK;So;0;L;;;;;N;;;;; +1D978;SIGNWRITING MOVEMENT-FLOORPLANE BOX SMALL;So;0;L;;;;;N;;;;; +1D979;SIGNWRITING MOVEMENT-FLOORPLANE BOX MEDIUM;So;0;L;;;;;N;;;;; +1D97A;SIGNWRITING MOVEMENT-FLOORPLANE BOX LARGE;So;0;L;;;;;N;;;;; +1D97B;SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG SMALL;So;0;L;;;;;N;;;;; +1D97C;SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG MEDIUM;So;0;L;;;;;N;;;;; +1D97D;SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG LARGE;So;0;L;;;;;N;;;;; +1D97E;SIGNWRITING MOVEMENT-FLOORPLANE PEAKS SMALL;So;0;L;;;;;N;;;;; +1D97F;SIGNWRITING MOVEMENT-FLOORPLANE PEAKS MEDIUM;So;0;L;;;;;N;;;;; +1D980;SIGNWRITING MOVEMENT-FLOORPLANE PEAKS LARGE;So;0;L;;;;;N;;;;; +1D981;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE SINGLE;So;0;L;;;;;N;;;;; +1D982;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D983;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE ALTERNATING;So;0;L;;;;;N;;;;; +1D984;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE SINGLE;So;0;L;;;;;N;;;;; +1D985;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D986;SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE ALTERNATING;So;0;L;;;;;N;;;;; +1D987;SIGNWRITING TRAVEL-FLOORPLANE SHAKING;So;0;L;;;;;N;;;;; +1D988;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER SMALL;So;0;L;;;;;N;;;;; +1D989;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER MEDIUM;So;0;L;;;;;N;;;;; +1D98A;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGE;So;0;L;;;;;N;;;;; +1D98B;SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGEST;So;0;L;;;;;N;;;;; +1D98C;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE SMALL;So;0;L;;;;;N;;;;; +1D98D;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE MEDIUM;So;0;L;;;;;N;;;;; +1D98E;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGE;So;0;L;;;;;N;;;;; +1D98F;SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGEST;So;0;L;;;;;N;;;;; +1D990;SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE SMALL;So;0;L;;;;;N;;;;; +1D991;SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE MEDIUM;So;0;L;;;;;N;;;;; +1D992;SIGNWRITING MOVEMENT-WALLPLANE HUMP SMALL;So;0;L;;;;;N;;;;; +1D993;SIGNWRITING MOVEMENT-WALLPLANE HUMP MEDIUM;So;0;L;;;;;N;;;;; +1D994;SIGNWRITING MOVEMENT-WALLPLANE HUMP LARGE;So;0;L;;;;;N;;;;; +1D995;SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL;So;0;L;;;;;N;;;;; +1D996;SIGNWRITING MOVEMENT-WALLPLANE LOOP MEDIUM;So;0;L;;;;;N;;;;; +1D997;SIGNWRITING MOVEMENT-WALLPLANE LOOP LARGE;So;0;L;;;;;N;;;;; +1D998;SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D999;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE SMALL;So;0;L;;;;;N;;;;; +1D99A;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE MEDIUM;So;0;L;;;;;N;;;;; +1D99B;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE LARGE;So;0;L;;;;;N;;;;; +1D99C;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE SMALL;So;0;L;;;;;N;;;;; +1D99D;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE MEDIUM;So;0;L;;;;;N;;;;; +1D99E;SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE LARGE;So;0;L;;;;;N;;;;; +1D99F;SIGNWRITING MOVEMENT-WALLPLANE CURVE THEN STRAIGHT;So;0;L;;;;;N;;;;; +1D9A0;SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS SMALL;So;0;L;;;;;N;;;;; +1D9A1;SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS MEDIUM;So;0;L;;;;;N;;;;; +1D9A2;SIGNWRITING ROTATION-WALLPLANE SINGLE;So;0;L;;;;;N;;;;; +1D9A3;SIGNWRITING ROTATION-WALLPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D9A4;SIGNWRITING ROTATION-WALLPLANE ALTERNATE;So;0;L;;;;;N;;;;; +1D9A5;SIGNWRITING MOVEMENT-WALLPLANE SHAKING;So;0;L;;;;;N;;;;; +1D9A6;SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9A7;SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9A8;SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9A9;SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9AA;SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9AB;SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9AC;SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING FRONT WALL;So;0;L;;;;;N;;;;; +1D9AD;SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING CHEST;So;0;L;;;;;N;;;;; +1D9AE;SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING CHEST;So;0;L;;;;;N;;;;; +1D9AF;SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING CHEST;So;0;L;;;;;N;;;;; +1D9B0;SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING CHEST;So;0;L;;;;;N;;;;; +1D9B1;SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING CHEST;So;0;L;;;;;N;;;;; +1D9B2;SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING CHEST;So;0;L;;;;;N;;;;; +1D9B3;SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING CHEST;So;0;L;;;;;N;;;;; +1D9B4;SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH SMALL;So;0;L;;;;;N;;;;; +1D9B5;SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH MEDIUM;So;0;L;;;;;N;;;;; +1D9B6;SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH LARGE;So;0;L;;;;;N;;;;; +1D9B7;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING SMALL;So;0;L;;;;;N;;;;; +1D9B8;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING LARGE;So;0;L;;;;;N;;;;; +1D9B9;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9BA;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE DOUBLE;So;0;L;;;;;N;;;;; +1D9BB;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL TRIPLE;So;0;L;;;;;N;;;;; +1D9BC;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE TRIPLE;So;0;L;;;;;N;;;;; +1D9BD;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL SINGLE;So;0;L;;;;;N;;;;; +1D9BE;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE SINGLE;So;0;L;;;;;N;;;;; +1D9BF;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9C0;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE DOUBLE;So;0;L;;;;;N;;;;; +1D9C1;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING SMALL;So;0;L;;;;;N;;;;; +1D9C2;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING LARGE;So;0;L;;;;;N;;;;; +1D9C3;SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING CEILING;So;0;L;;;;;N;;;;; +1D9C4;SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING CEILING;So;0;L;;;;;N;;;;; +1D9C5;SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING CEILING;So;0;L;;;;;N;;;;; +1D9C6;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR SMALL;So;0;L;;;;;N;;;;; +1D9C7;SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR LARGE;So;0;L;;;;;N;;;;; +1D9C8;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9C9;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR LARGE DOUBLE;So;0;L;;;;;N;;;;; +1D9CA;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE SMALL TRIPLE;So;0;L;;;;;N;;;;; +1D9CB;SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE LARGE TRIPLE;So;0;L;;;;;N;;;;; +1D9CC;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL SINGLE;So;0;L;;;;;N;;;;; +1D9CD;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE SINGLE;So;0;L;;;;;N;;;;; +1D9CE;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9CF;SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE DOUBLE;So;0;L;;;;;N;;;;; +1D9D0;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR SMALL;So;0;L;;;;;N;;;;; +1D9D1;SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR LARGE;So;0;L;;;;;N;;;;; +1D9D2;SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING FLOOR;So;0;L;;;;;N;;;;; +1D9D3;SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING FLOOR;So;0;L;;;;;N;;;;; +1D9D4;SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING FLOOR;So;0;L;;;;;N;;;;; +1D9D5;SIGNWRITING MOVEMENT-FLOORPLANE CURVE SMALL;So;0;L;;;;;N;;;;; +1D9D6;SIGNWRITING MOVEMENT-FLOORPLANE CURVE MEDIUM;So;0;L;;;;;N;;;;; +1D9D7;SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGE;So;0;L;;;;;N;;;;; +1D9D8;SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGEST;So;0;L;;;;;N;;;;; +1D9D9;SIGNWRITING MOVEMENT-FLOORPLANE CURVE COMBINED;So;0;L;;;;;N;;;;; +1D9DA;SIGNWRITING MOVEMENT-FLOORPLANE HUMP SMALL;So;0;L;;;;;N;;;;; +1D9DB;SIGNWRITING MOVEMENT-FLOORPLANE LOOP SMALL;So;0;L;;;;;N;;;;; +1D9DC;SIGNWRITING MOVEMENT-FLOORPLANE WAVE SNAKE;So;0;L;;;;;N;;;;; +1D9DD;SIGNWRITING MOVEMENT-FLOORPLANE WAVE SMALL;So;0;L;;;;;N;;;;; +1D9DE;SIGNWRITING MOVEMENT-FLOORPLANE WAVE LARGE;So;0;L;;;;;N;;;;; +1D9DF;SIGNWRITING ROTATION-FLOORPLANE SINGLE;So;0;L;;;;;N;;;;; +1D9E0;SIGNWRITING ROTATION-FLOORPLANE DOUBLE;So;0;L;;;;;N;;;;; +1D9E1;SIGNWRITING ROTATION-FLOORPLANE ALTERNATING;So;0;L;;;;;N;;;;; +1D9E2;SIGNWRITING MOVEMENT-FLOORPLANE SHAKING PARALLEL;So;0;L;;;;;N;;;;; +1D9E3;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL SINGLE;So;0;L;;;;;N;;;;; +1D9E4;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM SINGLE;So;0;L;;;;;N;;;;; +1D9E5;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9E6;SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM DOUBLE;So;0;L;;;;;N;;;;; +1D9E7;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL SINGLE;So;0;L;;;;;N;;;;; +1D9E8;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM SINGLE;So;0;L;;;;;N;;;;; +1D9E9;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE SINGLE;So;0;L;;;;;N;;;;; +1D9EA;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL DOUBLE;So;0;L;;;;;N;;;;; +1D9EB;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM DOUBLE;So;0;L;;;;;N;;;;; +1D9EC;SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE DOUBLE;So;0;L;;;;;N;;;;; +1D9ED;SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT SINGLE;So;0;L;;;;;N;;;;; +1D9EE;SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT DOUBLE;So;0;L;;;;;N;;;;; +1D9EF;SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL SINGLE;So;0;L;;;;;N;;;;; +1D9F0;SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL DOUBLE;So;0;L;;;;;N;;;;; +1D9F1;SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES SINGLE;So;0;L;;;;;N;;;;; +1D9F2;SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES DOUBLE;So;0;L;;;;;N;;;;; +1D9F3;SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL SINGLE;So;0;L;;;;;N;;;;; +1D9F4;SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL DOUBLE;So;0;L;;;;;N;;;;; +1D9F5;SIGNWRITING DYNAMIC ARROWHEAD SMALL;So;0;L;;;;;N;;;;; +1D9F6;SIGNWRITING DYNAMIC ARROWHEAD LARGE;So;0;L;;;;;N;;;;; +1D9F7;SIGNWRITING DYNAMIC FAST;So;0;L;;;;;N;;;;; +1D9F8;SIGNWRITING DYNAMIC SLOW;So;0;L;;;;;N;;;;; +1D9F9;SIGNWRITING DYNAMIC TENSE;So;0;L;;;;;N;;;;; +1D9FA;SIGNWRITING DYNAMIC RELAXED;So;0;L;;;;;N;;;;; +1D9FB;SIGNWRITING DYNAMIC SIMULTANEOUS;So;0;L;;;;;N;;;;; +1D9FC;SIGNWRITING DYNAMIC SIMULTANEOUS ALTERNATING;So;0;L;;;;;N;;;;; +1D9FD;SIGNWRITING DYNAMIC EVERY OTHER TIME;So;0;L;;;;;N;;;;; +1D9FE;SIGNWRITING DYNAMIC GRADUAL;So;0;L;;;;;N;;;;; +1D9FF;SIGNWRITING HEAD;So;0;L;;;;;N;;;;; +1DA00;SIGNWRITING HEAD RIM;Mn;0;NSM;;;;;N;;;;; +1DA01;SIGNWRITING HEAD MOVEMENT-WALLPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;; +1DA02;SIGNWRITING HEAD MOVEMENT-WALLPLANE TILT;Mn;0;NSM;;;;;N;;;;; +1DA03;SIGNWRITING HEAD MOVEMENT-FLOORPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;; +1DA04;SIGNWRITING HEAD MOVEMENT-WALLPLANE CURVE;Mn;0;NSM;;;;;N;;;;; +1DA05;SIGNWRITING HEAD MOVEMENT-FLOORPLANE CURVE;Mn;0;NSM;;;;;N;;;;; +1DA06;SIGNWRITING HEAD MOVEMENT CIRCLE;Mn;0;NSM;;;;;N;;;;; +1DA07;SIGNWRITING FACE DIRECTION POSITION NOSE FORWARD TILTING;Mn;0;NSM;;;;;N;;;;; +1DA08;SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN;Mn;0;NSM;;;;;N;;;;; +1DA09;SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN TILTING;Mn;0;NSM;;;;;N;;;;; +1DA0A;SIGNWRITING EYEBROWS STRAIGHT UP;Mn;0;NSM;;;;;N;;;;; +1DA0B;SIGNWRITING EYEBROWS STRAIGHT NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA0C;SIGNWRITING EYEBROWS STRAIGHT DOWN;Mn;0;NSM;;;;;N;;;;; +1DA0D;SIGNWRITING DREAMY EYEBROWS NEUTRAL DOWN;Mn;0;NSM;;;;;N;;;;; +1DA0E;SIGNWRITING DREAMY EYEBROWS DOWN NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA0F;SIGNWRITING DREAMY EYEBROWS UP NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA10;SIGNWRITING DREAMY EYEBROWS NEUTRAL UP;Mn;0;NSM;;;;;N;;;;; +1DA11;SIGNWRITING FOREHEAD NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA12;SIGNWRITING FOREHEAD CONTACT;Mn;0;NSM;;;;;N;;;;; +1DA13;SIGNWRITING FOREHEAD WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA14;SIGNWRITING EYES OPEN;Mn;0;NSM;;;;;N;;;;; +1DA15;SIGNWRITING EYES SQUEEZED;Mn;0;NSM;;;;;N;;;;; +1DA16;SIGNWRITING EYES CLOSED;Mn;0;NSM;;;;;N;;;;; +1DA17;SIGNWRITING EYE BLINK SINGLE;Mn;0;NSM;;;;;N;;;;; +1DA18;SIGNWRITING EYE BLINK MULTIPLE;Mn;0;NSM;;;;;N;;;;; +1DA19;SIGNWRITING EYES HALF OPEN;Mn;0;NSM;;;;;N;;;;; +1DA1A;SIGNWRITING EYES WIDE OPEN;Mn;0;NSM;;;;;N;;;;; +1DA1B;SIGNWRITING EYES HALF CLOSED;Mn;0;NSM;;;;;N;;;;; +1DA1C;SIGNWRITING EYES WIDENING MOVEMENT;Mn;0;NSM;;;;;N;;;;; +1DA1D;SIGNWRITING EYE WINK;Mn;0;NSM;;;;;N;;;;; +1DA1E;SIGNWRITING EYELASHES UP;Mn;0;NSM;;;;;N;;;;; +1DA1F;SIGNWRITING EYELASHES DOWN;Mn;0;NSM;;;;;N;;;;; +1DA20;SIGNWRITING EYELASHES FLUTTERING;Mn;0;NSM;;;;;N;;;;; +1DA21;SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;; +1DA22;SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT DOUBLE;Mn;0;NSM;;;;;N;;;;; +1DA23;SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT ALTERNATING;Mn;0;NSM;;;;;N;;;;; +1DA24;SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT;Mn;0;NSM;;;;;N;;;;; +1DA25;SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT DOUBLE;Mn;0;NSM;;;;;N;;;;; +1DA26;SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT ALTERNATING;Mn;0;NSM;;;;;N;;;;; +1DA27;SIGNWRITING EYEGAZE-WALLPLANE CURVED;Mn;0;NSM;;;;;N;;;;; +1DA28;SIGNWRITING EYEGAZE-FLOORPLANE CURVED;Mn;0;NSM;;;;;N;;;;; +1DA29;SIGNWRITING EYEGAZE-WALLPLANE CIRCLING;Mn;0;NSM;;;;;N;;;;; +1DA2A;SIGNWRITING CHEEKS PUFFED;Mn;0;NSM;;;;;N;;;;; +1DA2B;SIGNWRITING CHEEKS NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA2C;SIGNWRITING CHEEKS SUCKED;Mn;0;NSM;;;;;N;;;;; +1DA2D;SIGNWRITING TENSE CHEEKS HIGH;Mn;0;NSM;;;;;N;;;;; +1DA2E;SIGNWRITING TENSE CHEEKS MIDDLE;Mn;0;NSM;;;;;N;;;;; +1DA2F;SIGNWRITING TENSE CHEEKS LOW;Mn;0;NSM;;;;;N;;;;; +1DA30;SIGNWRITING EARS;Mn;0;NSM;;;;;N;;;;; +1DA31;SIGNWRITING NOSE NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA32;SIGNWRITING NOSE CONTACT;Mn;0;NSM;;;;;N;;;;; +1DA33;SIGNWRITING NOSE WRINKLES;Mn;0;NSM;;;;;N;;;;; +1DA34;SIGNWRITING NOSE WIGGLES;Mn;0;NSM;;;;;N;;;;; +1DA35;SIGNWRITING AIR BLOWING OUT;Mn;0;NSM;;;;;N;;;;; +1DA36;SIGNWRITING AIR SUCKING IN;Mn;0;NSM;;;;;N;;;;; +1DA37;SIGNWRITING AIR BLOW SMALL ROTATIONS;So;0;L;;;;;N;;;;; +1DA38;SIGNWRITING AIR SUCK SMALL ROTATIONS;So;0;L;;;;;N;;;;; +1DA39;SIGNWRITING BREATH INHALE;So;0;L;;;;;N;;;;; +1DA3A;SIGNWRITING BREATH EXHALE;So;0;L;;;;;N;;;;; +1DA3B;SIGNWRITING MOUTH CLOSED NEUTRAL;Mn;0;NSM;;;;;N;;;;; +1DA3C;SIGNWRITING MOUTH CLOSED FORWARD;Mn;0;NSM;;;;;N;;;;; +1DA3D;SIGNWRITING MOUTH CLOSED CONTACT;Mn;0;NSM;;;;;N;;;;; +1DA3E;SIGNWRITING MOUTH SMILE;Mn;0;NSM;;;;;N;;;;; +1DA3F;SIGNWRITING MOUTH SMILE WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA40;SIGNWRITING MOUTH SMILE OPEN;Mn;0;NSM;;;;;N;;;;; +1DA41;SIGNWRITING MOUTH FROWN;Mn;0;NSM;;;;;N;;;;; +1DA42;SIGNWRITING MOUTH FROWN WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA43;SIGNWRITING MOUTH FROWN OPEN;Mn;0;NSM;;;;;N;;;;; +1DA44;SIGNWRITING MOUTH OPEN CIRCLE;Mn;0;NSM;;;;;N;;;;; +1DA45;SIGNWRITING MOUTH OPEN FORWARD;Mn;0;NSM;;;;;N;;;;; +1DA46;SIGNWRITING MOUTH OPEN WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA47;SIGNWRITING MOUTH OPEN OVAL;Mn;0;NSM;;;;;N;;;;; +1DA48;SIGNWRITING MOUTH OPEN OVAL WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA49;SIGNWRITING MOUTH OPEN OVAL YAWN;Mn;0;NSM;;;;;N;;;;; +1DA4A;SIGNWRITING MOUTH OPEN RECTANGLE;Mn;0;NSM;;;;;N;;;;; +1DA4B;SIGNWRITING MOUTH OPEN RECTANGLE WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA4C;SIGNWRITING MOUTH OPEN RECTANGLE YAWN;Mn;0;NSM;;;;;N;;;;; +1DA4D;SIGNWRITING MOUTH KISS;Mn;0;NSM;;;;;N;;;;; +1DA4E;SIGNWRITING MOUTH KISS FORWARD;Mn;0;NSM;;;;;N;;;;; +1DA4F;SIGNWRITING MOUTH KISS WRINKLED;Mn;0;NSM;;;;;N;;;;; +1DA50;SIGNWRITING MOUTH TENSE;Mn;0;NSM;;;;;N;;;;; +1DA51;SIGNWRITING MOUTH TENSE FORWARD;Mn;0;NSM;;;;;N;;;;; +1DA52;SIGNWRITING MOUTH TENSE SUCKED;Mn;0;NSM;;;;;N;;;;; +1DA53;SIGNWRITING LIPS PRESSED TOGETHER;Mn;0;NSM;;;;;N;;;;; +1DA54;SIGNWRITING LIP LOWER OVER UPPER;Mn;0;NSM;;;;;N;;;;; +1DA55;SIGNWRITING LIP UPPER OVER LOWER;Mn;0;NSM;;;;;N;;;;; +1DA56;SIGNWRITING MOUTH CORNERS;Mn;0;NSM;;;;;N;;;;; +1DA57;SIGNWRITING MOUTH WRINKLES SINGLE;Mn;0;NSM;;;;;N;;;;; +1DA58;SIGNWRITING MOUTH WRINKLES DOUBLE;Mn;0;NSM;;;;;N;;;;; +1DA59;SIGNWRITING TONGUE STICKING OUT FAR;Mn;0;NSM;;;;;N;;;;; +1DA5A;SIGNWRITING TONGUE LICKING LIPS;Mn;0;NSM;;;;;N;;;;; +1DA5B;SIGNWRITING TONGUE TIP BETWEEN LIPS;Mn;0;NSM;;;;;N;;;;; +1DA5C;SIGNWRITING TONGUE TIP TOUCHING INSIDE MOUTH;Mn;0;NSM;;;;;N;;;;; +1DA5D;SIGNWRITING TONGUE INSIDE MOUTH RELAXED;Mn;0;NSM;;;;;N;;;;; +1DA5E;SIGNWRITING TONGUE MOVES AGAINST CHEEK;Mn;0;NSM;;;;;N;;;;; +1DA5F;SIGNWRITING TONGUE CENTRE STICKING OUT;Mn;0;NSM;;;;;N;;;;; +1DA60;SIGNWRITING TONGUE CENTRE INSIDE MOUTH;Mn;0;NSM;;;;;N;;;;; +1DA61;SIGNWRITING TEETH;Mn;0;NSM;;;;;N;;;;; +1DA62;SIGNWRITING TEETH MOVEMENT;Mn;0;NSM;;;;;N;;;;; +1DA63;SIGNWRITING TEETH ON TONGUE;Mn;0;NSM;;;;;N;;;;; +1DA64;SIGNWRITING TEETH ON TONGUE MOVEMENT;Mn;0;NSM;;;;;N;;;;; +1DA65;SIGNWRITING TEETH ON LIPS;Mn;0;NSM;;;;;N;;;;; +1DA66;SIGNWRITING TEETH ON LIPS MOVEMENT;Mn;0;NSM;;;;;N;;;;; +1DA67;SIGNWRITING TEETH BITE LIPS;Mn;0;NSM;;;;;N;;;;; +1DA68;SIGNWRITING MOVEMENT-WALLPLANE JAW;Mn;0;NSM;;;;;N;;;;; +1DA69;SIGNWRITING MOVEMENT-FLOORPLANE JAW;Mn;0;NSM;;;;;N;;;;; +1DA6A;SIGNWRITING NECK;Mn;0;NSM;;;;;N;;;;; +1DA6B;SIGNWRITING HAIR;Mn;0;NSM;;;;;N;;;;; +1DA6C;SIGNWRITING EXCITEMENT;Mn;0;NSM;;;;;N;;;;; +1DA6D;SIGNWRITING SHOULDER HIP SPINE;So;0;L;;;;;N;;;;; +1DA6E;SIGNWRITING SHOULDER HIP POSITIONS;So;0;L;;;;;N;;;;; +1DA6F;SIGNWRITING WALLPLANE SHOULDER HIP MOVE;So;0;L;;;;;N;;;;; +1DA70;SIGNWRITING FLOORPLANE SHOULDER HIP MOVE;So;0;L;;;;;N;;;;; +1DA71;SIGNWRITING SHOULDER TILTING FROM WAIST;So;0;L;;;;;N;;;;; +1DA72;SIGNWRITING TORSO-WALLPLANE STRAIGHT STRETCH;So;0;L;;;;;N;;;;; +1DA73;SIGNWRITING TORSO-WALLPLANE CURVED BEND;So;0;L;;;;;N;;;;; +1DA74;SIGNWRITING TORSO-FLOORPLANE TWISTING;So;0;L;;;;;N;;;;; +1DA75;SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS;Mn;0;NSM;;;;;N;;;;; +1DA76;SIGNWRITING LIMB COMBINATION;So;0;L;;;;;N;;;;; +1DA77;SIGNWRITING LIMB LENGTH-1;So;0;L;;;;;N;;;;; +1DA78;SIGNWRITING LIMB LENGTH-2;So;0;L;;;;;N;;;;; +1DA79;SIGNWRITING LIMB LENGTH-3;So;0;L;;;;;N;;;;; +1DA7A;SIGNWRITING LIMB LENGTH-4;So;0;L;;;;;N;;;;; +1DA7B;SIGNWRITING LIMB LENGTH-5;So;0;L;;;;;N;;;;; +1DA7C;SIGNWRITING LIMB LENGTH-6;So;0;L;;;;;N;;;;; +1DA7D;SIGNWRITING LIMB LENGTH-7;So;0;L;;;;;N;;;;; +1DA7E;SIGNWRITING FINGER;So;0;L;;;;;N;;;;; +1DA7F;SIGNWRITING LOCATION-WALLPLANE SPACE;So;0;L;;;;;N;;;;; +1DA80;SIGNWRITING LOCATION-FLOORPLANE SPACE;So;0;L;;;;;N;;;;; +1DA81;SIGNWRITING LOCATION HEIGHT;So;0;L;;;;;N;;;;; +1DA82;SIGNWRITING LOCATION WIDTH;So;0;L;;;;;N;;;;; +1DA83;SIGNWRITING LOCATION DEPTH;So;0;L;;;;;N;;;;; +1DA84;SIGNWRITING LOCATION HEAD NECK;Mn;0;NSM;;;;;N;;;;; +1DA85;SIGNWRITING LOCATION TORSO;So;0;L;;;;;N;;;;; +1DA86;SIGNWRITING LOCATION LIMBS DIGITS;So;0;L;;;;;N;;;;; +1DA87;SIGNWRITING COMMA;Po;0;L;;;;;N;;;;; +1DA88;SIGNWRITING FULL STOP;Po;0;L;;;;;N;;;;; +1DA89;SIGNWRITING SEMICOLON;Po;0;L;;;;;N;;;;; +1DA8A;SIGNWRITING COLON;Po;0;L;;;;;N;;;;; +1DA8B;SIGNWRITING PARENTHESIS;Po;0;L;;;;;N;;;;; +1DA9B;SIGNWRITING FILL MODIFIER-2;Mn;0;NSM;;;;;N;;;;; +1DA9C;SIGNWRITING FILL MODIFIER-3;Mn;0;NSM;;;;;N;;;;; +1DA9D;SIGNWRITING FILL MODIFIER-4;Mn;0;NSM;;;;;N;;;;; +1DA9E;SIGNWRITING FILL MODIFIER-5;Mn;0;NSM;;;;;N;;;;; +1DA9F;SIGNWRITING FILL MODIFIER-6;Mn;0;NSM;;;;;N;;;;; +1DAA1;SIGNWRITING ROTATION MODIFIER-2;Mn;0;NSM;;;;;N;;;;; +1DAA2;SIGNWRITING ROTATION MODIFIER-3;Mn;0;NSM;;;;;N;;;;; +1DAA3;SIGNWRITING ROTATION MODIFIER-4;Mn;0;NSM;;;;;N;;;;; +1DAA4;SIGNWRITING ROTATION MODIFIER-5;Mn;0;NSM;;;;;N;;;;; +1DAA5;SIGNWRITING ROTATION MODIFIER-6;Mn;0;NSM;;;;;N;;;;; +1DAA6;SIGNWRITING ROTATION MODIFIER-7;Mn;0;NSM;;;;;N;;;;; +1DAA7;SIGNWRITING ROTATION MODIFIER-8;Mn;0;NSM;;;;;N;;;;; +1DAA8;SIGNWRITING ROTATION MODIFIER-9;Mn;0;NSM;;;;;N;;;;; +1DAA9;SIGNWRITING ROTATION MODIFIER-10;Mn;0;NSM;;;;;N;;;;; +1DAAA;SIGNWRITING ROTATION MODIFIER-11;Mn;0;NSM;;;;;N;;;;; +1DAAB;SIGNWRITING ROTATION MODIFIER-12;Mn;0;NSM;;;;;N;;;;; +1DAAC;SIGNWRITING ROTATION MODIFIER-13;Mn;0;NSM;;;;;N;;;;; +1DAAD;SIGNWRITING ROTATION MODIFIER-14;Mn;0;NSM;;;;;N;;;;; +1DAAE;SIGNWRITING ROTATION MODIFIER-15;Mn;0;NSM;;;;;N;;;;; +1DAAF;SIGNWRITING ROTATION MODIFIER-16;Mn;0;NSM;;;;;N;;;;; 1E800;MENDE KIKAKUI SYLLABLE M001 KI;Lo;0;R;;;;;N;;;;; 1E801;MENDE KIKAKUI SYLLABLE M002 KA;Lo;0;R;;;;;N;;;;; 1E802;MENDE KIKAKUI SYLLABLE M003 KU;Lo;0;R;;;;;N;;;;; @@ -25108,6 +27011,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F32A;CLOUD WITH TORNADO;So;0;ON;;;;;N;;;;; 1F32B;FOG;So;0;ON;;;;;N;;;;; 1F32C;WIND BLOWING FACE;So;0;ON;;;;;N;;;;; +1F32D;HOT DOG;So;0;ON;;;;;N;;;;; +1F32E;TACO;So;0;ON;;;;;N;;;;; +1F32F;BURRITO;So;0;ON;;;;;N;;;;; 1F330;CHESTNUT;So;0;ON;;;;;N;;;;; 1F331;SEEDLING;So;0;ON;;;;;N;;;;; 1F332;EVERGREEN TREE;So;0;ON;;;;;N;;;;; @@ -25186,6 +27092,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F37B;CLINKING BEER MUGS;So;0;ON;;;;;N;;;;; 1F37C;BABY BOTTLE;So;0;ON;;;;;N;;;;; 1F37D;FORK AND KNIFE WITH PLATE;So;0;ON;;;;;N;;;;; +1F37E;BOTTLE WITH POPPING CORK;So;0;ON;;;;;N;;;;; +1F37F;POPCORN;So;0;ON;;;;;N;;;;; 1F380;RIBBON;So;0;ON;;;;;N;;;;; 1F381;WRAPPED PRESENT;So;0;ON;;;;;N;;;;; 1F382;BIRTHDAY CAKE;So;0;ON;;;;;N;;;;; @@ -25265,6 +27173,11 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F3CC;GOLFER;So;0;ON;;;;;N;;;;; 1F3CD;RACING MOTORCYCLE;So;0;ON;;;;;N;;;;; 1F3CE;RACING CAR;So;0;ON;;;;;N;;;;; +1F3CF;CRICKET BAT AND BALL;So;0;ON;;;;;N;;;;; +1F3D0;VOLLEYBALL;So;0;ON;;;;;N;;;;; +1F3D1;FIELD HOCKEY STICK AND BALL;So;0;ON;;;;;N;;;;; +1F3D2;ICE HOCKEY STICK AND PUCK;So;0;ON;;;;;N;;;;; +1F3D3;TABLE TENNIS PADDLE AND BALL;So;0;ON;;;;;N;;;;; 1F3D4;SNOW CAPPED MOUNTAIN;So;0;ON;;;;;N;;;;; 1F3D5;CAMPING;So;0;ON;;;;;N;;;;; 1F3D6;BEACH WITH UMBRELLA;So;0;ON;;;;;N;;;;; @@ -25301,6 +27214,14 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F3F5;ROSETTE;So;0;ON;;;;;N;;;;; 1F3F6;BLACK ROSETTE;So;0;ON;;;;;N;;;;; 1F3F7;LABEL;So;0;ON;;;;;N;;;;; +1F3F8;BADMINTON RACQUET AND SHUTTLECOCK;So;0;ON;;;;;N;;;;; +1F3F9;BOW AND ARROW;So;0;ON;;;;;N;;;;; +1F3FA;AMPHORA;So;0;ON;;;;;N;;;;; +1F3FB;EMOJI MODIFIER FITZPATRICK TYPE-1-2;Sk;0;ON;;;;;N;;;;; +1F3FC;EMOJI MODIFIER FITZPATRICK TYPE-3;Sk;0;ON;;;;;N;;;;; +1F3FD;EMOJI MODIFIER FITZPATRICK TYPE-4;Sk;0;ON;;;;;N;;;;; +1F3FE;EMOJI MODIFIER FITZPATRICK TYPE-5;Sk;0;ON;;;;;N;;;;; +1F3FF;EMOJI MODIFIER FITZPATRICK TYPE-6;Sk;0;ON;;;;;N;;;;; 1F400;RAT;So;0;ON;;;;;N;;;;; 1F401;MOUSE;So;0;ON;;;;;N;;;;; 1F402;OX;So;0;ON;;;;;N;;;;; @@ -25556,6 +27477,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F4FC;VIDEOCASSETTE;So;0;ON;;;;;N;;;;; 1F4FD;FILM PROJECTOR;So;0;ON;;;;;N;;;;; 1F4FE;PORTABLE STEREO;So;0;ON;;;;;N;;;;; +1F4FF;PRAYER BEADS;So;0;ON;;;;;N;;;;; 1F500;TWISTED RIGHTWARDS ARROWS;So;0;ON;;;;;N;;;;; 1F501;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;; 1F502;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY;So;0;ON;;;;;N;;;;; @@ -25631,6 +27553,11 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F548;CELTIC CROSS;So;0;ON;;;;;N;;;;; 1F549;OM SYMBOL;So;0;ON;;;;;N;;;;; 1F54A;DOVE OF PEACE;So;0;ON;;;;;N;;;;; +1F54B;KAABA;So;0;ON;;;;;N;;;;; +1F54C;MOSQUE;So;0;ON;;;;;N;;;;; +1F54D;SYNAGOGUE;So;0;ON;;;;;N;;;;; +1F54E;MENORAH WITH NINE BRANCHES;So;0;ON;;;;;N;;;;; +1F54F;BOWL OF HYGIEIA;So;0;ON;;;;;N;;;;; 1F550;CLOCK FACE ONE OCLOCK;So;0;ON;;;;;N;;;;; 1F551;CLOCK FACE TWO OCLOCK;So;0;ON;;;;;N;;;;; 1F552;CLOCK FACE THREE OCLOCK;So;0;ON;;;;;N;;;;; @@ -25872,6 +27799,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F640;WEARY CAT FACE;So;0;ON;;;;;N;;;;; 1F641;SLIGHTLY FROWNING FACE;So;0;ON;;;;;N;;;;; 1F642;SLIGHTLY SMILING FACE;So;0;ON;;;;;N;;;;; +1F643;UPSIDE-DOWN FACE;So;0;ON;;;;;N;;;;; +1F644;FACE WITH ROLLING EYES;So;0;ON;;;;;N;;;;; 1F645;FACE WITH NO GOOD GESTURE;So;0;ON;;;;;N;;;;; 1F646;FACE WITH OK GESTURE;So;0;ON;;;;;N;;;;; 1F647;PERSON BOWING DEEPLY;So;0;ON;;;;;N;;;;; @@ -26011,6 +27940,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F6CD;SHOPPING BAGS;So;0;ON;;;;;N;;;;; 1F6CE;BELLHOP BELL;So;0;ON;;;;;N;;;;; 1F6CF;BED;So;0;ON;;;;;N;;;;; +1F6D0;PLACE OF WORSHIP;So;0;ON;;;;;N;;;;; 1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;; 1F6E1;SHIELD;So;0;ON;;;;;N;;;;; 1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;; @@ -26377,12 +28307,29 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F8AB;RIGHTWARDS FRONT-TILTED SHADOWED WHITE ARROW;So;0;ON;;;;;N;;;;; 1F8AC;WHITE ARROW SHAFT WIDTH ONE;So;0;ON;;;;;N;;;;; 1F8AD;WHITE ARROW SHAFT WIDTH TWO THIRDS;So;0;ON;;;;;N;;;;; +1F910;ZIPPER-MOUTH FACE;So;0;ON;;;;;N;;;;; +1F911;MONEY-MOUTH FACE;So;0;ON;;;;;N;;;;; +1F912;FACE WITH THERMOMETER;So;0;ON;;;;;N;;;;; +1F913;NERD FACE;So;0;ON;;;;;N;;;;; +1F914;THINKING FACE;So;0;ON;;;;;N;;;;; +1F915;FACE WITH HEAD-BANDAGE;So;0;ON;;;;;N;;;;; +1F916;ROBOT FACE;So;0;ON;;;;;N;;;;; +1F917;HUGGING FACE;So;0;ON;;;;;N;;;;; +1F918;SIGN OF THE HORNS;So;0;ON;;;;;N;;;;; +1F980;CRAB;So;0;ON;;;;;N;;;;; +1F981;LION FACE;So;0;ON;;;;;N;;;;; +1F982;SCORPION;So;0;ON;;;;;N;;;;; +1F983;TURKEY;So;0;ON;;;;;N;;;;; +1F984;UNICORN FACE;So;0;ON;;;;;N;;;;; +1F9C0;CHEESE WEDGE;So;0;ON;;;;;N;;;;; 20000;;Lo;0;L;;;;;N;;;;; 2A6D6;;Lo;0;L;;;;;N;;;;; 2A700;;Lo;0;L;;;;;N;;;;; 2B734;;Lo;0;L;;;;;N;;;;; 2B740;;Lo;0;L;;;;;N;;;;; 2B81D;;Lo;0;L;;;;;N;;;;; +2B820;;Lo;0;L;;;;;N;;;;; +2CEA1;;Lo;0;L;;;;;N;;;;; 2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; 2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; 2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; diff --git a/util/unicode/data/WordBreakProperty.txt b/util/unicode/data/WordBreakProperty.txt index 6135aeabde..dc8e82020f 100644 --- a/util/unicode/data/WordBreakProperty.txt +++ b/util/unicode/data/WordBreakProperty.txt @@ -1,8 +1,8 @@ -# WordBreakProperty-7.0.0.txt -# Date: 2014-02-19, 15:51:39 GMT [MD] +# WordBreakProperty-8.0.0.txt +# Date: 2015-02-14, 10:26:15 GMT [MD] # # Unicode Character Database -# Copyright (c) 1991-2014 Unicode, Inc. +# Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see http://www.unicode.org/reports/tr44/ @@ -89,7 +89,7 @@ FB46..FB4F ; Hebrew_Letter # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW 0825..0827 ; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0829..082D ; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA 0859..085B ; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK -08E4..0902 ; Extend # Mn [31] ARABIC CURLY FATHA..DEVANAGARI SIGN ANUSVARA +08E3..0902 ; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA 0903 ; Extend # Mc DEVANAGARI SIGN VISARGA 093A ; Extend # Mn DEVANAGARI VOWEL SIGN OE 093B ; Extend # Mc DEVANAGARI VOWEL SIGN OOE @@ -252,8 +252,6 @@ FB46..FB4F ; Hebrew_Letter # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW 1932 ; Extend # Mn LIMBU SMALL LETTER ANUSVARA 1933..1938 ; Extend # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA 1939..193B ; Extend # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I -19B0..19C0 ; Extend # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY -19C8..19C9 ; Extend # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 1A17..1A18 ; Extend # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A19..1A1A ; Extend # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A1B ; Extend # Mn BUGINESE VOWEL SIGN AE @@ -327,7 +325,7 @@ FB46..FB4F ; Hebrew_Letter # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW A66F ; Extend # Mn COMBINING CYRILLIC VZMET A670..A672 ; Extend # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN A674..A67D ; Extend # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK -A69F ; Extend # Mn COMBINING CYRILLIC LETTER IOTIFIED E +A69E..A69F ; Extend # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A6F0..A6F1 ; Extend # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS A802 ; Extend # Mn SYLOTI NAGRI SIGN DVISVARA A806 ; Extend # Mn SYLOTI NAGRI SIGN HASANTA @@ -381,7 +379,7 @@ ABEC ; Extend # Mc MEETEI MAYEK LUM IYEK ABED ; Extend # Mn MEETEI MAYEK APUN IYEK FB1E ; Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA FE00..FE0F ; Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 -FE20..FE2D ; Extend # Mn [14] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON BELOW +FE20..FE2F ; Extend # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK 101FD ; Extend # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE 102E0 ; Extend # Mn COPTIC EPACT THOUSANDS MARK @@ -412,6 +410,7 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 111B3..111B5 ; Extend # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II 111B6..111BE ; Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111BF..111C0 ; Extend # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA +111CA..111CC ; Extend # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 1122C..1122E ; Extend # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II 1122F..11231 ; Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11232..11233 ; Extend # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU @@ -421,7 +420,7 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 112DF ; Extend # Mn KHUDAWADI SIGN ANUSVARA 112E0..112E2 ; Extend # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E3..112EA ; Extend # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA -11301 ; Extend # Mn GRANTHA SIGN CANDRABINDU +11300..11301 ; Extend # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302..11303 ; Extend # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 1133C ; Extend # Mn GRANTHA SIGN NUKTA 1133E..1133F ; Extend # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I @@ -447,6 +446,7 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 115BC..115BD ; Extend # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BE ; Extend # Mc SIDDHAM SIGN VISARGA 115BF..115C0 ; Extend # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA +115DC..115DD ; Extend # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11630..11632 ; Extend # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 11633..1163A ; Extend # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163B..1163C ; Extend # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU @@ -460,6 +460,11 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 116B0..116B5 ; Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B6 ; Extend # Mc TAKRI SIGN VIRAMA 116B7 ; Extend # Mn TAKRI SIGN NUKTA +1171D..1171F ; Extend # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA +11720..11721 ; Extend # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA +11722..11725 ; Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU +11726 ; Extend # Mc AHOM VOWEL SIGN E +11727..1172B ; Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER 16AF0..16AF4 ; Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B30..16B36 ; Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16F51..16F7E ; Extend # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG @@ -472,10 +477,16 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT 1D185..1D18B ; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D1AA..1D1AD ; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1D242..1D244 ; Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME +1DA00..1DA36 ; Extend # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN +1DA3B..1DA6C ; Extend # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT +1DA75 ; Extend # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS +1DA84 ; Extend # Mn SIGNWRITING LOCATION HEAD NECK +1DA9B..1DA9F ; Extend # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 +1DAA1..1DAAF ; Extend # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 1E8D0..1E8D6 ; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -# Total code points: 1834 +# Total code points: 1967 # ================================================ @@ -583,7 +594,7 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK 0824 ; ALetter # Lm SAMARITAN MODIFIER LETTER SHORT A 0828 ; ALetter # Lm SAMARITAN MODIFIER LETTER I 0840..0858 ; ALetter # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN -08A0..08B2 ; ALetter # Lo [19] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER ZAIN WITH INVERTED V ABOVE +08A0..08B4 ; ALetter # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW 0904..0939 ; ALetter # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA 093D ; ALetter # Lo DEVANAGARI SIGN AVAGRAHA 0950 ; ALetter # Lo DEVANAGARI OM @@ -620,6 +631,7 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK 0ABD ; ALetter # Lo GUJARATI SIGN AVAGRAHA 0AD0 ; ALetter # Lo GUJARATI OM 0AE0..0AE1 ; ALetter # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL +0AF9 ; ALetter # Lo GUJARATI LETTER ZHA 0B05..0B0C ; ALetter # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L 0B0F..0B10 ; ALetter # Lo [2] ORIYA LETTER E..ORIYA LETTER AI 0B13..0B28 ; ALetter # Lo [22] ORIYA LETTER O..ORIYA LETTER NA @@ -646,7 +658,7 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK 0C12..0C28 ; ALetter # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; ALetter # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA 0C3D ; ALetter # Lo TELUGU SIGN AVAGRAHA -0C58..0C59 ; ALetter # Lo [2] TELUGU LETTER TSA..TELUGU LETTER DZA +0C58..0C5A ; ALetter # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61 ; ALetter # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C85..0C8C ; ALetter # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; ALetter # Lo [3] KANNADA LETTER E..KANNADA LETTER AI @@ -662,7 +674,7 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK 0D12..0D3A ; ALetter # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3D ; ALetter # Lo MALAYALAM SIGN AVAGRAHA 0D4E ; ALetter # Lo MALAYALAM LETTER DOT REPH -0D60..0D61 ; ALetter # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL +0D5F..0D61 ; ALetter # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D7A..0D7F ; ALetter # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K 0D85..0D96 ; ALetter # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1 ; ALetter # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA @@ -695,7 +707,8 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK 1312..1315 ; ALetter # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE 1318..135A ; ALetter # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA 1380..138F ; ALetter # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE -13A0..13F4 ; ALetter # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV +13A0..13F5 ; ALetter # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV +13F8..13FD ; ALetter # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1401..166C ; ALetter # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA 166F..167F ; ALetter # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W 1681..169A ; ALetter # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH @@ -825,8 +838,9 @@ A770 ; ALetter # Lm MODIFIER LETTER US A771..A787 ; ALetter # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A788 ; ALetter # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A78B..A78E ; ALetter # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT +A78F ; ALetter # Lo LATIN LETTER SINOLOGICAL DOT A790..A7AD ; ALetter # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT -A7B0..A7B1 ; ALetter # L& [2] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER TURNED T +A7B0..A7B7 ; ALetter # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F7 ; ALetter # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; ALetter # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; ALetter # L& LATIN LETTER SMALL CAPITAL TURNED M @@ -838,6 +852,7 @@ A840..A873 ; ALetter # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABIN A882..A8B3 ; ALetter # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA A8F2..A8F7 ; ALetter # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8FB ; ALetter # Lo DEVANAGARI HEADSTROKE +A8FD ; ALetter # Lo DEVANAGARI JAIN OM A90A..A925 ; ALetter # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO A930..A946 ; ALetter # Lo [23] REJANG LETTER KA..REJANG LETTER A A960..A97C ; ALetter # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH @@ -856,7 +871,8 @@ AB20..AB26 ; ALetter # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CC AB28..AB2E ; ALetter # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO AB30..AB5A ; ALetter # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; ALetter # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK -AB64..AB65 ; ALetter # L& [2] LATIN SMALL LETTER INVERTED ALPHA..GREEK LETTER SMALL CAPITAL OMEGA +AB60..AB65 ; ALetter # L& [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA +AB70..ABBF ; ALetter # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA ABC0..ABE2 ; ALetter # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM AC00..D7A3 ; ALetter # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH D7B0..D7C6 ; ALetter # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E @@ -912,6 +928,8 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1083F..10855 ; ALetter # Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW 10860..10876 ; ALetter # Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW 10880..1089E ; ALetter # Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW +108E0..108F2 ; ALetter # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH +108F4..108F5 ; ALetter # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW 10900..10915 ; ALetter # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU 10920..10939 ; ALetter # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C 10980..109B7 ; ALetter # Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA @@ -929,6 +947,8 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 10B60..10B72 ; ALetter # Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW 10B80..10B91 ; ALetter # Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW 10C00..10C48 ; ALetter # Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH +10C80..10CB2 ; ALetter # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US +10CC0..10CF2 ; ALetter # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 11003..11037 ; ALetter # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA 11083..110AF ; ALetter # Lo [45] KAITHI LETTER A..KAITHI LETTER HA 110D0..110E8 ; ALetter # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE @@ -938,8 +958,14 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 11183..111B2 ; ALetter # Lo [48] SHARADA LETTER A..SHARADA LETTER HA 111C1..111C4 ; ALetter # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM 111DA ; ALetter # Lo SHARADA EKAM +111DC ; ALetter # Lo SHARADA HEADSTROKE 11200..11211 ; ALetter # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; ALetter # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA +11280..11286 ; ALetter # Lo [7] MULTANI LETTER A..MULTANI LETTER GA +11288 ; ALetter # Lo MULTANI LETTER GHA +1128A..1128D ; ALetter # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA +1128F..1129D ; ALetter # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA +1129F..112A8 ; ALetter # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA 112B0..112DE ; ALetter # Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA 11305..1130C ; ALetter # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; ALetter # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI @@ -948,20 +974,24 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 11332..11333 ; ALetter # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; ALetter # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA 1133D ; ALetter # Lo GRANTHA SIGN AVAGRAHA +11350 ; ALetter # Lo GRANTHA OM 1135D..11361 ; ALetter # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11480..114AF ; ALetter # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114C4..114C5 ; ALetter # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG 114C7 ; ALetter # Lo TIRHUTA OM 11580..115AE ; ALetter # Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA +115D8..115DB ; ALetter # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U 11600..1162F ; ALetter # Lo [48] MODI LETTER A..MODI LETTER LLA 11644 ; ALetter # Lo MODI SIGN HUVA 11680..116AA ; ALetter # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA 118A0..118DF ; ALetter # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 118FF ; ALetter # Lo WARANG CITI OM 11AC0..11AF8 ; ALetter # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL -12000..12398 ; ALetter # Lo [921] CUNEIFORM SIGN A..CUNEIFORM SIGN UM TIMES ME +12000..12399 ; ALetter # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; ALetter # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM +12480..12543 ; ALetter # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 13000..1342E ; ALetter # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +14400..14646 ; ALetter # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; ALetter # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; ALetter # Lo [31] MRO LETTER TA..MRO LETTER TEK 16AD0..16AED ; ALetter # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I @@ -1044,7 +1074,7 @@ FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1F150..1F169 ; ALetter # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; ALetter # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z -# Total code points: 26647 +# Total code points: 27697 # ================================================ @@ -1139,12 +1169,13 @@ ABF0..ABF9 ; Numeric # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT N 114D0..114D9 ; Numeric # Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE 11650..11659 ; Numeric # Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE 116C0..116C9 ; Numeric # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE +11730..11739 ; Numeric # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE 118E0..118E9 ; Numeric # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE 16A60..16A69 ; Numeric # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE 16B50..16B59 ; Numeric # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE 1D7CE..1D7FF ; Numeric # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE -# Total code points: 531 +# Total code points: 541 # ================================================ -- cgit v1.2.3 From 0e1f3aab11a4310595d8651c02ce5f9d60c93252 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 2 Nov 2015 08:28:14 +0400 Subject: Update Unicode data & algorithms up to v8.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Georgian lari currency symbol * A large collection of CJK unified ideographs * Emoji symbols and symbol modifiers * Letters to support the Ik language in Uganda, Kulango in the Côte d’Ivoire, and other languages of Africa * A set of lowercase Cherokee syllables, forming case pairs with the existing Cherokee characters * The Ahom script for support of the Tai Ahom language in India * Arabic letters to support Arwi—the Tamil language written in the Arabic script For more details, see http://www.unicode.org/versions/Unicode8.0.0/ [ChangeLog][QtCore] Unicode data updated to v.8.0 Change-Id: If255f95c9c45655b721369a116299da3cabbba0a Reviewed-by: Lars Knoll --- src/corelib/tools/qchar.cpp | 9 +++- src/corelib/tools/qchar.h | 11 +++- src/corelib/tools/qunicodetools.cpp | 61 +++++++++++++--------- src/gui/text/qharfbuzzng.cpp | 10 +++- .../fontconfig/qfontconfigdatabase.cpp | 8 ++- tests/auto/corelib/tools/qchar/tst_qchar.cpp | 4 ++ tests/manual/diaglib/textdump.cpp | 12 +++++ util/unicode/main.cpp | 17 ++++-- 8 files changed, 101 insertions(+), 31 deletions(-) diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index 5469eee14d..9d2d90fc0d 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -179,8 +179,9 @@ QT_BEGIN_NAMESPACE \value Unicode_6_2 Version 6.2 \value Unicode_6_3 Version 6.3 Since Qt 5.3 \value Unicode_7_0 Version 7.0 Since Qt 5.5 + \value Unicode_8_0 Version 8.0 Since Qt 5.6 \value Unicode_Unassigned The value is not assigned to any character - in version 6.3 of Unicode. + in version 8.0 of Unicode. \sa unicodeVersion(), currentUnicodeVersion() */ @@ -401,6 +402,12 @@ QT_BEGIN_NAMESPACE \value Script_Khudawadi \value Script_Tirhuta \value Script_WarangCiti + \value Script_Ahom + \value Script_AnatolianHieroglyphs + \value Script_Hatran + \value Script_Multani + \value Script_OldHungarian + \value Script_SignWriting \omitvalue ScriptCount diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h index fc1fc7bc16..9833380cc8 100644 --- a/src/corelib/tools/qchar.h +++ b/src/corelib/tools/qchar.h @@ -275,6 +275,14 @@ public: Script_Tirhuta, Script_WarangCiti, + // Unicode 8.0 additions + Script_Ahom, + Script_AnatolianHieroglyphs, + Script_Hatran, + Script_Multani, + Script_OldHungarian, + Script_SignWriting, + ScriptCount }; @@ -365,7 +373,8 @@ public: Unicode_6_1, Unicode_6_2, Unicode_6_3, - Unicode_7_0 + Unicode_7_0, + Unicode_8_0 }; // ****** WHEN ADDING FUNCTIONS, CONSIDER ADDING TO QCharRef TOO diff --git a/src/corelib/tools/qunicodetools.cpp b/src/corelib/tools/qunicodetools.cpp index 56576c69f1..0df6b01b13 100644 --- a/src/corelib/tools/qunicodetools.cpp +++ b/src/corelib/tools/qunicodetools.cpp @@ -49,7 +49,7 @@ namespace QUnicodeTools { // ----------------------------------------------------------------------------------------------------- // // The text boundaries determination algorithm. -// See http://www.unicode.org/reports/tr29/tr29-25.html +// See http://www.unicode.org/reports/tr29/tr29-27.html // // ----------------------------------------------------------------------------------------------------- @@ -244,8 +244,9 @@ namespace SB { enum State { Initial, + Lower, Upper, - UpATerm, + LUATerm, ATerm, ATermC, ACS, @@ -260,10 +261,11 @@ enum State { static const uchar breakTable[BAfter + 1][QUnicodeTables::SentenceBreak_Close + 1] = { // Other CR LF Sep Extend Sp Lower Upper OLetter Numeric ATerm SContinue STerm Close - { Initial, BAfterC, BAfter , BAfter , Initial, Initial, Initial, Upper , Initial, Initial, ATerm , Initial, STerm , Initial }, // Initial - { Initial, BAfterC, BAfter , BAfter , Upper , Initial, Initial, Upper , Initial, Initial, UpATerm, STerm , STerm , Initial }, // Upper + { Initial, BAfterC, BAfter , BAfter , Initial, Initial, Lower , Upper , Initial, Initial, ATerm , Initial, STerm , Initial }, // Initial + { Initial, BAfterC, BAfter , BAfter , Lower , Initial, Initial, Initial, Initial, Initial, LUATerm, Initial, STerm , Initial }, // Lower + { Initial, BAfterC, BAfter , BAfter , Upper , Initial, Initial, Upper , Initial, Initial, LUATerm, STerm , STerm , Initial }, // Upper - { Lookup , BAfterC, BAfter , BAfter , UpATerm, ACS , Initial, Upper , Break , Initial, ATerm , STerm , STerm , ATermC }, // UpATerm + { Lookup , BAfterC, BAfter , BAfter , LUATerm, ACS , Initial, Upper , Break , Initial, ATerm , STerm , STerm , ATermC }, // LUATerm { Lookup , BAfterC, BAfter , BAfter , ATerm , ACS , Initial, Break , Break , Initial, ATerm , STerm , STerm , ATermC }, // ATerm { Lookup , BAfterC, BAfter , BAfter , ATermC , ACS , Initial, Break , Break , Lookup , ATerm , STerm , STerm , ATermC }, // ATermC { Lookup , BAfterC, BAfter , BAfter , ACS , ACS , Initial, Break , Break , Lookup , ATerm , STerm , STerm , Lookup }, // ACS @@ -341,7 +343,7 @@ static void getSentenceBreaks(const ushort *string, quint32 len, QCharAttributes // ----------------------------------------------------------------------------------------------------- // // The line breaking algorithm. -// See http://www.unicode.org/reports/tr14/tr14-33.html +// See http://www.unicode.org/reports/tr14/tr14-35.html // // ----------------------------------------------------------------------------------------------------- @@ -408,26 +410,29 @@ inline Class toClass(QUnicodeTables::LineBreakClass lbc, QChar::Category categor /* In order to support the tailored implementation of LB25 properly the following changes were made in the pair table to allow breaks where the numeric expression doesn't match the template (i.e. [^NU](IS|SY)NU): - CL->PO from IB to DB - CP->PO from IB to DB - CL->PR from IB to DB - CP->PR from IB to DB - PO->OP from IB to DB - PR->OP from IB to DB - IS->NU from IB to DB - SY->NU from IB to DB + (CL)(PO) from IB to DB + (CP)(PO) from IB to DB + (CL)(PR) from IB to DB + (CP)(PR) from IB to DB + (PO)(OP) from IB to DB + (PR)(OP) from IB to DB + (IS)(NU) from IB to DB + (SY)(NU) from IB to DB */ -// The following line break classes are not treated by the pair table -// and must be resolved outside: -// AI, BK, CB, CJ, CR, LF, NL, SA, SG, SP, XX +/* In order to implementat LB21a properly a special rule HH has been introduced and + the following changes were made in the pair table to disallow breaks after Hebrew + Hyphen: + (HL)(HY|BA) from IB to CI + (HY|BA)(!CB) from DB to HH +*/ enum Action { ProhibitedBreak, PB = ProhibitedBreak, DirectBreak, DB = DirectBreak, IndirectBreak, IB = IndirectBreak, CombiningIndirectBreak, CI = CombiningIndirectBreak, - CombiningProhibitedBreak, CP = CombiningProhibitedBreak + CombiningProhibitedBreak, CP = CombiningProhibitedBreak, + ProhibitedBreakAfterHebrewPlusHyphen, HH = ProhibitedBreakAfterHebrewPlusHyphen }; static const uchar breakTable[QUnicodeTables::LineBreak_CB + 1][QUnicodeTables::LineBreak_CB + 1] = { @@ -438,18 +443,18 @@ static const uchar breakTable[QUnicodeTables::LineBreak_CB + 1][QUnicodeTables:: /* QU */ { PB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, IB }, /* GL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, IB }, /* NS */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, -/* EX */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, -/* SY */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, +/* EX */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, +/* SY */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, IB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* IS */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, IB, IB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* PR */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, IB, DB, IB, IB, DB, DB, PB, CI, PB, IB, IB, IB, IB, IB, DB, DB }, /* PO */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* NU */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* AL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, -/* HL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, +/* HL */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, IB, IB, IB, DB, IB, CI, CI, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* ID */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, IB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* IN */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, IB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, -/* HY */ { DB, PB, PB, IB, DB, IB, PB, PB, PB, DB, DB, IB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, -/* BA */ { DB, PB, PB, IB, DB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, +/* HY */ { HH, PB, PB, IB, HH, IB, PB, PB, PB, HH, HH, IB, HH, HH, HH, HH, IB, IB, HH, HH, PB, CI, PB, HH, HH, HH, HH, HH, HH, DB }, +/* BA */ { HH, PB, PB, IB, HH, IB, PB, PB, PB, HH, HH, HH, HH, HH, HH, HH, IB, IB, HH, HH, PB, CI, PB, HH, HH, HH, HH, HH, HH, DB }, /* BB */ { IB, PB, PB, IB, IB, IB, PB, PB, PB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, IB, PB, CI, PB, IB, IB, IB, IB, IB, IB, DB }, /* B2 */ { DB, PB, PB, IB, IB, IB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, IB, IB, DB, PB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB }, /* ZW */ { DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB }, @@ -464,6 +469,10 @@ static const uchar breakTable[QUnicodeTables::LineBreak_CB + 1][QUnicodeTables:: /* CB */ { DB, PB, PB, IB, IB, DB, PB, PB, PB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, DB, PB, CI, PB, DB, DB, DB, DB, DB, DB, DB } }; +// The following line break classes are not treated by the pair table +// and must be resolved outside: +// AI, BK, CB, CJ, CR, LF, NL, SA, SG, SP, XX + } // namespace LB static void getLineBreaks(const ushort *string, quint32 len, QCharAttributes *attributes) @@ -555,6 +564,10 @@ static void getLineBreaks(const ushort *string, quint32 len, QCharAttributes *at if (lcls != QUnicodeTables::LineBreak_SP) goto next_no_cls_update; break; + case LB::ProhibitedBreakAfterHebrewPlusHyphen: + if (lcls != QUnicodeTables::LineBreak_HL) + attributes[pos].lineBreak = true; + break; case LB::ProhibitedBreak: // nothing to do default: @@ -659,7 +672,7 @@ Q_CORE_EXPORT void initCharAttributes(const ushort *string, int length, // ---------------------------------------------------------------------------- // -// The Unicode script property. See http://www.unicode.org/reports/tr24/tr24-22.html +// The Unicode script property. See http://www.unicode.org/reports/tr24/tr24-24.html // // ---------------------------------------------------------------------------- diff --git a/src/gui/text/qharfbuzzng.cpp b/src/gui/text/qharfbuzzng.cpp index 102c62ea8a..b2edfc00a0 100644 --- a/src/gui/text/qharfbuzzng.cpp +++ b/src/gui/text/qharfbuzzng.cpp @@ -188,7 +188,15 @@ static const hb_script_t _qtscript_to_hbscript[] = { HB_SCRIPT_SIDDHAM, HB_SCRIPT_KHUDAWADI, HB_SCRIPT_TIRHUTA, - HB_SCRIPT_WARANG_CITI + HB_SCRIPT_WARANG_CITI, + + // Unicode 8.0 additions + HB_SCRIPT_AHOM, + HB_SCRIPT_ANATOLIAN_HIEROGLYPHS, + HB_SCRIPT_HATRAN, + HB_SCRIPT_MULTANI, + HB_SCRIPT_OLD_HUNGARIAN, + HB_SCRIPT_SIGNWRITING }; Q_STATIC_ASSERT(QChar::ScriptCount == sizeof(_qtscript_to_hbscript) / sizeof(_qtscript_to_hbscript[0])); diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index 022bc8bec2..0af9440b50 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -242,7 +242,13 @@ static const char *specialLanguages[] = { "sa", // Siddham "sd", // Khudawadi "mai", // Tirhuta - "hoc" // WarangCiti + "hoc", // WarangCiti + "", // Ahom + "", // AnatolianHieroglyphs + "", // Hatran + "", // Multani + "", // OldHungarian + "" // SignWriting }; Q_STATIC_ASSERT(sizeof(specialLanguages) / sizeof(const char *) == QChar::ScriptCount); diff --git a/tests/auto/corelib/tools/qchar/tst_qchar.cpp b/tests/auto/corelib/tools/qchar/tst_qchar.cpp index f80d6e6d93..22fbce9f8e 100644 --- a/tests/auto/corelib/tools/qchar/tst_qchar.cpp +++ b/tests/auto/corelib/tools/qchar/tst_qchar.cpp @@ -594,6 +594,10 @@ void tst_QChar::unicodeVersion() QVERIFY(QChar::unicodeVersion(0x20bd) == QChar::Unicode_7_0); QVERIFY(QChar::unicodeVersion(0x16b00) == QChar::Unicode_7_0); + QVERIFY(QChar(0x08b3).unicodeVersion() == QChar::Unicode_8_0); + QVERIFY(QChar::unicodeVersion(0x08b3) == QChar::Unicode_8_0); + QVERIFY(QChar::unicodeVersion(0x108e0) == QChar::Unicode_8_0); + QVERIFY(QChar(0x09ff).unicodeVersion() == QChar::Unicode_Unassigned); QVERIFY(QChar::unicodeVersion(0x09ff) == QChar::Unicode_Unassigned); QVERIFY(QChar::unicodeVersion(0x110000) == QChar::Unicode_Unassigned); diff --git a/tests/manual/diaglib/textdump.cpp b/tests/manual/diaglib/textdump.cpp index ed4d5021be..0f69166a43 100644 --- a/tests/manual/diaglib/textdump.cpp +++ b/tests/manual/diaglib/textdump.cpp @@ -248,6 +248,15 @@ static const EnumLookup scriptEnumLookup[] = {QChar::Script_Tirhuta, "Script_Tirhuta"}, {QChar::Script_WarangCiti, "Script_WarangCiti"}, #endif // Qt 5.5 + +#if QT_VERSION >= 0x050600 + {QChar::Script_Ahom, "Script_Ahom"}, + {QChar::Script_AnatolianHieroglyphs, "Script_AnatolianHieroglyphs"}, + {QChar::Script_Hatran, "Script_Hatran"}, + {QChar::Script_Multani, "Script_Multani"}, + {QChar::Script_OldHungarian, "Script_OldHungarian"}, + {QChar::Script_SignWriting, "Script_SignWriting"}, +#endif // Qt 5.5 }; #endif // Qt 5.1 @@ -364,6 +373,9 @@ static const EnumLookup unicodeVersionEnumLookup[] = #if QT_VERSION >= 0x050500 {QChar::Unicode_7_0, "Unicode_7_0"}, #endif // Qt 5.5 +#if QT_VERSION >= 0x050600 + {QChar::Unicode_8_0, "Unicode_8_0"}, +#endif // Qt 5.6 #endif // Qt 5 }; diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 2f6e28bd9f..ab37bffe87 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -43,8 +43,8 @@ #include #endif -#define DATA_VERSION_S "7.0" -#define DATA_VERSION_STR "QChar::Unicode_7_0" +#define DATA_VERSION_S "8.0" +#define DATA_VERSION_STR "QChar::Unicode_8_0" static QHash age_map; @@ -71,6 +71,7 @@ static void initAgeMap() { QChar::Unicode_6_2, "6.2" }, { QChar::Unicode_6_3, "6.3" }, { QChar::Unicode_7_0, "7.0" }, + { QChar::Unicode_8_0, "8.0" }, { QChar::Unicode_Unassigned, 0 } }; AgeMap *d = ageMap; @@ -719,6 +720,13 @@ static void initScriptMap() { QChar::Script_Khudawadi, "Khudawadi" }, { QChar::Script_Tirhuta, "Tirhuta" }, { QChar::Script_WarangCiti, "WarangCiti" }, + // 8.0 + { QChar::Script_Ahom, "Ahom" }, + { QChar::Script_AnatolianHieroglyphs, "AnatolianHieroglyphs" }, + { QChar::Script_Hatran, "Hatran" }, + { QChar::Script_Multani, "Multani" }, + { QChar::Script_OldHungarian, "OldHungarian" }, + { QChar::Script_SignWriting, "SignWriting" }, // unhandled { QChar::Script_Unknown, 0 } }; @@ -946,13 +954,16 @@ struct UnicodeData { p.lineBreakClass = LineBreak_AL; // XX -> AL // LineBreak.txt // The unassigned code points that default to "ID" include ranges in the following blocks: - // [U+3400..U+4DBF, U+4E00..U+9FFF, U+F900..U+FAFF, U+20000..U+2A6DF, U+2A700..U+2B73F, U+2B740..U+2B81F, U+2F800..U+2FA1F, U+20000..U+2FFFD, U+30000..U+3FFFD] + // [U+3400..U+4DBF, U+4E00..U+9FFF, U+F900..U+FAFF, U+20000..U+2A6DF, U+2A700..U+2B73F, U+2B740..U+2B81F, U+2B820..U+2CEAF, U+2F800..U+2FA1F] + // and any other reserved code points on + // [U+20000..U+2FFFD, U+30000..U+3FFFD] if ((codepoint >= 0x3400 && codepoint <= 0x4DBF) || (codepoint >= 0x4E00 && codepoint <= 0x9FFF) || (codepoint >= 0xF900 && codepoint <= 0xFAFF) || (codepoint >= 0x20000 && codepoint <= 0x2A6DF) || (codepoint >= 0x2A700 && codepoint <= 0x2B73F) || (codepoint >= 0x2B740 && codepoint <= 0x2B81F) + || (codepoint >= 0x2B820 && codepoint <= 0x2CEAF) || (codepoint >= 0x2F800 && codepoint <= 0x2FA1F) || (codepoint >= 0x20000 && codepoint <= 0x2FFFD) || (codepoint >= 0x30000 && codepoint <= 0x3FFFD)) { -- cgit v1.2.3 From 56c1755c3dd24f69bf14e26b0fe258aa5696fadb Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sun, 1 Nov 2015 08:15:48 +0400 Subject: Re-generate Unicode data tables Change-Id: I53fb254709764e56e9889531655fe6046f15b251 Reviewed-by: Lars Knoll --- src/corelib/tools/qunicodetables.cpp | 11002 ++++++++++++++++++--------------- src/corelib/tools/qunicodetables_p.h | 4 +- 2 files changed, 5891 insertions(+), 5115 deletions(-) diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp index 73dce81d4a..24a9eafcd5 100644 --- a/src/corelib/tools/qunicodetables.cpp +++ b/src/corelib/tools/qunicodetables.cpp @@ -31,7 +31,7 @@ ** ****************************************************************************/ -/* This file is autogenerated from the Unicode 7.0 database. Do not edit */ +/* This file is autogenerated from the Unicode 8.0 database. Do not edit */ #include "qunicodetables_p.h" @@ -62,803 +62,803 @@ static const unsigned short uc_property_trie[] = { 10256, 10288, 10320, 10352, 10384, 10416, 10448, 10480, 10512, 10512, 10544, 10576, 10608, 10640, 10672, 10704, 10736, 10768, 10800, 10768, 10832, 10864, 10896, 10928, - 10960, 10768, 10992, 11024, 11056, 11088, 11088, 11120, - 11152, 11184, 11184, 11184, 11184, 11184, 11184, 11184, - 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, - 11184, 11184, 11184, 11216, 11248, 11280, 11280, 11312, - 11344, 11376, 11408, 11440, 11472, 11504, 11536, 11568, - 11600, 11632, 11664, 11696, 11728, 11760, 11792, 11824, - 11856, 11888, 11920, 11952, 11984, 12016, 12048, 12080, - 12112, 12144, 12176, 12208, 12240, 12272, 9904, 9904, - 12304, 12336, 12368, 12400, 12432, 12464, 12496, 12528, - 12560, 12592, 12624, 12656, 9904, 9904, 12688, 12720, - 12752, 12784, 12816, 12848, 12880, 12912, 12944, 12976, - 13008, 13008, 13008, 13008, 13040, 13008, 13008, 13072, - 13104, 13136, 13168, 13200, 13232, 13264, 13296, 13328, - - 13360, 13392, 13424, 13456, 13488, 13520, 13552, 13584, - 13616, 13648, 13680, 13712, 13744, 13776, 13808, 13840, - 13872, 13904, 13936, 13968, 14000, 14032, 14064, 14096, - 14128, 14160, 14192, 14224, 14256, 14288, 14320, 14352, - 14384, 14416, 14448, 14480, 14512, 14544, 14576, 14608, - 14384, 14384, 14384, 14384, 14640, 14672, 14704, 14736, - 14768, 14800, 14384, 14832, 14864, 14896, 14928, 14960, - 14992, 15024, 15056, 15088, 15120, 15152, 15184, 15216, - 15248, 15248, 15248, 15248, 15248, 15248, 15248, 15248, - 15280, 15280, 15280, 15280, 15312, 15344, 15376, 15408, - 15440, 15472, 15280, 15504, 15536, 15568, 15600, 15632, - 15664, 15696, 15728, 15760, 15792, 15824, 15856, 9904, - 15888, 15920, 15952, 15984, 16016, 16016, 16016, 16048, - 16080, 16112, 16144, 16176, 16208, 16240, 16240, 16272, - 16304, 16336, 16368, 9904, 16400, 16432, 16432, 16464, - 16496, 16496, 16496, 16496, 16496, 16496, 16528, 16560, - - 16592, 16624, 16656, 16688, 16720, 16752, 16784, 16816, - 16848, 16880, 16912, 16912, 16944, 16976, 17008, 17040, - 17072, 17104, 17136, 17168, 17104, 17200, 17232, 17264, - 17296, 17296, 17328, 17360, 17392, 17392, 17424, 17456, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17488, 17488, 17488, - 17488, 17488, 17488, 17488, 17488, 17520, 17552, 17552, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17584, 17584, 17584, - 17584, 17584, 17584, 17584, 17584, 17616, 17648, 17680, - - 17712, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17744, 17744, 17744, 17744, - 17744, 17744, 17744, 17744, 17776, 17808, 17840, 17872, - 17904, 17904, 17904, 17904, 17904, 17904, 17904, 17904, - 17936, 17968, 18000, 18032, 18064, 18096, 18096, 18128, - 18160, 18192, 18224, 18256, 18288, 18320, 9904, 18352, - 18384, 18416, 18448, 18480, 18512, 18544, 18576, 18608, - 18640, 18672, 18704, 18736, 18768, 18800, 18832, 18864, - 18896, 18928, 18960, 18992, 19024, 19056, 19088, 19120, - 19152, 19184, 19216, 19248, 9904, 9904, 19280, 19312, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - - 19376, 19408, 19440, 19472, 19504, 19536, 19344, 19376, - 19408, 19440, 19472, 19504, 19536, 19344, 19376, 19408, - 19440, 19472, 19504, 19536, 19344, 19376, 19408, 19440, - 19472, 19504, 19536, 19344, 19376, 19408, 19440, 19472, - 19504, 19536, 19344, 19376, 19408, 19440, 19472, 19504, - 19536, 19344, 19376, 19408, 19440, 19472, 19504, 19536, - 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19344, - 19376, 19408, 19440, 19472, 19504, 19568, 19600, 19632, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - 19664, 19664, 19664, 19664, 19664, 19664, 19664, 19664, - - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19696, 19696, 19696, 19696, 19696, 19696, 19696, 19696, - 19728, 19728, 19728, 19728, 19728, 19728, 19728, 19728, - 19760, 19792, 19824, 19856, 19888, 19888, 19920, 17680, - 19952, 19984, 20016, 20048, 20048, 20080, 20112, 20048, - 20048, 20048, 20048, 20048, 20048, 20048, 20048, 20048, - 20048, 20144, 20176, 20048, 20208, 20048, 20240, 20272, - 20304, 20336, 20368, 20400, 20048, 20048, 20048, 20432, - 20464, 20496, 20528, 20560, 20592, 20624, 20656, 20688, - - 20720, 20752, 20784, 9904, 20816, 20816, 20816, 20848, - 20880, 20912, 20944, 20976, 21008, 21040, 21072, 21104, - 9904, 9904, 9904, 9904, 21136, 21168, 21200, 21232, - 21264, 21296, 21328, 21360, 21392, 21424, 21456, 9904, - 21488, 21520, 21552, 21584, 21616, 21648, 9904, 9904, - 21680, 21712, 21744, 21776, 9904, 9904, 9904, 9904, - 21808, 21808, 21808, 21808, 21808, 21808, 21808, 21808, + 10960, 10768, 10992, 11024, 11056, 11088, 11120, 11152, + 11184, 11216, 11216, 11216, 11216, 11216, 11216, 11216, + 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, + 11216, 11216, 11216, 11248, 11280, 11312, 11312, 11344, + 11376, 11408, 11440, 11472, 11504, 11536, 11568, 11600, + 11632, 11664, 11696, 11728, 11760, 11792, 11824, 11856, + 11888, 11920, 11952, 11984, 12016, 12048, 12080, 12112, + 12144, 12176, 12208, 12240, 12272, 12304, 9904, 9904, + 12336, 12368, 12400, 12432, 12464, 12496, 12528, 12560, + 12592, 12624, 12656, 12688, 9904, 9904, 12720, 12752, + 12784, 12816, 12848, 12880, 12912, 12944, 12976, 13008, + 13040, 13040, 13040, 13040, 13072, 13040, 13040, 13104, + 13136, 13168, 13200, 13232, 13264, 13296, 13328, 13360, + + 13392, 13424, 13456, 13488, 13520, 13552, 13584, 13616, + 13648, 13680, 13712, 13744, 13776, 13808, 13840, 13872, + 13904, 13936, 13968, 14000, 14032, 14064, 14096, 14128, + 14160, 14192, 14224, 14256, 14288, 14320, 14352, 14384, + 14416, 14448, 14480, 14512, 14544, 14576, 14608, 14640, + 14416, 14416, 14416, 14416, 14672, 14704, 14736, 14768, + 14800, 14832, 14416, 14864, 14896, 14928, 14960, 14992, + 15024, 15056, 15088, 15120, 15152, 15184, 15216, 15248, + 15280, 15280, 15280, 15280, 15280, 15280, 15280, 15280, + 15312, 15312, 15312, 15312, 15344, 15376, 15408, 15440, + 15472, 15504, 15312, 15536, 15568, 15600, 15632, 15664, + 15696, 15728, 15760, 15792, 15824, 15856, 15888, 15920, + 15952, 15984, 16016, 16048, 16080, 16080, 16080, 16112, + 16144, 16176, 16208, 16240, 16272, 16304, 16304, 16336, + 16368, 16400, 16432, 9904, 16464, 16496, 16496, 16528, + 16560, 16560, 16560, 16560, 16560, 16560, 16592, 16624, + + 16656, 16688, 16720, 16752, 16784, 16816, 16848, 16880, + 16912, 16944, 16976, 16976, 17008, 17040, 17072, 17104, + 17136, 17168, 17200, 17232, 17168, 17264, 17296, 17328, + 17360, 17360, 17392, 17424, 17456, 17456, 17488, 17520, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17552, 17552, 17552, + 17552, 17552, 17552, 17552, 17552, 17584, 17616, 17616, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17648, 17648, 17648, + 17648, 17648, 17648, 17648, 17648, 17680, 17712, 17744, + + 17776, 17808, 17808, 17808, 17808, 17808, 17808, 17808, + 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808, + 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808, + 17808, 17808, 17808, 17808, 17808, 17808, 17808, 17808, + 17808, 17808, 17808, 17808, 17840, 17872, 17904, 17936, + 17968, 17968, 17968, 17968, 17968, 17968, 17968, 17968, + 18000, 18032, 18064, 18096, 18128, 18160, 18160, 18192, + 18224, 18256, 18288, 18320, 18352, 18384, 9904, 18416, + 18448, 18480, 18512, 18544, 18576, 18608, 18640, 18672, + 18704, 18736, 18768, 18800, 18832, 18864, 18896, 18928, + 18960, 18992, 19024, 19056, 19088, 19120, 19152, 19184, + 19216, 19248, 19280, 19312, 19344, 19376, 19408, 19440, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + + 19504, 19536, 19568, 19600, 19632, 19664, 19472, 19504, + 19536, 19568, 19600, 19632, 19664, 19472, 19504, 19536, + 19568, 19600, 19632, 19664, 19472, 19504, 19536, 19568, + 19600, 19632, 19664, 19472, 19504, 19536, 19568, 19600, + 19632, 19664, 19472, 19504, 19536, 19568, 19600, 19632, + 19664, 19472, 19504, 19536, 19568, 19600, 19632, 19664, + 19472, 19504, 19536, 19568, 19600, 19632, 19664, 19472, + 19504, 19536, 19568, 19600, 19632, 19696, 19728, 19760, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + 19792, 19792, 19792, 19792, 19792, 19792, 19792, 19792, + + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19824, 19824, 19824, 19824, 19824, 19824, 19824, 19824, + 19856, 19856, 19856, 19856, 19856, 19856, 19856, 19856, + 19888, 19920, 19952, 19984, 20016, 20016, 20048, 17744, + 20080, 20112, 20144, 20176, 20176, 20208, 20240, 20176, + 20176, 20176, 20176, 20176, 20176, 20176, 20176, 20176, + 20176, 20272, 20304, 20176, 20336, 20176, 20368, 20400, + 20432, 20464, 20496, 20528, 20176, 20176, 20176, 20560, + 20592, 20624, 20656, 20688, 20720, 20752, 20784, 20816, + + 20848, 20880, 20912, 9904, 20944, 20944, 20944, 20976, + 21008, 21040, 21072, 21104, 21136, 21168, 21200, 21232, + 9904, 9904, 9904, 9904, 21264, 21296, 21328, 21360, + 21392, 21424, 21456, 21488, 21520, 21552, 21584, 9904, + 21616, 21648, 21680, 21712, 21744, 21776, 9904, 9904, 21808, 21840, 21872, 21904, 9904, 9904, 9904, 9904, - 21936, 21968, 22000, 22032, 22064, 22096, 8400, 8400, - 22128, 22160, 8400, 8400, 22192, 22224, 8400, 8400, - 22256, 22288, 22320, 22352, 22384, 8400, 22416, 22448, - 22480, 22512, 22544, 22576, 22608, 22640, 8400, 8400, - 22672, 22672, 22704, 8400, 8400, 8400, 8400, 8400, + 21936, 21936, 21936, 21936, 21936, 21936, 21936, 21936, + 21936, 21968, 22000, 22032, 9904, 9904, 9904, 9904, + 22064, 22096, 22128, 22160, 22192, 22224, 8400, 22256, + 22288, 22320, 8400, 8400, 22352, 22384, 22416, 22448, + 22480, 22512, 22544, 22576, 22608, 8400, 22640, 22672, + 22704, 22736, 22768, 22800, 22832, 22864, 8400, 8400, + 22896, 22896, 22928, 8400, 22960, 22992, 23024, 23056, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, - 8400, 8400, 8400, 22736, 8400, 8400, 8400, 8400, + 8400, 8400, 8400, 23088, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, // 0x11000 - 0x110000 - 22768, 23024, 23280, 23536, 23792, 24048, 24304, 24560, - 24816, 24560, 25072, 24560, 24560, 24560, 24560, 24560, - 25328, 25328, 25328, 25584, 25840, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 26096, 26096, 26352, 26608, 26864, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 27120, 27120, 27376, 27632, 24560, 24560, 24560, 27888, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 28144, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 28400, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 28656, 28912, 29168, 29424, 29680, 29936, 30192, 30448, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 30704, 30960, 30960, 30960, 30960, 30960, 31216, 30960, - 31472, 31728, 31984, 32240, 32496, 32752, 33008, 33264, - 33520, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34032, 34032, - 34032, 34032, 34032, 34032, 34032, 34032, 34288, 34544, - 34544, 34544, 34544, 34544, 34544, 34544, 34544, 34544, - 34544, 34544, 34544, 34544, 34544, 34544, 34544, 34800, - 35056, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35568, 35568, 35824, 35312, 35312, 35312, 35312, 36080, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 35312, - 35312, 35312, 35312, 35312, 35312, 35312, 35312, 36080, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 36336, 36592, 36848, 36848, 36848, 36848, 36848, 36848, - 36848, 36848, 36848, 36848, 36848, 36848, 36848, 36848, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 24560, - 24560, 24560, 24560, 24560, 24560, 24560, 24560, 33776, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37360, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37104, - 37104, 37104, 37104, 37104, 37104, 37104, 37104, 37360, + 23120, 23376, 23632, 23888, 24144, 24400, 24656, 24912, + 25168, 25424, 25680, 25424, 25424, 25424, 25424, 25424, + 25936, 25936, 25936, 26192, 26448, 26704, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 26960, 26960, 27216, 27472, 27728, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 27984, 28240, 28496, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 28752, 28752, 29008, 29264, 25424, 25424, 25424, 29520, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 29776, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 30032, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 30288, 30544, 30800, 31056, 31312, 31568, 31824, 32080, + 32336, 32336, 32592, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 32848, 33104, 33104, 33104, 33104, 33104, 33360, 33104, + 33616, 33872, 34128, 34384, 34640, 34896, 35152, 35408, + 35664, 35920, 25424, 25424, 25424, 25424, 25424, 36176, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36432, 36432, + 36432, 36432, 36432, 36432, 36432, 36432, 36688, 36944, + 36944, 36944, 36944, 36944, 36944, 36944, 36944, 36944, + 36944, 36944, 36944, 36944, 36944, 36944, 36944, 37200, + 37456, 37712, 37712, 37712, 37712, 37712, 37712, 37712, + 37712, 37712, 37712, 37712, 37712, 37712, 37712, 37712, + 37712, 37712, 37712, 37712, 37712, 37712, 37968, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38480, 38480, 38736, 38224, 38224, 38224, 38224, 38992, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38224, + 38224, 38224, 38224, 38224, 38224, 38224, 38224, 38992, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 39248, 39504, 39760, 39760, 39760, 39760, 39760, 39760, + 39760, 39760, 39760, 39760, 39760, 39760, 39760, 39760, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 25424, + 25424, 25424, 25424, 25424, 25424, 25424, 25424, 36176, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40272, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40016, + 40016, 40016, 40016, 40016, 40016, 40016, 40016, 40272, 0, 0, 0, 0, 0, 0, 0, 0, @@ -964,594 +964,569 @@ static const unsigned short uc_property_trie[] = { 149, 78, 78, 149, 78, 78, 78, 150, 149, 151, 152, 152, 153, 78, 78, 78, 78, 78, 154, 78, 100, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 155, 78, + 78, 78, 78, 78, 78, 155, 156, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 156, 156, 156, 156, 156, 114, 114, - 157, 157, 157, 157, 157, 157, 157, 157, - 157, 158, 158, 159, 159, 159, 159, 159, - - 160, 160, 42, 42, 42, 42, 158, 158, - 161, 158, 158, 158, 161, 158, 158, 158, - 159, 159, 42, 42, 42, 42, 42, 162, - 52, 52, 52, 52, 52, 52, 42, 163, - - 157, 157, 157, 157, 157, 42, 42, 42, - 42, 42, 164, 164, 165, 166, 167, 168, - 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, - - 169, 169, 169, 169, 169, 170, 169, 169, - 169, 169, 169, 169, 169, 170, 170, 169, - 170, 169, 170, 169, 169, 171, 172, 172, - 172, 172, 171, 173, 172, 172, 172, 172, - - 172, 174, 174, 175, 175, 175, 175, 176, - 176, 172, 172, 172, 172, 175, 175, 172, - 175, 175, 172, 172, 177, 177, 177, 177, - 178, 172, 172, 172, 172, 170, 170, 170, - - 179, 179, 169, 179, 179, 180, 181, 182, - 182, 182, 181, 181, 181, 182, 182, 183, - 184, 184, 184, 185, 185, 185, 185, 184, - 186, 187, 187, 188, 189, 190, 190, 191, - - 192, 192, 193, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, - 195, 196, 195, 196, 197, 198, 195, 196, - 199, 199, 200, 201, 201, 201, 202, 203, - - 199, 199, 199, 199, 204, 205, 206, 207, - 208, 208, 208, 199, 209, 199, 210, 210, - 211, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, - - 212, 212, 199, 212, 212, 212, 212, 212, - 212, 212, 213, 213, 214, 215, 215, 215, - 216, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, - - 217, 217, 218, 217, 217, 217, 217, 217, - 217, 217, 219, 219, 220, 221, 221, 222, - 223, 224, 225, 226, 226, 227, 228, 229, - 230, 231, 232, 233, 232, 233, 232, 233, - - 232, 233, 234, 235, 234, 235, 234, 235, - 234, 235, 234, 235, 234, 235, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 243, 244, 246, 247, 247, 247, - - 248, 249, 250, 249, 250, 250, 250, 249, - 250, 250, 250, 250, 249, 248, 249, 250, - 251, 251, 251, 251, 251, 251, 251, 251, - 251, 252, 251, 251, 251, 251, 251, 251, - - 251, 251, 251, 251, 251, 251, 251, 251, - 251, 251, 251, 251, 251, 251, 251, 251, - 253, 253, 253, 253, 253, 253, 253, 253, - 253, 254, 253, 253, 253, 253, 253, 253, - - 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, - 255, 256, 257, 256, 257, 257, 257, 256, - 257, 257, 257, 257, 256, 255, 256, 257, - - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 260, 261, - 258, 259, 258, 259, 258, 259, 258, 259, - - 258, 259, 262, 263, 263, 170, 170, 264, - 265, 265, 266, 267, 268, 269, 268, 269, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - 258, 259, 258, 259, 258, 259, 258, 259, - - 270, 260, 261, 258, 259, 266, 267, 258, - 259, 266, 267, 258, 259, 266, 267, 271, - 260, 261, 260, 261, 258, 259, 260, 261, - 258, 259, 260, 261, 260, 261, 260, 261, - - 258, 259, 260, 261, 260, 261, 260, 261, - 258, 259, 260, 261, 272, 273, 260, 261, - 260, 261, 260, 261, 260, 261, 274, 275, - 260, 261, 276, 277, 276, 277, 276, 277, - - 266, 267, 266, 267, 266, 267, 266, 267, - 266, 267, 266, 267, 266, 267, 266, 267, - 276, 277, 276, 277, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - - 278, 279, 278, 279, 280, 281, 282, 283, - 284, 285, 284, 285, 284, 285, 284, 285, - 199, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 199, - 199, 287, 288, 288, 288, 289, 288, 288, - - 199, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, - - 290, 290, 290, 290, 290, 290, 290, 291, - 199, 292, 293, 199, 199, 294, 294, 295, - 296, 297, 298, 298, 298, 298, 297, 298, - 298, 298, 299, 297, 298, 298, 298, 298, - - 298, 298, 300, 297, 297, 297, 297, 297, - 298, 298, 297, 298, 298, 299, 301, 298, - 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, - - 318, 319, 320, 318, 298, 300, 321, 322, - 296, 296, 296, 296, 296, 296, 296, 296, - 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, - - 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 296, 296, 296, 296, 296, - 323, 323, 323, 324, 325, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 326, 326, 326, 326, 327, 328, 329, 329, - 330, 331, 331, 332, 19, 333, 334, 334, - 335, 335, 335, 335, 335, 335, 336, 336, - 337, 338, 339, 340, 341, 342, 343, 344, - - 345, 346, 347, 347, 347, 347, 348, 349, - 350, 349, 350, 350, 350, 350, 350, 349, - 349, 349, 349, 350, 350, 350, 350, 350, + 78, 157, 157, 157, 157, 157, 114, 114, + 158, 158, 158, 158, 158, 158, 158, 158, + 158, 159, 159, 160, 160, 160, 160, 160, + + 161, 161, 42, 42, 42, 42, 159, 159, + 162, 159, 159, 159, 162, 159, 159, 159, + 160, 160, 42, 42, 42, 42, 42, 163, + 52, 52, 52, 52, 52, 52, 42, 164, + + 158, 158, 158, 158, 158, 42, 42, 42, + 42, 42, 165, 165, 166, 167, 168, 169, + 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 169, 169, 169, 169, 169, 169, + + 170, 170, 170, 170, 170, 171, 170, 170, + 170, 170, 170, 170, 170, 171, 171, 170, + 171, 170, 171, 170, 170, 172, 173, 173, + 173, 173, 172, 174, 173, 173, 173, 173, + + 173, 175, 175, 176, 176, 176, 176, 177, + 177, 173, 173, 173, 173, 176, 176, 173, + 176, 176, 173, 173, 178, 178, 178, 178, + 179, 173, 173, 173, 173, 171, 171, 171, + + 180, 180, 170, 180, 180, 181, 182, 183, + 183, 183, 182, 182, 182, 183, 183, 184, + 185, 185, 185, 186, 186, 186, 186, 185, + 187, 188, 188, 189, 190, 191, 191, 192, + + 193, 193, 194, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, + 196, 197, 196, 197, 198, 199, 196, 197, + 200, 200, 201, 202, 202, 202, 203, 204, + + 200, 200, 200, 200, 205, 206, 207, 208, + 209, 209, 209, 200, 210, 200, 211, 211, + 212, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, + + 213, 213, 200, 213, 213, 213, 213, 213, + 213, 213, 214, 214, 215, 216, 216, 216, + 217, 218, 218, 218, 218, 218, 218, 218, + 218, 218, 218, 218, 218, 218, 218, 218, + + 218, 218, 219, 218, 218, 218, 218, 218, + 218, 218, 220, 220, 221, 222, 222, 223, + 224, 225, 226, 227, 227, 228, 229, 230, + 231, 232, 233, 234, 233, 234, 233, 234, + + 233, 234, 235, 236, 235, 236, 235, 236, + 235, 236, 235, 236, 235, 236, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 244, 245, 247, 248, 248, 248, + + 249, 250, 251, 250, 251, 251, 251, 250, + 251, 251, 251, 251, 250, 249, 250, 251, + 252, 252, 252, 252, 252, 252, 252, 252, + 252, 253, 252, 252, 252, 252, 252, 252, + + 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, + 254, 254, 254, 254, 254, 254, 254, 254, + 254, 255, 254, 254, 254, 254, 254, 254, + + 254, 254, 254, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 254, 254, + 256, 257, 258, 257, 258, 258, 258, 257, + 258, 258, 258, 258, 257, 256, 257, 258, + + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 261, 262, + 259, 260, 259, 260, 259, 260, 259, 260, + + 259, 260, 263, 264, 264, 171, 171, 265, + 266, 266, 267, 268, 269, 270, 269, 270, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + 259, 260, 259, 260, 259, 260, 259, 260, + + 271, 261, 262, 259, 260, 267, 268, 259, + 260, 267, 268, 259, 260, 267, 268, 272, + 261, 262, 261, 262, 259, 260, 261, 262, + 259, 260, 261, 262, 261, 262, 261, 262, + + 259, 260, 261, 262, 261, 262, 261, 262, + 259, 260, 261, 262, 273, 274, 261, 262, + 261, 262, 261, 262, 261, 262, 275, 276, + 261, 262, 277, 278, 277, 278, 277, 278, + + 267, 268, 267, 268, 267, 268, 267, 268, + 267, 268, 267, 268, 267, 268, 267, 268, + 277, 278, 277, 278, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + + 279, 280, 279, 280, 281, 282, 283, 284, + 285, 286, 285, 286, 285, 286, 285, 286, + 200, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, + + 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 200, + 200, 288, 289, 289, 289, 290, 289, 289, + + 200, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, + + 291, 291, 291, 291, 291, 291, 291, 292, + 200, 293, 294, 200, 200, 295, 295, 296, + 297, 298, 299, 299, 299, 299, 298, 299, + 299, 299, 300, 298, 299, 299, 299, 299, + + 299, 299, 301, 298, 298, 298, 298, 298, + 299, 299, 298, 299, 299, 300, 302, 299, + 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, + + 319, 320, 321, 319, 299, 301, 322, 323, + 297, 297, 297, 297, 297, 297, 297, 297, + 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, + + 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 297, 297, 297, 297, 297, + 324, 324, 324, 325, 326, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 327, 327, 327, 327, 328, 329, 330, 330, + 331, 332, 332, 333, 19, 334, 335, 335, + 336, 336, 336, 336, 336, 336, 337, 337, + 338, 339, 340, 341, 342, 343, 344, 345, + + 346, 347, 348, 348, 348, 348, 349, 350, + 351, 350, 351, 351, 351, 351, 351, 350, 350, 350, 350, 351, 351, 351, 351, 351, + 351, 351, 351, 352, 352, 352, 352, 352, - 352, 350, 350, 350, 350, 350, 350, 350, - 349, 350, 350, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 361, 362, 363, 335, - 335, 364, 364, 364, 365, 364, 364, 366, + 353, 351, 351, 351, 351, 351, 351, 351, + 350, 351, 351, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 362, 363, 364, 336, + 336, 365, 365, 365, 366, 365, 365, 367, - 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 381, - 382, 349, 349, 349, 346, 383, 383, 383, - 384, 350, 350, 350, 350, 350, 350, 350, + 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 382, + 383, 350, 350, 350, 347, 384, 384, 384, + 385, 351, 351, 351, 351, 351, 351, 351, - 350, 350, 350, 350, 350, 350, 350, 350, - 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 350, 350, 350, 350, 350, 350, - - 350, 350, 350, 350, 350, 350, 350, 350, + 351, 351, 351, 351, 351, 351, 351, 351, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 385, 385, 350, 350, 350, 350, 350, 385, - - 347, 350, 348, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 350, 349, 350, 386, - 350, 350, 349, 347, 387, 349, 388, 388, - 388, 388, 388, 388, 388, 389, 390, 388, - - 388, 388, 388, 391, 388, 392, 392, 388, - 388, 390, 391, 388, 388, 391, 393, 393, - 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 385, 385, 385, 404, 404, 405, - - 406, 406, 406, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 342, 408, - 409, 410, 411, 411, 411, 409, 409, 409, - 409, 409, 411, 411, 411, 411, 409, 411, - - 411, 411, 411, 411, 411, 411, 411, 411, - 409, 411, 409, 411, 409, 412, 412, 413, - 414, 415, 414, 414, 415, 414, 414, 415, - 415, 415, 414, 415, 415, 414, 415, 414, - - 414, 414, 415, 414, 415, 414, 415, 414, - 415, 414, 414, 342, 342, 413, 412, 412, - 416, 416, 416, 416, 416, 416, 416, 416, - 416, 417, 417, 417, 416, 416, 416, 416, - - 416, 416, 416, 416, 416, 416, 416, 416, - 416, 416, 416, 417, 417, 416, 351, 351, - 351, 418, 351, 418, 418, 351, 351, 351, - 418, 418, 351, 351, 351, 351, 351, 351, - - 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, - - 419, 419, 419, 419, 419, 419, 420, 420, + 350, 350, 351, 351, 351, 351, 351, 351, + + 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, + 386, 386, 351, 351, 351, 351, 351, 386, + + 348, 351, 349, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 351, 350, 351, 387, + 351, 351, 350, 348, 388, 350, 389, 389, + 389, 389, 389, 389, 389, 390, 391, 389, + + 389, 389, 389, 392, 389, 393, 393, 389, + 389, 391, 392, 389, 389, 392, 394, 394, + 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 386, 386, 386, 405, 405, 406, + + 407, 407, 407, 408, 408, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 343, 409, + 410, 411, 412, 412, 412, 410, 410, 410, + 410, 410, 412, 412, 412, 412, 410, 412, + + 412, 412, 412, 412, 412, 412, 412, 412, + 410, 412, 410, 412, 410, 413, 413, 414, + 415, 416, 415, 415, 416, 415, 415, 416, + 416, 416, 415, 416, 416, 415, 416, 415, + + 415, 415, 416, 415, 416, 415, 416, 415, + 416, 415, 415, 343, 343, 414, 413, 413, + 417, 417, 417, 417, 417, 417, 417, 417, + 417, 418, 418, 418, 417, 417, 417, 417, + + 417, 417, 417, 417, 417, 417, 417, 417, + 417, 417, 417, 418, 418, 417, 352, 352, + 352, 419, 352, 419, 419, 352, 352, 352, + 419, 419, 352, 352, 352, 352, 352, 352, + + 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, - 420, 421, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 432, 432, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 432, 432, - - 432, 432, 432, 432, 432, 432, 432, 432, - 432, 432, 432, 433, 433, 433, 433, 433, - 433, 433, 434, 433, 435, 435, 436, 437, - 438, 439, 440, 296, 296, 296, 296, 296, - - 441, 441, 441, 441, 441, 441, 441, 441, - 441, 441, 441, 441, 441, 441, 441, 441, - 441, 441, 441, 441, 441, 441, 442, 442, - 442, 442, 443, 442, 442, 442, 442, 442, - - 442, 442, 442, 442, 443, 442, 442, 442, - 443, 442, 442, 442, 442, 442, 296, 296, - 444, 444, 444, 444, 444, 444, 444, 444, - 444, 444, 444, 444, 444, 444, 444, 296, - - 445, 446, 446, 446, 446, 446, 445, 446, - 446, 445, 446, 446, 446, 446, 446, 445, - 446, 446, 446, 446, 445, 446, 447, 447, - 447, 448, 448, 448, 296, 296, 449, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 450, 451, 450, 450, 450, 450, 450, 450, - 450, 450, 452, 452, 452, 453, 454, 451, - 451, 454, 454, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 342, 342, 342, 342, 455, 455, 456, 455, - 455, 456, 455, 455, 455, 456, 456, 456, - 457, 458, 459, 455, 455, 455, 456, 455, - 455, 456, 456, 455, 455, 455, 455, 460, - - 461, 462, 462, 463, 464, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 465, 465, - 465, 465, 465, 465, 465, 465, 465, 465, - - 465, 465, 465, 465, 465, 465, 465, 465, - 465, 466, 465, 465, 465, 465, 465, 465, - 465, 466, 465, 465, 466, 465, 465, 465, - 465, 465, 467, 468, 469, 465, 463, 463, - - 463, 462, 462, 462, 462, 462, 462, 462, - 462, 463, 463, 463, 463, 470, 471, 468, - 465, 170, 172, 472, 472, 461, 467, 467, - 473, 473, 473, 473, 473, 473, 473, 473, - - 465, 465, 462, 462, 474, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 488, 488, 488, 488, - 489, 490, 490, 491, 491, 492, 491, 491, - - 493, 494, 495, 495, 199, 496, 496, 496, - 496, 496, 496, 496, 496, 199, 199, 496, - 496, 199, 199, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 496, 496, - - 496, 496, 496, 496, 496, 496, 496, 496, - 496, 199, 496, 496, 496, 496, 496, 496, - 496, 199, 496, 199, 199, 199, 496, 496, - 496, 496, 199, 199, 497, 498, 499, 495, - - 495, 494, 494, 494, 494, 199, 199, 495, - 495, 199, 199, 500, 500, 501, 502, 199, - 199, 199, 199, 199, 199, 199, 199, 499, - 199, 199, 199, 199, 503, 503, 199, 503, - - 496, 496, 494, 494, 199, 199, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, - 496, 496, 514, 514, 515, 515, 515, 515, - 515, 516, 517, 518, 199, 199, 199, 199, - - 199, 519, 520, 521, 199, 522, 522, 522, - 522, 522, 522, 199, 199, 199, 199, 522, - 522, 199, 199, 522, 522, 522, 522, 522, - 522, 522, 522, 522, 522, 522, 522, 522, - - 522, 522, 522, 522, 522, 522, 522, 522, - 522, 199, 522, 522, 522, 522, 522, 522, - 522, 199, 522, 523, 199, 522, 523, 199, - 522, 522, 199, 199, 524, 199, 525, 525, - - 525, 520, 520, 199, 199, 199, 199, 520, - 520, 199, 199, 520, 520, 526, 199, 199, - 199, 527, 199, 199, 199, 199, 199, 199, - 199, 523, 523, 523, 522, 199, 523, 199, - - 199, 199, 199, 199, 199, 199, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, - 520, 520, 522, 522, 522, 527, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 538, 538, 539, 199, 540, 540, 540, - 540, 540, 540, 540, 541, 540, 199, 540, - 540, 540, 199, 540, 540, 540, 540, 540, - 540, 540, 540, 540, 540, 540, 540, 540, - - 540, 540, 540, 540, 540, 540, 540, 540, - 540, 199, 540, 540, 540, 540, 540, 540, - 540, 199, 540, 540, 199, 540, 540, 540, - 540, 540, 199, 199, 542, 540, 539, 539, - - 539, 538, 538, 538, 538, 538, 199, 538, - 538, 539, 199, 539, 539, 543, 199, 199, - 540, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 540, 541, 544, 544, 199, 199, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 557, 558, 558, 199, 559, 559, 559, - 559, 559, 559, 559, 559, 199, 199, 559, - 559, 199, 199, 559, 559, 559, 559, 559, - 559, 559, 559, 559, 559, 559, 559, 559, - - 559, 559, 559, 559, 559, 559, 559, 559, - 559, 199, 559, 559, 559, 559, 559, 559, - 559, 199, 559, 559, 199, 560, 559, 559, - 559, 559, 199, 199, 561, 559, 562, 557, - - 558, 557, 557, 557, 563, 199, 199, 558, - 564, 199, 199, 564, 564, 565, 199, 199, - 199, 199, 199, 199, 199, 199, 566, 562, - 199, 199, 199, 199, 567, 567, 199, 559, - - 559, 559, 563, 563, 199, 199, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, - 578, 560, 579, 579, 579, 579, 579, 579, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 580, 581, 199, 581, 581, 581, - 581, 581, 581, 199, 199, 199, 581, 581, - 581, 199, 581, 581, 582, 581, 199, 199, - 199, 581, 581, 199, 581, 199, 581, 581, - - 199, 199, 199, 581, 581, 199, 199, 199, - 581, 581, 581, 199, 199, 199, 581, 581, - 581, 581, 581, 581, 581, 581, 583, 581, - 581, 581, 199, 199, 199, 199, 584, 585, - - 580, 585, 585, 199, 199, 199, 585, 585, - 585, 199, 586, 586, 586, 587, 199, 199, - 588, 199, 199, 199, 199, 199, 199, 584, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 598, - 599, 599, 599, 600, 600, 600, 600, 600, - 600, 601, 600, 199, 199, 199, 199, 199, - - 602, 603, 603, 603, 199, 604, 604, 604, - 604, 604, 604, 604, 604, 199, 604, 604, - 604, 199, 604, 604, 604, 604, 604, 604, - 604, 604, 604, 604, 604, 604, 604, 604, - - 604, 604, 604, 604, 604, 604, 604, 604, - 604, 199, 604, 604, 604, 604, 604, 604, - 604, 604, 604, 604, 605, 604, 604, 604, - 604, 604, 199, 199, 199, 606, 607, 607, - - 607, 603, 603, 603, 603, 199, 607, 607, - 608, 199, 607, 607, 607, 609, 199, 199, - 199, 199, 199, 199, 199, 610, 611, 199, - 606, 606, 199, 199, 199, 199, 199, 199, - - 604, 604, 612, 612, 199, 199, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, - 199, 199, 199, 199, 199, 199, 199, 199, - 623, 623, 623, 623, 623, 623, 623, 624, - - 199, 625, 626, 626, 199, 627, 627, 627, - 627, 627, 627, 627, 627, 199, 627, 627, - 627, 199, 627, 627, 627, 627, 627, 627, - 627, 627, 627, 627, 627, 627, 627, 627, - - 627, 627, 627, 627, 627, 627, 627, 627, - 627, 199, 627, 627, 627, 627, 627, 627, - 627, 627, 627, 627, 199, 627, 627, 627, - 627, 627, 199, 199, 628, 629, 626, 630, - - 631, 626, 632, 626, 626, 199, 630, 631, - 631, 199, 631, 631, 633, 634, 199, 199, - 199, 199, 199, 199, 199, 632, 632, 199, - 199, 199, 199, 199, 199, 199, 627, 199, - - 627, 627, 635, 635, 199, 199, 636, 637, - 638, 639, 640, 641, 642, 643, 644, 645, - 199, 646, 646, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 647, 648, 648, 199, 649, 649, 649, - 649, 649, 649, 649, 649, 199, 649, 649, - 649, 199, 649, 649, 649, 649, 649, 649, - 649, 649, 649, 649, 649, 649, 649, 649, - - 649, 649, 649, 649, 649, 649, 649, 649, - 649, 650, 649, 649, 649, 649, 649, 649, - 649, 649, 649, 649, 649, 649, 649, 649, - 649, 649, 650, 199, 199, 651, 652, 648, - - 648, 653, 653, 653, 654, 199, 648, 648, - 648, 199, 655, 655, 655, 656, 650, 199, - 199, 199, 199, 199, 199, 199, 199, 652, - 199, 199, 199, 199, 199, 199, 199, 199, - - 649, 649, 654, 654, 199, 199, 657, 658, - 659, 660, 661, 662, 663, 664, 665, 666, - 667, 667, 667, 667, 667, 667, 199, 199, - 199, 668, 651, 651, 651, 651, 651, 651, - - 199, 199, 669, 669, 199, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 199, - 199, 199, 670, 670, 670, 670, 670, 670, - - 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 199, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 199, 670, 199, 199, - - 670, 670, 670, 670, 670, 670, 670, 199, - 199, 199, 671, 199, 199, 199, 199, 672, - 669, 669, 673, 673, 673, 199, 673, 199, - 669, 669, 674, 669, 674, 674, 674, 672, - - 199, 199, 199, 199, 199, 199, 675, 676, - 677, 678, 679, 680, 681, 682, 683, 684, - 199, 199, 669, 669, 685, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 686, 686, 686, 686, - 686, 687, 686, 688, 687, 687, 687, 687, - 689, 689, 690, 199, 199, 199, 199, 12, - - 686, 686, 686, 686, 686, 686, 691, 687, - 692, 692, 692, 692, 687, 687, 687, 693, - 694, 695, 696, 697, 698, 699, 700, 701, - 702, 703, 704, 704, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 705, 705, 199, 705, 199, 199, 705, - 705, 199, 705, 199, 199, 705, 199, 199, - 199, 199, 199, 199, 705, 705, 705, 705, - 199, 705, 705, 705, 705, 705, 705, 705, - - 199, 705, 705, 705, 199, 705, 199, 705, - 199, 199, 705, 705, 199, 705, 705, 705, - 705, 706, 705, 707, 706, 706, 706, 706, - 708, 708, 199, 706, 706, 705, 199, 199, - - 705, 705, 705, 705, 705, 199, 709, 199, - 710, 710, 710, 710, 706, 706, 199, 199, - 711, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 199, 199, 721, 721, 722, 722, - - 723, 724, 724, 724, 725, 726, 725, 725, - 727, 725, 725, 728, 729, 730, 730, 730, - 730, 730, 727, 731, 730, 731, 731, 731, - 732, 732, 731, 731, 731, 731, 731, 731, - - 733, 734, 735, 736, 737, 738, 739, 740, - 741, 742, 743, 743, 743, 743, 743, 743, - 743, 743, 743, 743, 744, 732, 731, 732, - 731, 745, 746, 747, 746, 747, 748, 748, - - 723, 723, 723, 749, 723, 723, 723, 723, - 199, 723, 723, 723, 723, 749, 723, 723, - 723, 723, 749, 723, 723, 723, 723, 749, - 723, 723, 723, 723, 749, 723, 723, 723, - - 723, 723, 723, 723, 723, 723, 723, 723, - 723, 749, 750, 751, 751, 199, 199, 199, - 199, 752, 753, 754, 755, 754, 754, 756, - 754, 756, 753, 753, 753, 753, 757, 758, - - 753, 754, 759, 759, 760, 728, 759, 759, - 723, 723, 723, 723, 761, 762, 762, 762, - 757, 757, 757, 754, 757, 757, 763, 757, - 199, 757, 757, 757, 757, 754, 757, 757, - - 757, 757, 754, 757, 757, 757, 757, 754, - 757, 757, 757, 757, 754, 757, 763, 763, - 763, 757, 757, 757, 757, 757, 757, 757, - 763, 754, 763, 763, 763, 199, 764, 764, - - 765, 765, 765, 765, 765, 765, 766, 765, - 765, 765, 765, 765, 765, 199, 767, 765, - 768, 768, 769, 770, 771, 772, 772, 772, - 772, 773, 773, 199, 199, 199, 199, 199, - - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - - 774, 774, 775, 774, 774, 774, 776, 774, - 775, 774, 774, 777, 778, 779, 780, 779, - 779, 781, 779, 782, 782, 782, 779, 783, - 778, 784, 785, 786, 786, 782, 782, 775, - - 787, 788, 789, 790, 791, 792, 793, 794, - 795, 796, 797, 797, 798, 798, 798, 798, - 774, 774, 774, 774, 774, 774, 781, 781, - 779, 779, 775, 775, 775, 775, 782, 782, - - 782, 775, 777, 777, 777, 775, 775, 777, - 777, 777, 777, 777, 777, 777, 775, 775, - 775, 782, 782, 782, 782, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, - - 775, 775, 782, 777, 786, 782, 782, 777, - 777, 777, 777, 777, 777, 799, 775, 777, - 800, 801, 802, 803, 804, 805, 806, 807, - 808, 809, 810, 810, 810, 811, 812, 812, - - 813, 813, 813, 813, 813, 813, 813, 813, - 813, 813, 813, 813, 813, 813, 813, 813, - 813, 813, 813, 813, 813, 813, 813, 813, - 813, 813, 813, 813, 813, 813, 813, 813, - - 813, 813, 813, 813, 813, 813, 199, 814, - 199, 199, 199, 199, 199, 814, 199, 199, - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 815, - - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, 816, - 816, 817, 817, 818, 819, 820, 820, 820, - 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 821, 821, 821, 821, 821, 821, + 420, 420, 420, 420, 420, 420, 421, 421, + 421, 421, 421, 421, 421, 421, 421, 421, + 421, 422, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 433, 433, 433, 433, 433, + + 433, 433, 433, 433, 433, 433, 433, 433, + 433, 433, 433, 434, 434, 434, 434, 434, + 434, 434, 435, 434, 436, 436, 437, 438, + 439, 440, 441, 297, 297, 297, 297, 297, + + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 442, 443, 443, + 443, 443, 444, 443, 443, 443, 443, 443, + + 443, 443, 443, 443, 444, 443, 443, 443, + 444, 443, 443, 443, 443, 443, 297, 297, + 445, 445, 445, 445, 445, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 297, + + 446, 447, 447, 447, 447, 447, 446, 446, + 447, 446, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 446, 447, 448, 448, + 448, 449, 449, 449, 297, 297, 450, 297, + + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 451, 452, 451, 451, 451, 451, 451, 451, + 451, 451, 453, 453, 453, 454, 455, 452, + 452, 455, 455, 456, 456, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 343, 343, 343, 457, 458, 458, 459, 458, + 458, 459, 458, 458, 458, 459, 459, 459, + 460, 461, 462, 458, 458, 458, 459, 458, + 458, 459, 459, 458, 458, 458, 458, 463, + + 464, 465, 465, 466, 467, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, + + 468, 468, 468, 468, 468, 468, 468, 468, + 468, 469, 468, 468, 468, 468, 468, 468, + 468, 469, 468, 468, 469, 468, 468, 468, + 468, 468, 470, 471, 472, 468, 466, 466, + + 466, 465, 465, 465, 465, 465, 465, 465, + 465, 466, 466, 466, 466, 473, 474, 471, + 468, 171, 173, 475, 475, 464, 470, 470, + 476, 476, 476, 476, 476, 476, 476, 476, + + 468, 468, 465, 465, 477, 477, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, + 488, 489, 490, 491, 491, 491, 491, 491, + 492, 493, 493, 494, 494, 495, 494, 494, + + 496, 497, 498, 498, 200, 499, 499, 499, + 499, 499, 499, 499, 499, 200, 200, 499, + 499, 200, 200, 499, 499, 499, 499, 499, + 499, 499, 499, 499, 499, 499, 499, 499, + + 499, 499, 499, 499, 499, 499, 499, 499, + 499, 200, 499, 499, 499, 499, 499, 499, + 499, 200, 499, 200, 200, 200, 499, 499, + 499, 499, 200, 200, 500, 501, 502, 498, + + 498, 497, 497, 497, 497, 200, 200, 498, + 498, 200, 200, 503, 503, 504, 505, 200, + 200, 200, 200, 200, 200, 200, 200, 502, + 200, 200, 200, 200, 506, 506, 200, 506, + + 499, 499, 497, 497, 200, 200, 507, 508, + 509, 510, 511, 512, 513, 514, 515, 516, + 499, 499, 517, 517, 518, 518, 518, 518, + 518, 519, 520, 521, 200, 200, 200, 200, + + 200, 522, 523, 524, 200, 525, 525, 525, + 525, 525, 525, 200, 200, 200, 200, 525, + 525, 200, 200, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, + + 525, 525, 525, 525, 525, 525, 525, 525, + 525, 200, 525, 525, 525, 525, 525, 525, + 525, 200, 525, 526, 200, 525, 526, 200, + 525, 525, 200, 200, 527, 200, 528, 528, + + 528, 523, 523, 200, 200, 200, 200, 523, + 523, 200, 200, 523, 523, 529, 200, 200, + 200, 530, 200, 200, 200, 200, 200, 200, + 200, 526, 526, 526, 525, 200, 526, 200, + + 200, 200, 200, 200, 200, 200, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, + 523, 523, 525, 525, 525, 530, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 541, 541, 542, 200, 543, 543, 543, + 543, 543, 543, 543, 544, 543, 200, 543, + 543, 543, 200, 543, 543, 543, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 543, + + 543, 543, 543, 543, 543, 543, 543, 543, + 543, 200, 543, 543, 543, 543, 543, 543, + 543, 200, 543, 543, 200, 543, 543, 543, + 543, 543, 200, 200, 545, 543, 542, 542, + + 542, 541, 541, 541, 541, 541, 200, 541, + 541, 542, 200, 542, 542, 546, 200, 200, + 543, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 543, 544, 547, 547, 200, 200, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, + 558, 559, 200, 200, 200, 200, 200, 200, + 200, 560, 200, 200, 200, 200, 200, 200, + + 200, 561, 562, 562, 200, 563, 563, 563, + 563, 563, 563, 563, 563, 200, 200, 563, + 563, 200, 200, 563, 563, 563, 563, 563, + 563, 563, 563, 563, 563, 563, 563, 563, + + 563, 563, 563, 563, 563, 563, 563, 563, + 563, 200, 563, 563, 563, 563, 563, 563, + 563, 200, 563, 563, 200, 564, 563, 563, + 563, 563, 200, 200, 565, 563, 566, 561, + + 562, 561, 561, 561, 567, 200, 200, 562, + 568, 200, 200, 568, 568, 569, 200, 200, + 200, 200, 200, 200, 200, 200, 570, 566, + 200, 200, 200, 200, 571, 571, 200, 563, + + 563, 563, 567, 567, 200, 200, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, + 582, 564, 583, 583, 583, 583, 583, 583, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 584, 585, 200, 585, 585, 585, + 585, 585, 585, 200, 200, 200, 585, 585, + 585, 200, 585, 585, 586, 585, 200, 200, + 200, 585, 585, 200, 585, 200, 585, 585, + + 200, 200, 200, 585, 585, 200, 200, 200, + 585, 585, 585, 200, 200, 200, 585, 585, + 585, 585, 585, 585, 585, 585, 587, 585, + 585, 585, 200, 200, 200, 200, 588, 589, + + 584, 589, 589, 200, 200, 200, 589, 589, + 589, 200, 590, 590, 590, 591, 200, 200, + 592, 200, 200, 200, 200, 200, 200, 588, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 602, + 603, 603, 603, 604, 604, 604, 604, 604, + 604, 605, 604, 200, 200, 200, 200, 200, + + 606, 607, 607, 607, 200, 608, 608, 608, + 608, 608, 608, 608, 608, 200, 608, 608, + 608, 200, 608, 608, 608, 608, 608, 608, + 608, 608, 608, 608, 608, 608, 608, 608, + + 608, 608, 608, 608, 608, 608, 608, 608, + 608, 200, 608, 608, 608, 608, 608, 608, + 608, 608, 608, 608, 609, 608, 608, 608, + 608, 608, 200, 200, 200, 610, 611, 611, + + 611, 607, 607, 607, 607, 200, 611, 611, + 612, 200, 611, 611, 611, 613, 200, 200, + 200, 200, 200, 200, 200, 614, 615, 200, + 610, 610, 616, 200, 200, 200, 200, 200, + + 608, 608, 617, 617, 200, 200, 618, 619, + 620, 621, 622, 623, 624, 625, 626, 627, + 200, 200, 200, 200, 200, 200, 200, 200, + 628, 628, 628, 628, 628, 628, 628, 629, + + 200, 630, 631, 631, 200, 632, 632, 632, + 632, 632, 632, 632, 632, 200, 632, 632, + 632, 200, 632, 632, 632, 632, 632, 632, + 632, 632, 632, 632, 632, 632, 632, 632, + + 632, 632, 632, 632, 632, 632, 632, 632, + 632, 200, 632, 632, 632, 632, 632, 632, + 632, 632, 632, 632, 200, 632, 632, 632, + 632, 632, 200, 200, 633, 634, 631, 635, + + 636, 631, 637, 631, 631, 200, 635, 636, + 636, 200, 636, 636, 638, 639, 200, 200, + 200, 200, 200, 200, 200, 637, 637, 200, + 200, 200, 200, 200, 200, 200, 632, 200, + + 632, 632, 640, 640, 200, 200, 641, 642, + 643, 644, 645, 646, 647, 648, 649, 650, + 200, 651, 651, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 652, 653, 653, 200, 654, 654, 654, + 654, 654, 654, 654, 654, 200, 654, 654, + 654, 200, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, + + 654, 654, 654, 654, 654, 654, 654, 654, + 654, 655, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 655, 200, 200, 656, 657, 653, + + 653, 658, 658, 658, 659, 200, 653, 653, + 653, 200, 660, 660, 660, 661, 655, 200, + 200, 200, 200, 200, 200, 200, 200, 657, + 200, 200, 200, 200, 200, 200, 200, 662, + + 654, 654, 659, 659, 200, 200, 663, 664, + 665, 666, 667, 668, 669, 670, 671, 672, + 673, 673, 673, 673, 673, 673, 200, 200, + 200, 674, 656, 656, 656, 656, 656, 656, + + 200, 200, 675, 675, 200, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 200, + 200, 200, 676, 676, 676, 676, 676, 676, + + 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 200, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 200, 676, 200, 200, + + 676, 676, 676, 676, 676, 676, 676, 200, + 200, 200, 677, 200, 200, 200, 200, 678, + 675, 675, 679, 679, 679, 200, 679, 200, + 675, 675, 680, 675, 680, 680, 680, 678, + + 200, 200, 200, 200, 200, 200, 681, 682, + 683, 684, 685, 686, 687, 688, 689, 690, + 200, 200, 675, 675, 691, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, + 692, 693, 692, 694, 693, 693, 693, 693, + 695, 695, 696, 200, 200, 200, 200, 12, + + 692, 692, 692, 692, 692, 692, 697, 693, + 698, 698, 698, 698, 693, 693, 693, 699, + 700, 701, 702, 703, 704, 705, 706, 707, + 708, 709, 710, 710, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 711, 711, 200, 711, 200, 200, 711, + 711, 200, 711, 200, 200, 711, 200, 200, + 200, 200, 200, 200, 711, 711, 711, 711, + 200, 711, 711, 711, 711, 711, 711, 711, + + 200, 711, 711, 711, 200, 711, 200, 711, + 200, 200, 711, 711, 200, 711, 711, 711, + 711, 712, 711, 713, 712, 712, 712, 712, + 714, 714, 200, 712, 712, 711, 200, 200, + + 711, 711, 711, 711, 711, 200, 715, 200, + 716, 716, 716, 716, 712, 712, 200, 200, + 717, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 200, 200, 727, 727, 728, 728, + + 729, 730, 730, 730, 731, 732, 731, 731, + 733, 731, 731, 734, 735, 736, 736, 736, + 736, 736, 733, 737, 736, 737, 737, 737, + 738, 738, 737, 737, 737, 737, 737, 737, + + 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 749, 749, 749, 749, 749, + 749, 749, 749, 749, 750, 738, 737, 738, + 737, 751, 752, 753, 752, 753, 754, 754, + + 729, 729, 729, 755, 729, 729, 729, 729, + 200, 729, 729, 729, 729, 755, 729, 729, + 729, 729, 755, 729, 729, 729, 729, 755, + 729, 729, 729, 729, 755, 729, 729, 729, + + 729, 729, 729, 729, 729, 729, 729, 729, + 729, 755, 756, 757, 757, 200, 200, 200, + 200, 758, 759, 760, 761, 760, 760, 762, + 760, 762, 759, 759, 759, 759, 763, 764, + + 759, 760, 765, 765, 766, 734, 765, 765, + 729, 729, 729, 729, 767, 768, 768, 768, + 763, 763, 763, 760, 763, 763, 769, 763, + 200, 763, 763, 763, 763, 760, 763, 763, + + 763, 763, 760, 763, 763, 763, 763, 760, + 763, 763, 763, 763, 760, 763, 769, 769, + 769, 763, 763, 763, 763, 763, 763, 763, + 769, 760, 769, 769, 769, 200, 770, 770, + + 771, 771, 771, 771, 771, 771, 772, 771, + 771, 771, 771, 771, 771, 200, 773, 771, + 774, 774, 775, 776, 777, 778, 778, 778, + 778, 779, 779, 200, 200, 200, 200, 200, + + 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, + + 780, 780, 781, 780, 780, 780, 782, 780, + 781, 780, 780, 783, 784, 785, 786, 785, + 785, 787, 785, 788, 788, 788, 785, 789, + 784, 790, 791, 792, 792, 788, 788, 781, + + 793, 794, 795, 796, 797, 798, 799, 800, + 801, 802, 803, 803, 804, 804, 804, 804, + 780, 780, 780, 780, 780, 780, 787, 787, + 785, 785, 781, 781, 781, 781, 788, 788, + + 788, 781, 783, 783, 783, 781, 781, 783, + 783, 783, 783, 783, 783, 783, 781, 781, + 781, 788, 788, 788, 788, 781, 781, 781, + 781, 781, 781, 781, 781, 781, 781, 781, + + 781, 781, 788, 783, 792, 788, 788, 783, + 783, 783, 783, 783, 783, 805, 781, 783, + 806, 807, 808, 809, 810, 811, 812, 813, + 814, 815, 816, 816, 816, 817, 818, 818, + + 819, 819, 819, 819, 819, 819, 819, 819, + 819, 819, 819, 819, 819, 819, 819, 819, + 819, 819, 819, 819, 819, 819, 819, 819, + 819, 819, 819, 819, 819, 819, 819, 819, + + 819, 819, 819, 819, 819, 819, 200, 820, + 200, 200, 200, 200, 200, 820, 200, 200, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 822, 822, 822, 822, 822, 821, - - 823, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, + 821, 821, 821, 821, 821, 821, 821, 822, + 822, 823, 823, 824, 825, 826, 826, 826, - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 823, - - 823, 823, 823, 825, 825, 825, 825, 825, - 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 826, 826, 826, 826, 826, 826, - - 826, 826, 826, 827, 827, 827, 827, 827, + 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, @@ -1559,202 +1534,202 @@ static const unsigned short uc_property_trie[] = { 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, 827, - 827, 827, 828, 828, 828, 828, 828, 828, - - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, + 827, 827, 828, 828, 828, 828, 828, 827, + 829, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 199, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 199, - - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 199, 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, + 829, 829, 829, 831, 831, 831, 831, 831, + 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, + 832, 832, 832, 832, 832, 832, 832, 832, + + 832, 832, 832, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 834, 834, 834, 834, 834, 834, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 200, + 835, 200, 835, 835, 835, 835, 200, 200, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 200, + + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 200, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 200, 835, 835, 835, 835, 200, 200, + 835, 835, 835, 835, 835, 835, 835, 836, + + 835, 835, 835, 835, 835, 835, 835, 836, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 200, 200, 837, 837, 838, + + 839, 840, 841, 842, 842, 842, 842, 841, + 841, 843, 844, 845, 846, 847, 848, 849, + 850, 851, 852, 852, 852, 852, 852, 852, + 852, 852, 852, 852, 852, 200, 200, 200, + + 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, + 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 200, 200, 200, 200, 200, 200, + + 854, 855, 856, 857, 858, 859, 860, 861, + 862, 863, 864, 865, 866, 867, 868, 869, + 870, 871, 872, 873, 874, 875, 876, 877, + 878, 879, 880, 881, 882, 883, 884, 885, + + 886, 887, 888, 889, 890, 891, 892, 893, + 894, 895, 896, 897, 898, 899, 900, 901, + 902, 903, 904, 905, 906, 907, 908, 909, + 910, 911, 912, 913, 914, 915, 916, 917, + + 918, 919, 920, 921, 922, 923, 924, 925, + 926, 927, 928, 929, 930, 931, 932, 933, + 934, 934, 934, 934, 934, 935, 200, 200, + 936, 936, 936, 936, 936, 936, 200, 200, + + 937, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 938, 938, 938, + + 938, 938, 938, 938, 938, 938, 938, 938, + 938, 938, 938, 938, 938, 939, 940, 938, + 938, 938, 938, 938, 938, 938, 938, 941, + 941, 941, 941, 941, 941, 941, 941, 941, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 199, 829, 829, 829, 829, 199, 199, - 829, 829, 829, 829, 829, 829, 829, 830, + 942, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 943, 943, 943, 943, 943, + 943, 943, 943, 944, 945, 200, 200, 200, - 829, 829, 829, 829, 829, 829, 829, 830, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 829, 829, 829, 829, 829, - 829, 829, 829, 199, 199, 831, 831, 832, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, - 833, 834, 835, 836, 836, 836, 836, 835, - 835, 837, 838, 839, 840, 841, 842, 843, - 844, 845, 846, 846, 846, 846, 846, 846, - 846, 846, 846, 846, 846, 199, 199, 199, + 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 947, 947, 947, 948, 948, + 948, 949, 949, 949, 949, 949, 949, 949, + 949, 200, 200, 200, 200, 200, 200, 200, - 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, - 847, 847, 847, 847, 847, 847, 847, 847, - 847, 847, 199, 199, 199, 199, 199, 199, - - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 849, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 851, 852, 850, - 850, 850, 850, 850, 850, 850, 850, 853, - 853, 853, 853, 853, 853, 853, 853, 853, + 950, 950, 950, 950, 950, 950, 950, 950, + 950, 950, 950, 950, 950, 200, 950, 950, + 950, 950, 951, 951, 952, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 854, 855, 855, 855, 855, 855, 855, 855, - 855, 855, 855, 855, 855, 855, 855, 855, - 855, 855, 855, 855, 855, 855, 855, 855, - 855, 855, 855, 856, 857, 199, 199, 199, - - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, - - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 859, 859, 859, 860, 860, - 860, 861, 861, 861, 861, 861, 861, 861, - 861, 199, 199, 199, 199, 199, 199, 199, - - 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 199, 862, 862, - 862, 862, 863, 863, 864, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 865, 865, 865, 865, 865, 865, 865, 865, - 865, 865, 865, 865, 865, 865, 865, 865, - 865, 865, 866, 866, 867, 868, 868, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 869, 869, 869, 869, 869, 869, 869, 869, - 869, 869, 869, 869, 869, 869, 869, 869, - 869, 869, 870, 870, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 199, 871, 871, - 871, 199, 872, 872, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 874, 874, 875, 874, - 874, 874, 874, 874, 874, 874, 875, 875, - - 875, 875, 875, 875, 875, 875, 874, 875, - 875, 874, 874, 874, 874, 874, 874, 874, - 874, 874, 876, 874, 877, 877, 878, 879, - 877, 880, 877, 881, 873, 882, 199, 199, - - 883, 884, 885, 886, 887, 888, 889, 890, - 891, 892, 199, 199, 199, 199, 199, 199, - 893, 893, 893, 893, 893, 893, 893, 893, - 893, 893, 199, 199, 199, 199, 199, 199, - - 894, 894, 895, 896, 897, 898, 899, 900, - 901, 902, 903, 904, 904, 904, 905, 199, - 906, 907, 908, 909, 910, 911, 912, 913, - 914, 915, 199, 199, 199, 199, 199, 199, - - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - - 916, 916, 916, 917, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 199, 199, 199, 199, 199, 199, 199, 199, - - 918, 918, 918, 918, 918, 918, 918, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 916, 916, 916, 916, 916, 916, 916, - - 916, 916, 916, 916, 916, 916, 916, 916, - 916, 919, 920, 199, 199, 199, 199, 199, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, + 953, 953, 953, 953, 953, 953, 953, 953, + 953, 953, 953, 953, 953, 953, 953, 953, + 953, 953, 954, 954, 955, 956, 956, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, + 957, 957, 957, 957, 957, 957, 957, 957, + 957, 957, 957, 957, 957, 957, 957, 957, + 957, 957, 958, 958, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 959, 959, 959, 959, 959, 959, 959, 959, + 959, 959, 959, 959, 959, 200, 959, 959, + 959, 200, 960, 960, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 921, 921, 921, - 921, 921, 921, 921, 921, 922, 922, 199, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, - 923, 923, 923, 924, 924, 924, 924, 923, - 923, 924, 924, 924, 199, 199, 199, 199, - 924, 924, 923, 924, 924, 924, 924, 924, - 924, 925, 926, 927, 199, 199, 199, 199, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 962, 962, 963, 962, + 962, 962, 962, 962, 962, 962, 963, 963, - 928, 199, 199, 199, 929, 929, 930, 931, - 932, 933, 934, 935, 936, 937, 938, 939, - 940, 940, 940, 940, 940, 940, 940, 940, - 940, 940, 940, 940, 940, 940, 940, 940, + 963, 963, 963, 963, 963, 963, 962, 963, + 963, 962, 962, 962, 962, 962, 962, 962, + 962, 962, 964, 962, 965, 965, 966, 967, + 965, 968, 965, 969, 961, 970, 200, 200, - 940, 940, 940, 940, 940, 940, 940, 940, - 940, 940, 940, 940, 940, 940, 199, 199, - 940, 940, 940, 940, 940, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 971, 972, 973, 974, 975, 976, 977, 978, + 979, 980, 200, 200, 200, 200, 200, 200, + 981, 981, 981, 981, 981, 981, 981, 981, + 981, 981, 200, 200, 200, 200, 200, 200, + + 982, 982, 983, 984, 985, 986, 987, 988, + 989, 990, 991, 992, 992, 992, 993, 200, + 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 1003, 200, 200, 200, 200, 200, 200, + + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + + 1004, 1004, 1004, 1005, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + + 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, + 1004, 1007, 1008, 200, 200, 200, 200, 200, + 941, 941, 941, 941, 941, 941, 941, 941, + 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, @@ -1762,159 +1737,189 @@ static const unsigned short uc_property_trie[] = { 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, 941, - 941, 941, 942, 942, 199, 199, 199, 199, - 943, 943, 943, 943, 943, 944, 944, 944, - 943, 943, 944, 943, 943, 943, 943, 943, - - 943, 941, 941, 941, 941, 941, 941, 941, - 943, 943, 199, 199, 199, 199, 199, 199, - 945, 946, 947, 948, 949, 950, 951, 952, - 953, 954, 955, 199, 199, 199, 956, 956, - - 957, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, - - 958, 958, 958, 958, 958, 958, 958, 958, - 958, 958, 958, 958, 958, 958, 958, 958, - 958, 958, 958, 958, 958, 958, 958, 959, - 960, 961, 961, 962, 199, 199, 963, 963, - - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 965, 966, 965, - 966, 966, 966, 966, 966, 966, 966, 199, + 941, 941, 941, 941, 941, 941, 941, 941, + 941, 941, 941, 941, 941, 941, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 967, 968, 966, 968, 968, 966, 966, 966, - 966, 966, 966, 966, 966, 965, 965, 965, - 965, 965, 965, 966, 966, 969, 969, 969, - 969, 969, 969, 969, 969, 199, 199, 970, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1010, 1010, 200, - 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 199, 199, 199, 199, 199, 199, - 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 199, 199, 199, 199, 199, 199, - - 981, 981, 981, 981, 981, 981, 981, 982, - 983, 983, 983, 983, 981, 981, 199, 199, - 984, 984, 984, 984, 984, 985, 985, 985, - 985, 985, 985, 984, 984, 985, 986, 199, - - 987, 987, 987, 987, 988, 989, 990, 989, - 990, 989, 990, 989, 990, 989, 990, 989, - 989, 989, 990, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, - - 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 989, 989, 989, 989, - 989, 989, 989, 989, 991, 992, 987, 987, - 987, 987, 987, 993, 987, 993, 988, 988, - - 993, 993, 987, 993, 994, 989, 989, 989, - 989, 989, 989, 989, 199, 199, 199, 199, - 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1003, 1004, 1005, 1005, 1006, 1007, 1005, 1005, - - 1007, 1008, 1008, 1008, 1008, 1008, 1008, 1008, - 1008, 1008, 1008, 1009, 1010, 1009, 1009, 1009, - 1009, 1009, 1009, 1009, 1008, 1008, 1008, 1008, - 1008, 1008, 1008, 1008, 1008, 199, 199, 199, - - 1011, 1011, 1012, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - - 1013, 1012, 1011, 1011, 1011, 1011, 1012, 1012, - 1011, 1011, 1014, 1015, 1016, 1016, 1013, 1013, - 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, - 1025, 1026, 1027, 1027, 1027, 1027, 1027, 1027, + 1011, 1011, 1011, 1012, 1012, 1012, 1012, 1011, + 1011, 1012, 1012, 1012, 200, 200, 200, 200, + 1012, 1012, 1011, 1012, 1012, 1012, 1012, 1012, + 1012, 1013, 1014, 1015, 200, 200, 200, 200, + 1016, 200, 200, 200, 1017, 1017, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 200, 200, + 1028, 1028, 1028, 1028, 1028, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1030, 1030, 200, 200, 200, 200, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 200, 200, 200, 200, 200, 200, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, + 1039, 1040, 1041, 200, 200, 200, 1042, 1042, + + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1045, + 1046, 1047, 1047, 1048, 200, 200, 1049, 1049, + + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, 1051, 1052, 1051, + 1052, 1052, 1052, 1052, 1052, 1052, 1052, 200, + + 1053, 1054, 1052, 1054, 1054, 1052, 1052, 1052, + 1052, 1052, 1052, 1052, 1052, 1051, 1051, 1051, + 1051, 1051, 1051, 1052, 1052, 1055, 1055, 1055, + 1055, 1055, 1055, 1055, 1055, 200, 200, 1056, + + 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, + 1065, 1066, 200, 200, 200, 200, 200, 200, + 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, + 1065, 1066, 200, 200, 200, 200, 200, 200, + + 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, + 1069, 1069, 1069, 1069, 1067, 1067, 200, 200, + 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, + 1071, 1071, 1071, 1070, 1070, 1071, 1072, 200, + + 1073, 1073, 1073, 1073, 1074, 1075, 1076, 1075, + 1076, 1075, 1076, 1075, 1076, 1075, 1076, 1075, + 1075, 1075, 1076, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1028, 1028, 1028, 1028, 1028, 1028, 1029, 1030, - 1031, 1031, 1030, 1030, 1030, 1031, 1030, 1031, - 1031, 1031, 1032, 1032, 199, 199, 199, 199, - 199, 199, 199, 199, 1033, 1033, 1033, 1033, - - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, - - 1034, 1034, 1034, 1034, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1036, 1036, 1036, 1036, - 1036, 1036, 1036, 1036, 1035, 1035, 1036, 1037, - 199, 199, 199, 1038, 1038, 1039, 1039, 1039, - - 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, - 1048, 1049, 199, 199, 199, 1034, 1034, 1034, - 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, - 1058, 1059, 1060, 1060, 1060, 1060, 1060, 1060, - - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, - 1061, 1061, 1061, 1061, 1061, 1061, 1062, 1062, - - 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, - 199, 199, 199, 199, 199, 199, 199, 199, - 1064, 1064, 1064, 1065, 1066, 1067, 1067, 1067, - 1067, 1067, 1064, 1064, 1067, 1067, 1067, 1067, - - 1064, 1068, 1066, 1066, 1066, 1066, 1066, 1066, - 1066, 1069, 1069, 1069, 1069, 1067, 1069, 1069, - 1069, 1069, 1068, 1070, 1071, 1072, 1072, 199, - 984, 984, 199, 199, 199, 199, 199, 199, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1077, 1078, 1073, 1073, + 1073, 1073, 1073, 1079, 1073, 1079, 1074, 1074, + + 1079, 1079, 1073, 1079, 1080, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 200, 200, 200, 200, + 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, + 1089, 1090, 1091, 1091, 1092, 1093, 1091, 1091, + + 1093, 1094, 1094, 1094, 1094, 1094, 1094, 1094, + 1094, 1094, 1094, 1095, 1096, 1095, 1095, 1095, + 1095, 1095, 1095, 1095, 1094, 1094, 1094, 1094, + 1094, 1094, 1094, 1094, 1094, 200, 200, 200, + + 1097, 1097, 1098, 1099, 1099, 1099, 1099, 1099, + 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, + 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, + 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, + + 1099, 1098, 1097, 1097, 1097, 1097, 1098, 1098, + 1097, 1097, 1100, 1101, 1102, 1102, 1099, 1099, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, + 1111, 1112, 1113, 1113, 1113, 1113, 1113, 1113, + + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + + 1114, 1114, 1114, 1114, 1114, 1114, 1115, 1116, + 1117, 1117, 1116, 1116, 1116, 1117, 1116, 1117, + 1117, 1117, 1118, 1118, 200, 200, 200, 200, + 200, 200, 200, 200, 1119, 1119, 1119, 1119, + + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, + + 1120, 1120, 1120, 1120, 1121, 1121, 1121, 1121, + 1121, 1121, 1121, 1121, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1121, 1121, 1122, 1123, + 200, 200, 200, 1124, 1124, 1125, 1125, 1125, + + 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, + 1134, 1135, 200, 200, 200, 1120, 1120, 1120, + 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, + 1144, 1145, 1146, 1146, 1146, 1146, 1146, 1146, + + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, + 1147, 1147, 1147, 1147, 1147, 1147, 1148, 1148, + + 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + 200, 200, 200, 200, 200, 200, 200, 200, + 1150, 1150, 1150, 1151, 1152, 1153, 1153, 1153, + 1153, 1153, 1150, 1150, 1153, 1153, 1153, 1153, + + 1150, 1154, 1152, 1152, 1152, 1152, 1152, 1152, + 1152, 1155, 1155, 1155, 1155, 1153, 1155, 1155, + 1155, 1155, 1154, 1156, 1157, 1158, 1158, 200, + 1070, 1070, 200, 200, 200, 200, 200, 200, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 1073, 1073, - 1073, 1073, 1073, 1074, 1075, 1075, 1075, 1076, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1076, 1075, 1075, 1075, 1075, + 114, 114, 114, 114, 114, 114, 1159, 1159, + 1159, 1159, 1159, 1160, 1161, 1161, 1161, 1162, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1161, 1161, 1161, 1162, 1161, 1161, 1161, 1161, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, - 1075, 1075, 1075, 1075, 1075, 1077, 1077, 1077, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1161, 1161, 1161, 1161, 1161, 1161, 1162, 1161, + 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, + 1161, 1161, 1161, 1161, 1161, 1163, 1163, 1163, - 1077, 1077, 1075, 1075, 1075, 1075, 1077, 1077, - 1077, 1077, 1077, 114, 115, 115, 115, 115, + 1163, 1163, 1161, 1161, 1161, 1161, 1163, 1163, + 1163, 1163, 1163, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 1078, 1079, 115, 115, 115, 1080, 115, 115, + 1164, 1165, 115, 115, 115, 1166, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 1081, 1081, 1081, 1081, 1081, + 115, 115, 115, 1167, 1167, 1167, 1167, 1167, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1082, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1168, - 188, 188, 187, 188, 1083, 1083, 1083, 1083, - 1083, 1083, 1084, 1085, 1085, 1086, 1087, 1088, - 1089, 1085, 1085, 1085, 1085, 1085, 1085, 1085, - 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, + 189, 189, 188, 189, 1169, 1169, 1169, 1169, + 1169, 1169, 1170, 1171, 1171, 1172, 1173, 1174, + 1175, 1171, 1171, 1171, 1171, 1171, 1171, 1171, + 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, - 1085, 1085, 1085, 1085, 1085, 1085, 1085, 984, - 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 199, 199, - 199, 199, 199, 199, 1090, 1067, 1083, 1084, + 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1070, + 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, + 1070, 1070, 1070, 1070, 1070, 1070, 200, 200, + 200, 200, 200, 200, 1176, 1153, 1169, 1170, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, @@ -1923,258 +1928,258 @@ static const unsigned short uc_property_trie[] = { 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 70, 71, 70, 71, 1091, 1092, - 1093, 1094, 1095, 1096, 1097, 1097, 1098, 1097, + 70, 71, 70, 71, 70, 71, 1177, 1178, + 1179, 1180, 1181, 1182, 1183, 1183, 1184, 1183, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, 70, 71, - 70, 71, 1099, 1100, 1099, 1100, 1099, 1100, - - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - 1101, 1101, 1101, 1101, 1101, 1101, 199, 199, - 1102, 1102, 1102, 1102, 1102, 1102, 199, 199, - - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - - 1101, 1101, 1101, 1101, 1101, 1101, 199, 199, - 1102, 1102, 1102, 1102, 1102, 1102, 199, 199, - 1103, 1101, 1104, 1101, 1105, 1101, 1106, 1101, - 199, 1102, 199, 1102, 199, 1102, 199, 1102, - - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, - 1107, 1108, 1109, 1110, 1109, 1110, 1111, 1112, - 1113, 1114, 1115, 1116, 1117, 1118, 199, 199, - - 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, - 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, - 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, - 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, - - 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, - 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, - 1101, 1101, 1167, 1168, 1169, 199, 1170, 1171, - 1102, 1102, 1172, 1173, 1174, 204, 1175, 204, - - 204, 1176, 1177, 1178, 1179, 199, 1180, 1181, - 1182, 1183, 1182, 1183, 1184, 1176, 1176, 1176, - 1101, 1101, 1185, 1186, 199, 199, 1187, 1188, - 1102, 1102, 1189, 1190, 199, 1176, 1176, 1176, - - 1101, 1101, 1191, 1192, 1193, 1194, 1195, 1196, - 1102, 1102, 1197, 1198, 1199, 1176, 1200, 1200, - 199, 199, 1201, 1202, 1203, 199, 1204, 1205, - 1206, 1207, 1208, 1209, 1210, 1211, 204, 199, - - 1212, 1212, 1213, 1213, 1213, 1213, 1213, 1214, - 1213, 1213, 1213, 1215, 1216, 1217, 1218, 1219, - 1220, 1221, 1220, 1222, 1223, 1224, 14, 1225, - 1226, 1227, 1228, 1229, 1229, 1230, 1228, 1229, - - 14, 14, 14, 14, 1231, 1232, 1232, 1233, - 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, - 13, 13, 13, 1242, 1242, 1243, 1244, 1244, - 14, 1245, 1246, 14, 1247, 1248, 1225, 43, - - 43, 14, 14, 14, 1249, 16, 1250, 1251, - 1252, 1252, 1253, 1253, 1253, 1253, 1254, 1254, - 1254, 1254, 1255, 1256, 1257, 1258, 1259, 1260, - 1259, 1259, 1259, 1259, 1258, 1259, 1259, 1261, - - 1262, 1263, 1263, 1263, 1264, 1265, 1266, 1267, - 1268, 1269, 1270, 1270, 1270, 1270, 1270, 1270, - 1271, 1272, 199, 199, 1273, 1274, 1275, 1276, - 1277, 1278, 1279, 1279, 1280, 1281, 1282, 157, - - 1271, 63, 58, 59, 1273, 1274, 1275, 1276, - 1277, 1278, 1279, 1279, 1280, 1281, 1282, 199, - 1081, 1081, 1081, 1081, 1081, 1283, 1283, 1283, - 1283, 1283, 1283, 1283, 1283, 199, 199, 199, + 70, 71, 1185, 1186, 1185, 1186, 1185, 1186, + + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1187, 1187, 1187, 1187, 1187, 1187, 200, 200, + 1188, 1188, 1188, 1188, 1188, 1188, 200, 200, + + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + + 1187, 1187, 1187, 1187, 1187, 1187, 200, 200, + 1188, 1188, 1188, 1188, 1188, 1188, 200, 200, + 1189, 1187, 1190, 1187, 1191, 1187, 1192, 1187, + 200, 1188, 200, 1188, 200, 1188, 200, 1188, + + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, + 1193, 1194, 1195, 1196, 1195, 1196, 1197, 1198, + 1199, 1200, 1201, 1202, 1203, 1204, 200, 200, + + 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, + 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, + 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, + 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, + + 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, + 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, + 1187, 1187, 1253, 1254, 1255, 200, 1256, 1257, + 1188, 1188, 1258, 1259, 1260, 205, 1261, 205, + + 205, 1262, 1263, 1264, 1265, 200, 1266, 1267, + 1268, 1269, 1268, 1269, 1270, 1262, 1262, 1262, + 1187, 1187, 1271, 1272, 200, 200, 1273, 1274, + 1188, 1188, 1275, 1276, 200, 1262, 1262, 1262, + + 1187, 1187, 1277, 1278, 1279, 1280, 1281, 1282, + 1188, 1188, 1283, 1284, 1285, 1262, 1286, 1286, + 200, 200, 1287, 1288, 1289, 200, 1290, 1291, + 1292, 1293, 1294, 1295, 1296, 1297, 205, 200, + + 1298, 1298, 1299, 1299, 1299, 1299, 1299, 1300, + 1299, 1299, 1299, 1301, 1302, 1303, 1304, 1305, + 1306, 1307, 1306, 1308, 1309, 1310, 14, 1311, + 1312, 1313, 1314, 1315, 1315, 1316, 1314, 1315, + + 14, 14, 14, 14, 1317, 1318, 1318, 1319, + 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, + 13, 13, 13, 1328, 1328, 1329, 1330, 1330, + 14, 1331, 1332, 14, 1333, 1334, 1311, 43, + + 43, 14, 14, 14, 1335, 16, 1336, 1337, + 1338, 1338, 1339, 1339, 1339, 1339, 1340, 1340, + 1340, 1340, 1341, 1342, 1343, 1344, 1345, 1346, + 1345, 1345, 1345, 1345, 1344, 1345, 1345, 1347, + + 1348, 1349, 1349, 1349, 1350, 1351, 1352, 1353, + 1354, 1355, 1356, 1356, 1356, 1356, 1356, 1356, + 1357, 1358, 200, 200, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1365, 1366, 1367, 1368, 158, + + 1357, 63, 58, 59, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1365, 1366, 1367, 1368, 200, + 1167, 1167, 1167, 1167, 1167, 1369, 1369, 1369, + 1369, 1369, 1369, 1369, 1369, 200, 200, 200, 12, 12, 12, 12, 12, 12, 12, 50, - 1284, 12, 12, 1285, 1286, 1287, 1287, 1287, - 1288, 1288, 1289, 1289, 1289, 1289, 1290, 1291, - 1291, 1292, 1293, 1294, 1295, 1295, 1296, 1296, - - 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, - 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, - 170, 170, 177, 177, 170, 170, 170, 170, - 177, 177, 177, 170, 170, 1297, 1297, 1297, - - 1297, 170, 1298, 1298, 1299, 1300, 1300, 194, - 1301, 194, 1300, 1302, 1084, 1084, 1084, 1084, - 1085, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1303, 1303, 1304, 1305, 51, 1303, 1303, 1304, - 51, 1305, 1306, 1304, 1304, 1304, 1306, 1306, - 1304, 1304, 1304, 1306, 51, 1304, 1307, 51, - 36, 1304, 1304, 1304, 1304, 1304, 51, 51, - - 1303, 1303, 1303, 51, 1304, 51, 1308, 51, - 1304, 51, 1309, 1310, 1304, 1304, 1311, 1306, - 1304, 1304, 1312, 1304, 1306, 1313, 1313, 1313, - 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1319, - - 1320, 1255, 1255, 1255, 1255, 1319, 1318, 1318, - 1318, 1318, 1321, 1255, 1322, 1323, 1324, 1325, - 1326, 1326, 1326, 65, 65, 65, 65, 65, + 1370, 12, 12, 1371, 1372, 1373, 1373, 1373, + 1374, 1374, 1375, 1375, 1375, 1375, 1376, 1377, + 1377, 1378, 1379, 1380, 1381, 1381, 1382, 1383, + + 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, + 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, + 171, 171, 178, 178, 171, 171, 171, 171, + 178, 178, 178, 171, 171, 1384, 1384, 1384, + + 1384, 171, 1385, 1385, 1386, 1387, 1387, 195, + 1388, 195, 1387, 1389, 1170, 1170, 1170, 1170, + 1171, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1390, 1390, 1391, 1392, 51, 1390, 1390, 1391, + 51, 1392, 1393, 1391, 1391, 1391, 1393, 1393, + 1391, 1391, 1391, 1393, 51, 1391, 1394, 51, + 36, 1391, 1391, 1391, 1391, 1391, 51, 51, + + 1390, 1390, 1390, 51, 1391, 51, 1395, 51, + 1391, 51, 1396, 1397, 1391, 1391, 1398, 1393, + 1391, 1391, 1399, 1391, 1393, 1400, 1400, 1400, + 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1406, + + 1407, 1341, 1341, 1341, 1341, 1406, 1405, 1405, + 1405, 1405, 1408, 1341, 1409, 1410, 1411, 1412, + 1413, 1413, 1413, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, - 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, - 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, - 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, - 1329, 1329, 1329, 111, 123, 1330, 1330, 1330, - 1330, 1326, 199, 199, 199, 199, 199, 199, + 1416, 1416, 1416, 111, 123, 1417, 1417, 1417, + 1417, 1413, 1418, 1418, 200, 200, 200, 200, 36, 36, 36, 36, 36, 51, 51, 51, - 51, 51, 1331, 1331, 51, 51, 51, 51, + 51, 51, 1419, 1419, 51, 51, 51, 51, 36, 51, 51, 36, 51, 51, 36, 51, - 51, 51, 51, 51, 51, 51, 1331, 51, + 51, 51, 51, 51, 51, 51, 1419, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 1332, 1331, 1331, + 51, 51, 51, 51, 51, 1420, 1419, 1419, 51, 51, 36, 51, 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 1315, 1315, 1315, 1315, 1315, - 1315, 1315, 1315, 1315, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + 51, 51, 51, 1402, 1402, 1402, 1402, 1402, + 1402, 1402, 1402, 1402, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, - 36, 36, 36, 36, 1331, 36, 36, 36, - 1333, 1334, 1333, 1335, 1336, 1335, 36, 36, - 36, 36, 18, 57, 36, 1337, 36, 36, + 36, 36, 36, 36, 1419, 36, 36, 36, + 1421, 1422, 1421, 1423, 1424, 1423, 36, 36, + 36, 36, 18, 57, 36, 1425, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1331, 36, 1331, 36, - 36, 36, 36, 36, 1280, 1280, 36, 1280, - 1280, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 1338, 1339, 36, 36, + 36, 36, 36, 36, 1419, 36, 1419, 36, + 36, 36, 36, 36, 1366, 1366, 36, 1366, + 1366, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 1426, 1427, 36, 36, - 36, 1331, 36, 1340, 1331, 36, 36, 1331, - 36, 1331, 36, 36, 36, 36, 36, 36, - 36, 36, 1338, 1339, 1338, 1339, 36, 36, + 36, 1419, 36, 1428, 1419, 36, 36, 1419, + 36, 1419, 36, 36, 36, 36, 36, 36, + 36, 36, 1426, 1427, 1426, 1427, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 1331, 36, 1331, 36, 1338, 1339, 1338, 1339, - 1338, 1339, 1338, 1339, 36, 1331, 1341, 1342, - 1341, 1342, 1338, 1339, 1341, 1342, 1338, 1339, - 1341, 1342, 1338, 1339, 1338, 1339, 1338, 1339, + 1419, 36, 1419, 36, 1426, 1427, 1426, 1427, + 1426, 1427, 1426, 1427, 36, 1419, 1429, 1430, + 1429, 1430, 1426, 1427, 1429, 1430, 1426, 1427, + 1429, 1430, 1426, 1427, 1426, 1427, 1426, 1427, - 1341, 1342, 1338, 1339, 1341, 1342, 1338, 1339, - 1341, 1342, 1338, 1339, 36, 36, 36, 1338, - 1339, 1338, 1339, 36, 36, 36, 36, 36, - 1343, 36, 36, 36, 36, 36, 36, 36, + 1429, 1430, 1426, 1427, 1429, 1430, 1426, 1427, + 1429, 1430, 1426, 1427, 36, 36, 36, 1426, + 1427, 1426, 1427, 36, 36, 36, 36, 36, + 1431, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 1338, 1339, 36, 36, 1344, 36, - 1345, 1346, 36, 1346, 1331, 1331, 1331, 1331, - 1338, 1339, 1338, 1339, 1338, 1339, 1338, 1339, + 36, 36, 1426, 1427, 36, 36, 1432, 36, + 1433, 1434, 36, 1434, 1419, 1419, 1419, 1419, + 1426, 1427, 1426, 1427, 1426, 1427, 1426, 1427, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 1338, 1339, 1338, 1339, 1347, 36, 36, - 1338, 1339, 36, 36, 36, 36, 1338, 1339, - 1338, 1339, 1338, 1339, 1338, 1339, 1338, 1339, + 36, 1426, 1427, 1426, 1427, 1435, 36, 36, + 1426, 1427, 36, 36, 36, 36, 1426, 1427, + 1426, 1427, 1426, 1427, 1426, 1427, 1426, 1427, - 1341, 1342, 1341, 1342, 1338, 1339, 1338, 1339, - 1338, 1339, 1341, 1342, 1341, 1342, 36, 36, - 1338, 1339, 1348, 1348, 1348, 1255, 1349, 1349, - 1255, 1255, 1350, 1350, 1350, 1351, 1351, 1255, + 1429, 1430, 1429, 1430, 1426, 1427, 1426, 1427, + 1426, 1427, 1429, 1430, 1429, 1430, 36, 1436, + 1426, 1427, 1437, 1437, 1437, 1341, 1438, 1438, + 1341, 1341, 1439, 1439, 1439, 1440, 1440, 1341, - 51, 1315, 51, 51, 51, 51, 51, 51, - 16, 1250, 16, 1250, 51, 51, 51, 51, + 51, 1402, 51, 51, 51, 51, 51, 51, + 16, 1336, 16, 1336, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 1352, 1352, 51, 51, 51, 51, + 51, 51, 1441, 1441, 51, 51, 51, 51, 36, 36, 51, 51, 51, 51, 51, 51, - 51, 1353, 1354, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1355, 1355, 1315, 1255, 1315, 1315, 1315, - - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, - 1315, 1315, 1315, 1315, 1315, 1356, 1315, 1315, - 1315, 1315, 1315, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1357, - 1357, 1322, 1322, 1322, 1322, 1322, 1322, 1322, - 1322, 1322, 1322, 1322, 1358, 1358, 1358, 1358, - - 1358, 1358, 1323, 1323, 1323, 1323, 1323, 1323, - 1359, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1361, 1361, 1361, 1361, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 199, 199, 199, 199, 199, + 51, 1442, 1443, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444, + 1444, 1444, 1444, 1402, 1341, 1402, 1402, 1402, + + 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, + 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, + 1402, 1402, 1402, 1402, 1402, 1445, 1402, 1402, + 1402, 1402, 1402, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1446, + 1446, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1447, 1447, 1447, 1447, + + 1447, 1447, 1410, 1410, 1410, 1410, 1410, 1410, + 1448, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1450, 1450, 1450, 1450, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 200, 200, 200, 200, 200, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 1315, 1315, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 51, 51, 51, 51, 51, 1402, 1402, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 51, 51, 51, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, - 1371, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 1363, 1364, 1365, 1366, - 1367, 1368, 1369, 1370, 1371, 65, 65, 65, + 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, + 1460, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 1452, 1453, 1454, 1455, + 1456, 1457, 1458, 1459, 1460, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 63, 58, 59, 1273, 1274, 1275, 1276, 1277, - 1278, 1372, 1372, 1372, 1372, 1372, 1372, 1372, - 1372, 1372, 1372, 1372, 1373, 1373, 1373, 1373, + 63, 58, 59, 1359, 1360, 1361, 1362, 1363, + 1364, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1462, 1462, 1462, 1462, - 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, - 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, - 1373, 1373, 1373, 1373, 1373, 1373, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, + 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, + 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, + 1462, 1462, 1462, 1462, 1462, 1462, 1463, 1463, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, - 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1375, 1376, 1377, 1377, 1377, 1377, 1377, - 1377, 1377, 1377, 1377, 1377, 1378, 1379, 1380, - 1381, 1382, 1383, 1384, 1385, 1386, 1377, 1387, + 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, + 1464, 1464, 1465, 1466, 1466, 1466, 1466, 1466, + 1466, 1466, 1466, 1466, 1466, 1467, 1468, 1469, + 1470, 1471, 1472, 1473, 1474, 1475, 1466, 1476, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, + 51, 51, 51, 51, 51, 51, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, @@ -2188,3172 +2193,3552 @@ static const unsigned short uc_property_trie[] = { 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, + 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, - 1352, 1352, 1352, 1352, 51, 51, 51, 51, + 1441, 1441, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1388, 1388, 1321, 1321, - 1389, 1315, 1352, 1352, 1352, 1352, 1352, 1352, + 51, 51, 51, 51, 1477, 1477, 1408, 1408, + 1478, 1402, 1441, 1441, 1441, 1441, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 1352, 1352, 1352, 51, 51, 51, 51, + 51, 1441, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1352, 51, 51, 51, 51, 51, 51, 36, - 1315, 1315, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1321, 1321, 1321, 1321, 1322, 1389, - - 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, - 1321, 1321, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1322, 1322, 1322, 1322, 1322, 1322, - 1322, 1322, 1322, 1322, 1322, 1390, 1359, 1359, - - 1357, 1357, 1322, 1322, 1322, 1322, 1322, 1322, - 1322, 1322, 1322, 1322, 1391, 1322, 1322, 1322, - 1322, 1322, 1323, 1390, 1390, 1390, 1390, 1390, - 1390, 1390, 1390, 1390, 1390, 1392, 1392, 1392, - - 1393, 1393, 1393, 1393, 1392, 1392, 1392, 1392, - 1392, 1359, 1359, 1359, 1359, 1392, 1360, 1392, - 1392, 1392, 1359, 1392, 1392, 1359, 1359, 1359, - 1392, 1392, 1359, 1359, 1392, 1359, 1359, 1392, - - 1392, 1392, 1360, 1359, 1360, 1360, 1360, 1360, - 1359, 1359, 1392, 1359, 1359, 1359, 1359, 1359, - 1359, 1392, 1392, 1392, 1392, 1392, 1359, 1392, - 1392, 1392, 1392, 1359, 1359, 1392, 1392, 1392, - - 1394, 1352, 1352, 1352, 1352, 1360, 51, 51, - 1352, 1352, 1361, 1361, 1352, 1352, 51, 51, + 1441, 51, 51, 51, 51, 51, 51, 36, + 1402, 1402, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1409, 1478, + + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 1479, 1448, 1448, + + 1446, 1446, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1480, 1409, 1409, 1409, + 1409, 1409, 1410, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1481, 1481, 1481, + + 1482, 1482, 1482, 1482, 1481, 1481, 1481, 1481, + 1481, 1448, 1448, 1448, 1448, 1481, 1449, 1481, + 1481, 1481, 1448, 1481, 1481, 1448, 1448, 1448, + 1481, 1481, 1448, 1448, 1481, 1448, 1448, 1481, + + 1481, 1481, 1449, 1448, 1449, 1449, 1449, 1449, + 1448, 1448, 1481, 1448, 1448, 1448, 1448, 1448, + 1448, 1481, 1481, 1481, 1481, 1481, 1448, 1481, + 1481, 1481, 1481, 1448, 1448, 1481, 1481, 1481, + + 1483, 1441, 1441, 1441, 1441, 1449, 51, 51, + 1441, 1441, 1450, 1450, 1441, 1441, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1360, 51, 51, 51, 51, 51, 51, 51, + 1449, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 1360, 51, 1360, 51, - 51, 51, 51, 1360, 1360, 1360, 51, 1359, - 51, 51, 51, 1395, 1395, 1395, 1395, 1396, - - 1396, 51, 1397, 1397, 51, 51, 51, 51, - 1398, 1399, 1398, 1399, 1398, 1399, 1398, 1399, - 1398, 1399, 1398, 1399, 1398, 1399, 1400, 1401, - 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, - - 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, - 1408, 1409, 1400, 1401, 1402, 1403, 1404, 1405, - 1406, 1407, 1408, 1409, 51, 1360, 1360, 1360, + 51, 51, 51, 51, 1449, 51, 1449, 51, + 51, 51, 51, 1449, 1449, 1449, 51, 1448, + 51, 51, 51, 1484, 1484, 1484, 1484, 1485, + + 1485, 51, 1486, 1486, 51, 51, 51, 51, + 1487, 1488, 1487, 1488, 1487, 1488, 1487, 1488, + 1487, 1488, 1487, 1488, 1487, 1488, 1489, 1490, + 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, + + 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, + 1497, 1498, 1489, 1490, 1491, 1492, 1493, 1494, + 1495, 1496, 1497, 1498, 51, 1449, 1449, 1449, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 1360, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 1360, - - 1410, 1410, 1410, 1411, 1412, 1413, 1414, 1358, - 1415, 1416, 1358, 1417, 1418, 1419, 1420, 1420, - 1255, 1255, 1255, 1255, 1255, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1255, 1421, 1422, 1255, - - 1255, 1255, 1421, 1422, 1421, 1422, 1398, 1399, - 1398, 1399, 1398, 1399, 1423, 1424, 1423, 1424, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1398, 1399, 1398, 1399, 1398, - 1399, 1398, 1399, 1398, 1399, 1426, 1427, 1428, - 1429, 1398, 1399, 1398, 1399, 1398, 1399, 1398, - 1399, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1430, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1421, 1422, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1421, - 1422, 1421, 1422, 1255, 1421, 1422, 1255, 1255, - 1398, 1399, 1398, 1399, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1431, 1255, 1255, - 1421, 1422, 1255, 1255, 1398, 1399, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1320, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1421, 1422, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1320, 1320, 1320, 1255, - 1255, 1421, 1422, 1255, 1255, 1421, 1422, 1421, - - 1422, 1421, 1422, 1421, 1422, 1255, 1255, 1255, - 1255, 1255, 1255, 1421, 1422, 1255, 1255, 1255, - 1255, 1421, 1422, 1421, 1422, 1421, 1422, 1421, - 1422, 1421, 1422, 1421, 1422, 1255, 1255, 1255, - - 1255, 1421, 1422, 1255, 1255, 1255, 1421, 1422, - 1421, 1422, 1421, 1422, 1421, 1422, 1255, 1421, - 1422, 1255, 1255, 1421, 1422, 1255, 1255, 1255, - 1255, 1255, 1255, 1421, 1422, 1421, 1422, 1421, - - 1422, 1421, 1422, 1421, 1422, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1255, 1421, 1422, 1421, - 1422, 1421, 1422, 1421, 1422, 1421, 1422, 1255, - 1255, 1255, 1255, 1255, 1432, 1255, 1433, 1255, - - 1255, 1255, 1255, 1434, 1435, 1434, 1255, 1255, - 1255, 1255, 1255, 1255, 1421, 1422, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1255, 1421, - 1422, 1421, 1422, 1255, 1255, 1255, 1255, 1255, - - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1322, 1322, - 1322, 1322, 1322, 1322, 1323, 1323, 1323, 1323, - 1323, 1323, 1323, 1390, 1390, 1390, 1390, 1390, - - 1323, 1323, 1323, 1323, 1390, 1390, 1390, 1390, - 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, - 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, - 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, - - 1418, 1418, 1418, 1418, 1418, 1390, 1390, 1418, - 1418, 1418, 1418, 1418, 1418, 1362, 1362, 1362, - 1390, 1390, 1390, 1390, 1390, 1359, 1359, 1359, - 1359, 1359, 1362, 1362, 1362, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 199, 199, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 199, 199, 199, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 199, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 199, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 199, - - 127, 123, 1438, 1439, 1440, 1441, 1442, 127, - 123, 127, 123, 127, 123, 1443, 1444, 1445, - 1446, 1097, 1099, 1100, 1447, 127, 123, 1447, - 1097, 1097, 1097, 1097, 1448, 1448, 1449, 1450, - - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - 1451, 1452, 1451, 1452, 1451, 1452, 1451, 1452, - - 1451, 1452, 1451, 1452, 1453, 1454, 1454, 1454, - 1454, 1454, 1454, 1455, 1456, 1455, 1456, 1457, - 1457, 1457, 1458, 1459, 199, 199, 199, 199, - 199, 1460, 1461, 1461, 1461, 1462, 1460, 1461, + 1449, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51, 1449, + + 1499, 1499, 1499, 1500, 1501, 1502, 1503, 1447, + 1504, 1505, 1447, 1506, 1507, 1508, 1509, 1509, + 1341, 1341, 1341, 1341, 1341, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1341, 1510, 1511, 1341, + + 1341, 1341, 1510, 1511, 1510, 1511, 1487, 1488, + 1487, 1488, 1487, 1488, 1512, 1513, 1512, 1513, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1487, 1488, 1487, 1488, 1487, + 1488, 1487, 1488, 1487, 1488, 1515, 1516, 1517, + 1518, 1487, 1488, 1487, 1488, 1487, 1488, 1487, + 1488, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1519, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1510, 1511, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1510, + 1511, 1510, 1511, 1341, 1510, 1511, 1341, 1341, + 1487, 1488, 1487, 1488, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1520, 1341, 1341, + 1510, 1511, 1341, 1341, 1487, 1488, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1407, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1510, 1511, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1407, 1407, 1407, 1341, + 1341, 1510, 1511, 1341, 1341, 1510, 1511, 1510, + + 1511, 1510, 1511, 1510, 1511, 1341, 1341, 1341, + 1341, 1341, 1341, 1510, 1511, 1341, 1341, 1341, + 1341, 1510, 1511, 1510, 1511, 1510, 1511, 1510, + 1511, 1510, 1511, 1510, 1511, 1341, 1341, 1341, + + 1341, 1510, 1511, 1341, 1341, 1341, 1510, 1511, + 1510, 1511, 1510, 1511, 1510, 1511, 1341, 1510, + 1511, 1341, 1341, 1510, 1511, 1341, 1341, 1341, + 1341, 1341, 1341, 1510, 1511, 1510, 1511, 1510, + + 1511, 1510, 1511, 1510, 1511, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1341, 1510, 1511, 1510, + 1511, 1510, 1511, 1510, 1511, 1510, 1511, 1341, + 1341, 1341, 1341, 1341, 1521, 1341, 1522, 1341, + + 1341, 1341, 1341, 1523, 1524, 1523, 1341, 1341, + 1341, 1341, 1341, 1341, 1510, 1511, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1510, + 1511, 1510, 1511, 1341, 1341, 1341, 1341, 1341, + + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1409, 1409, + 1409, 1409, 1409, 1409, 1410, 1410, 1410, 1410, + 1410, 1410, 1410, 1479, 1479, 1479, 1479, 1479, + + 1410, 1410, 1410, 1410, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + + 1507, 1507, 1507, 1507, 1507, 1479, 1479, 1507, + 1507, 1507, 1507, 1507, 1507, 1451, 1451, 1451, + 1479, 1479, 1479, 1479, 1479, 1448, 1448, 1448, + 1448, 1448, 1451, 1451, 1451, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 200, 200, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 200, 200, 200, 1451, 1451, 1451, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 200, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 1418, 1418, 1418, 1418, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 200, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 200, + + 127, 123, 1527, 1528, 1529, 1530, 1531, 127, + 123, 127, 123, 127, 123, 1532, 1533, 1534, + 1535, 1183, 1185, 1186, 1536, 127, 123, 1536, + 1183, 1183, 1183, 1183, 1537, 1537, 1538, 1539, + + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + 1540, 1541, 1540, 1541, 1540, 1541, 1540, 1541, + + 1540, 1541, 1540, 1541, 1542, 1543, 1543, 1543, + 1543, 1543, 1543, 1544, 1545, 1544, 1545, 1546, + 1546, 1546, 1547, 1548, 200, 200, 200, 200, + 200, 1549, 1550, 1550, 1550, 1551, 1549, 1550, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, - 1463, 1463, 1463, 1463, 1463, 1463, 199, 1464, - 199, 199, 199, 199, 199, 1464, 199, 199, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, + 1552, 1552, 1552, 1552, 1552, 1552, 200, 1553, + 200, 200, 200, 200, 200, 1553, 200, 200, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1465, 1465, 1465, 1465, 1465, 1465, 1466, 1466, - 199, 199, 199, 199, 199, 199, 199, 1467, - 1468, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1469, + 1554, 1554, 1554, 1554, 1554, 1554, 1555, 1555, + 200, 200, 200, 200, 200, 200, 200, 1556, + 1557, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1558, + + 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 836, 836, 836, 836, 836, 836, 836, 200, + 836, 836, 836, 836, 836, 836, 836, 200, + 836, 836, 836, 836, 836, 836, 836, 200, + 836, 836, 836, 836, 836, 836, 836, 200, + + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, + + 1559, 1559, 1560, 1561, 1560, 1561, 1559, 1559, + 1559, 1560, 1561, 1559, 1560, 1561, 1345, 1345, + 1345, 1345, 1345, 1345, 1345, 1345, 1344, 1562, + 1563, 1564, 1565, 1566, 1560, 1561, 1566, 1566, + + 1567, 1568, 1512, 1513, 1512, 1513, 1512, 1513, + 1512, 1513, 1564, 1564, 1564, 1564, 1569, 1570, + 1564, 1571, 1572, 1573, 1573, 1572, 1572, 1572, + 1572, 1572, 1574, 1574, 1575, 1576, 1576, 1577, + + 1578, 1576, 1579, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 200, 1580, 1580, 1580, 1580, 1581, + + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, + 1580, 1580, 1580, 1581, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, + 1582, 1582, 1582, 1582, 200, 200, 200, 200, + + 1299, 1583, 1584, 1585, 1441, 1586, 1587, 1588, + 16, 1336, 16, 1336, 16, 1336, 16, 1336, + 16, 1336, 1441, 1441, 16, 1336, 16, 1336, + 16, 1336, 16, 1336, 1589, 1314, 1590, 1590, + + 1441, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1591, 1592, 172, 1593, 1594, 1594, + 1595, 1596, 1596, 1596, 1596, 1597, 1598, 1441, + 1599, 1599, 1599, 1600, 1601, 1602, 1582, 1441, + + 200, 1603, 1604, 1603, 1604, 1603, 1604, 1603, + 1604, 1603, 1604, 1604, 1605, 1604, 1605, 1604, + 1605, 1604, 1605, 1604, 1605, 1604, 1605, 1604, + 1605, 1604, 1605, 1604, 1605, 1604, 1605, 1604, + + 1605, 1604, 1605, 1603, 1604, 1605, 1604, 1605, + 1604, 1605, 1604, 1604, 1604, 1604, 1604, 1604, + 1605, 1605, 1604, 1605, 1605, 1604, 1605, 1605, + 1604, 1605, 1605, 1604, 1605, 1605, 1604, 1604, + + 1604, 1604, 1604, 1603, 1604, 1603, 1604, 1603, + 1604, 1604, 1604, 1604, 1604, 1604, 1603, 1604, + 1604, 1604, 1604, 1604, 1605, 1606, 1606, 200, + 200, 1607, 1607, 1608, 1608, 1609, 1610, 1611, + + 1612, 1613, 1614, 1613, 1614, 1613, 1614, 1613, + 1614, 1613, 1614, 1614, 1615, 1614, 1615, 1614, + 1615, 1614, 1615, 1614, 1615, 1614, 1615, 1614, + 1615, 1614, 1615, 1614, 1615, 1614, 1615, 1614, + + 1615, 1614, 1615, 1613, 1614, 1615, 1614, 1615, + 1614, 1615, 1614, 1614, 1614, 1614, 1614, 1614, + 1615, 1615, 1614, 1615, 1615, 1614, 1615, 1615, + 1614, 1615, 1615, 1614, 1615, 1615, 1614, 1614, + + 1614, 1614, 1614, 1613, 1614, 1613, 1614, 1613, + 1614, 1614, 1614, 1614, 1614, 1614, 1613, 1614, + 1614, 1614, 1614, 1614, 1615, 1613, 1613, 1615, + 1615, 1615, 1615, 1616, 1617, 1618, 1619, 1620, + + 200, 200, 200, 200, 200, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1622, 200, 200, + 200, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623, + 1623, 1623, 1623, 1623, 1623, 1623, 1623, 200, + 1624, 1624, 1625, 1625, 1625, 1625, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, - 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 830, 830, 830, 830, 830, 830, 830, 199, - 830, 830, 830, 830, 830, 830, 830, 199, - 830, 830, 830, 830, 830, 830, 830, 199, - 830, 830, 830, 830, 830, 830, 830, 199, - - 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 264, - - 1470, 1470, 1471, 1472, 1471, 1472, 1470, 1470, - 1470, 1471, 1472, 1470, 1471, 1472, 1259, 1259, - 1259, 1259, 1259, 1259, 1259, 1259, 1258, 1473, - 1474, 1475, 1476, 1477, 1471, 1472, 1477, 1477, - - 1478, 1479, 1423, 1424, 1423, 1424, 1423, 1424, - 1423, 1424, 1475, 1475, 1475, 1475, 1480, 1481, - 1475, 1482, 1483, 1484, 1484, 1483, 1483, 1483, - 1483, 1483, 1485, 1485, 1486, 1487, 1487, 1488, - - 1489, 1487, 1490, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 199, 1491, 1491, 1491, 1491, 1492, - - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1492, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 1492, 1492, - 1492, 1492, 1492, 1492, 1492, 1492, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, - 1493, 1493, 1493, 1493, 199, 199, 199, 199, - - 1213, 1494, 1495, 1496, 1352, 1497, 1498, 1499, - 16, 1250, 16, 1250, 16, 1250, 16, 1250, - 16, 1250, 1352, 1352, 16, 1250, 16, 1250, - 16, 1250, 16, 1250, 1500, 1228, 1501, 1501, - - 1352, 1499, 1499, 1499, 1499, 1499, 1499, 1499, - 1499, 1499, 1502, 1503, 171, 1504, 1505, 1505, - 1506, 1507, 1507, 1507, 1507, 1508, 1509, 1352, - 1510, 1510, 1510, 1511, 1512, 1513, 1493, 1352, - - 199, 1514, 1515, 1514, 1515, 1514, 1515, 1514, - 1515, 1514, 1515, 1515, 1516, 1515, 1516, 1515, - 1516, 1515, 1516, 1515, 1516, 1515, 1516, 1515, - 1516, 1515, 1516, 1515, 1516, 1515, 1516, 1515, - - 1516, 1515, 1516, 1514, 1515, 1516, 1515, 1516, - 1515, 1516, 1515, 1515, 1515, 1515, 1515, 1515, - 1516, 1516, 1515, 1516, 1516, 1515, 1516, 1516, - 1515, 1516, 1516, 1515, 1516, 1516, 1515, 1515, - - 1515, 1515, 1515, 1514, 1515, 1514, 1515, 1514, - 1515, 1515, 1515, 1515, 1515, 1515, 1514, 1515, - 1515, 1515, 1515, 1515, 1516, 1517, 1517, 199, - 199, 1518, 1518, 1519, 1519, 1520, 1521, 1522, - - 1523, 1524, 1525, 1524, 1525, 1524, 1525, 1524, - 1525, 1524, 1525, 1525, 1526, 1525, 1526, 1525, - 1526, 1525, 1526, 1525, 1526, 1525, 1526, 1525, - 1526, 1525, 1526, 1525, 1526, 1525, 1526, 1525, - - 1526, 1525, 1526, 1524, 1525, 1526, 1525, 1526, - 1525, 1526, 1525, 1525, 1525, 1525, 1525, 1525, - 1526, 1526, 1525, 1526, 1526, 1525, 1526, 1526, - 1525, 1526, 1526, 1525, 1526, 1526, 1525, 1525, - - 1525, 1525, 1525, 1524, 1525, 1524, 1525, 1524, - 1525, 1525, 1525, 1525, 1525, 1525, 1524, 1525, - 1525, 1525, 1525, 1525, 1526, 1524, 1524, 1526, - 1526, 1526, 1526, 1527, 1528, 1529, 1530, 1531, - - 199, 199, 199, 199, 199, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1533, 199, 199, - 199, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 199, - 1535, 1535, 1536, 1536, 1536, 1536, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1539, 1539, 1539, 199, 199, 199, 199, 199, - - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - - 1393, 1393, 1393, 1393, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, - 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, - - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1542, 1542, 199, - - 1536, 1536, 1536, 1536, 1536, 1536, 1536, 1536, - 1536, 1536, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1543, 1543, 1543, 1543, - 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, - 1545, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1541, 1541, 1541, 1541, 1542, 1542, 1547, 1535, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1545, 1545, 1545, 1545, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, + 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, + 1628, 1628, 1628, 200, 200, 200, 200, 200, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 199, + 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, + 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, + 1482, 1482, 1482, 1482, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, + 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1545, - 1545, 1545, 1545, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1545, 1545, - - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1545, - - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - - 1551, 1551, 1551, 1551, 1551, 1551, 1552, 1552, - 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, - 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, - 1552, 1552, 1552, 1552, 1553, 1553, 1553, 1553, - - 1553, 1553, 1553, 1553, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1555, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1557, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - - 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1556, 1556, 199, 199, 199, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - - 1558, 1558, 1559, 1559, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1559, 1558, 1558, 1558, - 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - - 1558, 1559, 1558, 1558, 1558, 1559, 1558, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1561, 1561, 1561, 1561, 1561, 1561, 1562, 1563, - - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1565, 1566, 1567, 1568, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - - 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, - 1577, 1578, 1564, 1564, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - - 282, 283, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 1579, 264, - 1580, 1580, 1580, 1581, 1582, 1582, 1582, 1582, - 1582, 1582, 1582, 1582, 264, 264, 1581, 1583, - - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 278, 279, 278, 279, 278, 279, 278, 279, - 284, 285, 284, 285, 1584, 1584, 199, 1582, - - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - 1585, 1585, 1585, 1585, 1585, 1585, 1585, 1585, - - 1585, 1585, 1585, 1585, 1585, 1585, 1586, 1586, - 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, - 1587, 1587, 1588, 1589, 1590, 1590, 1590, 1589, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, - 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, - 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1592, - 1592, 1592, 1592, 1481, 1481, 1481, 1481, 1481, - - 1593, 1593, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1097, 1097, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1448, 1097, 1097, 1097, 1097, 1097, 1097, 1097, - 1097, 1099, 1100, 1099, 1100, 1594, 1099, 1100, - - 1099, 1100, 1099, 1100, 1099, 1100, 1099, 1100, - 1481, 1595, 1595, 1099, 1100, 1596, 1597, 199, - 1598, 1599, 1600, 1601, 1602, 1602, 1603, 1604, - 1603, 1604, 1603, 1604, 1603, 1604, 1603, 1604, - - 1598, 1599, 1598, 1599, 1598, 1599, 1598, 1599, - 1598, 1599, 1605, 1606, 1607, 1608, 199, 199, - 1609, 1610, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1611, - 1612, 1612, 1597, 1613, 1613, 1613, 1613, 1613, - - 1614, 1614, 1615, 1614, 1614, 1614, 1616, 1614, - 1614, 1614, 1614, 1615, 1614, 1614, 1614, 1614, - 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, - 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, - - 1614, 1614, 1614, 1617, 1617, 1615, 1615, 1617, - 1618, 1618, 1618, 1618, 199, 199, 199, 199, - 1544, 1544, 1544, 1544, 1544, 1544, 772, 772, - 1290, 1619, 199, 199, 199, 199, 199, 199, - - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, - 1620, 1620, 1621, 1622, 1623, 1623, 1624, 1624, - 199, 199, 199, 199, 199, 199, 199, 199, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1631, 1631, 200, + 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1632, 1632, 1632, 1632, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 1634, 1635, 1635, 1635, 1635, 1635, 1635, 1635, + 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, + + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1630, 1630, 1630, 1630, + 1630, 1630, 1630, 1630, 1631, 1631, 1636, 1624, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1635, 1635, 1635, 1635, 1635, 1635, 1635, + 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1634, 1634, 1634, 1634, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 200, + + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, - 1626, 1626, 1626, 1626, 1625, 1625, 1625, 1625, - 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, - 1625, 1625, 1625, 1625, 1627, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 1628, 1628, - 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, - 1637, 1638, 199, 199, 199, 199, 199, 199, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1634, + 1634, 1634, 1634, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1634, 1634, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1634, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, + + 1640, 1640, 1640, 1640, 1640, 1640, 1641, 1641, + 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, + 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, + 1641, 1641, 1641, 1641, 1642, 1642, 1642, 1642, + + 1642, 1642, 1642, 1642, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1644, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, - 1639, 1639, 490, 490, 490, 490, 490, 490, - 1640, 1640, 1640, 490, 199, 199, 199, 199, - - 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, - 1649, 1650, 1651, 1651, 1651, 1651, 1651, 1651, - 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, - 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, - - 1651, 1651, 1651, 1651, 1651, 1651, 1652, 1652, - 1652, 1652, 1652, 1653, 1653, 1653, 1654, 1655, - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, - - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1657, - 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, - 1657, 1657, 1658, 1659, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1660, - - 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 199, 199, 199, - - 1661, 1661, 1661, 1662, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663, - 1663, 1663, 1663, 1664, 1662, 1662, 1661, 1661, - 1661, 1661, 1662, 1662, 1661, 1662, 1662, 1662, - - 1665, 1666, 1666, 1666, 1666, 1666, 1666, 1667, - 1668, 1668, 1666, 1666, 1666, 1666, 199, 1669, - 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, - 1678, 1679, 199, 199, 199, 199, 1666, 1666, - - 1680, 1680, 1680, 1680, 1680, 1681, 1682, 1680, - 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, - 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, - 1691, 1692, 1680, 1680, 1680, 1680, 1680, 199, - - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1694, 1694, 1694, 1694, 1694, 1694, 1695, - 1695, 1694, 1694, 1695, 1695, 1694, 1694, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1693, 1693, 1693, 1694, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1694, 1695, 199, 199, - 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, - 1704, 1705, 199, 199, 1706, 1707, 1707, 1707, - - 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, - 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, - 1709, 1708, 1708, 1708, 1708, 1708, 1708, 1710, - 1710, 1710, 1708, 810, 1681, 1711, 1680, 1680, - - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1713, 1712, 1713, 1713, 1714, 1712, 1712, 1713, - 1713, 1712, 1712, 1712, 1712, 1712, 1713, 1713, - - 1712, 1713, 1712, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 1712, 1712, 1715, 1716, 1716, - - 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, - 1717, 1717, 1717, 1718, 1719, 1719, 1718, 1718, - 1720, 1720, 1717, 1721, 1721, 1718, 1722, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 199, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 199, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 199, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, - 1602, 1602, 1602, 1724, 1725, 1725, 1725, 1725, - - 199, 199, 199, 199, 1602, 1726, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - 1727, 1727, 1727, 1727, 1727, 1727, 1727, 1727, - - 1727, 1727, 1727, 1728, 1728, 1729, 1728, 1728, - 1729, 1728, 1728, 1730, 1728, 1731, 199, 199, - 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, - 1740, 1741, 199, 199, 199, 199, 199, 199, - - 1742, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1742, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1742, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1742, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1742, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1742, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1742, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 1742, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, - - 1743, 1743, 1743, 1743, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 825, 825, 825, 825, 825, 825, 825, 825, - 825, 825, 825, 825, 825, 825, 825, 825, - - 825, 825, 825, 825, 825, 825, 825, 199, - 199, 199, 199, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 828, 828, 828, 828, + + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1647, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + + 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, + 1646, 1646, 1646, 1646, 1646, 200, 200, 200, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + + 1648, 1648, 1649, 1649, 1648, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1649, 1648, 1648, 1648, + 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, + + 1648, 1649, 1648, 1648, 1648, 1649, 1648, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, + 1651, 1651, 1651, 1651, 1651, 1651, 1652, 1653, + + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1655, 1656, 1657, 1658, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + + 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, + 1667, 1668, 1654, 1654, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + + 283, 284, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 1669, 265, + 1670, 1670, 1670, 1671, 1672, 1672, 1672, 1672, + 1672, 1672, 1672, 1672, 265, 265, 1671, 1673, + + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 279, 280, 279, 280, 279, 280, 279, 280, + 285, 286, 285, 286, 1674, 1674, 1675, 1672, + + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + + 1676, 1676, 1676, 1676, 1676, 1676, 1677, 1677, + 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, + 1678, 1678, 1679, 1680, 1681, 1681, 1681, 1680, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1683, + 1683, 1683, 1683, 1570, 1570, 1570, 1570, 1570, + + 1684, 1684, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1183, 1183, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1537, 1183, 1183, 1183, 1183, 1183, 1183, 1183, + 1183, 1185, 1186, 1185, 1186, 1685, 1185, 1186, + + 1185, 1186, 1185, 1186, 1185, 1186, 1185, 1186, + 1570, 1686, 1686, 1185, 1186, 1687, 1688, 1689, + 1690, 1691, 1692, 1693, 1694, 1694, 1695, 1696, + 1695, 1696, 1695, 1696, 1695, 1696, 1695, 1696, + + 1690, 1691, 1690, 1691, 1690, 1691, 1690, 1691, + 1690, 1691, 1697, 1698, 1699, 1700, 200, 200, + 1701, 1702, 1703, 1704, 1705, 1706, 1705, 1706, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1707, + 1708, 1708, 1688, 1709, 1709, 1709, 1709, 1709, + + 1710, 1710, 1711, 1710, 1710, 1710, 1712, 1710, + 1710, 1710, 1710, 1711, 1710, 1710, 1710, 1710, + 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, + 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, + + 1710, 1710, 1710, 1713, 1713, 1711, 1711, 1713, + 1714, 1714, 1714, 1714, 200, 200, 200, 200, + 1633, 1633, 1633, 1633, 1633, 1633, 778, 778, + 1376, 1715, 200, 200, 200, 200, 200, 200, + + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1717, 1718, 1719, 1719, 1720, 1720, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1721, 1721, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1721, 1721, 1721, 1721, + 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721, + + 1721, 1721, 1721, 1721, 1723, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 1724, 1724, + 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, + 1733, 1734, 200, 200, 200, 200, 200, 200, + + 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, + 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, + 1735, 1735, 493, 493, 493, 493, 493, 493, + 1736, 1736, 1736, 493, 1737, 1738, 200, 200, + + 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, + 1747, 1748, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + + 1749, 1749, 1749, 1749, 1749, 1749, 1750, 1750, + 1750, 1750, 1750, 1751, 1751, 1751, 1752, 1753, + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, + + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1755, + 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, + 1755, 1755, 1756, 1757, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 1758, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, 828, - 828, 828, 828, 828, 199, 199, 199, 199, - - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1551, 1551, - 1746, 1551, 1746, 1551, 1551, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1551, - - 1746, 1551, 1746, 1551, 1551, 1746, 1746, 1551, - 1551, 1551, 1746, 1746, 1746, 1746, 1747, 1747, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1749, 1749, 1749, 1550, 1550, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, - 1750, 1750, 1550, 1550, 1550, 1550, 1550, 1550, - - 1751, 1752, 1753, 1754, 1755, 1756, 1756, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 1757, 1758, 1759, 1760, 1761, - 199, 199, 199, 199, 199, 1762, 1763, 1764, - - 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, - 1765, 1766, 1764, 1764, 1764, 1764, 1764, 1764, - 1764, 1764, 1764, 1764, 1764, 1764, 1764, 296, - 1764, 1764, 1764, 1764, 1764, 296, 1764, 296, - - 1764, 1764, 296, 1764, 1764, 296, 1764, 1764, - 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1765, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1768, 1768, 1768, 1768, 1768, 1768, - 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, - - 1768, 1768, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1501, 1228, - - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 342, 342, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 342, 342, 342, 342, 342, 342, 342, 342, - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1770, 334, 342, 342, - - 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, - 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, - 1772, 1773, 1774, 1775, 1776, 1777, 1777, 1778, - 1779, 1780, 199, 199, 199, 199, 199, 199, - - 170, 170, 170, 170, 1085, 1085, 1085, 985, - 985, 985, 985, 985, 985, 985, 199, 199, - 1781, 1782, 1782, 1783, 1783, 1784, 1785, 1784, - 1785, 1784, 1785, 1784, 1785, 1784, 1785, 1784, - - 1785, 1784, 1785, 1784, 1785, 1513, 1513, 1786, - 1787, 1781, 1781, 1781, 1781, 1783, 1783, 1783, - 1788, 1789, 1790, 199, 1791, 1792, 1793, 1793, - 1782, 1281, 1282, 1281, 1282, 1281, 1282, 1794, - - 1781, 1781, 1795, 1796, 1797, 1798, 1799, 199, - 1781, 1284, 1242, 1781, 199, 199, 199, 199, - 1767, 1767, 1767, 1800, 1767, 342, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 342, 342, 1801, - - 199, 1793, 1781, 1794, 1284, 1242, 1781, 1802, - 1281, 1282, 1781, 1795, 1788, 1796, 1790, 1803, - 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, - 1812, 1813, 1792, 1791, 1814, 1799, 1815, 1793, - - 1781, 1816, 1816, 1816, 1816, 1816, 1816, 1816, - 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, - 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, - 1816, 1816, 1816, 1817, 1781, 1818, 1819, 1783, - - 1819, 1820, 1820, 1820, 1820, 1820, 1820, 1820, - 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, - 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, - 1820, 1820, 1820, 1817, 1799, 1818, 1799, 1821, - - 1822, 1823, 1281, 1282, 1824, 1825, 1826, 1827, - 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, - 1828, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1829, 1829, - - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 199, - - 199, 199, 1830, 1830, 1830, 1830, 1830, 1830, - 199, 199, 1830, 1830, 1830, 1830, 1830, 1830, - 199, 199, 1830, 1830, 1830, 1830, 1830, 1830, - 199, 199, 1830, 1830, 1830, 199, 199, 199, - - 1831, 1284, 1799, 1819, 1509, 1284, 1284, 199, - 1303, 1280, 1280, 1280, 1280, 1303, 1303, 199, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1832, 1832, 1832, 1833, 51, 1834, 1834, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 199, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 199, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 199, 1835, 1835, 199, 1835, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 199, 199, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 199, 199, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, - 1835, 1835, 1835, 199, 199, 199, 199, 199, - - 1836, 1837, 1836, 199, 199, 199, 199, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1838, 1838, 199, 199, 199, 1839, - 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, - - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 1840, 1840, 1841, 1841, 1841, - 1841, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1841, 1843, 1844, 199, 199, 199, - 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, - 1390, 1390, 1390, 1390, 199, 199, 199, 199, - - 1844, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1088, 199, 199, - - 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, - 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, - 1845, 1845, 1845, 1845, 1845, 1845, 1845, 1845, - 1845, 1845, 1845, 1845, 1845, 199, 199, 199, - - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, - 1846, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 985, 1847, 1847, 1847, 1847, 1847, 1847, 1847, - 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, - 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, - 1847, 1847, 1847, 1847, 199, 199, 199, 199, - - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, - 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1849, - - 1850, 1850, 1850, 1850, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, - 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, - - 1851, 1852, 1851, 1851, 1851, 1851, 1851, 1851, - 1851, 1851, 1852, 199, 199, 199, 199, 199, - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, - 1853, 1853, 1853, 1853, 1853, 1853, 1854, 1854, - 1854, 1854, 1854, 199, 199, 199, 199, 199, - - 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, - 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, - 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, - 1855, 1855, 1855, 1855, 1855, 1855, 199, 1856, - - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - - 1857, 1857, 1857, 1857, 199, 199, 199, 199, - 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, - 1858, 1859, 1859, 1859, 1859, 1859, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - - 1860, 1860, 1860, 1860, 1860, 1860, 1861, 1861, - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 1862, 1862, 1862, 1863, 1863, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1864, - - 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, - 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, - 1865, 1865, 1865, 1865, 1865, 1865, 1865, 1865, - 1865, 1865, 1865, 1865, 1865, 1865, 199, 199, - - 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, - 1874, 1875, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, - - 1876, 1876, 1876, 1876, 1876, 1876, 1876, 1876, - 199, 199, 199, 199, 199, 199, 199, 199, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, - - 1877, 1877, 1877, 1877, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1878, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1879, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1879, 1879, 1879, 1879, 1879, 1879, 1879, 1879, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1880, 1880, 1880, 1880, 1880, 1880, 296, 296, - 1880, 296, 1880, 1880, 1880, 1880, 1880, 1880, - 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, - 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, - - 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, - 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, - 1880, 1880, 1880, 1880, 1880, 1880, 296, 1880, - 1880, 296, 296, 296, 1880, 296, 296, 1880, - - 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, - 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, - 1881, 1881, 1881, 1881, 1881, 1881, 296, 1882, - 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, - - 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, - 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, - 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1885, - 1885, 1886, 1886, 1886, 1886, 1886, 1886, 1886, - - 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, - 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, - 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, - 1887, 1887, 1887, 1887, 1887, 1887, 1887, 296, - - 296, 296, 296, 296, 296, 296, 296, 1888, - 1888, 1888, 1888, 1888, 1888, 1888, 1888, 1888, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, - 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, - 1889, 1889, 1889, 1889, 1889, 1889, 1890, 1890, - 1890, 1890, 1891, 1891, 296, 296, 296, 1892, - - 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, - 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, - 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, - 1893, 1893, 296, 296, 296, 296, 296, 1894, - - 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, - 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, - 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, - 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, - - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, - 296, 296, 296, 296, 296, 296, 1896, 1896, - - 1897, 1898, 1898, 1898, 296, 1898, 1898, 296, - 296, 296, 296, 296, 1898, 1899, 1898, 1900, - 1897, 1897, 1897, 1897, 296, 1897, 1897, 1897, - 296, 1897, 1897, 1897, 1897, 1897, 1897, 1897, - - 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, - 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, - 1897, 1897, 1897, 1897, 296, 296, 296, 296, - 1900, 1901, 1899, 296, 296, 296, 296, 1902, - - 1903, 1904, 1905, 1906, 1907, 1907, 1907, 1907, - 296, 296, 296, 296, 296, 296, 296, 296, - 1908, 1908, 1908, 1908, 1908, 1908, 1909, 1909, - 1910, 296, 296, 296, 296, 296, 296, 296, - - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, - 1911, 1911, 1911, 1911, 1911, 1912, 1912, 1913, - - 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1915, 1915, 1915, - - 1916, 1916, 1916, 1916, 1916, 1917, 1918, 1917, - 1919, 1917, 1917, 1918, 1918, 1920, 1917, 1917, - 1917, 1917, 1917, 1916, 1916, 1916, 1916, 1920, - 1916, 1916, 1916, 1916, 1916, 1917, 1916, 1916, - - 1916, 1917, 1918, 1918, 1917, 1921, 1922, 296, - 296, 296, 296, 1923, 1923, 1923, 1923, 1924, - 1925, 1925, 1925, 1925, 1925, 1925, 1926, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 1927, 1927, 1927, 1927, 1927, 1927, 296, 296, - 296, 1928, 1928, 1928, 1928, 1928, 1928, 1928, - - 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, - 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, - 1929, 1929, 1929, 1929, 1929, 1929, 296, 296, + 828, 828, 828, 828, 828, 200, 200, 200, + + 1759, 1759, 1759, 1760, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761, + 1761, 1761, 1761, 1762, 1760, 1760, 1759, 1759, + 1759, 1759, 1760, 1760, 1759, 1760, 1760, 1760, + + 1763, 1764, 1764, 1764, 1764, 1764, 1764, 1765, + 1766, 1766, 1764, 1764, 1764, 1764, 200, 1767, + 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, + 1776, 1777, 200, 200, 200, 200, 1764, 1764, + + 1778, 1778, 1778, 1778, 1778, 1779, 1780, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, + 1789, 1790, 1778, 1778, 1778, 1778, 1778, 200, + + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + + 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, + 1791, 1792, 1792, 1792, 1792, 1792, 1792, 1793, + 1793, 1792, 1792, 1793, 1793, 1792, 1792, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1791, 1791, 1791, 1792, 1791, 1791, 1791, 1791, + 1791, 1791, 1791, 1791, 1792, 1793, 200, 200, + 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, + 1802, 1803, 200, 200, 1804, 1805, 1805, 1805, + + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1807, 1806, 1806, 1806, 1806, 1806, 1806, 1808, + 1808, 1808, 1806, 816, 1779, 1809, 1778, 1778, + + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1811, 1810, 1811, 1811, 1812, 1810, 1810, 1811, + 1811, 1810, 1810, 1810, 1810, 1810, 1811, 1811, + + 1810, 1811, 1810, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 1810, 1810, 1813, 1814, 1814, + + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1816, 1817, 1817, 1816, 1816, + 1818, 1818, 1815, 1819, 1819, 1816, 1820, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 200, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 200, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1821, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 1821, 1821, 1821, 1821, 1821, 1821, 1821, 200, + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1822, 1694, 1694, 1694, 1694, + 1694, 1694, 1694, 1823, 1824, 1824, 1824, 1824, + + 1825, 1825, 1825, 1825, 1694, 1826, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, + 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, + + 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, + 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, + 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, + 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, + + 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, + 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, + 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, + 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, + + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + + 1907, 1907, 1907, 1908, 1908, 1909, 1908, 1908, + 1909, 1908, 1908, 1910, 1908, 1911, 200, 200, + 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, + 1920, 1921, 200, 200, 200, 200, 200, 200, + + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 1922, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923, + + 1923, 1923, 1923, 1923, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 831, 831, 831, 831, 831, 831, 831, 831, + 831, 831, 831, 831, 831, 831, 831, 831, + + 831, 831, 831, 831, 831, 831, 831, 200, + 200, 200, 200, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 200, 200, 200, 200, + + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1640, 1640, + 1926, 1640, 1926, 1640, 1640, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1640, + + 1926, 1640, 1926, 1640, 1640, 1926, 1926, 1640, + 1640, 1640, 1926, 1926, 1926, 1926, 1927, 1927, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1929, 1929, 1929, 1639, 1639, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, + 1930, 1930, 1639, 1639, 1639, 1639, 1639, 1639, + + 1931, 1932, 1933, 1934, 1935, 1936, 1936, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 1937, 1938, 1939, 1940, 1941, + 200, 200, 200, 200, 200, 1942, 1943, 1944, + + 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, + 1945, 1946, 1944, 1944, 1944, 1944, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 297, + 1944, 1944, 1944, 1944, 1944, 297, 1944, 297, + + 1944, 1944, 297, 1944, 1944, 297, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1945, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1948, 1948, 1948, 1948, 1948, 1948, + 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, + + 1948, 1948, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1590, 1314, + + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 343, 343, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 343, 343, 343, 343, 343, 343, 343, 343, + 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, + 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, - 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, - 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, - 1931, 1931, 1931, 296, 296, 296, 296, 296, - 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, - - 1933, 1934, 1933, 1934, 1934, 1934, 1933, 1933, - 1933, 1934, 1933, 1933, 1934, 1933, 1934, 1934, - 1933, 1934, 296, 296, 296, 296, 296, 296, - 296, 1935, 1935, 1935, 1935, 296, 296, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 1936, 1936, 1936, 1936, 1937, 1937, 1938, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - - 1939, 1939, 1939, 1939, 1939, 1939, 1939, 1939, - 1939, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, - 1948, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, - 1949, 1949, 1949, 1949, 1949, 1949, 1949, 296, - - 1950, 1951, 1950, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1950, 335, 343, 343, + 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, - 1951, 1951, 1951, 1951, 1951, 1951, 1953, 1954, - 1954, 1955, 1955, 1955, 1955, 1955, 199, 199, - 199, 199, 1956, 1957, 1958, 1959, 1960, 1961, - 1962, 1963, 1964, 1965, 1965, 1965, 1965, 1965, - 1965, 1965, 1965, 1965, 1965, 1965, 1966, 1967, - 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 1976, - 1977, 1977, 1978, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1980, 1979, 1980, 1979, 1979, 1979, - 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, - 1979, 1979, 1979, 1980, 1979, 1979, 1979, 1979, - 1978, 1978, 1978, 1977, 1977, 1977, 1977, 1978, - 1978, 1981, 1982, 1983, 1983, 1984, 1985, 1985, - 1985, 1985, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, - 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, - 1986, 1986, 1986, 1986, 1986, 1986, 1986, 1986, - 1986, 199, 199, 199, 199, 199, 199, 199, - 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, - 1995, 1996, 199, 199, 199, 199, 199, 199, - - 1997, 1997, 1997, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1999, - 2000, 2000, 2000, 2000, 2001, 2000, 2002, 2002, - 2000, 2000, 2000, 2003, 2003, 199, 2004, 2005, - 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, - 2014, 2015, 2015, 2015, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, - 2016, 2016, 2016, 2017, 2018, 2019, 2016, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2020, 2020, 2021, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, + 1952, 1953, 1954, 1955, 1956, 1957, 1957, 1958, + 1959, 1960, 200, 200, 200, 200, 200, 200, + + 171, 171, 171, 171, 1171, 1171, 1171, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1675, 1675, + 1961, 1962, 1962, 1963, 1963, 1964, 1965, 1964, + 1965, 1964, 1965, 1964, 1965, 1964, 1965, 1964, + + 1965, 1964, 1965, 1964, 1965, 1602, 1602, 1966, + 1967, 1961, 1961, 1961, 1961, 1963, 1963, 1963, + 1968, 1969, 1970, 200, 1971, 1972, 1973, 1973, + 1962, 1367, 1368, 1367, 1368, 1367, 1368, 1974, + + 1961, 1961, 1975, 1976, 1977, 1978, 1979, 200, + 1961, 1370, 1328, 1961, 200, 200, 200, 200, + 1947, 1947, 1947, 1980, 1947, 343, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, + 1947, 1947, 1947, 1947, 1947, 343, 343, 1981, + + 200, 1973, 1961, 1974, 1370, 1328, 1961, 1982, + 1367, 1368, 1961, 1975, 1968, 1976, 1970, 1983, + 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, + 1992, 1993, 1972, 1971, 1994, 1979, 1995, 1973, + + 1961, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1997, 1961, 1998, 1999, 1963, + + 1999, 2000, 2000, 2000, 2000, 2000, 2000, 2000, + 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, + 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, + 2000, 2000, 2000, 1997, 1979, 1998, 1979, 2001, + + 2002, 2003, 1367, 1368, 2004, 2005, 2006, 2007, + 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, + 2008, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2009, 2009, + + 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, + 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, + 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, + 2010, 2010, 2010, 2010, 2010, 2010, 2010, 200, + + 200, 200, 2010, 2010, 2010, 2010, 2010, 2010, + 200, 200, 2010, 2010, 2010, 2010, 2010, 2010, + 200, 200, 2010, 2010, 2010, 2010, 2010, 2010, + 200, 200, 2010, 2010, 2010, 200, 200, 200, + + 2011, 1370, 1979, 1999, 1598, 1370, 1370, 200, + 1390, 1366, 1366, 1366, 1366, 1390, 1390, 200, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 2012, 2012, 2012, 2013, 51, 2014, 2014, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 200, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 200, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 200, 2015, 2015, 200, 2015, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 200, 200, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 200, 200, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 200, 200, 200, 200, 200, + + 2016, 2017, 2016, 200, 200, 200, 200, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, + 2018, 2018, 2018, 2018, 200, 200, 200, 2019, + 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, + + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, + 2020, 2020, 2020, 2020, 2020, 2021, 2021, 2021, + 2021, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2022, 2022, 2022, 2021, 2021, 2021, 2020, 2020, - 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2021, - 2023, 2022, 2022, 2022, 2022, 2024, 2024, 2025, - 2026, 199, 199, 199, 199, 2027, 199, 199, - 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, - 2036, 2037, 2038, 199, 199, 199, 199, 199, - 199, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, + 2022, 2022, 2021, 2023, 2024, 200, 200, 200, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 200, 200, 200, 200, + + 2024, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1174, 200, 200, + + 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, + 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, + 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, + 2025, 2025, 2025, 2025, 2025, 200, 200, 200, + + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1071, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 200, 200, 200, 200, + + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2028, + 2028, 2028, 2028, 2028, 2028, 2028, 2028, 2029, + + 2030, 2030, 2030, 2030, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, + + 2031, 2032, 2031, 2031, 2031, 2031, 2031, 2031, + 2031, 2031, 2032, 200, 200, 200, 200, 200, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2034, 2034, + 2034, 2034, 2034, 200, 200, 200, 200, 200, + + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 200, 2036, + + 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, + 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, + 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, + 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, + + 2037, 2037, 2037, 2037, 200, 200, 200, 200, + 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, + 2038, 2039, 2039, 2039, 2039, 2039, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, - 2040, 2040, 199, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, - 2040, 2040, 2040, 2040, 2041, 2041, 2041, 2042, - 2042, 2042, 2041, 2041, 2042, 2043, 2044, 2042, - 2045, 2045, 2046, 2045, 2045, 2046, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2048, - 2049, 2049, 2049, 2048, 2048, 2048, 2048, 2048, - 2048, 2050, 2051, 199, 199, 199, 199, 199, - 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, - 2060, 2061, 199, 199, 199, 199, 199, 199, - - 199, 2062, 2063, 2063, 199, 2064, 2064, 2064, - 2064, 2064, 2064, 2064, 2064, 199, 199, 2064, - 2064, 199, 199, 2064, 2064, 2064, 2064, 2064, + + 2040, 2040, 2040, 2040, 2040, 2040, 2041, 2041, + 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + + 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, + 2042, 2042, 2042, 2042, 2042, 2042, 2043, 2043, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, + + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 200, 200, + + 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, + 2054, 2055, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 200, 200, 200, 200, 200, 200, 200, 200, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + + 2057, 2057, 2057, 2057, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2058, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 2059, 2059, 2059, 2059, 2059, 2059, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2060, 2060, 2060, 2060, 2060, 2060, 297, 297, + 2060, 297, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060, + 2060, 2060, 2060, 2060, 2060, 2060, 297, 2060, + 2060, 297, 297, 297, 2060, 297, 297, 2060, + + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 2061, 2061, + 2061, 2061, 2061, 2061, 2061, 2061, 297, 2062, + 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, + 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, - 2064, 199, 2064, 2064, 2064, 2064, 2064, 2064, - 2064, 199, 2064, 2064, 199, 2064, 2064, 2064, - 2064, 2064, 199, 199, 2065, 2064, 2066, 2063, - 2062, 2063, 2063, 2063, 2063, 199, 199, 2063, - 2063, 199, 199, 2067, 2067, 2068, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 2066, - 199, 199, 199, 199, 199, 2064, 2064, 2064, - 2064, 2064, 2063, 2063, 199, 199, 2069, 2069, - 2069, 2069, 2069, 2069, 2069, 199, 199, 199, - 2069, 2069, 2069, 2069, 2069, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2071, 2072, 2072, 2073, 2073, 2073, 2073, 2073, - 2073, 2072, 2074, 2075, 2075, 2071, 2075, 2073, - 2073, 2072, 2076, 2077, 2070, 2070, 2078, 2070, - 199, 199, 199, 199, 199, 199, 199, 199, - 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, - 2087, 2088, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, - 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2090, - 2091, 2091, 2092, 2092, 2092, 2092, 199, 199, - 2091, 2091, 2093, 2093, 2092, 2092, 2091, 2094, - 2095, 2096, 2097, 2097, 2098, 2098, 2099, 2099, - 2099, 2097, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2101, 2101, 2101, 2102, 2102, 2102, 2102, 2102, - 2102, 2102, 2102, 2101, 2101, 2102, 2101, 2103, - 2102, 2104, 2104, 2105, 2100, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, - 2114, 2115, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2117, 2118, 2117, 2118, 2118, - 2117, 2117, 2117, 2117, 2117, 2117, 2119, 2120, - 199, 199, 199, 199, 199, 199, 199, 199, - 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, - 2129, 2130, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, - 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, - 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, - 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, - 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, - 2141, 2142, 2143, 2143, 2143, 2143, 2143, 2143, - 2143, 2143, 2143, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 2144, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, - 2145, 199, 199, 199, 199, 199, 199, 199, - - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146, - 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 2148, 2148, 2149, 2149, 2149, 2149, 2149, - 2149, 2149, 2149, 2149, 2149, 2149, 2149, 199, - 2150, 2150, 2150, 2150, 2151, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2153, 2153, 2153, 2154, 2154, 2154, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2154, 2152, 2152, 2152, 2153, 2154, - 2153, 2154, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2153, 2154, 2154, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2152, 2152, 2152, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2155, - 2155, 199, 199, 199, 199, 199, 199, 199, - 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, - 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, - 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, - 2156, 2156, 2156, 2156, 2156, 2156, 2156, 199, - 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, - 2165, 2166, 199, 199, 199, 199, 2167, 2167, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, - 2168, 2168, 2168, 2168, 2168, 2168, 199, 199, - 2169, 2169, 2169, 2169, 2169, 2170, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2173, - 2173, 2174, 2175, 2175, 2176, 2176, 2176, 2176, - 2177, 2177, 2177, 2177, 2173, 2176, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, - 2186, 2187, 199, 2188, 2188, 2188, 2188, 2188, - 2188, 2188, 199, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 199, 199, 199, 199, 199, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, - 2189, 2189, 2189, 2189, 2189, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2189, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 2190, 2190, 2190, 2190, 2190, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 2191, - 2191, 2191, 2191, 2192, 2192, 2192, 2192, 2192, - 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2193, 2194, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 199, 199, 199, 199, 199, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2195, 2195, 2195, 199, 199, 199, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 199, 199, 199, 199, 199, 199, 199, - 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 199, 199, 2196, 2197, 2198, 2199, - 2200, 2200, 2200, 2200, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 199, - 199, 1325, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2202, 2202, - 2202, 2202, 2202, 2202, 2202, 2203, 2204, 2205, - 2205, 2205, 2201, 2201, 2201, 2206, 2203, 2203, - 2203, 2203, 2203, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2208, 2208, 2208, 2208, 2208, - 2208, 2208, 2208, 2201, 2201, 2209, 2209, 2209, - 2209, 2209, 2208, 2208, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2209, 2209, 2209, 2209, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2202, 2202, 2202, 2202, 2202, - 2202, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 2201, 2201, 2201, 2201, 2201, 2201, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842, - 1842, 1842, 2210, 2210, 2210, 1842, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1357, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, - 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211, - 2211, 2211, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 199, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 199, 2212, 2212, - 199, 199, 2212, 199, 199, 2212, 2212, 199, - 199, 2212, 2212, 2212, 2212, 199, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 199, 2213, 199, 2213, 2213, 2213, - 2213, 2214, 2213, 2213, 199, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - - 2213, 2213, 2213, 2213, 2212, 2212, 199, 2212, - 2212, 2212, 2212, 199, 199, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 199, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 199, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 199, 2212, 2212, 2212, 2212, 199, - 2212, 2212, 2212, 2212, 2212, 199, 2212, 199, - 199, 199, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 199, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 1317, 1317, 199, 199, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2215, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2216, 2213, 2213, 2213, 2213, - 2213, 2213, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2215, 2213, 2213, 2213, 2213, - - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2216, 2213, 2213, - 2213, 2213, 2213, 2213, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2215, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2216, - 2213, 2213, 2213, 2213, 2213, 2213, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2215, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2216, 2213, 2213, 2213, 2213, 2213, 2213, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212, - 2212, 2215, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2216, 2213, 2213, 2213, 2213, - 2213, 2213, 2217, 2218, 199, 199, 2219, 2220, - 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, - 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, - 2227, 2228, 2219, 2220, 2221, 2222, 2223, 2224, - 2225, 2226, 2227, 2228, 2219, 2220, 2221, 2222, - 2223, 2224, 2225, 2226, 2227, 2228, 2219, 2220, - 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, - - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 2229, 2229, 2229, - 2229, 2229, 2229, 2229, 2229, 296, 296, 2230, - 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, - 2231, 2231, 2231, 2231, 2231, 2231, 2231, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, - - 2232, 2232, 2232, 2232, 342, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, + 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2065, + 2065, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 297, + + 297, 297, 297, 297, 297, 297, 297, 2068, + 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, + 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, + 2069, 2069, 2069, 297, 2069, 2069, 297, 297, + 297, 297, 297, 2070, 2070, 2070, 2070, 2070, + + 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, + 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071, + 2071, 2071, 2071, 2071, 2071, 2071, 2072, 2072, + 2072, 2072, 2073, 2073, 297, 297, 297, 2074, + + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 297, 297, 297, 297, 297, 2076, + + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, + + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 297, 297, 297, 297, 2079, 2079, 2078, 2078, + + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 297, 297, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, + + 2080, 2081, 2081, 2081, 297, 2081, 2081, 297, + 297, 297, 297, 297, 2081, 2082, 2081, 2083, + 2080, 2080, 2080, 2080, 297, 2080, 2080, 2080, + 297, 2080, 2080, 2080, 2080, 2080, 2080, 2080, + + 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, + 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, + 2080, 2080, 2080, 2080, 297, 297, 297, 297, + 2083, 2084, 2082, 297, 297, 297, 297, 2085, + + 2086, 2087, 2088, 2089, 2090, 2090, 2090, 2090, + 297, 297, 297, 297, 297, 297, 297, 297, + 2091, 2091, 2091, 2091, 2091, 2091, 2092, 2092, + 2093, 297, 297, 297, 297, 297, 297, 297, + + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2095, 2095, 2096, + + 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, + 2097, 2097, 2097, 2097, 2097, 2098, 2098, 2098, + + 2099, 2099, 2099, 2099, 2099, 2100, 2101, 2100, + 2102, 2100, 2100, 2101, 2101, 2103, 2100, 2100, + 2100, 2100, 2100, 2099, 2099, 2099, 2099, 2103, + 2099, 2099, 2099, 2099, 2099, 2100, 2099, 2099, + + 2099, 2100, 2101, 2101, 2100, 2104, 2105, 297, + 297, 297, 297, 2106, 2106, 2106, 2106, 2107, + 2108, 2108, 2108, 2108, 2108, 2108, 2109, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 297, 297, + 297, 2111, 2111, 2111, 2111, 2111, 2111, 2111, + + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112, + 2112, 2112, 2112, 2112, 2112, 2112, 297, 297, + 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, + + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 297, 297, 297, 297, 297, + 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, + + 2116, 2117, 2116, 2117, 2117, 2117, 2116, 2116, + 2116, 2117, 2116, 2116, 2117, 2116, 2117, 2117, + 2116, 2117, 297, 297, 297, 297, 297, 297, + 297, 2118, 2118, 2118, 2118, 297, 297, 297, + + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 2119, 2119, 2119, 2119, 2120, 2120, 2121, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + + 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122, + 2122, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, + 2124, 2124, 2124, 297, 297, 297, 297, 297, + 297, 297, 2125, 2125, 2125, 2125, 2125, 2125, + + 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, + 2134, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 297, + + 2136, 2137, 2136, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, + 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, + 2137, 2137, 2137, 2137, 2137, 2137, 2139, 2140, + 2140, 2141, 2141, 2141, 2141, 2141, 200, 200, + 200, 200, 2142, 2143, 2144, 2145, 2146, 2147, + 2148, 2149, 2150, 2151, 2151, 2151, 2151, 2151, + 2151, 2151, 2151, 2151, 2151, 2151, 2152, 2153, + 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2162, + 2163, 2163, 2164, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2166, 2165, 2166, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2166, 2165, 2165, 2165, 2165, + 2164, 2164, 2164, 2163, 2163, 2163, 2163, 2164, + 2164, 2167, 2168, 2169, 2169, 2170, 2171, 2171, + 2171, 2171, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 200, 200, 200, 200, 200, 200, 200, + 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, + 2181, 2182, 200, 200, 200, 200, 200, 200, + + 2183, 2183, 2183, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2185, + 2186, 2186, 2186, 2186, 2187, 2186, 2188, 2188, + 2186, 2186, 2186, 2189, 2189, 200, 2190, 2191, + 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, + 2200, 2201, 2201, 2201, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, + 2202, 2202, 2202, 2203, 2204, 2205, 2202, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2206, 2206, 2207, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, + 2208, 2208, 2208, 2207, 2207, 2207, 2206, 2206, + 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2207, + 2209, 2208, 2208, 2208, 2208, 2210, 2210, 2211, + 2212, 2213, 2214, 2215, 2215, 2216, 200, 200, + 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, + 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2231, + 200, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 342, 2232, 2232, 342, 2232, 342, 342, 2232, - 342, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 342, 2232, 2232, 2232, 2232, - 342, 2232, 342, 2232, 342, 342, 342, 342, - 342, 342, 2232, 342, 342, 342, 342, 2232, - 342, 2232, 342, 2232, 342, 2232, 2232, 2232, - 342, 2232, 2232, 342, 2232, 342, 342, 2232, - 342, 2232, 342, 2232, 342, 2232, 342, 2232, - 342, 2232, 2232, 342, 2232, 342, 342, 2232, - 2232, 2232, 2232, 342, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 342, 2232, 2232, 2232, 2232, - 342, 2232, 2232, 2232, 2232, 342, 2232, 342, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 342, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 342, 342, 342, 342, - 342, 2232, 2232, 2232, 342, 2232, 2232, 2232, - 2232, 2232, 342, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 2233, 2233, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 199, 199, 199, 199, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 199, - 199, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1394, - 199, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 199, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 2234, 2234, 2235, 2236, 2237, 2238, 2239, 2240, - 2241, 2242, 2243, 2244, 2244, 199, 199, 199, - 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, - 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, - 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, - 2245, 2245, 2245, 2245, 2245, 2245, 2245, 199, - 2246, 2247, 2246, 2246, 2246, 2246, 2246, 2246, - 2246, 2246, 2246, 2246, 2246, 2247, 2246, 2247, - 2246, 2246, 2247, 2246, 2246, 2246, 2247, 2246, - 2246, 2246, 2245, 2245, 2245, 2245, 2245, 2248, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2250, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2250, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, - 2249, 2249, 2251, 2251, 199, 199, 199, 199, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, - 2249, 2250, 2249, 2250, 2250, 2249, 2249, 2250, - 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, - 2249, 2249, 772, 772, 772, 772, 2252, 2252, - 2245, 2252, 2252, 2252, 2252, 2252, 2252, 2252, - 2252, 2252, 2252, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 2253, 2253, - 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, - 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, - 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, - - 2254, 2255, 2255, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 1543, 2255, 2255, 2255, 2255, 2255, 2255, - 2255, 2255, 2255, 199, 199, 199, 199, 199, - 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, - 1543, 199, 199, 199, 199, 199, 199, 199, - 2255, 2255, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 199, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1394, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1394, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1362, 1362, 1394, 1394, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1360, 1360, 1361, - 1361, 1361, 1361, 1361, 1360, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1394, 1361, 1361, - 1361, 1361, 1361, 1394, 1394, 1394, 1394, 199, - 199, 199, 199, 199, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1394, - 1361, 1394, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1360, 1361, 1360, 1361, 1360, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1360, - 1361, 1360, 1360, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1394, 1361, 1361, 1361, 1361, 1394, 1394, 199, - - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1362, 1362, - 2256, 2256, 2256, 2256, 1362, 1362, 1362, 1362, - 1362, 1362, 1394, 199, 199, 199, 199, 199, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 199, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 199, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1362, 1362, 1362, 1362, - 1362, 1362, 1394, 1361, 1361, 1361, 1361, 1361, - - 2257, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 2257, 1361, 1361, 1361, 2257, 1361, 2257, - 1361, 2257, 1361, 2257, 1361, 1361, 1361, 2257, - 1361, 1361, 1361, 1361, 1361, 1361, 2257, 2257, - 1361, 1361, 1361, 1361, 2257, 1361, 2257, 2257, - 1361, 1361, 1361, 1361, 2257, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1394, 1394, 199, 199, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 2258, 2258, - 2258, 2259, 2259, 2259, 1362, 1362, 1362, 1362, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 199, 199, 199, - 1394, 1394, 1394, 1394, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 199, 199, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 199, 199, 199, 199, 199, 199, 199, 199, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, - 1362, 1362, 1362, 1362, 1362, 1362, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 2260, 2260, - - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, + 2232, 2232, 2232, 2232, 2232, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 200, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233, + 2233, 2233, 2233, 2233, 2234, 2234, 2234, 2235, + 2235, 2235, 2234, 2234, 2235, 2236, 2237, 2235, + 2238, 2238, 2239, 2238, 2238, 2239, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2240, 2240, 2240, 2240, 2240, 2240, 2240, 200, + 2240, 200, 2240, 2240, 2240, 2240, 200, 2240, + 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, + 2240, 2240, 2240, 2240, 2240, 2240, 200, 2240, + 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, + 2240, 2241, 200, 200, 200, 200, 200, 200, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2243, + 2244, 2244, 2244, 2243, 2243, 2243, 2243, 2243, + 2243, 2245, 2246, 200, 200, 200, 200, 200, + 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, + 2255, 2256, 200, 200, 200, 200, 200, 200, + + 2257, 2258, 2259, 2259, 200, 2260, 2260, 2260, + 2260, 2260, 2260, 2260, 2260, 200, 200, 2260, + 2260, 200, 200, 2260, 2260, 2260, 2260, 2260, + 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, + 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, + 2260, 200, 2260, 2260, 2260, 2260, 2260, 2260, + 2260, 200, 2260, 2260, 200, 2260, 2260, 2260, + 2260, 2260, 200, 200, 2261, 2260, 2262, 2259, + 2258, 2259, 2259, 2259, 2259, 200, 200, 2259, + 2259, 200, 200, 2263, 2263, 2264, 200, 200, + 2265, 200, 200, 200, 200, 200, 200, 2262, + 200, 200, 200, 200, 200, 2260, 2260, 2260, + 2260, 2260, 2259, 2259, 200, 200, 2266, 2266, + 2266, 2266, 2266, 2266, 2266, 200, 200, 200, + 2266, 2266, 2266, 2266, 2266, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, + 2268, 2269, 2269, 2270, 2270, 2270, 2270, 2270, + 2270, 2269, 2271, 2272, 2272, 2268, 2272, 2270, + 2270, 2269, 2273, 2274, 2267, 2267, 2275, 2267, + 200, 200, 200, 200, 200, 200, 200, 200, + 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, + 2284, 2285, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2287, + 2288, 2288, 2289, 2289, 2289, 2289, 200, 200, + 2288, 2288, 2290, 2290, 2289, 2289, 2288, 2291, + 2292, 2293, 2294, 2294, 2295, 2295, 2296, 2296, + 2296, 2294, 2297, 2297, 2297, 2297, 2297, 2297, + 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, + 2298, 2298, 2298, 2298, 2299, 2299, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2301, 2301, 2301, 2302, 2302, 2302, 2302, 2302, + 2302, 2302, 2302, 2301, 2301, 2302, 2301, 2303, + 2302, 2304, 2304, 2305, 2300, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, + 2314, 2315, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2317, 2318, 2317, 2318, 2318, + 2317, 2317, 2317, 2317, 2317, 2317, 2319, 2320, + 200, 200, 200, 200, 200, 200, 200, 200, + 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, + 2329, 2330, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 200, 200, 200, 2332, 2332, 2332, + 2333, 2333, 2332, 2332, 2332, 2332, 2333, 2332, + 2332, 2332, 2332, 2334, 200, 200, 200, 200, + 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, + 2343, 2344, 2345, 2345, 2346, 2346, 2346, 2347, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, + 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, + 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, + 2349, 2349, 2349, 2349, 2349, 2349, 2349, 2349, + 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, + 2358, 2359, 2360, 2360, 2360, 2360, 2360, 2360, + 2360, 2360, 2360, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2361, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 200, 200, 200, 200, 200, 200, 200, + + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, + 2364, 2365, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 2367, 2367, 2367, 2367, 2367, + 2367, 2367, 2367, 2367, 2367, 2367, 2367, 200, + 2368, 2368, 2368, 2368, 2369, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2371, 2371, 2371, 2372, 2372, 2372, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2372, 2370, 2370, 2370, 2371, 2372, + 2371, 2372, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2371, 2372, 2372, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2374, 2375, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, + 2376, 200, 200, 200, 200, 200, 200, 200, + 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377, + 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377, + 2377, 2377, 2377, 2377, 2377, 2377, 2377, 2377, + 2377, 2377, 2377, 2377, 2377, 2377, 2377, 200, + 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, + 2386, 2387, 200, 200, 200, 200, 2388, 2388, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, + 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, + 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, + 2389, 2389, 2389, 2389, 2389, 2389, 200, 200, + 2390, 2390, 2390, 2390, 2390, 2391, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2394, + 2394, 2395, 2396, 2396, 2397, 2397, 2397, 2397, + 2398, 2398, 2398, 2398, 2394, 2397, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, + 2407, 2408, 200, 2409, 2409, 2409, 2409, 2409, + 2409, 2409, 200, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 200, 200, 200, 200, 200, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, + 2410, 2410, 2410, 2410, 2410, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2410, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 2411, + 2411, 2411, 2411, 2411, 2411, 2411, 2411, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 2412, + 2412, 2412, 2412, 2413, 2413, 2413, 2413, 2413, + 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2414, 2415, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 200, 200, 200, 200, 200, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 200, 200, 200, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 200, 200, 200, 200, 200, 200, 200, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 200, 200, 2417, 2418, 2419, 2420, + 2421, 2421, 2421, 2421, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 200, + 200, 1412, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2423, 2423, + 2423, 2423, 2423, 2423, 2423, 2424, 2425, 2426, + 2426, 2426, 2422, 2422, 2422, 2427, 2424, 2424, + 2424, 2424, 2424, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2429, 2429, 2429, 2429, 2429, + 2429, 2429, 2429, 2422, 2422, 2430, 2430, 2430, + 2430, 2430, 2429, 2429, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2430, 2430, 2430, 2430, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2423, 2423, 2423, 2423, 2423, + 2423, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2431, 2431, + 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, + 2431, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, + 2022, 2022, 2432, 2432, 2432, 2022, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, + 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, + 2433, 2433, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 200, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 200, 2434, 2434, + 200, 200, 2434, 200, 200, 2434, 2434, 200, + 200, 2434, 2434, 2434, 2434, 200, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 200, 2435, 200, 2435, 2435, 2435, + 2435, 2436, 2435, 2435, 200, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + + 2435, 2435, 2435, 2435, 2434, 2434, 200, 2434, + 2434, 2434, 2434, 200, 200, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 200, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 200, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 200, 2434, 2434, 2434, 2434, 200, + 2434, 2434, 2434, 2434, 2434, 200, 2434, 200, + 200, 200, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 200, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 1404, 1404, 200, 200, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2437, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2438, 2435, 2435, 2435, 2435, + 2435, 2435, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2437, 2435, 2435, 2435, 2435, + + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2438, 2435, 2435, + 2435, 2435, 2435, 2435, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2437, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2438, + 2435, 2435, 2435, 2435, 2435, 2435, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2437, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2438, 2435, 2435, 2435, 2435, 2435, 2435, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, + 2434, 2437, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2438, 2435, 2435, 2435, 2435, + 2435, 2435, 2439, 2440, 200, 200, 2441, 2442, + 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, + 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, + 2449, 2450, 2441, 2442, 2443, 2444, 2445, 2446, + 2447, 2448, 2449, 2450, 2441, 2442, 2443, 2444, + 2445, 2446, 2447, 2448, 2449, 2450, 2441, 2442, + 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, + + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2451, + 2451, 2451, 2451, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2452, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2452, 2451, 2451, 2453, + 2454, 2453, 2453, 2455, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 2452, 2452, 2452, 2452, 2452, + 200, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 2452, 2452, 2452, 2452, 2452, 2452, 2452, 2452, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 297, 297, 2457, + 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, + 2458, 2458, 2458, 2458, 2458, 2458, 2458, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, + + 2459, 2459, 2459, 2459, 343, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 343, 2459, 2459, 343, 2459, 343, 343, 2459, + 343, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 343, 2459, 2459, 2459, 2459, + 343, 2459, 343, 2459, 343, 343, 343, 343, + 343, 343, 2459, 343, 343, 343, 343, 2459, + 343, 2459, 343, 2459, 343, 2459, 2459, 2459, + 343, 2459, 2459, 343, 2459, 343, 343, 2459, + 343, 2459, 343, 2459, 343, 2459, 343, 2459, + 343, 2459, 2459, 343, 2459, 343, 343, 2459, + 2459, 2459, 2459, 343, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 343, 2459, 2459, 2459, 2459, + 343, 2459, 2459, 2459, 2459, 343, 2459, 343, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 343, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 343, 343, 343, 343, + 343, 2459, 2459, 2459, 343, 2459, 2459, 2459, + 2459, 2459, 343, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 2460, 2460, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 200, 200, 200, 200, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1482, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 200, + 200, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1483, + 200, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 200, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 2461, 2461, 2462, 2463, 2464, 2465, 2466, 2467, + 2468, 2469, 2470, 2471, 2471, 200, 200, 200, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472, + 2472, 2472, 2472, 2472, 2472, 2472, 2472, 200, + 2473, 2474, 2473, 2473, 2473, 2473, 2473, 2473, + 2473, 2473, 2473, 2473, 2473, 2474, 2473, 2474, + 2473, 2473, 2474, 2473, 2473, 2473, 2474, 2473, + 2473, 2473, 2472, 2472, 2472, 2472, 2472, 2475, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2477, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2477, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, + 2476, 2476, 2478, 2478, 200, 200, 200, 200, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, + 2476, 2477, 2476, 2477, 2477, 2476, 2476, 2477, + 2476, 2476, 2476, 2476, 2476, 2476, 2476, 2476, + 2476, 2476, 778, 778, 778, 778, 2479, 2479, + 2472, 2479, 2479, 2479, 2479, 2479, 2479, 2479, + 2479, 2479, 2479, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 2480, 2480, + 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, + 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, + 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, + + 2481, 2482, 2482, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 1632, 2482, 2482, 2482, 2482, 2482, 2482, + 2482, 2482, 2482, 200, 200, 200, 200, 200, + 1632, 1632, 1632, 1632, 1632, 1632, 1632, 1632, + 1632, 200, 200, 200, 200, 200, 200, 200, + 2482, 2482, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 2483, 2483, 2483, + 1450, 1450, 1450, 1450, 1450, 1450, 1483, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1483, 2483, 2483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1451, 1451, 1483, 1483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1449, 1449, 1450, + 1450, 1450, 1450, 1450, 1449, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1483, 1450, 1450, + 1450, 1450, 1450, 1483, 1483, 1483, 1483, 2483, + 2483, 2483, 2483, 2483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 2483, 2483, 2483, 2484, 2484, 2484, 2484, 2484, + + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1483, + 1450, 1483, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1449, 1450, 1449, 1450, 1449, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1449, + 1450, 1449, 1449, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1483, 1450, 1450, 1450, 1450, 1483, 1483, 2483, + + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1451, 1451, + 2485, 2485, 2485, 2485, 1451, 1451, 1451, 1451, + 1451, 1451, 1483, 2483, 2483, 2483, 2483, 2483, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 200, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 200, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1451, 1451, 1451, 1451, + 1451, 1451, 1483, 1450, 1450, 1450, 1450, 1450, + + 2486, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 2486, 1450, 1450, 1450, 2486, 1450, 2486, + 1450, 2486, 1450, 2486, 1450, 1450, 1450, 2486, + 1450, 1450, 1450, 1450, 1450, 1450, 2486, 2486, + 1450, 1450, 1450, 1450, 2486, 1450, 2486, 2486, + 1450, 1450, 1450, 1450, 2486, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1483, 1483, 2483, 2483, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 2487, 2487, + 2487, 2488, 2488, 2488, 1451, 1451, 1451, 1451, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1450, 1450, + 1450, 1450, 1450, 1450, 1450, 1450, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 2483, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 200, 200, 200, + 1483, 1483, 1483, 1483, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 200, 200, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 200, 200, 200, 200, 200, 200, 200, 200, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, + 1451, 1451, 1451, 1451, 1451, 1451, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2483, 2483, 2483, 2483, 2483, 2483, 2483, 2483, + 2483, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2483, 2483, 2483, 2483, 2483, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 2483, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 2489, 2489, + + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1554, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, - 2262, 2262, 2262, 2262, 2262, 2262, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, - 2263, 2263, 2263, 2263, 2263, 2263, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 2260, 2260, - - 1265, 2207, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, - - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2265, 2260, 2260, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, + 1643, 1643, 1643, 1643, 1643, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 2491, 2491, + 2491, 2491, 2491, 2491, 2491, 2491, 1639, 1639, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1645, 1645, 1645, 1645, 1645, 1645, + 1645, 1645, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, + 1639, 1639, 1639, 1639, 1639, 1639, 2489, 2489, + + 1351, 2428, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, + + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, + 2494, 2494, 2494, 2494, 2494, 2494, 2489, 2489, }; #define GET_PROP_INDEX(ucs4) \ @@ -5432,19 +5817,19 @@ static const Properties uc_properties[] = { { 24, 10, 0, 0, -1, -16, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 13, 3, 2 }, { 5, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 1, 17, 0, 8, 7, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 80, 1, 77, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 404, 1, 401, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 121, 0, 121, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 17, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 83, 0, 0, 0, 0, 0, 0, 1, 17, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 407, 0, 0, 0, 0, 0, 0, 1, 17, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -232, 0, -232, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 80, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 162, 1, 162, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 486, 1, 486, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -121, 0, 0, 0, 0, 0, -121, 1, 17, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -300, 0, -300, 0, -268, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 195, 0, 195, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, @@ -5471,7 +5856,7 @@ static const Properties uc_properties[] = { { 16, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 0, 0, 1, 1, 80, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -2, 0, -1, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -79, 0, -79, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 173, 1, 173, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 497, 1, 497, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -97, 0, 0, 0, 0, 0, -97, 4, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -56, 0, 0, 0, 0, 0, -56, 4, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 4, 17, 0, 8, 7, 12, 3 }, @@ -5521,6 +5906,7 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, -71, 0, -71, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -219, 0, -219, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 1, 33, 1, 33, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 35, 1, 35, 0, 0, 1, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 8, 12, 2 }, @@ -5576,12 +5962,12 @@ static const Properties uc_properties[] = { { 14, 0, 0, 0, -1, 0, 0, 37, 0, 0, 0, 0, 0, 37, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 64, 0, 0, 0, 0, 0, 64, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 63, 0, 0, 0, 0, 0, 63, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 165, 1, 165, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 489, 1, 489, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 1, 0, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 1, 17, 0, 8, 7, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -38, 0, -38, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -37, 0, -37, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 169, 1, 169, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 493, 1, 493, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 1, 0, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -31, 0, -31, 0, 1, 1, 0, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, @@ -5656,7 +6042,7 @@ static const Properties uc_properties[] = { { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 6 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 11, 12, 6 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -48, 0, -48, 0, 0, 1, 0, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 129, 1, 126, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 453, 1, 450, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 12, 8, 2 }, { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 17, 6 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 6 }, @@ -5732,16 +6118,16 @@ static const Properties uc_properties[] = { { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 8 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 8 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 4, 4, 4, 21, 8 }, - { 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, - { 3, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 2 }, + { 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, + { 3, 5, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, { 25, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 8 }, { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 8 }, { 25, 5, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 9, 11, 8 }, @@ -5820,6 +6206,8 @@ static const Properties uc_properties[] = { { 18, 13, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 8 }, { 18, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 8 }, { 18, 13, 0, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 8 }, + { 18, 13, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 8 }, + { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 8 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 8 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 8 }, { 0, 17, 27, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 8 }, @@ -5922,6 +6310,7 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 14 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 12, 14 }, { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 9, 14 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 14 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 15 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 4, 4, 21, 15 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 8, 12, 15 }, @@ -5977,6 +6366,7 @@ static const Properties uc_properties[] = { { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 17 }, { 0, 17, 84, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 17 }, { 0, 17, 91, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 204, 4, 4, 4, 21, 17 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 17 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 17 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 17 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 17 }, @@ -6022,6 +6412,7 @@ static const Properties uc_properties[] = { { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 19 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 7, 4, 4, 21, 19 }, { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 19 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 19 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 19 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 19 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 14, 9, 11, 19 }, @@ -6213,7 +6604,89 @@ static const Properties uc_properties[] = { { 5, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 12, 27 }, { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 12, 27 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 12, 27 }, - { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 37, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 39, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 41, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 43, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 45, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 47, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 49, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 51, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 53, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 55, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 57, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 59, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 61, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 63, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 65, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 67, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 69, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 71, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 73, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 75, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 77, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 79, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 81, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 83, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 85, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 87, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 89, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 91, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 93, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 95, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 97, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 99, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 101, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 103, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 105, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 107, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 109, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 111, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 113, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 115, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 117, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 119, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 121, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 123, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 125, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 127, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 129, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 131, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 133, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 135, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 137, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 139, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 141, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 143, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 145, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 147, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 149, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 151, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 153, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 155, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 157, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 159, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 161, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 163, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 165, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 167, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 169, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 171, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 173, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 175, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 177, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 179, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 181, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 183, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 185, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 187, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 189, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 191, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 193, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 1, 195, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 12, 28 }, + { 14, 0, 0, 0, -1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 7, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, -8, 0, -8, 0, -8, 17, 0, 0, 8, 6, 12, 28 }, { 20, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 17, 29 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 12, 29 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 12, 29 }, @@ -6308,8 +6781,6 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 8, 30, 48 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 30, 56 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 8, 30, 56 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 4, 4, 30, 56 }, - { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 7, 4, 4, 30, 56 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 14, 9, 11, 56 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 14, 9, 11, 56 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 14, 9, 11, 56 }, @@ -6444,7 +6915,7 @@ static const Properties uc_properties[] = { { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 80, 0, 8, 6, 12, 4 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 80, 0, 8, 6, 12, 5 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 35, 1, 35, 0, 0, 8, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 197, 1, 197, 0, 0, 8, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 3814, 0, 3814, 0, 0, 8, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 80, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 80, 0, 8, 6, 12, 4 }, @@ -6456,11 +6927,11 @@ static const Properties uc_properties[] = { { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 1 }, { 0, 17, 202, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 4, 4, 4, 21, 1 }, { 0, 17, 233, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 4, 4, 4, 21, 1 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 176, 1, 176, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 179, 1, 179, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 182, 1, 182, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 185, 1, 185, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 188, 1, 188, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 500, 1, 500, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 503, 1, 503, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 506, 1, 506, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 509, 1, 509, 0, 0, 1, 17, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 512, 1, 512, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -59, 0, -59, 0, -58, 2, 81, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -7615, 0, 0, 0, 0, 0, -7615, 10, 0, 0, 8, 7, 12, 3 }, @@ -6468,10 +6939,10 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 10, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 8, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -8, 0, 0, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 191, 1, 191, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 194, 1, 194, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 198, 1, 198, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 202, 1, 202, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 515, 1, 515, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 518, 1, 518, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 522, 1, 522, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 526, 1, 526, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 74, 0, 74, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 74, 0, 74, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 86, 0, 86, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, @@ -6484,98 +6955,98 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, 112, 0, 112, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 126, 0, 126, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 126, 0, 126, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 240, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 243, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 246, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 249, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 252, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 255, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 258, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 261, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 240, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 243, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 246, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 249, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 252, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 255, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 258, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 261, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 264, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 267, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 270, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 273, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 276, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 279, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 282, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 285, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 264, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 267, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 270, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 273, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 276, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 279, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 282, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 285, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 288, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 291, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 294, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 297, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 300, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 303, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 306, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 309, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 288, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 291, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 294, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 297, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 300, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 303, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 306, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -8, 1, 309, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 324, 1, 321, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 312, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 330, 1, 327, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 206, 1, 206, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 361, 1, 357, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 564, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 567, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 570, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 573, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 576, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 579, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 582, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 585, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 564, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 567, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 570, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 573, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 576, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 579, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 582, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 585, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 588, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 591, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 594, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 597, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 600, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 603, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 606, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 609, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 588, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 591, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 594, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 597, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 600, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 603, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 606, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 609, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 612, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 615, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 618, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 621, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 624, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 627, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 630, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 633, 0, 8, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 612, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 615, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 618, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 621, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 624, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 627, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 630, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -8, 1, 633, 0, 0, 0, -8, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 648, 1, 645, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 636, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 654, 1, 651, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 530, 1, 530, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 685, 1, 681, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -74, 0, 0, 0, 0, 0, -74, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -74, 0, 0, 0, 0, 0, -74, 1, 85, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -9, 1, 312, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -9, 1, 636, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -7205, 0, -7205, 0, -7173, 1, 85, 0, 8, 6, 12, 4 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 81, 0, 0, 0, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 336, 1, 333, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 315, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 342, 1, 339, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 209, 1, 209, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 369, 1, 365, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 660, 1, 657, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 639, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 666, 1, 663, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 533, 1, 533, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 693, 1, 689, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -86, 0, 0, 0, 0, 0, -86, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -86, 0, 0, 0, 0, 0, -86, 1, 85, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -9, 1, 315, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 212, 1, 212, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 165, 1, 165, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 216, 1, 216, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 219, 1, 219, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -9, 1, 639, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 536, 1, 536, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 489, 1, 489, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 540, 1, 540, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 543, 1, 543, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -100, 0, 0, 0, 0, 0, -100, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -100, 0, 0, 0, 0, 0, -100, 1, 85, 0, 8, 7, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 223, 1, 223, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 169, 1, 169, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 227, 1, 227, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 547, 1, 547, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 493, 1, 493, 0, 0, 1, 85, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 551, 1, 551, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 7, 0, 7, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 230, 1, 230, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 233, 1, 233, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 554, 1, 554, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 557, 1, 557, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -112, 0, 0, 0, 0, 0, -112, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -112, 0, 0, 0, 0, 0, -112, 1, 85, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -7, 0, 0, 0, 0, 0, -7, 1, 17, 0, 8, 7, 12, 4 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 0, 0, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 348, 1, 345, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 318, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 354, 1, 351, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 237, 1, 237, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 377, 1, 373, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 672, 1, 669, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 642, 0, 9, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 678, 1, 675, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 561, 1, 561, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 701, 1, 697, 0, 0, 1, 17, 0, 8, 6, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -128, 0, 0, 0, 0, 0, -128, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -128, 0, 0, 0, 0, 0, -128, 1, 85, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -126, 0, 0, 0, 0, 0, -126, 1, 17, 0, 8, 7, 12, 4 }, { 14, 0, 0, 0, -1, 0, 0, -126, 0, 0, 0, 0, 0, -126, 1, 85, 0, 8, 7, 12, 4 }, - { 16, 0, 0, 0, -1, 0, 0, -9, 1, 318, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, + { 16, 0, 0, 0, -1, 0, 0, -9, 1, 642, 0, 0, 0, -9, 1, 17, 0, 8, 7, 12, 4 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 0, 0, 18, 4 }, { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 0, 5, 17, 2 }, { 6, 9, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 0, 5, 17, 2 }, @@ -6661,6 +7132,7 @@ static const Properties uc_properties[] = { { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 9, 2 }, { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 10, 2 }, { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 9, 2 }, + { 27, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 10, 2 }, { 13, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0 }, { 2, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 1 }, { 2, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 4, 21, 1 }, @@ -6674,8 +7146,8 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 8, 6, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 0, 0, 9, 2 }, { 14, 0, 0, 0, -1, 0, 0, -7517, 0, 0, 0, 0, 0, -7517, 1, 85, 0, 8, 7, 12, 4 }, - { 14, 0, 0, 0, -1, 0, 1, 37, 0, 0, 0, 0, 1, 37, 1, 85, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 39, 0, 0, 0, 0, 1, 39, 1, 85, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 199, 0, 0, 0, 0, 1, 199, 1, 85, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 201, 0, 0, 0, 0, 1, 201, 1, 85, 0, 8, 7, 12, 3 }, { 29, 4, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 28, 0, 0, 0, 0, 0, 28, 1, 0, 0, 8, 7, 12, 3 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80, 0, 8, 8, 12, 2 }, @@ -6696,6 +7168,7 @@ static const Properties uc_properties[] = { { 4, 0, 0, 0, -1, 0, 0, 0, 0, -16, 0, -16, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 8, 8, 12, 3 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 8, 12, 3 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 0, 0, 0, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, @@ -6713,6 +7186,7 @@ static const Properties uc_properties[] = { { 26, 10, 0, 0, -1, 2108, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 2106, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, -138, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 2 }, + { 26, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15, 2 }, { 26, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, { 26, 10, 0, 0, -1, -8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, @@ -6803,19 +7277,19 @@ static const Properties uc_properties[] = { { 26, 10, 0, 0, -1, -2108, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 48, 0, 0, 0, 0, 0, 48, 8, 0, 0, 8, 7, 12, 57 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -48, 0, -48, 0, 0, 8, 0, 0, 8, 6, 12, 57 }, - { 14, 0, 0, 0, -1, 0, 1, 41, 0, 0, 0, 0, 1, 41, 9, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 203, 0, 0, 0, 0, 1, 203, 9, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, -3814, 0, 0, 0, 0, 0, -3814, 9, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 43, 0, 0, 0, 0, 1, 43, 9, 0, 0, 8, 7, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 45, 1, 45, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 47, 1, 47, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 49, 0, 0, 0, 0, 1, 49, 10, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 51, 0, 0, 0, 0, 1, 51, 10, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 53, 0, 0, 0, 0, 1, 53, 10, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 55, 0, 0, 0, 0, 1, 55, 11, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 205, 0, 0, 0, 0, 1, 205, 9, 0, 0, 8, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 207, 1, 207, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 209, 1, 209, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 211, 0, 0, 0, 0, 1, 211, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 213, 0, 0, 0, 0, 1, 213, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 215, 0, 0, 0, 0, 1, 215, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 217, 0, 0, 0, 0, 1, 217, 11, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 6, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 80, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 57, 0, 0, 0, 0, 1, 57, 11, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 59, 0, 0, 0, 0, 1, 59, 11, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 219, 0, 0, 0, 0, 1, 219, 11, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 221, 0, 0, 0, 0, 1, 221, 11, 0, 0, 8, 7, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 8, 0, 0, 8, 7, 12, 46 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 8, 0, 0, 8, 6, 12, 46 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 6, 12, 46 }, @@ -6921,6 +7395,7 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 8, 14, 37 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 14, 38 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 8, 5, 38 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 14, 38 }, @@ -6950,6 +7425,7 @@ static const Properties uc_properties[] = { { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 5 }, { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 8, 12, 5 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 80, 0, 8, 6, 12, 5 }, + { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 5 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 84 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 84 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 4, 21, 84 }, @@ -6959,10 +7435,11 @@ static const Properties uc_properties[] = { { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 12, 2 }, { 17, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 2 }, { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 61, 0, 0, 0, 0, 1, 61, 10, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 223, 0, 0, 0, 0, 1, 223, 10, 0, 0, 8, 7, 12, 3 }, { 28, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 12, 2 }, - { 14, 0, 0, 0, -1, 0, 1, 63, 0, 0, 0, 0, 1, 63, 12, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 225, 0, 0, 0, 0, 1, 225, 12, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 6, 12, 3 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 12, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 12, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 13, 0, 0, 8, 7, 12, 3 }, @@ -6970,12 +7447,16 @@ static const Properties uc_properties[] = { { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 6, 12, 3 }, { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 16, 0, 0, 8, 7, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 16, 0, 0, 8, 6, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 65, 0, 0, 0, 0, 1, 65, 13, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 67, 0, 0, 0, 0, 1, 67, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 69, 0, 0, 0, 0, 1, 69, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 71, 0, 0, 0, 0, 1, 71, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 73, 0, 0, 0, 0, 1, 73, 16, 0, 0, 8, 7, 12, 3 }, - { 14, 0, 0, 0, -1, 0, 1, 75, 0, 0, 0, 0, 1, 75, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 227, 0, 0, 0, 0, 1, 227, 13, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 229, 0, 0, 0, 0, 1, 229, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 231, 0, 0, 0, 0, 1, 231, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 233, 0, 0, 0, 0, 1, 233, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 235, 0, 0, 0, 0, 1, 235, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 237, 0, 0, 0, 0, 1, 237, 16, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 1, 239, 0, 0, 0, 0, 1, 239, 17, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 0, 928, 0, 0, 0, 0, 0, 928, 17, 0, 0, 8, 7, 12, 3 }, + { 14, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 17, 0, 0, 8, 7, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 17, 0, 0, 8, 6, 12, 3 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 3 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 80, 0, 8, 6, 12, 3 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 8, 8, 12, 3 }, @@ -7006,6 +7487,8 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 71 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 4, 21, 11 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 11 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 18, 11 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 11 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 72 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 72 }, { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 14, 9, 11, 72 }, @@ -7089,9 +7572,91 @@ static const Properties uc_properties[] = { { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 86 }, { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 4, 4, 21, 86 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 8, 12, 27 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, -928, 0, -928, 0, 0, 16, 0, 0, 8, 6, 12, 3 }, { 28, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 2 }, { 17, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 6, 12, 3 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 6, 12, 4 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 241, 1, 241, 1, 241, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 243, 1, 243, 1, 243, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 245, 1, 245, 1, 245, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 247, 1, 247, 1, 247, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 249, 1, 249, 1, 249, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 251, 1, 251, 1, 251, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 253, 1, 253, 1, 253, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 255, 1, 255, 1, 255, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 257, 1, 257, 1, 257, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 259, 1, 259, 1, 259, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 261, 1, 261, 1, 261, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 263, 1, 263, 1, 263, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 265, 1, 265, 1, 265, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 267, 1, 267, 1, 267, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 269, 1, 269, 1, 269, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 271, 1, 271, 1, 271, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 273, 1, 273, 1, 273, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 275, 1, 275, 1, 275, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 277, 1, 277, 1, 277, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 279, 1, 279, 1, 279, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 281, 1, 281, 1, 281, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 283, 1, 283, 1, 283, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 285, 1, 285, 1, 285, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 287, 1, 287, 1, 287, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 289, 1, 289, 1, 289, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 291, 1, 291, 1, 291, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 293, 1, 293, 1, 293, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 295, 1, 295, 1, 295, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 297, 1, 297, 1, 297, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 299, 1, 299, 1, 299, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 301, 1, 301, 1, 301, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 303, 1, 303, 1, 303, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 305, 1, 305, 1, 305, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 307, 1, 307, 1, 307, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 309, 1, 309, 1, 309, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 311, 1, 311, 1, 311, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 313, 1, 313, 1, 313, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 315, 1, 315, 1, 315, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 317, 1, 317, 1, 317, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 319, 1, 319, 1, 319, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 321, 1, 321, 1, 321, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 323, 1, 323, 1, 323, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 325, 1, 325, 1, 325, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 327, 1, 327, 1, 327, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 329, 1, 329, 1, 329, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 331, 1, 331, 1, 331, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 333, 1, 333, 1, 333, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 335, 1, 335, 1, 335, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 337, 1, 337, 1, 337, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 339, 1, 339, 1, 339, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 341, 1, 341, 1, 341, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 343, 1, 343, 1, 343, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 345, 1, 345, 1, 345, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 347, 1, 347, 1, 347, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 349, 1, 349, 1, 349, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 351, 1, 351, 1, 351, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 353, 1, 353, 1, 353, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 355, 1, 355, 1, 355, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 357, 1, 357, 1, 357, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 359, 1, 359, 1, 359, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 361, 1, 361, 1, 361, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 363, 1, 363, 1, 363, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 365, 1, 365, 1, 365, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 367, 1, 367, 1, 367, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 369, 1, 369, 1, 369, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 371, 1, 371, 1, 371, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 373, 1, 373, 1, 373, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 375, 1, 375, 1, 375, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 377, 1, 377, 1, 377, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 379, 1, 379, 1, 379, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 381, 1, 381, 1, 381, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 383, 1, 383, 1, 383, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 385, 1, 385, 1, 385, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 387, 1, 387, 1, 387, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 389, 1, 389, 1, 389, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 391, 1, 391, 1, 391, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 393, 1, 393, 1, 393, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 395, 1, 395, 1, 395, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 397, 1, 397, 1, 397, 17, 0, 0, 8, 6, 12, 28 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 399, 1, 399, 1, 399, 17, 0, 0, 8, 6, 12, 28 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 86 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 7, 4, 4, 21, 86 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 4, 4, 4, 21, 86 }, @@ -7116,17 +7681,17 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 85, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 85, 0, 0, 8, 14, 37 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 85, 0, 0, 8, 14, 37 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 89, 1, 86, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 95, 1, 92, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 101, 1, 98, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 108, 1, 104, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 116, 1, 112, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 123, 1, 120, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 135, 1, 132, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 141, 1, 138, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 147, 1, 144, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 153, 1, 150, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, - { 15, 0, 0, 0, -1, 0, 0, 0, 1, 159, 1, 156, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 413, 1, 410, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 419, 1, 416, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 425, 1, 422, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 432, 1, 428, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 440, 1, 436, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 447, 1, 444, 0, 0, 1, 80, 0, 8, 6, 12, 3 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 459, 1, 456, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 465, 1, 462, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 471, 1, 468, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 477, 1, 474, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, + { 15, 0, 0, 0, -1, 0, 0, 0, 1, 483, 1, 480, 0, 0, 1, 80, 0, 8, 6, 12, 6 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 85, 0, 7, 8, 13, 7 }, { 0, 17, 26, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 4, 4, 21, 7 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 85, 0, 7, 8, 13, 7 }, @@ -7254,6 +7819,8 @@ static const Properties uc_properties[] = { { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 118 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 117 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 117 }, + { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 128 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 128 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 64 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 12, 64 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 64 }, @@ -7262,6 +7829,7 @@ static const Properties uc_properties[] = { { 25, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 12, 76 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 98 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 8, 12, 97 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 97 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 8, 12, 61 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 61 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 61 }, @@ -7305,6 +7873,9 @@ static const Properties uc_properties[] = { { 5, 1, 0, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 121 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 121 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 91 }, + { 14, 1, 0, 0, -1, 0, 0, 64, 0, 0, 0, 0, 0, 64, 17, 0, 0, 8, 7, 12, 130 }, + { 15, 1, 0, 0, -1, 0, 0, 0, 0, -64, 0, -64, 0, 0, 17, 0, 0, 8, 6, 12, 130 }, + { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 130 }, { 5, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 8 }, { 5, 5, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 8 }, { 5, 5, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 8 }, @@ -7392,6 +7963,9 @@ static const Properties uc_properties[] = { { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 12, 17, 100 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 12, 100 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 17, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 100 }, + { 0, 17, 7, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 100 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 100 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 12, 12, 100 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, @@ -7404,6 +7978,10 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 100 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 18, 100 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 17, 100 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 100 }, { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 20 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 109 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 109 }, @@ -7412,6 +7990,8 @@ static const Properties uc_properties[] = { { 0, 17, 7, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 109 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 12, 17, 109 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 109 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 129 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 129 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 123 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 123 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 123 }, @@ -7427,6 +8007,7 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 123 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 123 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 123 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 107 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 107 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 107 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 107 }, @@ -7434,6 +8015,7 @@ static const Properties uc_properties[] = { { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 204, 4, 4, 4, 21, 107 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 7, 4, 4, 21, 107 }, { 1, 0, 9, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 107 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 107 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 107 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 124 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 204, 4, 4, 4, 21, 124 }, @@ -7465,6 +8047,9 @@ static const Properties uc_properties[] = { { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 12, 17, 122 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 6, 122 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 122 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 122 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 122 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 122 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 114 }, { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 7, 4, 4, 21, 114 }, { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 114 }, @@ -7496,6 +8081,23 @@ static const Properties uc_properties[] = { { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 102 }, { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 102 }, { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 14, 9, 11, 102 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 8, 30, 126 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 30, 126 }, + { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 7, 4, 4, 30, 126 }, + { 0, 17, 9, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 30, 126 }, + { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 3, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 14, 9, 11, 126 }, + { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 30, 126 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 126 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 30, 126 }, { 14, 0, 0, 0, -1, 0, 0, 32, 0, 0, 0, 0, 0, 32, 16, 0, 0, 8, 7, 12, 125 }, { 15, 0, 0, 0, -1, 0, 0, 0, 0, -32, 0, -32, 0, 0, 16, 0, 0, 8, 6, 12, 125 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 125 }, @@ -7513,6 +8115,7 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 119 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 63 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 63 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 63 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 8, 8, 12, 63 }, { 4, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 63 }, { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 17, 63 }, @@ -7520,6 +8123,9 @@ static const Properties uc_properties[] = { { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 12, 81 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 0, 81 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 8, 8, 1, 81 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 12, 127 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 0, 127 }, + { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 8, 8, 1, 127 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 8, 8, 12, 84 }, { 18, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 115 }, { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 14, 9, 11, 115 }, @@ -7575,6 +8181,7 @@ static const Properties uc_properties[] = { { 10, 18, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 3, 4, 4, 21, 2 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 4, 4, 4, 21, 1 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 4, 4, 4, 21, 1 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 2 }, { 0, 17, 230, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 4, 4, 21, 4 }, { 5, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 12, 2 }, { 14, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 8, 7, 12, 2 }, @@ -7594,6 +8201,11 @@ static const Properties uc_properties[] = { { 3, 2, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 14, 9, 11, 2 }, { 3, 2, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 14, 9, 11, 2 }, { 3, 2, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 80, 0, 14, 9, 11, 2 }, + { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 131 }, + { 0, 17, 0, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 4, 4, 4, 21, 131 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 17, 131 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 12, 17, 131 }, + { 25, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 131 }, { 18, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 8, 8, 12, 113 }, { 5, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 12, 113 }, { 0, 17, 220, 5, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 4, 21, 113 }, @@ -7621,6 +8233,8 @@ static const Properties uc_properties[] = { { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 5, 5, 0, 28, 2 }, { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 80, 0, 0, 0, 14, 34 }, { 29, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 80, 0, 0, 0, 14, 2 }, + { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 14, 2 }, + { 28, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 12, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 14, 2 }, { 29, 10, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 13, 3, 2 }, @@ -7694,7 +8308,88 @@ static const ushort specialCaseMap[] = { 0x1, 0x2c6e, 0x1, 0x2c64, 0x1, 0xa7b1, + 0x1, 0xa7b2, 0x1, 0xa7b0, + 0x1, 0xab70, + 0x1, 0xab71, + 0x1, 0xab72, + 0x1, 0xab73, + 0x1, 0xab74, + 0x1, 0xab75, + 0x1, 0xab76, + 0x1, 0xab77, + 0x1, 0xab78, + 0x1, 0xab79, + 0x1, 0xab7a, + 0x1, 0xab7b, + 0x1, 0xab7c, + 0x1, 0xab7d, + 0x1, 0xab7e, + 0x1, 0xab7f, + 0x1, 0xab80, + 0x1, 0xab81, + 0x1, 0xab82, + 0x1, 0xab83, + 0x1, 0xab84, + 0x1, 0xab85, + 0x1, 0xab86, + 0x1, 0xab87, + 0x1, 0xab88, + 0x1, 0xab89, + 0x1, 0xab8a, + 0x1, 0xab8b, + 0x1, 0xab8c, + 0x1, 0xab8d, + 0x1, 0xab8e, + 0x1, 0xab8f, + 0x1, 0xab90, + 0x1, 0xab91, + 0x1, 0xab92, + 0x1, 0xab93, + 0x1, 0xab94, + 0x1, 0xab95, + 0x1, 0xab96, + 0x1, 0xab97, + 0x1, 0xab98, + 0x1, 0xab99, + 0x1, 0xab9a, + 0x1, 0xab9b, + 0x1, 0xab9c, + 0x1, 0xab9d, + 0x1, 0xab9e, + 0x1, 0xab9f, + 0x1, 0xaba0, + 0x1, 0xaba1, + 0x1, 0xaba2, + 0x1, 0xaba3, + 0x1, 0xaba4, + 0x1, 0xaba5, + 0x1, 0xaba6, + 0x1, 0xaba7, + 0x1, 0xaba8, + 0x1, 0xaba9, + 0x1, 0xabaa, + 0x1, 0xabab, + 0x1, 0xabac, + 0x1, 0xabad, + 0x1, 0xabae, + 0x1, 0xabaf, + 0x1, 0xabb0, + 0x1, 0xabb1, + 0x1, 0xabb2, + 0x1, 0xabb3, + 0x1, 0xabb4, + 0x1, 0xabb5, + 0x1, 0xabb6, + 0x1, 0xabb7, + 0x1, 0xabb8, + 0x1, 0xabb9, + 0x1, 0xabba, + 0x1, 0xabbb, + 0x1, 0xabbc, + 0x1, 0xabbd, + 0x1, 0xabbe, + 0x1, 0xabbf, 0x1, 0xa77d, 0x1, 0x6b, 0x1, 0xe5, @@ -7716,6 +8411,87 @@ static const ushort specialCaseMap[] = { 0x1, 0x26c, 0x1, 0x29e, 0x1, 0x287, + 0x1, 0x29d, + 0x1, 0x13a0, + 0x1, 0x13a1, + 0x1, 0x13a2, + 0x1, 0x13a3, + 0x1, 0x13a4, + 0x1, 0x13a5, + 0x1, 0x13a6, + 0x1, 0x13a7, + 0x1, 0x13a8, + 0x1, 0x13a9, + 0x1, 0x13aa, + 0x1, 0x13ab, + 0x1, 0x13ac, + 0x1, 0x13ad, + 0x1, 0x13ae, + 0x1, 0x13af, + 0x1, 0x13b0, + 0x1, 0x13b1, + 0x1, 0x13b2, + 0x1, 0x13b3, + 0x1, 0x13b4, + 0x1, 0x13b5, + 0x1, 0x13b6, + 0x1, 0x13b7, + 0x1, 0x13b8, + 0x1, 0x13b9, + 0x1, 0x13ba, + 0x1, 0x13bb, + 0x1, 0x13bc, + 0x1, 0x13bd, + 0x1, 0x13be, + 0x1, 0x13bf, + 0x1, 0x13c0, + 0x1, 0x13c1, + 0x1, 0x13c2, + 0x1, 0x13c3, + 0x1, 0x13c4, + 0x1, 0x13c5, + 0x1, 0x13c6, + 0x1, 0x13c7, + 0x1, 0x13c8, + 0x1, 0x13c9, + 0x1, 0x13ca, + 0x1, 0x13cb, + 0x1, 0x13cc, + 0x1, 0x13cd, + 0x1, 0x13ce, + 0x1, 0x13cf, + 0x1, 0x13d0, + 0x1, 0x13d1, + 0x1, 0x13d2, + 0x1, 0x13d3, + 0x1, 0x13d4, + 0x1, 0x13d5, + 0x1, 0x13d6, + 0x1, 0x13d7, + 0x1, 0x13d8, + 0x1, 0x13d9, + 0x1, 0x13da, + 0x1, 0x13db, + 0x1, 0x13dc, + 0x1, 0x13dd, + 0x1, 0x13de, + 0x1, 0x13df, + 0x1, 0x13e0, + 0x1, 0x13e1, + 0x1, 0x13e2, + 0x1, 0x13e3, + 0x1, 0x13e4, + 0x1, 0x13e5, + 0x1, 0x13e6, + 0x1, 0x13e7, + 0x1, 0x13e8, + 0x1, 0x13e9, + 0x1, 0x13ea, + 0x1, 0x13eb, + 0x1, 0x13ec, + 0x1, 0x13ed, + 0x1, 0x13ee, + 0x1, 0x13ef, 0x2, 0x53, 0x73, 0x2, 0x53, 0x53, 0x2, 0x69, 0x307, diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h index 43c1f4e197..1fbcc39666 100644 --- a/src/corelib/tools/qunicodetables_p.h +++ b/src/corelib/tools/qunicodetables_p.h @@ -31,7 +31,7 @@ ** ****************************************************************************/ -/* This file is autogenerated from the Unicode 7.0 database. Do not edit */ +/* This file is autogenerated from the Unicode 8.0 database. Do not edit */ // // W A R N I N G @@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE -#define UNICODE_DATA_VERSION QChar::Unicode_7_0 +#define UNICODE_DATA_VERSION QChar::Unicode_8_0 namespace QUnicodeTables { -- cgit v1.2.3 From 7aba75ffc52e5dce4b3ada12668611be2ad6787e Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Fri, 25 Sep 2015 13:23:46 +0200 Subject: Don't let closed http sockets pass as valid connections A QAbstractSocket can be close()'d at any time, independently of its current connection state. being closed means that we cannot use it to read or write data, but internally it might still have some data to send or receive, for example to an http server. We can even get a connected() signal after close()'ing the socket. We need to catch this condition and mark any pending data not yet written to the socket for resending. (cherry picked from commit 0df5d079290b4c3b13e58e9397fabdc1dfdba96b) Task-number: QTBUG-48326 Change-Id: I67d9ad36f7288c9c6bef51aa6253d7b187737601 Reviewed-by: Ulf Hermann Reviewed-by: Markus Goetz (Woboq GmbH) --- .../access/qhttpnetworkconnectionchannel.cpp | 7 ++- .../tst_qhttpnetworkconnection.cpp | 54 ++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 0820a8d63e..453a0c71b6 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -272,7 +272,12 @@ bool QHttpNetworkConnectionChannel::ensureConnection() QAbstractSocket::SocketState socketState = socket->state(); // resend this request after we receive the disconnected signal - if (socketState == QAbstractSocket::ClosingState) { + // If !socket->isOpen() then we have already called close() on the socket, but there was still a + // pending connectToHost() for which we hadn't seen a connected() signal, yet. The connected() + // has now arrived (as indicated by socketState != ClosingState), but we cannot send anything on + // such a socket anymore. + if (socketState == QAbstractSocket::ClosingState || + (socketState != QAbstractSocket::UnconnectedState && !socket->isOpen())) { if (reply) resendCurrent = true; return false; diff --git a/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp index 5d072af6d5..0d188a8fec 100644 --- a/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp +++ b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp @@ -36,6 +36,7 @@ #include "private/qhttpnetworkconnection_p.h" #include "private/qnoncontiguousbytedevice_p.h" #include +#include #include "../../../network-settings.h" @@ -106,6 +107,8 @@ private Q_SLOTS: void getAndThenDeleteObject(); void getAndThenDeleteObject_data(); + + void overlappingCloseAndWrite(); }; tst_QHttpNetworkConnection::tst_QHttpNetworkConnection() @@ -1112,6 +1115,57 @@ void tst_QHttpNetworkConnection::getAndThenDeleteObject() } } +class TestTcpServer : public QTcpServer +{ + Q_OBJECT +public: + TestTcpServer() : errorCodeReports(0) + { + connect(this, &QTcpServer::newConnection, this, &TestTcpServer::onNewConnection); + QVERIFY(listen(QHostAddress::LocalHost)); + } + + int errorCodeReports; + +public slots: + void onNewConnection() + { + QTcpSocket *socket = nextPendingConnection(); + if (!socket) + return; + // close socket instantly! + connect(socket, &QTcpSocket::readyRead, socket, &QTcpSocket::close); + } + + void onReply(QNetworkReply::NetworkError code) + { + QCOMPARE(code, QNetworkReply::RemoteHostClosedError); + ++errorCodeReports; + } +}; + +void tst_QHttpNetworkConnection::overlappingCloseAndWrite() +{ + // server accepts connections, but closes the socket instantly + TestTcpServer server; + QNetworkAccessManager accessManager; + + // ten requests are scheduled. All should result in an RemoteHostClosed... + QUrl url; + url.setScheme(QStringLiteral("http")); + url.setHost(server.serverAddress().toString()); + url.setPort(server.serverPort()); + for (int i = 0; i < 10; ++i) { + QNetworkRequest request(url); + QNetworkReply *reply = accessManager.get(request); + // Not using Qt5 connection syntax here because of overly baroque syntax to discern between + // different error() methods. + QObject::connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), + &server, SLOT(onReply(QNetworkReply::NetworkError))); + } + + QTRY_COMPARE(server.errorCodeReports, 10); +} QTEST_MAIN(tst_QHttpNetworkConnection) -- cgit v1.2.3 From 3c50f459c6f3e4e3cc47f961d52c30f3d63cf2a0 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 4 Nov 2015 14:01:58 +0100 Subject: QMessageBox test: Refactor closing dialogs. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce class ExecCloseHelper which runs a timer timer checking for the test candidate to become the active modal window and closing it either by key event or calling close. The test then runs in 4s as opposed to 45s before. Task-number: QTBUG-38890 Change-Id: I610fb09e6b8269d218cddc8d11abae2bd3317f9d Reviewed-by: Jędrzej Nowacki --- .../dialogs/qmessagebox/tst_qmessagebox.cpp | 244 +++++++++++---------- 1 file changed, 126 insertions(+), 118 deletions(-) diff --git a/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp b/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp index 97cfec8171..1a4f9077d9 100644 --- a/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp +++ b/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp @@ -89,13 +89,6 @@ class tst_QMessageBox : public QObject { Q_OBJECT -public: - tst_QMessageBox(); - int exec(QMessageBox *msgBox, int key = -1); - void sendKeySoon(); - -public slots: - void sendKey(); private slots: void sanityTest(); @@ -122,12 +115,7 @@ private slots: void setInformativeText(); void iconPixmap(); - void init(); - void initTestCase(); - -private: - int keyToSend; - QTimer keySendTimer; + void cleanup(); }; class tst_ResizingMessageBox : public QMessageBox @@ -143,51 +131,61 @@ protected: } }; -tst_QMessageBox::tst_QMessageBox() : keyToSend(-1) +// ExecCloseHelper: Closes a modal QDialog during its exec() function by either +// sending a key event or closing it (CloseWindow) once it becomes the active +// modal window. Pass nullptr to "autodetect" the instance for static methods. +class ExecCloseHelper : public QObject { -} +public: + enum { CloseWindow = -1 }; -int tst_QMessageBox::exec(QMessageBox *msgBox, int key) -{ - if (key == -1) { - QTimer::singleShot(1000, msgBox, SLOT(close())); - } else { - keyToSend = key; - sendKeySoon(); + explicit ExecCloseHelper(QObject *parent = Q_NULLPTR) + : QObject(parent), m_key(0), m_timerId(0), m_testCandidate(Q_NULLPTR) { } + + void start(int key, QWidget *testCandidate = Q_NULLPTR) + { + m_key = key; + m_testCandidate = testCandidate; + m_timerId = startTimer(50); } - return msgBox->exec(); -} -void tst_QMessageBox::sendKey() + bool done() const { return !m_timerId; } + +protected: + void timerEvent(QTimerEvent *te) Q_DECL_OVERRIDE; + +private: + int m_key; + int m_timerId; + QWidget *m_testCandidate; +}; + +void ExecCloseHelper::timerEvent(QTimerEvent *te) { - if (keyToSend == -2) { - QApplication::activeModalWidget()->close(); - keyToSend = -1; + if (te->timerId() != m_timerId) return; - } - if (keyToSend == -1) - return; - QKeyEvent *ke = new QKeyEvent(QEvent::KeyPress, keyToSend, Qt::NoModifier); - qApp->postEvent(QApplication::activeModalWidget(), ke); - keyToSend = -1; -} -void tst_QMessageBox::sendKeySoon() -{ - keySendTimer.start(); -} + QWidget *modalWidget = QApplication::activeModalWidget(); -void tst_QMessageBox::init() -{ - // if there is any pending key send from the last test, cancel it. - keySendTimer.stop(); + if (!m_testCandidate && modalWidget) + m_testCandidate = modalWidget; + + if (m_testCandidate && m_testCandidate == modalWidget) { + if (m_key == CloseWindow) { + m_testCandidate->close(); + } else { + QKeyEvent *ke = new QKeyEvent(QEvent::KeyPress, m_key, Qt::NoModifier); + QCoreApplication::postEvent(m_testCandidate, ke); + } + m_testCandidate = Q_NULLPTR; + killTimer(m_timerId); + m_timerId = m_key = 0; + } } -void tst_QMessageBox::initTestCase() +void tst_QMessageBox::cleanup() { - keySendTimer.setInterval(1000); - keySendTimer.setSingleShot(true); - QVERIFY(QObject::connect(&keySendTimer, SIGNAL(timeout()), this, SLOT(sendKey()))); + QTRY_VERIFY(QApplication::topLevelWidgets().isEmpty()); // OS X requires TRY } void tst_QMessageBox::sanityTest() @@ -200,7 +198,9 @@ void tst_QMessageBox::sanityTest() msgBox.setIconPixmap(QPixmap("whatever.png")); msgBox.setTextFormat(Qt::RichText); msgBox.setTextFormat(Qt::PlainText); - exec(&msgBox); + ExecCloseHelper closeHelper; + closeHelper.start(ExecCloseHelper::CloseWindow, &msgBox); + msgBox.exec(); } void tst_QMessageBox::button() @@ -238,16 +238,20 @@ void tst_QMessageBox::defaultButton() QPushButton *retryButton = msgBox.addButton(QMessageBox::Retry); msgBox.setDefaultButton(retryButton); QCOMPARE(msgBox.defaultButton(), retryButton); - exec(&msgBox); + ExecCloseHelper closeHelper; + closeHelper.start(ExecCloseHelper::CloseWindow, &msgBox); + msgBox.exec(); QCOMPARE(msgBox.clickedButton(), msgBox.button(QMessageBox::Cancel)); - exec(&msgBox, Qt::Key_Enter); + closeHelper.start(Qt::Key_Enter, &msgBox); + msgBox.exec(); QCOMPARE(msgBox.clickedButton(), (QAbstractButton *)retryButton); QAbstractButton *okButton = msgBox.button(QMessageBox::Ok); msgBox.setDefaultButton(QMessageBox::Ok); QCOMPARE(msgBox.defaultButton(), (QPushButton *)okButton); - exec(&msgBox, Qt::Key_Enter); + closeHelper.start(Qt::Key_Enter, &msgBox); + msgBox.exec(); QCOMPARE(msgBox.clickedButton(), okButton); msgBox.setDefaultButton(QMessageBox::Yes); // its not in there! QCOMPARE(msgBox.defaultButton(), okButton); @@ -264,7 +268,9 @@ void tst_QMessageBox::escapeButton() QMessageBox msgBox; QVERIFY(!msgBox.escapeButton()); msgBox.addButton(QMessageBox::Ok); - exec(&msgBox); + ExecCloseHelper closeHelper; + closeHelper.start(ExecCloseHelper::CloseWindow, &msgBox); + msgBox.exec(); QVERIFY(msgBox.clickedButton() == msgBox.button(QMessageBox::Ok)); // auto detected (one button only) msgBox.addButton(QMessageBox::Cancel); QVERIFY(!msgBox.escapeButton()); @@ -273,24 +279,28 @@ void tst_QMessageBox::escapeButton() QVERIFY(!msgBox.escapeButton()); QAbstractButton *retryButton = msgBox.addButton(QMessageBox::Retry); - exec(&msgBox); + closeHelper.start(ExecCloseHelper::CloseWindow, &msgBox); + msgBox.exec(); QVERIFY(msgBox.clickedButton() == msgBox.button(QMessageBox::Cancel)); // auto detected (cancel) msgBox.setEscapeButton(retryButton); QCOMPARE(msgBox.escapeButton(), (QAbstractButton *)retryButton); // with escape - exec(&msgBox, Qt::Key_Escape); + closeHelper.start(Qt::Key_Escape, &msgBox); + msgBox.exec(); QCOMPARE(msgBox.clickedButton(), retryButton); // with close - exec(&msgBox); + closeHelper.start(ExecCloseHelper::CloseWindow, &msgBox); + msgBox.exec(); QCOMPARE(msgBox.clickedButton(), (QAbstractButton *)retryButton); QAbstractButton *okButton = msgBox.button(QMessageBox::Ok); msgBox.setEscapeButton(QMessageBox::Ok); QCOMPARE(msgBox.escapeButton(), okButton); - exec(&msgBox, Qt::Key_Escape); + closeHelper.start(Qt::Key_Escape, &msgBox); + msgBox.exec(); QCOMPARE(msgBox.clickedButton(), okButton); msgBox.setEscapeButton(QMessageBox::Yes); // its not in there! QCOMPARE(msgBox.escapeButton(), okButton); @@ -304,16 +314,19 @@ void tst_QMessageBox::escapeButton() QMessageBox msgBox2; msgBox2.addButton(QMessageBox::Yes); msgBox2.addButton(QMessageBox::No); - exec(&msgBox2); + closeHelper.start(ExecCloseHelper::CloseWindow, &msgBox2); + msgBox2.exec(); QVERIFY(msgBox2.clickedButton() == msgBox2.button(QMessageBox::No)); // auto detected (one No button only) QPushButton *rejectButton = new QPushButton; msgBox2.addButton(rejectButton, QMessageBox::RejectRole); - exec(&msgBox2); + closeHelper.start(ExecCloseHelper::CloseWindow, &msgBox2); + msgBox2.exec(); QVERIFY(msgBox2.clickedButton() == rejectButton); // auto detected (one reject button only) msgBox2.addButton(new QPushButton, QMessageBox::RejectRole); - exec(&msgBox2); + closeHelper.start(ExecCloseHelper::CloseWindow, &msgBox2); + msgBox2.exec(); QVERIFY(msgBox2.clickedButton() == msgBox2.button(QMessageBox::No)); // auto detected (one No button only) } @@ -328,38 +341,35 @@ void tst_QMessageBox::statics() statics[2] = QMessageBox::question; statics[3] = QMessageBox::warning; + ExecCloseHelper closeHelper; for (int i = 0; i < 4; i++) { - keyToSend = Qt::Key_Escape; - sendKeySoon(); + closeHelper.start(Qt::Key_Escape); QMessageBox::StandardButton sb = (*statics[i])(0, "caption", "text", QMessageBox::Yes | QMessageBox::No | QMessageBox::Help | QMessageBox::Cancel, QMessageBox::NoButton); QCOMPARE(sb, QMessageBox::Cancel); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); - keyToSend = -2; // close() - sendKeySoon(); + closeHelper.start(ExecCloseHelper::CloseWindow); sb = (*statics[i])(0, "caption", "text", QMessageBox::Yes | QMessageBox::No | QMessageBox::Help | QMessageBox::Cancel, QMessageBox::NoButton); QCOMPARE(sb, QMessageBox::Cancel); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); - keyToSend = Qt::Key_Enter; - sendKeySoon(); + closeHelper.start(Qt::Key_Enter); sb = (*statics[i])(0, "caption", "text", QMessageBox::Yes | QMessageBox::No | QMessageBox::Help, QMessageBox::Yes); QCOMPARE(sb, QMessageBox::Yes); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); - keyToSend = Qt::Key_Enter; - sendKeySoon(); + closeHelper.start(Qt::Key_Enter); sb = (*statics[i])(0, "caption", "text", QMessageBox::Yes | QMessageBox::No | QMessageBox::Help, QMessageBox::No); QCOMPARE(sb, QMessageBox::No); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); } } @@ -371,34 +381,36 @@ void tst_QMessageBox::shortcut() msgBox.addButton("O&k", QMessageBox::YesRole); msgBox.addButton("&No", QMessageBox::YesRole); msgBox.addButton("&Maybe", QMessageBox::YesRole); - QCOMPARE(exec(&msgBox, Qt::Key_M), 2); + ExecCloseHelper closeHelper; + closeHelper.start(Qt::Key_M, &msgBox); + QCOMPARE(msgBox.exec(), 2); } #endif void tst_QMessageBox::about() { - keyToSend = Qt::Key_Escape; - sendKeySoon(); + ExecCloseHelper closeHelper; + closeHelper.start(Qt::Key_Escape); QMessageBox::about(0, "Caption", "This is an auto test"); // On Mac, about and aboutQt are not modal, so we need to // explicitly run the event loop #ifdef Q_OS_MAC - QTRY_COMPARE(keyToSend, -1); + QTRY_VERIFY(closeHelper.done()); #else - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); #endif #if !defined(Q_OS_WINCE) - keyToSend = Qt::Key_Enter; + const int keyToSend = Qt::Key_Enter; #else - keyToSend = Qt::Key_Escape; + const keyToSend = Qt::Key_Escape; #endif - sendKeySoon(); + closeHelper.start(keyToSend); QMessageBox::aboutQt(0, "Caption"); #ifdef Q_OS_MAC - QTRY_COMPARE(keyToSend, -1); + QTRY_VERIFY(closeHelper.done()); #else - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); #endif } @@ -407,8 +419,8 @@ void tst_QMessageBox::staticSourceCompat() int ret; // source compat tests for < 4.2 - keyToSend = Qt::Key_Enter; - sendKeySoon(); + ExecCloseHelper closeHelper; + closeHelper.start(Qt::Key_Enter); ret = QMessageBox::information(0, "title", "text", QMessageBox::Yes, QMessageBox::No); int expectedButton = int(QMessageBox::Yes); if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { @@ -418,51 +430,44 @@ void tst_QMessageBox::staticSourceCompat() expectedButton = int(QMessageBox::No); } QCOMPARE(ret, expectedButton); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); - keyToSend = Qt::Key_Enter; - sendKeySoon(); + closeHelper.start(Qt::Key_Enter); ret = QMessageBox::information(0, "title", "text", QMessageBox::Yes | QMessageBox::Default, QMessageBox::No); QCOMPARE(ret, int(QMessageBox::Yes)); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); - keyToSend = Qt::Key_Enter; - sendKeySoon(); + closeHelper.start(Qt::Key_Enter); ret = QMessageBox::information(0, "title", "text", QMessageBox::Yes, QMessageBox::No | QMessageBox::Default); QCOMPARE(ret, int(QMessageBox::No)); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); - keyToSend = Qt::Key_Enter; - sendKeySoon(); + closeHelper.start(Qt::Key_Enter); ret = QMessageBox::information(0, "title", "text", QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape); QCOMPARE(ret, int(QMessageBox::Yes)); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); - keyToSend = Qt::Key_Enter; - sendKeySoon(); + closeHelper.start(Qt::Key_Enter); ret = QMessageBox::information(0, "title", "text", QMessageBox::Yes | QMessageBox::Escape, QMessageBox::No | QMessageBox::Default); QCOMPARE(ret, int(QMessageBox::No)); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); // the button text versions - keyToSend = Qt::Key_Enter; - sendKeySoon(); + closeHelper.start(Qt::Key_Enter); ret = QMessageBox::information(0, "title", "text", "Yes", "No", QString(), 1); QCOMPARE(ret, 1); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); if (0) { // don't run these tests since the dialog won't close! - keyToSend = Qt::Key_Escape; - sendKeySoon(); + closeHelper.start(Qt::Key_Escape); ret = QMessageBox::information(0, "title", "text", "Yes", "No", QString(), 1); QCOMPARE(ret, -1); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); - keyToSend = Qt::Key_Escape; - sendKeySoon(); + closeHelper.start(Qt::Key_Escape); ret = QMessageBox::information(0, "title", "text", "Yes", "No", QString(), 0, 1); QCOMPARE(ret, 1); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); } } @@ -480,12 +485,17 @@ void tst_QMessageBox::instanceSourceCompat() mb.addButton("&Revert", QMessageBox::RejectRole); mb.addButton("&Zoo", QMessageBox::ActionRole); - QCOMPARE(exec(&mb, Qt::Key_Enter), int(QMessageBox::Yes)); - QCOMPARE(exec(&mb, Qt::Key_Escape), int(QMessageBox::Cancel)); + ExecCloseHelper closeHelper; + closeHelper.start(Qt::Key_Enter, &mb); + QCOMPARE(mb.exec(), int(QMessageBox::Yes)); + closeHelper.start(Qt::Key_Escape, &mb); + QCOMPARE(mb.exec(), int(QMessageBox::Cancel)); #ifndef Q_OS_MAC // mnemonics are not used on OS X - QCOMPARE(exec(&mb, Qt::ALT + Qt::Key_R), 0); - QCOMPARE(exec(&mb, Qt::ALT + Qt::Key_Z), 1); + closeHelper.start(Qt::ALT + Qt::Key_R, &mb); + QCOMPARE(mb.exec(), 0); + closeHelper.start(Qt::ALT + Qt::Key_Z, &mb); + QCOMPARE(mb.exec(), 1); #endif } @@ -647,26 +657,24 @@ void tst_QMessageBox::expandDetails_QTBUG_32473() void tst_QMessageBox::incorrectDefaultButton() { - keyToSend = Qt::Key_Escape; - sendKeySoon(); + ExecCloseHelper closeHelper; + closeHelper.start(Qt::Key_Escape); //Do not crash here QTest::ignoreMessage(QtWarningMsg, "QDialogButtonBox::createButton: Invalid ButtonRole, button not added"); QMessageBox::question( 0, "", "I've been hit!",QMessageBox::Ok | QMessageBox::Cancel,QMessageBox::Save ); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); - keyToSend = Qt::Key_Escape; - sendKeySoon(); + closeHelper.start(Qt::Key_Escape); QTest::ignoreMessage(QtWarningMsg, "QDialogButtonBox::createButton: Invalid ButtonRole, button not added"); QMessageBox::question( 0, "", "I've been hit!",QFlag(QMessageBox::Ok | QMessageBox::Cancel),QMessageBox::Save ); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); - keyToSend = Qt::Key_Escape; - sendKeySoon(); + closeHelper.start(Qt::Key_Escape); QTest::ignoreMessage(QtWarningMsg, "QDialogButtonBox::createButton: Invalid ButtonRole, button not added"); QTest::ignoreMessage(QtWarningMsg, "QDialogButtonBox::createButton: Invalid ButtonRole, button not added"); //do not crash here -> call old function of QMessageBox in this case QMessageBox::question( 0, "", "I've been hit!",QMessageBox::Ok | QMessageBox::Cancel,QMessageBox::Save | QMessageBox::Cancel,QMessageBox::Ok); - QCOMPARE(keyToSend, -1); + QVERIFY(closeHelper.done()); } void tst_QMessageBox::updateSize() -- cgit v1.2.3 From f13d8163ec80afdb0051897dc705598ea2691725 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 5 Nov 2015 09:54:48 +0100 Subject: tst_qdatetime: Fix compiler warning about uninitialized variable. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit warning: 'typemsg1' may be used uninitialized in this function [-Wmaybe-uninitialized] Change-Id: Ie68d279eccb003a2ca5a0116eea336cbc8776660 Reviewed-by: Edward Welbourne Reviewed-by: Jędrzej Nowacki --- tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp index df9089057d..6cf73c85de 100644 --- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp @@ -188,10 +188,10 @@ tst_QDateTime::tst_QDateTime() void tst_QDateTime::initTestCase() { // Never construct a message like this in an i18n context... - const char *typemsg1, *typemsg2 = "and therefore not"; + const char *typemsg1 = "exactly"; + const char *typemsg2 = "and therefore not"; switch (localTimeType) { case LocalTimeIsUtc: - typemsg1 = "exactly"; break; case LocalTimeBehindUtc: typemsg1 = "behind"; -- cgit v1.2.3 From d482a92858f181c76229dc977ee9c159ba36515f Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 17 Sep 2015 15:56:30 +0200 Subject: Polish the HTTP example. - Remove unneeded member variables. - Use new connection syntax. - Streamline code. - Add a QCheckBox for launching the file after download and make the default file name and download directory configureable. - Make status messages more verbose. - Set Password echo mode on authentication dialog. - Extract the progress dialog to a separate class that is directly connected to the QNetworkReply, which is created on demand. Set set minimum and duration on it. This fixes a crash that currently occurs when clicking "Abort" on the SSL error dialog and "Cancel" on the progress dialog that is then re-shown due to its internal force timer/minimum duration handling. - Resize according to screen size. Task-number: QTBUG-48332 Change-Id: Ia2611e63fe96d6f49e4cdd06049a206ddb2c2864 Reviewed-by: David Faure --- examples/network/http/authenticationdialog.ui | 6 +- examples/network/http/httpwindow.cpp | 274 +++++++++++++++----------- examples/network/http/httpwindow.h | 31 +-- examples/network/http/main.cpp | 5 +- 4 files changed, 189 insertions(+), 127 deletions(-) diff --git a/examples/network/http/authenticationdialog.ui b/examples/network/http/authenticationdialog.ui index 82d908cffb..5baf1bd97e 100644 --- a/examples/network/http/authenticationdialog.ui +++ b/examples/network/http/authenticationdialog.ui @@ -41,7 +41,11 @@ - + + + QLineEdit::Password + + diff --git a/examples/network/http/httpwindow.cpp b/examples/network/http/httpwindow.cpp index 39623fd6dd..301431fd5e 100644 --- a/examples/network/http/httpwindow.cpp +++ b/examples/network/http/httpwindow.cpp @@ -40,85 +40,134 @@ #include #include +#include #include "httpwindow.h" #include "ui_authenticationdialog.h" -HttpWindow::HttpWindow(QWidget *parent) - : QDialog(parent) -{ #ifndef QT_NO_SSL - urlLineEdit = new QLineEdit("https://qt-project.org/"); +static const char defaultUrl[] = "https://qt-project.org/"; #else - urlLineEdit = new QLineEdit("http://qt-project.org/"); +static const char defaultUrl[] = "http://qt-project.org/"; #endif +static const char defaultFileName[] = "index.html"; - urlLabel = new QLabel(tr("&URL:")); - urlLabel->setBuddy(urlLineEdit); - statusLabel = new QLabel(tr("Please enter the URL of a file you want to " - "download.")); - statusLabel->setWordWrap(true); - - downloadButton = new QPushButton(tr("Download")); - downloadButton->setDefault(true); - quitButton = new QPushButton(tr("Quit")); - quitButton->setAutoDefault(false); - - buttonBox = new QDialogButtonBox; - buttonBox->addButton(downloadButton, QDialogButtonBox::ActionRole); - buttonBox->addButton(quitButton, QDialogButtonBox::RejectRole); +ProgressDialog::ProgressDialog(const QUrl &url, QWidget *parent) + : QProgressDialog(parent) +{ + setWindowTitle(tr("Download Progress")); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + setLabelText(tr("Downloading %1.").arg(url.toDisplayString())); + setMinimum(0); + setValue(0); + setMinimumDuration(0); +} - progressDialog = new QProgressDialog(this); +void ProgressDialog::networkReplyProgress(qint64 bytesRead, qint64 totalBytes) +{ + setMaximum(totalBytes); + setValue(bytesRead); +} - connect(urlLineEdit, SIGNAL(textChanged(QString)), - this, SLOT(enableDownloadButton())); +HttpWindow::HttpWindow(QWidget *parent) + : QDialog(parent) + , statusLabel(new QLabel(tr("Please enter the URL of a file you want to download.\n\n"), this)) + , urlLineEdit(new QLineEdit(defaultUrl)) + , downloadButton(new QPushButton(tr("Download"))) + , launchCheckBox(new QCheckBox("Launch file")) + , defaultFileLineEdit(new QLineEdit(defaultFileName)) + , downloadDirectoryLineEdit(new QLineEdit) + , reply(Q_NULLPTR) + , file(Q_NULLPTR) + , httpRequestAborted(false) +{ + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + setWindowTitle(tr("HTTP")); - connect(&qnam, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), - this, SLOT(slotAuthenticationRequired(QNetworkReply*,QAuthenticator*))); + connect(&qnam, &QNetworkAccessManager::authenticationRequired, + this, &HttpWindow::slotAuthenticationRequired); #ifndef QT_NO_SSL - connect(&qnam, SIGNAL(sslErrors(QNetworkReply*,QList)), - this, SLOT(sslErrors(QNetworkReply*,QList))); + connect(&qnam, &QNetworkAccessManager::sslErrors, + this, &HttpWindow::sslErrors); #endif - connect(progressDialog, SIGNAL(canceled()), this, SLOT(cancelDownload())); - connect(downloadButton, SIGNAL(clicked()), this, SLOT(downloadFile())); - connect(quitButton, SIGNAL(clicked()), this, SLOT(close())); - QHBoxLayout *topLayout = new QHBoxLayout; - topLayout->addWidget(urlLabel); - topLayout->addWidget(urlLineEdit); + QFormLayout *formLayout = new QFormLayout; + urlLineEdit->setClearButtonEnabled(true); + connect(urlLineEdit, &QLineEdit::textChanged, + this, &HttpWindow::enableDownloadButton); + formLayout->addRow(tr("&URL:"), urlLineEdit); + QString downloadDirectory = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation); + if (downloadDirectory.isEmpty() || !QFileInfo(downloadDirectory).isDir()) + downloadDirectory = QDir::currentPath(); + downloadDirectoryLineEdit->setText(QDir::toNativeSeparators(downloadDirectory)); + formLayout->addRow(tr("&Download directory:"), downloadDirectoryLineEdit); + formLayout->addRow(tr("Default &file:"), defaultFileLineEdit); + launchCheckBox->setChecked(true); + formLayout->addRow(launchCheckBox); + + QVBoxLayout *mainLayout = new QVBoxLayout(this); + mainLayout->addLayout(formLayout); + + mainLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding)); - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addLayout(topLayout); + statusLabel->setWordWrap(true); mainLayout->addWidget(statusLabel); + + downloadButton->setDefault(true); + connect(downloadButton, &QAbstractButton::clicked, this, &HttpWindow::downloadFile); + QPushButton *quitButton = new QPushButton(tr("Quit")); + quitButton->setAutoDefault(false); + connect(quitButton, &QAbstractButton::clicked, this, &QWidget::close); + QDialogButtonBox *buttonBox = new QDialogButtonBox; + buttonBox->addButton(downloadButton, QDialogButtonBox::ActionRole); + buttonBox->addButton(quitButton, QDialogButtonBox::RejectRole); mainLayout->addWidget(buttonBox); - setLayout(mainLayout); - setWindowTitle(tr("HTTP")); urlLineEdit->setFocus(); } -void HttpWindow::startRequest(QUrl url) +void HttpWindow::startRequest(const QUrl &requestedUrl) { + url = requestedUrl; + httpRequestAborted = false; + reply = qnam.get(QNetworkRequest(url)); - connect(reply, SIGNAL(finished()), - this, SLOT(httpFinished())); - connect(reply, SIGNAL(readyRead()), - this, SLOT(httpReadyRead())); - connect(reply, SIGNAL(downloadProgress(qint64,qint64)), - this, SLOT(updateDataReadProgress(qint64,qint64))); + connect(reply, &QNetworkReply::finished, this, &HttpWindow::httpFinished); + connect(reply, &QIODevice::readyRead, this, &HttpWindow::httpReadyRead); + + ProgressDialog *progressDialog = new ProgressDialog(url, this); + progressDialog->setAttribute(Qt::WA_DeleteOnClose); + connect(progressDialog, &QProgressDialog::canceled, this, &HttpWindow::cancelDownload); + connect(reply, &QNetworkReply::downloadProgress, progressDialog, &ProgressDialog::networkReplyProgress); + connect(reply, &QNetworkReply::finished, progressDialog, &ProgressDialog::hide); + progressDialog->show(); + + statusLabel->setText(tr("Downloading %1...").arg(url.toString())); } void HttpWindow::downloadFile() { - url = urlLineEdit->text(); + const QString urlSpec = urlLineEdit->text().trimmed(); + if (urlSpec.isEmpty()) + return; - QFileInfo fileInfo(url.path()); - QString fileName = fileInfo.fileName(); - if (fileName.isEmpty()) - fileName = "index.html"; + const QUrl newUrl = QUrl::fromUserInput(urlSpec); + if (!newUrl.isValid()) { + QMessageBox::information(this, tr("Error"), + tr("Invalid URL: %1: %2").arg(urlSpec, newUrl.errorString())); + return; + } + QString fileName = newUrl.fileName(); + if (fileName.isEmpty()) + fileName = defaultFileLineEdit->text().trimmed(); + if (fileName.isEmpty()) + fileName = defaultFileName; + QString downloadDirectory = QDir::cleanPath(downloadDirectoryLineEdit->text().trimmed()); + if (!downloadDirectory.isEmpty() && QFileInfo(downloadDirectory).isDir()) + fileName.prepend(downloadDirectory + '/'); if (QFile::exists(fileName)) { - if (QMessageBox::question(this, tr("HTTP"), + if (QMessageBox::question(this, tr("Overwrite Existing File"), tr("There already exists a file called %1 in " "the current directory. Overwrite?").arg(fileName), QMessageBox::Yes|QMessageBox::No, QMessageBox::No) @@ -127,23 +176,27 @@ void HttpWindow::downloadFile() QFile::remove(fileName); } - file = new QFile(fileName); - if (!file->open(QIODevice::WriteOnly)) { - QMessageBox::information(this, tr("HTTP"), - tr("Unable to save the file %1: %2.") - .arg(fileName).arg(file->errorString())); - delete file; - file = 0; + file = openFileForWrite(fileName); + if (!file) return; - } - progressDialog->setWindowTitle(tr("HTTP")); - progressDialog->setLabelText(tr("Downloading %1.").arg(fileName)); downloadButton->setEnabled(false); // schedule the request - httpRequestAborted = false; - startRequest(url); + startRequest(newUrl); +} + +QFile *HttpWindow::openFileForWrite(const QString &fileName) +{ + QScopedPointer file(new QFile(fileName)); + if (!file->open(QIODevice::WriteOnly)) { + QMessageBox::information(this, tr("Error"), + tr("Unable to save the file %1: %2.") + .arg(QDir::toNativeSeparators(fileName), + file->errorString())); + return Q_NULLPTR; + } + return file.take(); } void HttpWindow::cancelDownload() @@ -156,52 +209,56 @@ void HttpWindow::cancelDownload() void HttpWindow::httpFinished() { + QFileInfo fi; + if (file) { + fi.setFile(file->fileName()); + file->close(); + delete file; + file = Q_NULLPTR; + } + if (httpRequestAborted) { - if (file) { - file->close(); - file->remove(); - delete file; - file = 0; - } reply->deleteLater(); - progressDialog->hide(); + reply = Q_NULLPTR; return; } - progressDialog->hide(); - file->flush(); - file->close(); - - - QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (reply->error()) { - file->remove(); - QMessageBox::information(this, tr("HTTP"), - tr("Download failed: %1.") - .arg(reply->errorString())); + QFile::remove(fi.absoluteFilePath()); + statusLabel->setText(tr("Download failed:\n%1.").arg(reply->errorString())); downloadButton->setEnabled(true); - } else if (!redirectionTarget.isNull()) { - QUrl newUrl = url.resolved(redirectionTarget.toUrl()); - if (QMessageBox::question(this, tr("HTTP"), - tr("Redirect to %1 ?").arg(newUrl.toString()), - QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { - url = newUrl; - reply->deleteLater(); - file->open(QIODevice::WriteOnly); - file->resize(0); - startRequest(url); + reply->deleteLater(); + reply = Q_NULLPTR; + return; + } + + const QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); + + reply->deleteLater(); + reply = Q_NULLPTR; + + if (!redirectionTarget.isNull()) { + const QUrl redirectedUrl = url.resolved(redirectionTarget.toUrl()); + if (QMessageBox::question(this, tr("Redirect"), + tr("Redirect to %1 ?").arg(redirectedUrl.toString()), + QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) { + downloadButton->setEnabled(true); return; } - } else { - QString fileName = QFileInfo(QUrl(urlLineEdit->text()).path()).fileName(); - statusLabel->setText(tr("Downloaded %1 to %2.").arg(fileName).arg(QDir::currentPath())); - downloadButton->setEnabled(true); + file = openFileForWrite(fi.absoluteFilePath()); + if (!file) { + downloadButton->setEnabled(true); + return; + } + startRequest(redirectedUrl); + return; } - reply->deleteLater(); - reply = 0; - delete file; - file = 0; + statusLabel->setText(tr("Downloaded %1 bytes to %2\nin\n%3") + .arg(fi.size()).arg(fi.fileName(), QDir::toNativeSeparators(fi.absolutePath()))); + if (launchCheckBox->isChecked()) + QDesktopServices::openUrl(QUrl::fromLocalFile(fi.absoluteFilePath())); + downloadButton->setEnabled(true); } void HttpWindow::httpReadyRead() @@ -214,15 +271,6 @@ void HttpWindow::httpReadyRead() file->write(reply->readAll()); } -void HttpWindow::updateDataReadProgress(qint64 bytesRead, qint64 totalBytes) -{ - if (httpRequestAborted) - return; - - progressDialog->setMaximum(totalBytes); - progressDialog->setValue(bytesRead); -} - void HttpWindow::enableDownloadButton() { downloadButton->setEnabled(!urlLineEdit->text().isEmpty()); @@ -230,18 +278,18 @@ void HttpWindow::enableDownloadButton() void HttpWindow::slotAuthenticationRequired(QNetworkReply*,QAuthenticator *authenticator) { - QDialog dlg; + QDialog authenticationDialog; Ui::Dialog ui; - ui.setupUi(&dlg); - dlg.adjustSize(); - ui.siteDescription->setText(tr("%1 at %2").arg(authenticator->realm()).arg(url.host())); + ui.setupUi(&authenticationDialog); + authenticationDialog.adjustSize(); + ui.siteDescription->setText(tr("%1 at %2").arg(authenticator->realm(), url.host())); // Did the URL have information? Fill the UI // This is only relevant if the URL-supplied credentials were wrong ui.userEdit->setText(url.userName()); ui.passwordEdit->setText(url.password()); - if (dlg.exec() == QDialog::Accepted) { + if (authenticationDialog.exec() == QDialog::Accepted) { authenticator->setUser(ui.userEdit->text()); authenticator->setPassword(ui.passwordEdit->text()); } @@ -253,12 +301,12 @@ void HttpWindow::sslErrors(QNetworkReply*,const QList &errors) QString errorString; foreach (const QSslError &error, errors) { if (!errorString.isEmpty()) - errorString += ", "; + errorString += '\n'; errorString += error.errorString(); } - if (QMessageBox::warning(this, tr("HTTP"), - tr("One or more SSL errors has occurred: %1").arg(errorString), + if (QMessageBox::warning(this, tr("SSL Errors"), + tr("One or more SSL errors has occurred:\n%1").arg(errorString), QMessageBox::Ignore | QMessageBox::Abort) == QMessageBox::Ignore) { reply->ignoreSslErrors(); } diff --git a/examples/network/http/httpwindow.h b/examples/network/http/httpwindow.h index f1dc2e1f80..cc632e5bab 100644 --- a/examples/network/http/httpwindow.h +++ b/examples/network/http/httpwindow.h @@ -41,39 +41,46 @@ #ifndef HTTPWINDOW_H #define HTTPWINDOW_H -#include +#include #include #include QT_BEGIN_NAMESPACE -class QDialogButtonBox; class QFile; class QLabel; class QLineEdit; -class QProgressDialog; class QPushButton; class QSslError; class QAuthenticator; class QNetworkReply; - +class QCheckBox; QT_END_NAMESPACE +class ProgressDialog : public QProgressDialog { + Q_OBJECT + +public: + explicit ProgressDialog(const QUrl &url, QWidget *parent = Q_NULLPTR); + +public slots: + void networkReplyProgress(qint64 bytesRead, qint64 totalBytes); +}; + class HttpWindow : public QDialog { Q_OBJECT public: - HttpWindow(QWidget *parent = 0); + explicit HttpWindow(QWidget *parent = Q_NULLPTR); - void startRequest(QUrl url); + void startRequest(const QUrl &requestedUrl); private slots: void downloadFile(); void cancelDownload(); void httpFinished(); void httpReadyRead(); - void updateDataReadProgress(qint64 bytesRead, qint64 totalBytes); void enableDownloadButton(); void slotAuthenticationRequired(QNetworkReply*,QAuthenticator *); #ifndef QT_NO_SSL @@ -81,19 +88,19 @@ private slots: #endif private: + QFile *openFileForWrite(const QString &fileName); + QLabel *statusLabel; - QLabel *urlLabel; QLineEdit *urlLineEdit; - QProgressDialog *progressDialog; QPushButton *downloadButton; - QPushButton *quitButton; - QDialogButtonBox *buttonBox; + QCheckBox *launchCheckBox; + QLineEdit *defaultFileLineEdit; + QLineEdit *downloadDirectoryLineEdit; QUrl url; QNetworkAccessManager qnam; QNetworkReply *reply; QFile *file; - int httpGetId; bool httpRequestAborted; }; diff --git a/examples/network/http/main.cpp b/examples/network/http/main.cpp index 5857af265c..b4960008ec 100644 --- a/examples/network/http/main.cpp +++ b/examples/network/http/main.cpp @@ -39,6 +39,7 @@ ****************************************************************************/ #include +#include #include #include "httpwindow.h" @@ -47,8 +48,10 @@ int main(int argc, char *argv[]) { QApplication app(argc, argv); - HttpWindow httpWin; + const QRect availableSize = QApplication::desktop()->availableGeometry(&httpWin); + httpWin.resize(availableSize.width() / 5, availableSize.height() / 5); + httpWin.move((availableSize.width() - httpWin.width()) / 2, (availableSize.height() - httpWin.height()) / 2); httpWin.show(); return app.exec(); -- cgit v1.2.3 From 4d76352ae0ebb279989c73e8a8938c641ac42d77 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 4 Nov 2015 01:47:29 +0100 Subject: QUtf8: remove an unused variable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 'need' was never anything but zero, so drop it. Change-Id: I4b52107afc7ed47c19ae1942cef0c92cbd0e1a36 Reviewed-by: Olivier Goffart (Woboq GmbH) Reviewed-by: Jędrzej Nowacki --- src/corelib/codecs/qutfcodec.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp index 98d4b2e4e3..a64b3d167e 100644 --- a/src/corelib/codecs/qutfcodec.cpp +++ b/src/corelib/codecs/qutfcodec.cpp @@ -296,7 +296,6 @@ QString QUtf8::convertToUnicode(const char *chars, int len, QTextCodec::Converte { bool headerdone = false; ushort replacement = QChar::ReplacementCharacter; - int need = 0; int invalid = 0; int res; uchar ch = 0; @@ -311,7 +310,7 @@ QString QUtf8::convertToUnicode(const char *chars, int len, QTextCodec::Converte // 1 of 2 bytes invalid continuation +1 (need to insert replacement and restart) // 2 of 3 bytes same +1 (same) // 3 of 4 bytes same +1 (same) - QString result(need + len + 1, Qt::Uninitialized); + QString result(len + 1, Qt::Uninitialized); ushort *dst = reinterpret_cast(const_cast(result.constData())); const uchar *src = reinterpret_cast(chars); -- cgit v1.2.3 From 491ccf3b85d0ba863445ead04b5e122d79e94865 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sat, 25 Jul 2015 12:03:28 +0200 Subject: Mark qt_from_latin1() as nothrow It's used from a different TU, too, so we can't rely on the compiler to inspect it to draw this conclusion itself. This function has technically not a wide contract, because the output buffer needs to be large enough to hold the result. However, this precondition cannot be checked from within the function, therefore no assertion can ever be added and the nothrow marker becomes acceptable (even desireable). Change-Id: I2dc6c4f3d9d8147c6483865c5c4bbc8e9af291b7 Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/corelib/codecs/qtextcodec.cpp | 2 +- src/corelib/tools/qstring.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp index 88987865c4..c55f93b949 100644 --- a/src/corelib/codecs/qtextcodec.cpp +++ b/src/corelib/codecs/qtextcodec.cpp @@ -993,7 +993,7 @@ QString QTextDecoder::toUnicode(const char *chars, int len) } // in qstring.cpp: -void qt_from_latin1(ushort *dst, const char *str, size_t size); +void qt_from_latin1(ushort *dst, const char *str, size_t size) Q_DECL_NOTHROW; /*! \overload diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 13d8a3864b..a88b48c767 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -203,7 +203,7 @@ inline RetType UnrollTailLoop<0>::exec(int, RetType returnIfExited, Functor1, Fu #endif // conversion between Latin 1 and UTF-16 -void qt_from_latin1(ushort *dst, const char *str, size_t size) +void qt_from_latin1(ushort *dst, const char *str, size_t size) Q_DECL_NOTHROW { /* SIMD: * Unpacking with SSE has been shown to improve performance on recent CPUs -- cgit v1.2.3 From 110a8c339fa078a4edd09a70239280e482b149f1 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 3 Nov 2015 08:04:15 -0500 Subject: Remove qatomic_mips.h: the 3-operand testAndSet is broken MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "previous" value is always 1 when the compare-and-swap succeeded, instead of the previous value. Instead of fixing this, let's just remove this file a bit earlier than the rest. All of them will be removed in Qt 5.7 anyway, so let's leave MIPS atomics to the compiler. Task-number: QTBUG-49168 Change-Id: Idba8c29717f34c70a58fffff14133304595165f5 Reviewed-by: Dmitry Shachnev Reviewed-by: Oswald Buddenhagen Reviewed-by: Marc Mutz Reviewed-by: Thiago Macieira Reviewed-by: Lisandro Damián Nicanor Pérez Meyer --- src/corelib/arch/qatomic_mips.h | 351 -------------------------------------- src/corelib/thread/qbasicatomic.h | 2 - 2 files changed, 353 deletions(-) delete mode 100644 src/corelib/arch/qatomic_mips.h diff --git a/src/corelib/arch/qatomic_mips.h b/src/corelib/arch/qatomic_mips.h deleted file mode 100644 index 8c400e0076..0000000000 --- a/src/corelib/arch/qatomic_mips.h +++ /dev/null @@ -1,351 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2011 Thiago Macieira -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtCore module 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 QATOMIC_MIPS_H -#define QATOMIC_MIPS_H - -#include - -QT_BEGIN_NAMESPACE - -#if 0 -// silence syncqt warnings -QT_END_NAMESPACE -#pragma qt_sync_skip_header_check -#pragma qt_sync_stop_processing -#endif - -#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -#define Q_ATOMIC_INT32_IS_SUPPORTED -#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT32_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -template struct QBasicAtomicOps: QGenericAtomicOps > -{ - template - static void acquireMemoryFence(const T &) Q_DECL_NOTHROW; - template - static void releaseMemoryFence(const T &) Q_DECL_NOTHROW; - template - static void orderedMemoryFence(const T &) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isReferenceCountingNative() Q_DECL_NOTHROW { return true; } - template static bool ref(T &_q_value) Q_DECL_NOTHROW; - template static bool deref(T &_q_value) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isTestAndSetNative() Q_DECL_NOTHROW { return true; } - static inline Q_DECL_CONSTEXPR bool isTestAndSetWaitFree() Q_DECL_NOTHROW { return false; } - template static bool - testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue = 0) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isFetchAndStoreNative() Q_DECL_NOTHROW { return true; } - template static T fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW; - - static inline Q_DECL_CONSTEXPR bool isFetchAndAddNative() Q_DECL_NOTHROW { return true; } - template static - T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW; -}; - -template struct QAtomicOps : QBasicAtomicOps -{ - typedef T Type; -}; - -#if defined(Q_CC_GNU) - -#if defined(_MIPS_ARCH_MIPS1) || (!defined(Q_CC_CLANG) && defined(__mips) && __mips - 0 == 1) -# error "Sorry, the MIPS1 architecture is not supported" -# error "please set '-march=' to your architecture (e.g., -march=mips32)" -#endif - -template template inline -void QBasicAtomicOps::acquireMemoryFence(const T &) Q_DECL_NOTHROW -{ - asm volatile (".set push\n" - ".set mips32\n" - "sync 0x11\n" - ".set pop\n" ::: "memory"); -} - -template template inline -void QBasicAtomicOps::releaseMemoryFence(const T &) Q_DECL_NOTHROW -{ - asm volatile (".set push\n" - ".set mips32\n" - "sync 0x12\n" - ".set pop\n" ::: "memory"); -} - -template template inline -void QBasicAtomicOps::orderedMemoryFence(const T &) Q_DECL_NOTHROW -{ - asm volatile (".set push\n" - ".set mips32\n" - "sync 0\n" - ".set pop\n" ::: "memory"); -} - -template<> template inline -bool QBasicAtomicOps<4>::ref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[one]\n" - "sc %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [one] "i" (1) - : "cc", "memory"); - return originalValue != T(-1); -} - -template<> template inline -bool QBasicAtomicOps<4>::deref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[minusOne]\n" - "sc %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [minusOne] "i" (-1) - : "cc", "memory"); - return originalValue != 1; -} - -template<> template inline -bool QBasicAtomicOps<4>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue) Q_DECL_NOTHROW -{ - T result; - T tempValue; - asm volatile("0:\n" - "ll %[tempValue], %[_q_value]\n" - "xor %[result], %[tempValue], %[expectedValue]\n" - "bnez %[result], 0f\n" - "nop\n" - "move %[tempValue], %[newValue]\n" - "sc %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - "0:\n" - : [result] "=&r" (result), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [expectedValue] "r" (expectedValue), - [newValue] "r" (newValue) - : "cc", "memory"); - if (currentValue) - *currentValue = tempValue; - return result == 0; -} - -template<> template inline -T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW -{ - T originalValue; - T tempValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "move %[tempValue], %[newValue]\n" - "sc %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [newValue] "r" (newValue) - : "cc", "memory"); - return originalValue; -} - -template<> template inline -T QBasicAtomicOps<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "ll %[originalValue], %[_q_value]\n" - "addu %[newValue], %[originalValue], %[valueToAdd]\n" - "sc %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType::AddScale) - : "cc", "memory"); - return originalValue; -} - -#if defined(Q_PROCESSOR_MIPS_64) - -#define Q_ATOMIC_INT64_IS_SUPPORTED -#define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT64_TEST_AND_SET_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_ALWAYS_NATIVE -#define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_ALWAYS_NATIVE - -template<> struct QAtomicOpsSupport<8> { enum { IsSupported = 1 }; }; - -template<> template inline -bool QBasicAtomicOps<8>::ref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[one]\n" - "scd %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [one] "i" (1) - : "cc", "memory"); - return originalValue != T(-1); -} - -template<> template inline -bool QBasicAtomicOps<8>::deref(T &_q_value) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "addiu %[newValue], %[originalValue], %[minusOne]\n" - "scd %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [minusOne] "i" (-1) - : "cc", "memory"); - return originalValue != 1; -} - -template<> template inline -bool QBasicAtomicOps<8>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue) Q_DECL_NOTHROW -{ - T result; - T tempValue; - asm volatile("0:\n" - "lld %[tempValue], %[_q_value]\n" - "xor %[result], %[tempValue], %[expectedValue]\n" - "bnez %[result], 0f\n" - "nop\n" - "move %[tempValue], %[newValue]\n" - "scd %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - "0:\n" - : [result] "=&r" (result), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [expectedValue] "r" (expectedValue), - [newValue] "r" (newValue) - : "cc", "memory"); - if (currentValue) - *currentValue = tempValue; - return result == 0; -} - -template<> template inline -T QBasicAtomicOps<8>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL_NOTHROW -{ - T originalValue; - T tempValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "move %[tempValue], %[newValue]\n" - "scd %[tempValue], %[_q_value]\n" - "beqz %[tempValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [tempValue] "=&r" (tempValue), - [_q_value] "+m" (_q_value) - : [newValue] "r" (newValue) - : "cc", "memory"); - return originalValue; -} - -template<> template inline -T QBasicAtomicOps<8>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType::AdditiveT valueToAdd) Q_DECL_NOTHROW -{ - T originalValue; - T newValue; - asm volatile("0:\n" - "lld %[originalValue], %[_q_value]\n" - "addu %[newValue], %[originalValue], %[valueToAdd]\n" - "scd %[newValue], %[_q_value]\n" - "beqz %[newValue], 0b\n" - "nop\n" - : [originalValue] "=&r" (originalValue), - [_q_value] "+m" (_q_value), - [newValue] "=&r" (newValue) - : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType::AddScale) - : "cc", "memory"); - return originalValue; -} - -#endif // MIPS64 - -#else -# error "This compiler for MIPS is not supported" -#endif // Q_CC_GNU - -QT_END_NAMESPACE - -#endif // QATOMIC_MIPS_H diff --git a/src/corelib/thread/qbasicatomic.h b/src/corelib/thread/qbasicatomic.h index ecf39d699f..3c16cf5b9c 100644 --- a/src/corelib/thread/qbasicatomic.h +++ b/src/corelib/thread/qbasicatomic.h @@ -60,8 +60,6 @@ # include "QtCore/qatomic_armv5.h" #elif defined(Q_PROCESSOR_IA64) # include "QtCore/qatomic_ia64.h" -#elif defined(Q_PROCESSOR_MIPS) -# include "QtCore/qatomic_mips.h" #elif defined(Q_PROCESSOR_X86) # include -- cgit v1.2.3 From 0d14cdd30e66d0d65d3aa6ab2f08bba4b0f0bceb Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 5 Nov 2015 11:29:30 +0100 Subject: QWindowsEGLContext: Fix overly specific EGL include path. Allow for using other EGL implementations besides ANGLE. Change-Id: I64ceca477912150425e4a9328001cc911bd351bf Reviewed-by: Laszlo Agocs --- src/plugins/platforms/windows/qwindowseglcontext.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/platforms/windows/qwindowseglcontext.cpp b/src/plugins/platforms/windows/qwindowseglcontext.cpp index 02073f5098..21eba6da7e 100644 --- a/src/plugins/platforms/windows/qwindowseglcontext.cpp +++ b/src/plugins/platforms/windows/qwindowseglcontext.cpp @@ -39,7 +39,7 @@ #include #if defined(QT_OPENGL_ES_2_ANGLE) || defined(QT_OPENGL_DYNAMIC) -# include +# include #endif QT_BEGIN_NAMESPACE -- cgit v1.2.3 From cd0a1251232baf17fdfa002d2299305d5613063c Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Thu, 14 May 2015 02:47:21 +0400 Subject: Minor optimization to QWidgetPrivate::naturalWidgetFont() When inheritedMask is 0, the font inherits just everything; in this case `inheritedFont.resolve(baseFont)` could be replaced with `baseFont`. Change-Id: Ic3ed8ef174493544ada32037e7bdded46eb4bd43 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/widgets/kernel/qwidget.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 49da4d1faf..2d7c03116b 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -4699,9 +4699,11 @@ QFont QWidgetPrivate::naturalWidgetFont(uint inheritedMask) const if (QWidget *p = q->parentWidget()) { if (!p->testAttribute(Qt::WA_StyleSheet)) { if (!naturalFont.isCopyOf(QApplication::font())) { - QFont inheritedFont = p->font(); - inheritedFont.resolve(inheritedMask); - naturalFont = inheritedFont.resolve(naturalFont); + if (inheritedMask != 0) { + QFont inheritedFont = p->font(); + inheritedFont.resolve(inheritedMask); + naturalFont = inheritedFont.resolve(naturalFont); + } // else nothing to do (naturalFont = naturalFont) } else { naturalFont = p->font(); } @@ -4709,9 +4711,11 @@ QFont QWidgetPrivate::naturalWidgetFont(uint inheritedMask) const } #ifndef QT_NO_GRAPHICSVIEW else if (extra && extra->proxyWidget) { - QFont inheritedFont = extra->proxyWidget->font(); - inheritedFont.resolve(inheritedMask); - naturalFont = inheritedFont.resolve(naturalFont); + if (inheritedMask != 0) { + QFont inheritedFont = extra->proxyWidget->font(); + inheritedFont.resolve(inheritedMask); + naturalFont = inheritedFont.resolve(naturalFont); + } // else nothing to do (naturalFont = naturalFont) } #endif //QT_NO_GRAPHICSVIEW } -- cgit v1.2.3 From e9b051f0ca39529f5ec78d39c5339f40e135e52a Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Wed, 4 Nov 2015 16:53:48 +0100 Subject: Fix false claim in comment. Given that % and / have a defined consistency relation, neither is any better defined for -ve operands than the other. The code is in fact avoiding using -ve operands, not preferring "well-defined" / over (allegedly less so) %, as it claimed. Change-Id: I666690872f078c0f21f9af7a227c2bbf291704e8 Reviewed-by: Thiago Macieira --- src/corelib/tools/qdatetime.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 18fb9db9b6..1519b8b926 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -1728,7 +1728,7 @@ QTime QTime::addMSecs(int ms) const QTime t; if (isValid()) { if (ms < 0) { - // % not well-defined for -ve, but / is. + // %,/ not well-defined for -ve, so always work with +ve. int negdays = (MSECS_PER_DAY - ms) / MSECS_PER_DAY; t.mds = (ds() + ms + negdays * MSECS_PER_DAY) % MSECS_PER_DAY; } else { -- cgit v1.2.3 From 73b7096822a9f83e050c148dd153b1a42da176d6 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 6 Nov 2015 15:54:11 +0100 Subject: Fix build of PostgreSQL plugin with -Werror on Windows/64bit. Fix MSVC warning: sql\drivers\psql\qsql_psql.cpp(452): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data Change-Id: I44a902a9169efa568dcd82bdc08c5b97e661d65a Reviewed-by: Frederik Gladhorn --- src/sql/drivers/psql/qsql_psql.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp index f4e40b6582..5dcabb0646 100644 --- a/src/sql/drivers/psql/qsql_psql.cpp +++ b/src/sql/drivers/psql/qsql_psql.cpp @@ -449,7 +449,7 @@ QVariant QPSQLResult::data(int i) case QVariant::ByteArray: { size_t len; unsigned char *data = PQunescapeBytea((const unsigned char*)val, &len); - QByteArray ba((const char*)data, len); + QByteArray ba(reinterpret_cast(data), int(len)); qPQfreemem(data); return QVariant(ba); } -- cgit v1.2.3 From 9f66b1dd71f5802d99a3478aaf13c87af136a3b6 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 21 Aug 2015 09:41:23 +0200 Subject: Set private inline QRgba64 methods always inline By setting them always inline we ensure they will never generate symbols. Change-Id: I2c815c4fe2cb498187656e0b25ef4499258885ff Reviewed-by: Erik Verbruggen --- src/gui/painting/qrgba64.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gui/painting/qrgba64.h b/src/gui/painting/qrgba64.h index 264ec394cd..fab9506ff2 100644 --- a/src/gui/painting/qrgba64.h +++ b/src/gui/painting/qrgba64.h @@ -161,12 +161,12 @@ public: } private: - static Q_DECL_CONSTEXPR quint64 alphaMask() { return Q_UINT64_C(0xffff) << AlphaShift; } + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE quint64 alphaMask() { return Q_UINT64_C(0xffff) << AlphaShift; } - static Q_DECL_CONSTEXPR uint div_257_floor(uint x) { return (x - (x >> 8)) >> 8; } - static Q_DECL_CONSTEXPR uint div_257(uint x) { return div_257_floor(x + 128); } - static Q_DECL_CONSTEXPR uint div_65535(uint x) { return (x + (x>>16) + 0x8000U) >> 16; } - Q_DECL_RELAXED_CONSTEXPR QRgba64 unpremultiplied_32bit() const + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint div_257_floor(uint x) { return (x - (x >> 8)) >> 8; } + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint div_257(uint x) { return div_257_floor(x + 128); } + static Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint div_65535(uint x) { return (x + (x>>16) + 0x8000U) >> 16; } + Q_DECL_RELAXED_CONSTEXPR Q_ALWAYS_INLINE QRgba64 unpremultiplied_32bit() const { if (isOpaque() || isTransparent()) return *this; @@ -176,7 +176,7 @@ private: const quint16 b = (quint32(blue()) * 0xffff + a/2) / a; return fromRgba64(r, g, b, a); } - Q_DECL_RELAXED_CONSTEXPR QRgba64 unpremultiplied_64bit() const + Q_DECL_RELAXED_CONSTEXPR Q_ALWAYS_INLINE QRgba64 unpremultiplied_64bit() const { if (isOpaque() || isTransparent()) return *this; -- cgit v1.2.3 From 7a42c8c15c59ef5fe84e6f293f2c97d38b85599c Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 6 Nov 2015 10:42:20 +0100 Subject: Testlib: Replace linked lists in QTestTablePrivate by std::vector. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This speeds up tests/auto/corelib/tools/qchar which spends a lot of time in QTestTablePrivate::elementAt(), QTestTablePrivate::dataAt() from 6s to 500ms on an average Linux machine. Task-number: QTBUG-38890 Change-Id: I16b75819f88ca7974a581affd8409f7b4038a712 Reviewed-by: Jędrzej Nowacki --- src/testlib/qtesttable.cpp | 161 +++++++++++---------------------------------- 1 file changed, 39 insertions(+), 122 deletions(-) diff --git a/src/testlib/qtesttable.cpp b/src/testlib/qtesttable.cpp index 497b2649c5..d20bdd8467 100644 --- a/src/testlib/qtesttable.cpp +++ b/src/testlib/qtesttable.cpp @@ -38,37 +38,30 @@ #include #include +#include +#include QT_BEGIN_NAMESPACE class QTestTablePrivate { public: - struct ElementList - { - ElementList(): elementName(0), elementType(0), next(0) {} - const char *elementName; - int elementType; - ElementList *next; - }; + struct Element { + Element() : name(Q_NULLPTR), type(0) {} + Element(const char *n, int t) : name(n), type(t) {} - struct DataList - { - DataList(): data(0), next(0) {} - QTestData *data; - DataList *next; + const char *name; + int type; }; - QTestTablePrivate(): list(0), dataList(0) {} - ~QTestTablePrivate(); + typedef std::vector ElementList; + ElementList elementList; - ElementList *list; - DataList *dataList; + typedef std::vector DataList; + DataList dataList; - void addColumn(int elemType, const char *elemName); - void addRow(QTestData *data); - ElementList *elementAt(int index); - QTestData *dataAt(int index); + void addColumn(int elemType, const char *elemName) { elementList.push_back(Element(elemName, elemType)); } + void addRow(QTestData *data) { dataList.push_back(data); } static QTestTable *currentTestTable; static QTestTable *gTable; @@ -77,74 +70,6 @@ public: QTestTable *QTestTablePrivate::currentTestTable = 0; QTestTable *QTestTablePrivate::gTable = 0; -QTestTablePrivate::ElementList *QTestTablePrivate::elementAt(int index) -{ - ElementList *iter = list; - for (int i = 0; i < index; ++i) { - if (!iter) - return 0; - iter = iter->next; - } - return iter; -} - -QTestData *QTestTablePrivate::dataAt(int index) -{ - DataList *iter = dataList; - for (int i = 0; i < index; ++i) { - if (!iter) - return 0; - iter = iter->next; - } - return iter ? iter->data : 0; -} - -QTestTablePrivate::~QTestTablePrivate() -{ - DataList *dit = dataList; - while (dit) { - DataList *next = dit->next; - delete dit->data; - delete dit; - dit = next; - } - ElementList *iter = list; - while (iter) { - ElementList *next = iter->next; - delete iter; - iter = next; - } -} - -void QTestTablePrivate::addColumn(int elemType, const char *elemName) -{ - ElementList *item = new ElementList; - item->elementName = elemName; - item->elementType = elemType; - if (!list) { - list = item; - return; - } - ElementList *last = list; - while (last->next != 0) - last = last->next; - last->next = item; -} - -void QTestTablePrivate::addRow(QTestData *data) -{ - DataList *item = new DataList; - item->data = data; - if (!dataList) { - dataList = item; - return; - } - DataList *last = dataList; - while (last->next != 0) - last = last->next; - last->next = item; -} - void QTestTable::addColumn(int type, const char *name) { QTEST_ASSERT(type); @@ -155,30 +80,17 @@ void QTestTable::addColumn(int type, const char *name) int QTestTable::elementCount() const { - QTestTablePrivate::ElementList *item = d->list; - int count = 0; - while (item) { - ++count; - item = item->next; - } - return count; + return int(d->elementList.size()); } - int QTestTable::dataCount() const { - QTestTablePrivate::DataList *item = d->dataList; - int count = 0; - while (item) { - ++count; - item = item->next; - } - return count; + return int(d->dataList.size()); } bool QTestTable::isEmpty() const { - return !d->list; + return d->elementList.empty(); } QTestData *QTestTable::newData(const char *tag) @@ -202,38 +114,43 @@ QTestTable::~QTestTable() int QTestTable::elementTypeId(int index) const { - QTestTablePrivate::ElementList *item = d->elementAt(index); - if (!item) - return -1; - return item->elementType; + return size_t(index) < d->elementList.size() ? d->elementList[index].type : -1; } const char *QTestTable::dataTag(int index) const { - QTestTablePrivate::ElementList *item = d->elementAt(index); - if (!item) - return 0; - return item->elementName; + return size_t(index) < d->elementList.size() ? d->elementList[index].name : Q_NULLPTR; } QTestData *QTestTable::testData(int index) const { - return d->dataAt(index); + return size_t(index) < d->dataList.size() ? d->dataList[index] : Q_NULLPTR; } +class NamePredicate : public std::unary_function +{ +public: + explicit NamePredicate(const char *needle) : m_needle(needle) {} + + bool operator()(const QTestTablePrivate::Element &e) const + { return !strcmp(e.name, m_needle); } + +private: + const char *m_needle; +}; + int QTestTable::indexOf(const char *elementName) const { + typedef QTestTablePrivate::ElementList::const_iterator It; + QTEST_ASSERT(elementName); - QTestTablePrivate::ElementList *item = d->list; - int i = 0; - while (item) { - if (strcmp(elementName, item->elementName) == 0) - return i; - item = item->next; - ++i; - } - return -1; + const QTestTablePrivate::ElementList &elementList = d->elementList; + + const It it = std::find_if(elementList.begin(), elementList.end(), + NamePredicate(elementName)); + return it != elementList.end() ? + int(it - elementList.begin()) : -1; } QTestTable *QTestTable::globalTestTable() -- cgit v1.2.3 From bf517c22f6ca78f2ab04f87f6801c6ca7081e579 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Fri, 6 Nov 2015 16:00:56 +0100 Subject: Fix tst_QPrinter::doubleSidedPrinting() test and remove from blacklist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: If96471ed3324795086c5ff951d9332a0e82870ea Reviewed-by: Jędrzej Nowacki --- tests/auto/printsupport/kernel/qprinter/BLACKLIST | 3 --- tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp | 8 ++++---- 2 files changed, 4 insertions(+), 7 deletions(-) delete mode 100644 tests/auto/printsupport/kernel/qprinter/BLACKLIST diff --git a/tests/auto/printsupport/kernel/qprinter/BLACKLIST b/tests/auto/printsupport/kernel/qprinter/BLACKLIST deleted file mode 100644 index 250a18787c..0000000000 --- a/tests/auto/printsupport/kernel/qprinter/BLACKLIST +++ /dev/null @@ -1,3 +0,0 @@ -[doubleSidedPrinting] -windows 32bit msvc-2013 - diff --git a/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp b/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp index 318f87467c..aa72be3ea8 100644 --- a/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp +++ b/tests/auto/printsupport/kernel/qprinter/tst_qprinter.cpp @@ -1090,12 +1090,12 @@ void tst_QPrinter::doubleSidedPrinting() QPrinter native; if (native.outputFormat() == QPrinter::NativeFormat) { // Test default - QPrinterInfo printerInfo; + QPrinterInfo printerInfo(native); bool expected = (printerInfo.defaultDuplexMode() != QPrinter::DuplexNone); - QCOMPARE(native.doubleSidedPrinting(), false); + QCOMPARE(native.doubleSidedPrinting(), expected); - // Test set/get - expected = (printerInfo.supportedDuplexModes().count() > 1); + // Test set/get, changing the expected value if possible + expected = expected ? false : (printerInfo.supportedDuplexModes().count() > 1); native.setDoubleSidedPrinting(expected); QCOMPARE(native.doubleSidedPrinting(), expected); -- cgit v1.2.3 From e996d68f6130847637ba287518cff1289cfa48e5 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Fri, 6 Nov 2015 14:22:44 +1000 Subject: Make UnknownAccessibility not block requests This allows requests to proceed without needing bearer plugins. Task-number: QTBUG-49267 Change-Id: Ie5ce188ddefebd14d666bb5846e8f93ee2925ed1 Reviewed-by: Markus Goetz (Woboq GmbH) --- src/network/access/qnetworkaccessmanager.cpp | 3 +-- src/network/access/qnetworkaccessmanager_p.h | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 086140f967..0e5870a235 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -976,7 +976,6 @@ QNetworkAccessManager::NetworkAccessibility QNetworkAccessManager::networkAccess else return NotAccessible; } else { - // Network accessibility is either disabled or unknown. if (d->defaultAccessControl) { if (d->online) return d->networkAccessible; @@ -1161,7 +1160,7 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera #ifndef QT_NO_BEARERMANAGEMENT // Return a disabled network reply if network access is disabled. // Except if the scheme is empty or file://. - if (!d->networkAccessible && !isLocalFile) { + if (d->networkAccessible == NotAccessible && !isLocalFile) { return new QDisabledNetworkReply(this, req, op); } diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h index 54ae114581..3fc33b5c15 100644 --- a/src/network/access/qnetworkaccessmanager_p.h +++ b/src/network/access/qnetworkaccessmanager_p.h @@ -93,6 +93,8 @@ public: online = (networkConfiguration.state().testFlag(QNetworkConfiguration::Active)); if (online) networkAccessible = QNetworkAccessManager::Accessible; + else if (networkConfiguration.state().testFlag(QNetworkConfiguration::Undefined)) + networkAccessible = QNetworkAccessManager::UnknownAccessibility; else networkAccessible = QNetworkAccessManager::NotAccessible; #endif -- cgit v1.2.3 From 9daef8a54c32162a50b0f558dac829333165618f Mon Sep 17 00:00:00 2001 From: Adam Strzelecki Date: Thu, 5 Nov 2015 22:35:42 +0100 Subject: QComboBox: Disable wheel events on OS X & iOS This is follow-up for QTabBar fix ea47d152b35158ba07a55d009f57df0e4c2a048f. In native OS X applications using mouse wheel on combo boxes have absolutely no effect. We should bring the same behavior to Qt based OS X apps too, as users are complaining of unexpected behavior, eg. randomly switching Qt Creator sidebar mode when scrolling file list and moving mouse pointer little bit above. Moreover inertial mouse behavior on OS X makes combo box usually move several indexes, rather than single one on slight finger slide. This also applies to iOS apps so the change affects all Apple platforms. Task-number: QTBUG-10707 Change-Id: I6582265039198707ad8c2f54de96ee2a0b0e0b47 Reviewed-by: Adam Strzelecki Reviewed-by: Jake Petroules --- src/widgets/widgets/qcombobox.cpp | 4 ++++ tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index 4840b75c1b..c97159d4cb 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -3238,6 +3238,9 @@ void QComboBox::keyReleaseEvent(QKeyEvent *e) #ifndef QT_NO_WHEELEVENT void QComboBox::wheelEvent(QWheelEvent *e) { +#ifdef Q_OS_DARWIN + Q_UNUSED(e); +#else Q_D(QComboBox); if (!d->viewContainer()->isVisible()) { int newIndex = currentIndex(); @@ -3258,6 +3261,7 @@ void QComboBox::wheelEvent(QWheelEvent *e) } e->accept(); } +#endif } #endif diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index 7824172812..21446de069 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp @@ -2044,7 +2044,13 @@ void tst_QComboBox::mouseWheel_data() QTest::newRow("upper locked") << disabled << start << wheel << expected; wheel = -1; +#ifdef Q_OS_DARWIN + // on OS X & iOS mouse wheel shall have no effect on combo box + expected = start; +#else + // on other OSes we should jump to next enabled item (no. 5) expected = 5; +#endif QTest::newRow("jump over") << disabled << start << wheel << expected; disabled.clear(); -- cgit v1.2.3 From 9ffbc139d1b9ca780ca44ac1522d4bec624923c3 Mon Sep 17 00:00:00 2001 From: Alex Trotsenko Date: Sun, 8 Nov 2015 23:26:43 +0200 Subject: QNativeSocketEngine: fix build in debug mode under Unix Change-Id: I197e4853cd3ddd7543bbdb12cecc19c0ed2c9ee2 Reviewed-by: Thiago Macieira --- src/network/socket/qnativesocketengine_unix.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp index f1845f31f3..8626a6be0f 100644 --- a/src/network/socket/qnativesocketengine_unix.cpp +++ b/src/network/socket/qnativesocketengine_unix.cpp @@ -921,8 +921,10 @@ qint64 QNativeSocketEnginePrivate::nativeReceiveDatagram(char *data, qint64 maxS #if defined (QNATIVESOCKETENGINE_DEBUG) qDebug("QNativeSocketEnginePrivate::nativeReceiveDatagram(%p \"%s\", %lli, %s, %i) == %lli", data, qt_prettyDebug(data, qMin(recvResult, ssize_t(16)), recvResult).data(), maxSize, - address ? address->toString().toLatin1().constData() : "(nil)", - port ? *port : 0, (qint64) recvResult); + (recvResult != -1 && options != QAbstractSocketEngine::WantNone) + ? header->senderAddress.toString().toLatin1().constData() : "(unknown)", + (recvResult != -1 && options != QAbstractSocketEngine::WantNone) + ? header->senderPort : 0, (qint64) recvResult); #endif return qint64(maxSize ? recvResult : recvResult == -1 ? -1 : 0); @@ -1018,8 +1020,9 @@ qint64 QNativeSocketEnginePrivate::nativeSendDatagram(const char *data, qint64 l #if defined (QNATIVESOCKETENGINE_DEBUG) qDebug("QNativeSocketEngine::sendDatagram(%p \"%s\", %lli, \"%s\", %i) == %lli", data, - qt_prettyDebug(data, qMin(len, 16), len).data(), len, host.toString().toLatin1().constData(), - port, (qint64) sentBytes); + qt_prettyDebug(data, qMin(len, 16), len).data(), len, + header.destinationAddress.toString().toLatin1().constData(), + header.destinationPort, (qint64) sentBytes); #endif return qint64(sentBytes); -- cgit v1.2.3 From 20208225eef2458bc092b91b4e22cc7a5a3d006a Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Wed, 21 Oct 2015 15:39:44 +0200 Subject: winrt: Enable generic bearer management plugin Task-number: QTBUG-48738 Change-Id: Ic3698ca1e95aa90083295bf7c41a5f4f66b36f1d Reviewed-by: Andrew Knight --- src/plugins/bearer/bearer.pro | 2 +- src/plugins/bearer/generic/qgenericengine.cpp | 102 +++++++++++++++++++++++++- src/plugins/plugins.pro | 2 +- 3 files changed, 102 insertions(+), 4 deletions(-) diff --git a/src/plugins/bearer/bearer.pro b/src/plugins/bearer/bearer.pro index 2239d52737..a1434fc2ea 100644 --- a/src/plugins/bearer/bearer.pro +++ b/src/plugins/bearer/bearer.pro @@ -8,7 +8,7 @@ TEMPLATE = subdirs #win32:SUBDIRS += nla win32:SUBDIRS += generic blackberry:SUBDIRS += blackberry -win32:!wince: SUBDIRS += nativewifi +win32:!wince:!winrt: SUBDIRS += nativewifi mac:contains(QT_CONFIG, corewlan):SUBDIRS += corewlan mac:SUBDIRS += generic android:!android-no-sdk:SUBDIRS += android diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp index 93b27f16f1..7f56846179 100644 --- a/src/plugins/bearer/generic/qgenericengine.cpp +++ b/src/plugins/bearer/generic/qgenericengine.cpp @@ -44,7 +44,7 @@ #include #include -#ifdef Q_OS_WIN +#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) #include "../platformdefs_win.h" #endif @@ -55,6 +55,24 @@ typedef ULONG NDIS_OID, *PNDIS_OID; # endif #endif // Q_OS_WINCE +#ifdef Q_OS_WINRT +#include + +#include +#include +#include +#include + +using namespace Microsoft::WRL; +using namespace Microsoft::WRL::Wrappers; +using namespace ABI::Windows::Foundation; +using namespace ABI::Windows::Foundation::Collections; +using namespace ABI::Windows::Networking; +using namespace ABI::Windows::Networking::Connectivity; +// needed as interface is used as parameter name in qGetInterfaceType +#undef interface +#endif // Q_OS_WINRT + #ifdef Q_OS_LINUX #include #include @@ -68,7 +86,7 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_NETWORKINTERFACE static QNetworkConfiguration::BearerType qGetInterfaceType(const QString &interface) { -#if defined(Q_OS_WIN) +#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) DWORD bytesWritten; NDIS_MEDIUM medium; NDIS_PHYSICAL_MEDIUM physicalMedium; @@ -163,6 +181,84 @@ static QNetworkConfiguration::BearerType qGetInterfaceType(const QString &interf if (result >= 0 && request.ifr_hwaddr.sa_family == ARPHRD_ETHER) return QNetworkConfiguration::BearerEthernet; +#elif defined(Q_OS_WINRT) + ComPtr networkInfoStatics; + HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &networkInfoStatics); + Q_ASSERT_SUCCEEDED(hr); + ComPtr> connectionProfiles; + hr = networkInfoStatics->GetConnectionProfiles(&connectionProfiles); + Q_ASSERT_SUCCEEDED(hr); + if (!connectionProfiles) + return QNetworkConfiguration::BearerUnknown; + + unsigned int size; + hr = connectionProfiles->get_Size(&size); + Q_ASSERT_SUCCEEDED(hr); + for (unsigned int i = 0; i < size; ++i) { + ComPtr profile; + hr = connectionProfiles->GetAt(i, &profile); + Q_ASSERT_SUCCEEDED(hr); + + ComPtr adapter; + hr = profile->get_NetworkAdapter(&adapter); + Q_ASSERT_SUCCEEDED(hr); + GUID id; + hr = adapter->get_NetworkAdapterId(&id); + Q_ASSERT_SUCCEEDED(hr); + OLECHAR adapterName[39]={0}; + int length = StringFromGUID2(id, adapterName, 39); + // "length - 1" as we have to remove the null terminator from it in order to compare + if (!length + || QString::fromRawData(reinterpret_cast(adapterName), length - 1) != interface) + continue; + + ComPtr profile2; + hr = profile.As(&profile2); + Q_ASSERT_SUCCEEDED(hr); + boolean isWLan; + hr = profile2->get_IsWlanConnectionProfile(&isWLan); + Q_ASSERT_SUCCEEDED(hr); + if (isWLan) + return QNetworkConfiguration::BearerWLAN; + + boolean isWWan; + hr = profile2->get_IsWwanConnectionProfile(&isWWan); + Q_ASSERT_SUCCEEDED(hr); + if (isWWan) { + ComPtr details; + hr = profile2->get_WwanConnectionProfileDetails(&details); + Q_ASSERT_SUCCEEDED(hr); + WwanDataClass dataClass; + hr = details->GetCurrentDataClass(&dataClass); + Q_ASSERT_SUCCEEDED(hr); + switch (dataClass) { + case WwanDataClass_Edge: + case WwanDataClass_Gprs: + return QNetworkConfiguration::Bearer2G; + case WwanDataClass_Umts: + return QNetworkConfiguration::BearerWCDMA; + case WwanDataClass_LteAdvanced: + return QNetworkConfiguration::BearerLTE; + case WwanDataClass_Hsdpa: + case WwanDataClass_Hsupa: + return QNetworkConfiguration::BearerHSPA; + case WwanDataClass_Cdma1xRtt: + case WwanDataClass_Cdma3xRtt: + case WwanDataClass_CdmaUmb: + return QNetworkConfiguration::BearerCDMA2000; + case WwanDataClass_Cdma1xEvdv: + case WwanDataClass_Cdma1xEvdo: + case WwanDataClass_Cdma1xEvdoRevA: + case WwanDataClass_Cdma1xEvdoRevB: + return QNetworkConfiguration::BearerEVDO; + case WwanDataClass_Custom: + case WwanDataClass_None: + default: + return QNetworkConfiguration::BearerUnknown; + } + } + return QNetworkConfiguration::BearerEthernet; + } #else Q_UNUSED(interface); #endif @@ -243,9 +339,11 @@ void QGenericEngine::doRequestUpdate() if (interface.flags() & QNetworkInterface::IsLoopBack) continue; +#ifndef Q_OS_WINRT // ignore WLAN interface handled in separate engine if (qGetInterfaceType(interface.name()) == QNetworkConfiguration::BearerWLAN) continue; +#endif uint identifier; if (interface.index()) diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index dd5345e67e..03b7dc266b 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -2,7 +2,7 @@ TEMPLATE = subdirs load(qfeatures) SUBDIRS *= sqldrivers -!winrt:qtHaveModule(network):!contains(QT_DISABLED_FEATURES, bearermanagement): SUBDIRS += bearer +qtHaveModule(network):!contains(QT_DISABLED_FEATURES, bearermanagement): SUBDIRS += bearer qtHaveModule(gui) { SUBDIRS *= platforms platforminputcontexts platformthemes !contains(QT_DISABLED_FEATURES, imageformatplugin): SUBDIRS *= imageformats -- cgit v1.2.3 From 702a98bfb0196c299de047e7f635f0a912b9bb6a Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Thu, 29 Oct 2015 10:17:18 +0100 Subject: winrt: Also list current profile in QNetworkInterface::allInterfaces GetConnectionProfiles does not list the current profile, so "allInterfaces" also has to use GetInternetConnectionProfile. Task-number: QTBUG-49121 Change-Id: I80a3ea1bfddfe502c84376ca90a7e1fe5d3020c3 Reviewed-by: Samuel Nevala Reviewed-by: Andrew Knight --- src/network/kernel/qnetworkinterface_winrt.cpp | 146 ++++++++++++++++--------- 1 file changed, 94 insertions(+), 52 deletions(-) diff --git a/src/network/kernel/qnetworkinterface_winrt.cpp b/src/network/kernel/qnetworkinterface_winrt.cpp index 0234154427..6791caaf21 100644 --- a/src/network/kernel/qnetworkinterface_winrt.cpp +++ b/src/network/kernel/qnetworkinterface_winrt.cpp @@ -36,6 +36,8 @@ #ifndef QT_NO_NETWORKINTERFACE +#include + #include #include #include @@ -59,6 +61,54 @@ struct HostNameInfo { QString address; }; +static QNetworkInterfacePrivate *interfaceFromProfile(IConnectionProfile *profile, QList *hostList) +{ + if (!profile) + return 0; + + QNetworkInterfacePrivate *iface = new QNetworkInterfacePrivate; + + NetworkConnectivityLevel connectivityLevel; + HRESULT hr = profile->GetNetworkConnectivityLevel(&connectivityLevel); + Q_ASSERT_SUCCEEDED(hr); + if (connectivityLevel != NetworkConnectivityLevel_None) + iface->flags = QNetworkInterface::IsUp | QNetworkInterface::IsRunning; + + ComPtr adapter; + hr = profile->get_NetworkAdapter(&adapter); + Q_ASSERT_SUCCEEDED(hr); + UINT32 type; + hr = adapter->get_IanaInterfaceType(&type); + Q_ASSERT_SUCCEEDED(hr); + if (type == 23) + iface->flags |= QNetworkInterface::IsPointToPoint; + GUID id; + hr = adapter->get_NetworkAdapterId(&id); + Q_ASSERT_SUCCEEDED(hr); + OLECHAR adapterName[39]={0}; + StringFromGUID2(id, adapterName, 39); + iface->name = QString::fromWCharArray(adapterName); + + // According to http://stackoverflow.com/questions/12936193/how-unique-is-the-ethernet-network-adapter-id-in-winrt-it-is-derived-from-the-m + // obtaining the MAC address using WinRT API is impossible + // iface->hardwareAddress = ? + + for (int i = 0; i < hostList->length(); ++i) { + const HostNameInfo hostInfo = hostList->at(i); + if (id != hostInfo.adapterId) + continue; + + QNetworkAddressEntry entry; + entry.setIp(QHostAddress(hostInfo.address)); + entry.setPrefixLength(hostInfo.prefixLength); + iface->addressEntries << entry; + + hostList->takeAt(i); + --i; + } + return iface; +} + static QList interfaceListing() { QList interfaces; @@ -66,36 +116,46 @@ static QList interfaceListing() QList hostList; ComPtr hostNameStatics; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &hostNameStatics); + HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &hostNameStatics); + Q_ASSERT_SUCCEEDED(hr); ComPtr> hostNames; - hostNameStatics->GetHostNames(&hostNames); + hr = hostNameStatics->GetHostNames(&hostNames); + Q_ASSERT_SUCCEEDED(hr); if (!hostNames) return interfaces; unsigned int hostNameCount; - hostNames->get_Size(&hostNameCount); + hr = hostNames->get_Size(&hostNameCount); + Q_ASSERT_SUCCEEDED(hr); for (unsigned i = 0; i < hostNameCount; ++i) { HostNameInfo hostInfo; ComPtr hostName; - hostNames->GetAt(i, &hostName); + hr = hostNames->GetAt(i, &hostName); + Q_ASSERT_SUCCEEDED(hr); HostNameType type; - hostName->get_Type(&type); + hr = hostName->get_Type(&type); + Q_ASSERT_SUCCEEDED(hr); if (type == HostNameType_DomainName) continue; ComPtr ipInformation; - hostName->get_IPInformation(&ipInformation); + hr = hostName->get_IPInformation(&ipInformation); + Q_ASSERT_SUCCEEDED(hr); ComPtr currentAdapter; - ipInformation->get_NetworkAdapter(¤tAdapter); + hr = ipInformation->get_NetworkAdapter(¤tAdapter); + Q_ASSERT_SUCCEEDED(hr); - currentAdapter->get_NetworkAdapterId(&hostInfo.adapterId); + hr = currentAdapter->get_NetworkAdapterId(&hostInfo.adapterId); + Q_ASSERT_SUCCEEDED(hr); ComPtr> prefixLengthReference; - ipInformation->get_PrefixLength(&prefixLengthReference); + hr = ipInformation->get_PrefixLength(&prefixLengthReference); + Q_ASSERT_SUCCEEDED(hr); - prefixLengthReference->get_Value(&hostInfo.prefixLength); + hr = prefixLengthReference->get_Value(&hostInfo.prefixLength); + Q_ASSERT_SUCCEEDED(hr); // invalid prefixes if ((type == HostNameType_Ipv4 && hostInfo.prefixLength > 32) @@ -103,7 +163,8 @@ static QList interfaceListing() continue; HString name; - hostName->get_CanonicalName(name.GetAddressOf()); + hr = hostName->get_CanonicalName(name.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); UINT32 length; PCWSTR rawString = name.GetRawBuffer(&length); hostInfo.address = QString::fromWCharArray(rawString, length); @@ -112,54 +173,35 @@ static QList interfaceListing() } INetworkInformationStatics *networkInfoStatics; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &networkInfoStatics); + hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_Connectivity_NetworkInformation).Get(), &networkInfoStatics); + Q_ASSERT_SUCCEEDED(hr); + ComPtr connectionProfile; + hr = networkInfoStatics->GetInternetConnectionProfile(&connectionProfile); + Q_ASSERT_SUCCEEDED(hr); + QNetworkInterfacePrivate *iface = interfaceFromProfile(connectionProfile.Get(), &hostList); + if (iface) { + iface->index = 0; + interfaces << iface; + } + ComPtr> connectionProfiles; - networkInfoStatics->GetConnectionProfiles(&connectionProfiles); + hr = networkInfoStatics->GetConnectionProfiles(&connectionProfiles); + Q_ASSERT_SUCCEEDED(hr); if (!connectionProfiles) return interfaces; unsigned int size; - connectionProfiles->get_Size(&size); + hr = connectionProfiles->get_Size(&size); + Q_ASSERT_SUCCEEDED(hr); for (unsigned int i = 0; i < size; ++i) { - QNetworkInterfacePrivate *iface = new QNetworkInterfacePrivate; - interfaces << iface; - ComPtr profile; - connectionProfiles->GetAt(i, &profile); - - NetworkConnectivityLevel connectivityLevel; - profile->GetNetworkConnectivityLevel(&connectivityLevel); - if (connectivityLevel != NetworkConnectivityLevel_None) - iface->flags = QNetworkInterface::IsUp | QNetworkInterface::IsRunning; - - ComPtr adapter; - profile->get_NetworkAdapter(&adapter); - UINT32 type; - adapter->get_IanaInterfaceType(&type); - if (type == 23) - iface->flags |= QNetworkInterface::IsPointToPoint; - GUID id; - adapter->get_NetworkAdapterId(&id); - OLECHAR adapterName[39]={0}; - StringFromGUID2(id, adapterName, 39); - iface->name = QString::fromWCharArray(adapterName); - - // According to http://stackoverflow.com/questions/12936193/how-unique-is-the-ethernet-network-adapter-id-in-winrt-it-is-derived-from-the-m - // obtaining the MAC address using WinRT API is impossible - // iface->hardwareAddress = ? - - for (int i = 0; i < hostList.length(); ++i) { - const HostNameInfo hostInfo = hostList.at(i); - if (id != hostInfo.adapterId) - continue; - - QNetworkAddressEntry entry; - entry.setIp(QHostAddress(hostInfo.address)); - entry.setPrefixLength(hostInfo.prefixLength); - iface->addressEntries << entry; - - hostList.takeAt(i); - --i; + hr = connectionProfiles->GetAt(i, &profile); + Q_ASSERT_SUCCEEDED(hr); + + iface = interfaceFromProfile(profile.Get(), &hostList); + if (iface) { + iface->index = i + 1; + interfaces << iface; } } return interfaces; -- cgit v1.2.3 From 566399937ba3d17df12aa0cd8e7fe79bb0005b16 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Fri, 23 Oct 2015 16:03:48 +0200 Subject: winrt: Fix filedialog show on Windows 10 The file picker must be used inside the Xaml thread, otherwise execution will fail without giving any warning or error. Task-number: QTBUG-48389 Change-Id: I917e88e95993da04be3d7cd34344ffd68ee71cdd Reviewed-by: Samuel Nevala Reviewed-by: Andrew Knight --- .../platforms/winrt/qwinrtfiledialoghelper.cpp | 71 ++++++++++++++-------- 1 file changed, 44 insertions(+), 27 deletions(-) diff --git a/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp b/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp index 05b1fd76b1..b0f377147e 100644 --- a/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp +++ b/src/plugins/platforms/winrt/qwinrtfiledialoghelper.cpp @@ -239,20 +239,24 @@ static bool pickFiles(IFileOpenPicker *picker, QWinRTFileDialogHelper *helper, b eventDispatcher->installEventFilter(helper); return true; #else - if (singleFile) { - ComPtr> op; - hr = picker->PickSingleFileAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open single file picker"); - hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach file picker callback"); - } else { - ComPtr *>> op; - hr = picker->PickMultipleFilesAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open multi file picker"); - hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onMultipleFilesPicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach multi file callback"); - } - return true; + hr = QEventDispatcherWinRT::runOnXamlThread([picker, helper, singleFile]() { + HRESULT hr; + if (singleFile) { + ComPtr> op; + hr = picker->PickSingleFileAsync(&op); + RETURN_HR_IF_FAILED("Failed to open single file picker"); + hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach file picker callback"); + } else { + ComPtr *>> op; + hr = picker->PickMultipleFilesAsync(&op); + RETURN_HR_IF_FAILED("Failed to open multi file picker"); + hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onMultipleFilesPicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach multi file callback"); + } + return S_OK; + }); + return SUCCEEDED(hr); #endif } @@ -274,13 +278,17 @@ static bool pickFolder(IFolderPicker *picker, QWinRTFileDialogHelper *helper) Q_ASSERT(eventDispatcher); eventDispatcher->installEventFilter(helper); #else - ComPtr> op; - hr = picker->PickSingleFolderAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open folder picker"); - hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFolderPicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach folder picker callback"); + hr = QEventDispatcherWinRT::runOnXamlThread([picker, helper]() { + HRESULT hr; + ComPtr> op; + hr = picker->PickSingleFolderAsync(&op); + RETURN_HR_IF_FAILED("Failed to open folder picker"); + hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFolderPicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach folder picker callback"); + return S_OK; + }); #endif - return true; + return SUCCEEDED(hr); } static bool pickSaveFile(IFileSavePicker *picker, QWinRTFileDialogHelper *helper) @@ -301,13 +309,17 @@ static bool pickSaveFile(IFileSavePicker *picker, QWinRTFileDialogHelper *helper Q_ASSERT(eventDispatcher); eventDispatcher->installEventFilter(helper); #else - ComPtr> op; - hr = picker->PickSaveFileAsync(&op); - RETURN_FALSE_IF_FAILED("Failed to open save file picker"); - hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); - RETURN_FALSE_IF_FAILED("Failed to attach save file picker callback"); + hr = QEventDispatcherWinRT::runOnXamlThread([picker, helper]() { + HRESULT hr; + ComPtr> op; + hr = picker->PickSaveFileAsync(&op); + RETURN_HR_IF_FAILED("Failed to open save file picker"); + hr = op->put_Completed(Callback(helper, &QWinRTFileDialogHelper::onSingleFilePicked).Get()); + RETURN_HR_IF_FAILED("Failed to attach save file picker callback"); + return S_OK; + }); #endif - return true; + return SUCCEEDED(hr); } class QWinRTFileDialogHelperPrivate @@ -423,7 +435,12 @@ bool QWinRTFileDialogHelper::show(Qt::WindowFlags windowFlags, Qt::WindowModalit filterTitle.length()); boolean replaced; hr = choices->Insert(namedFilterRef.Get(), entry.Get(), &replaced); - RETURN_FALSE_IF_FAILED("Failed to insert file extension choice entry"); + // Only print a warning as * or *.* is not a valid choice on Windows 10 + // but used on a regular basis on all other platforms + if (FAILED(hr)) { + qWarning("Failed to insert file extension choice entry: %s: %s", + qPrintable(filterTitle), qPrintable(qt_error_string(hr))); + } } } -- cgit v1.2.3 From 4a2b9e086eb3d16403620b31a4d05bef529910d3 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 28 Oct 2015 13:19:59 +0100 Subject: Xcode generator: only replace the suffix in the library path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Xcode generator iterates trought all libraries and replaces their suffix (e.g "_debug") with a placeholder that lets Xcode switch between different library versions depending on the target. The current way we do this fails when the name of a library happens to contain the string "_debug" (e.g "qmldbg_debugger"). Since we replace every occurrence of suffix in the path, we end up replacing that part as well. The result will be linking errors. This patch ensures that we only replace the last occurrence of the suffix in the file path. Task-number: QTBUG-48961 Change-Id: I9fafbe0ea0ad8b9cfd13448d6b28801106e645ec Reviewed-by: Oswald Buddenhagen Reviewed-by: Ulf Hermann Reviewed-by: Tor Arne Vestbø --- qmake/generators/mac/pbuilder_pbx.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp index ccb3cfe810..42dd6c8aeb 100644 --- a/qmake/generators/mac/pbuilder_pbx.cpp +++ b/qmake/generators/mac/pbuilder_pbx.cpp @@ -853,8 +853,15 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) QString librarySuffix = project->first("QMAKE_XCODE_LIBRARY_SUFFIX").toQString(); suffixSetting = "$(" + suffixSetting + ")"; if (!librarySuffix.isEmpty()) { - library.replace(librarySuffix, suffixSetting); - name.remove(librarySuffix); + int pos = library.lastIndexOf(librarySuffix + '.'); + if (pos == -1) { + warn_msg(WarnLogic, "Failed to find expected suffix '%s' for library '%s'.", + qPrintable(librarySuffix), qPrintable(library)); + } else { + library.replace(pos, librarySuffix.length(), suffixSetting); + if (name.endsWith(librarySuffix)) + name.chop(librarySuffix.length()); + } } else { library.replace(name, name + suffixSetting); } -- cgit v1.2.3 From acb9db32b20344c74109ecbe5b4da493c9d7afc3 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Wed, 4 Nov 2015 12:20:34 +0100 Subject: Add spring-forward test Test that stepping into the missing hour lands us somewhere sane. Check that raw instance and product of .toLocalTime() agree. Task-number: QTBUG-49008 Change-Id: I430382ae223bcb43b151d2d6054ecbdd7edc8a47 Reviewed-by: Thiago Macieira --- .../auto/corelib/tools/qdatetime/tst_qdatetime.cpp | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp index 6cf73c85de..833dfe87d7 100644 --- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp @@ -69,6 +69,8 @@ private slots: void toTime_t_data(); void toTime_t(); void daylightSavingsTimeChange(); + void springForward_data(); + void springForward(); void setDate(); void setTime_data(); void setTime(); @@ -1593,6 +1595,48 @@ void tst_QDateTime::daylightSavingsTimeChange() QCOMPARE(dt.time(), QTime(0, 0, 1)); } +void tst_QDateTime::springForward_data() +{ + QTest::addColumn("day"); // day of DST transition + QTest::addColumn("time"); // in the "missing hour" + QTest::addColumn("step"); // days to step; +ve from before, -ve from after + QTest::addColumn("adjust"); // minutes ahead of UTC on day stepped from + + if (europeanTimeZone) { + QTest::newRow("Europe from day before") << QDate(2015, 3, 29) << QTime(2, 30, 0) << 1 << 60; +#if 0 // FIXME: fails + QTest::newRow("Europe from day after") << QDate(2015, 3, 29) << QTime(2, 30, 0) << -1 << 120; +#endif + // } else if (otherZone) { + } else { + QSKIP("No spring forward test data for this TZ"); + } +} + +void tst_QDateTime::springForward() +{ + QFETCH(QDate, day); + QFETCH(QTime, time); + QFETCH(int, step); + QFETCH(int, adjust); + + QDateTime direct = QDateTime(day.addDays(-step), time, Qt::LocalTime).addDays(step); + QCOMPARE(direct.date(), day); + QCOMPARE(direct.time().minute(), time.minute()); + QCOMPARE(direct.time().second(), time.second()); + int off = direct.time().hour() - time.hour(); + QVERIFY(off == 1 || off == -1); + // Note: function doc claims always +1, but this should be reviewed ! + + // Repeat, but getting there via .toLocalTime(): + QDateTime detour = QDateTime(day.addDays(-step), + time.addSecs(-60 * adjust), + Qt::UTC).toLocalTime(); + QCOMPARE(detour.time(), time); + detour = detour.addDays(step); + QCOMPARE(detour, direct); // Insist on consistency. +} + void tst_QDateTime::operator_eqeq_data() { QTest::addColumn("dt1"); -- cgit v1.2.3 From abf47610c716955b894e6ee20cc0dae00929799a Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 6 Nov 2015 12:47:13 +0100 Subject: iOS: only force-finish start-up from file engine when on main thread MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The authorization dialog that grants the application access to the assets will only show after returning back from applicationDidFinishLaunching. Therefore, trying to load an asset from main before qApp->exec() would normally fail. To remedy that, we added a path that starts a QEventLoop for a split second to force the application init process to finish. But this can only work if we start it from the main thread. A bug with this is seen in QML FileDialog, since it (clumsy enough) starts to iterate, in a separate thread, all the files in its currently set directory upon start-up construction (which should be fixed as well). The result is that the application gets dead-locked on start-up. Change-Id: I0047272d53314752903960b33f88b33dc0d7e78d Reviewed-by: Tor Arne Vestbø --- .../platforms/ios/qiosfileengineassetslibrary.mm | 40 ++++++++++++++-------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm b/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm index 761a89c989..bb12c164d6 100644 --- a/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm +++ b/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm @@ -48,20 +48,29 @@ static QThreadStorage > g_assetDataCache; static const int kBufferSize = 10; static ALAsset *kNoAsset = 0; -static void ensureAuthorizationDialogNotBlocked() +static bool ensureAuthorizationDialogNotBlocked() { if ([ALAssetsLibrary authorizationStatus] != ALAuthorizationStatusNotDetermined) - return; + return true; + if (static_cast(QObjectPrivate::get(qApp))->in_exec) - return; - - // Since authorization status has not been determined, the user will be asked - // to authorize the app. But since main has not finished, the dialog will be held - // back until the launch completes. To avoid a dead-lock below, we start an event - // loop to complete the launch. - QEventLoop loop; - QTimer::singleShot(1, &loop, &QEventLoop::quit); - loop.exec(); + return true; + + if ([NSThread isMainThread]) { + // The dialog is about to show, but since main has not finished, the dialog will be held + // back until the launch completes. This is problematic since we cannot successfully return + // back to the caller before the asset is ready, which also includes showing the dialog. To + // work around this, we create an event loop to that will complete the launch (return from the + // applicationDidFinishLaunching callback). But this will only work if we're on the main thread. + QEventLoop loop; + QTimer::singleShot(1, &loop, &QEventLoop::quit); + loop.exec(); + } else { + NSLog(@"QIOSFileEngine: unable to show assets authorization dialog from non-gui thread before QApplication is executing."); + return false; + } + + return true; } // ------------------------------------------------------------------------- @@ -80,8 +89,10 @@ public: , m_writeIndex(0) , m_nextAssetReady(false) { - ensureAuthorizationDialogNotBlocked(); - startEnumerate(); + if (!ensureAuthorizationDialogNotBlocked()) + writeAsset(kNoAsset); + else + startEnumerate(); } ~QIOSAssetEnumerator() @@ -186,7 +197,8 @@ public: , m_assetUrl(assetUrl) , m_assetLibrary(0) { - ensureAuthorizationDialogNotBlocked(); + if (!ensureAuthorizationDialogNotBlocked()) + return; if (QIOSAssetData *assetData = g_assetDataCache.localData()) { // It's a common pattern that QFiles pointing to the same path are created and destroyed -- cgit v1.2.3 From 51b19c0d868eccf75b407a3d4ca272d8ce5b2912 Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Wed, 4 Nov 2015 14:36:28 +0100 Subject: Doc: Added more details to QIODevice::readAll() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-43666 Change-Id: Ibe56a72f9fa7a31a320aceda645fde9b08645271 Reviewed-by: Oswald Buddenhagen Reviewed-by: Topi Reiniö --- src/corelib/io/qiodevice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index 3b1cd196d2..3c7a7d69e4 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -973,7 +973,7 @@ QByteArray QIODevice::read(qint64 maxSize) /*! \overload - Reads all available data from the device, and returns it as a + Reads all remaining data from the device, and returns it as a byte array. This function has no way of reporting errors; returning an empty -- cgit v1.2.3 From b91389fef0d3c850dad17eab762d5c873f29a64d Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Tue, 10 Nov 2015 08:48:57 +0100 Subject: winrt: Clean up QNativeSocketEngine WinRT/Windows Phone "coding guidelines" are now used for the native socket engine as well. - Whenever an operation is expected to succeed Q_ASSERT_SUCCEEDED is used. - QWinRTFunctions::await is used for waiting for async operations - Improved error handling Change-Id: I6c8d64731da5c94b911a5190231c7c8f68d9c261 Reviewed-by: Andrew Knight --- src/network/socket/qnativesocketengine_winrt.cpp | 222 ++++++++++++----------- 1 file changed, 112 insertions(+), 110 deletions(-) diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp index d41bd4d313..cfb950592f 100644 --- a/src/network/socket/qnativesocketengine_winrt.cpp +++ b/src/network/socket/qnativesocketengine_winrt.cpp @@ -150,16 +150,10 @@ static AsyncStatus opStatus(const ComPtr &op) { ComPtr info; HRESULT hr = op.As(&info); - if (FAILED(hr)) { - qErrnoWarning(hr, "Failed to cast op to IAsyncInfo."); - return Error; - } + Q_ASSERT_SUCCEEDED(hr); AsyncStatus status; hr = info->get_Status(&status); - if (FAILED(hr)) { - qErrnoWarning(hr, "Failed to get AsyncStatus."); - return Error; - } + Q_ASSERT_SUCCEEDED(hr); return status; } @@ -265,25 +259,26 @@ bool QNativeSocketEngine::connectToHostByName(const QString &name, quint16 port) Q_D(QNativeSocketEngine); HStringReference hostNameRef(reinterpret_cast(name.utf16())); ComPtr hostNameFactory; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), - &hostNameFactory); + HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), + &hostNameFactory); + Q_ASSERT_SUCCEEDED(hr); ComPtr remoteHost; - if (FAILED(hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost))) { - qWarning("QNativeSocketEnginePrivate::nativeConnect:: Could not create hostname"); - return false; - } + hr = hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost); + RETURN_FALSE_IF_FAILED("QNativeSocketEngine::connectToHostByName: Could not create hostname."); const QString portString = QString::number(port); HStringReference portReference(reinterpret_cast(portString.utf16())); - HRESULT hr = E_FAIL; if (d->socketType == QAbstractSocket::TcpSocket) hr = d->tcpSocket()->ConnectAsync(remoteHost.Get(), portReference.Get(), &d->connectOp); else if (d->socketType == QAbstractSocket::UdpSocket) hr = d->udpSocket()->ConnectAsync(remoteHost.Get(), portReference.Get(), &d->connectOp); - if (FAILED(hr)) { - qWarning("QNativeSocketEnginePrivate::nativeConnect:: Could not obtain connect action"); + if (hr == E_ACCESSDENIED) { + qErrnoWarning(hr, "QNativeSocketEngine::connectToHostByName: Unable to connect to host. \ + Please check your manifest capabilities."); return false; } + Q_ASSERT_SUCCEEDED(hr); + d->socketState = QAbstractSocket::ConnectingState; hr = d->connectOp->put_Completed(Callback( d, &QNativeSocketEnginePrivate::handleConnectToHost).Get()); @@ -295,68 +290,52 @@ bool QNativeSocketEngine::connectToHostByName(const QString &name, quint16 port) bool QNativeSocketEngine::bind(const QHostAddress &address, quint16 port) { Q_D(QNativeSocketEngine); + HRESULT hr; ComPtr hostAddress; + if (address != QHostAddress::Any && address != QHostAddress::AnyIPv4 && address != QHostAddress::AnyIPv6) { ComPtr hostNameFactory; - GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), + hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), &hostNameFactory); + Q_ASSERT_SUCCEEDED(hr); const QString addressString = address.toString(); HStringReference addressRef(reinterpret_cast(addressString.utf16())); - hostNameFactory->CreateHostName(addressRef.Get(), &hostAddress); + hr = hostNameFactory->CreateHostName(addressRef.Get(), &hostAddress); + RETURN_FALSE_IF_FAILED("QNativeSocketEngine::bind: Could not create hostname."); } - HRESULT hr; QString portQString = port ? QString::number(port) : QString(); HStringReference portString(reinterpret_cast(portQString.utf16())); ComPtr op; if (d->socketType == QAbstractSocket::TcpSocket) { - if (!d->tcpListener - && FAILED(RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocketListener).Get(), - &d->tcpListener))) { - qWarning("Failed to create listener"); - return false; + if (!d->tcpListener) { + hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocketListener).Get(), + &d->tcpListener); + Q_ASSERT_SUCCEEDED(hr); } - d->tcpListener->add_ConnectionReceived(Callback(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(), &d->connectionToken); + hr = d->tcpListener->add_ConnectionReceived( + Callback(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(), + &d->connectionToken); + Q_ASSERT_SUCCEEDED(hr); hr = d->tcpListener->BindEndpointAsync(hostAddress.Get(), portString.Get(), &op); - if (FAILED(hr)) { - qErrnoWarning(hr, "Unable to bind socket."); // ### Set error message - return false; - } } else if (d->socketType == QAbstractSocket::UdpSocket) { hr = d->udpSocket()->BindEndpointAsync(hostAddress.Get(), portString.Get(), &op); - if (FAILED(hr)) { - qErrnoWarning(hr, "Unable to bind socket."); // ### Set error message - return false; - } - hr = op->put_Completed(Callback(d, &QNativeSocketEnginePrivate::handleBindCompleted).Get()); - if (FAILED(hr)) { - qErrnoWarning(hr, "Unable to set bind callback."); - return false; - } } - - if (op) { - while (opStatus(op) == Started) - d->eventLoop.processEvents(); - - AsyncStatus status = opStatus(op); - if (status == Error || status == Canceled) - return false; - - hr = op->GetResults(); - if (FAILED(hr)) { - qErrnoWarning(hr, "Failed to bind socket"); - return false; - } - - d->socketState = QAbstractSocket::BoundState; - d->fetchConnectionParameters(); - return true; + if (hr == E_ACCESSDENIED) { + qErrnoWarning(hr, "Unable to bind socket. Please check your manifest capabilities."); + return false; } + Q_ASSERT_SUCCEEDED(hr); - return false; + hr = op->put_Completed(Callback(d, &QNativeSocketEnginePrivate::handleBindCompleted).Get()); + Q_ASSERT_SUCCEEDED(hr); + hr = QWinRTFunctions::await(op); + Q_ASSERT_SUCCEEDED(hr); + + d->socketState = QAbstractSocket::BoundState; + return d->fetchConnectionParameters(); } bool QNativeSocketEngine::listen() @@ -430,27 +409,36 @@ void QNativeSocketEngine::close() d->notifyOnWrite = false; d->notifyOnException = false; + HRESULT hr; if (d->connectOp) { ComPtr info; - d->connectOp.As(&info); + hr = d->connectOp.As(&info); + Q_ASSERT_SUCCEEDED(hr); if (info) { - info->Cancel(); - info->Close(); + hr = info->Cancel(); + Q_ASSERT_SUCCEEDED(hr); + hr = info->Close(); + Q_ASSERT_SUCCEEDED(hr); } } if (d->socketDescriptor != -1) { ComPtr socket; if (d->socketType == QAbstractSocket::TcpSocket) { - d->tcpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); - d->tcpSocket()->Release(); + hr = d->tcpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); + Q_ASSERT_SUCCEEDED(hr); + hr = d->tcpSocket()->Release(); + Q_ASSERT_SUCCEEDED(hr); } else if (d->socketType == QAbstractSocket::UdpSocket) { - d->udpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); - d->udpSocket()->Release(); + hr = d->udpSocket()->QueryInterface(IID_PPV_ARGS(&socket)); + Q_ASSERT_SUCCEEDED(hr); + hr = d->udpSocket()->Release(); + Q_ASSERT_SUCCEEDED(hr); } if (socket) { - socket->Close(); + hr = socket->Close(); + Q_ASSERT_SUCCEEDED(hr); d->socketDescriptor = -1; } d->socketDescriptor = -1; @@ -531,7 +519,7 @@ qint64 QNativeSocketEngine::write(const char *data, qint64 len) hr = d->tcpSocket()->get_OutputStream(&stream); else if (d->socketType == QAbstractSocket::UdpSocket) hr = d->udpSocket()->get_OutputStream(&stream); - RETURN_IF_FAILED("Failed to get output stream to socket", return -1); + Q_ASSERT_SUCCEEDED(hr); qint64 bytesWritten = writeIOStream(stream, data, len); if (bytesWritten < 0) @@ -580,20 +568,21 @@ qint64 QNativeSocketEngine::writeDatagram(const char *data, qint64 len, const QI HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(), &hostNameFactory); - RETURN_IF_FAILED("Could not obtain hostname factory", return -1); + Q_ASSERT_SUCCEEDED(hr); const QString addressString = header.destinationAddress.toString(); HStringReference hostNameRef(reinterpret_cast(addressString.utf16())); - hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost); + hr = hostNameFactory->CreateHostName(hostNameRef.Get(), &remoteHost); + RETURN_IF_FAILED("QNativeSocketEngine::writeDatagram: Could not create hostname.", return -1); ComPtr> streamOperation; ComPtr stream; const QString portString = QString::number(header.destinationPort); HStringReference portRef(reinterpret_cast(portString.utf16())); hr = d->udpSocket()->GetOutputStreamAsync(remoteHost.Get(), portRef.Get(), &streamOperation); - RETURN_IF_FAILED("Failed to get output stream to socket", return -1); + Q_ASSERT_SUCCEEDED(hr); hr = QWinRTFunctions::await(streamOperation, stream.GetAddressOf()); - RETURN_IF_FAILED("Failed to get output stream to socket", return -1); + Q_ASSERT_SUCCEEDED(hr); return writeIOStream(stream, data, len); } @@ -778,26 +767,23 @@ void QNativeSocketEngine::establishRead() bool QNativeSocketEnginePrivate::createNewSocket(QAbstractSocket::SocketType socketType, QAbstractSocket::NetworkLayerProtocol &socketProtocol) { Q_UNUSED(socketProtocol); + HRESULT hr; + switch (socketType) { case QAbstractSocket::TcpSocket: { ComPtr socket; - HRESULT hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocket).Get(), &socket); - if (FAILED(hr)) { - qWarning("Failed to create StreamSocket instance"); - return false; - } + hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_StreamSocket).Get(), &socket); + Q_ASSERT_SUCCEEDED(hr); socketDescriptor = qintptr(socket.Detach()); break; } case QAbstractSocket::UdpSocket: { ComPtr socket; - HRESULT hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_DatagramSocket).Get(), &socket); - if (FAILED(hr)) { - qWarning("Failed to create stream socket"); - return false; - } + hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Networking_Sockets_DatagramSocket).Get(), &socket); + Q_ASSERT_SUCCEEDED(hr); socketDescriptor = qintptr(socket.Detach()); - udpSocket()->add_MessageReceived(Callback(this, &QNativeSocketEnginePrivate::handleNewDatagram).Get(), &connectionToken); + hr = udpSocket()->add_MessageReceived(Callback(this, &QNativeSocketEnginePrivate::handleNewDatagram).Get(), &connectionToken); + Q_ASSERT_SUCCEEDED(hr); break; } default: @@ -834,10 +820,12 @@ QNativeSocketEnginePrivate::~QNativeSocketEnginePrivate() if (socketDescriptor == -1 || connectionToken.value == -1) return; + HRESULT hr; if (socketType == QAbstractSocket::UdpSocket) - udpSocket()->remove_MessageReceived(connectionToken); + hr = udpSocket()->remove_MessageReceived(connectionToken); else if (socketType == QAbstractSocket::TcpSocket) - tcpListener->remove_ConnectionReceived(connectionToken); + hr = tcpListener->remove_ConnectionReceived(connectionToken); + Q_ASSERT_SUCCEEDED(hr); } void QNativeSocketEnginePrivate::setError(QAbstractSocket::SocketError error, ErrorString errorString) const @@ -1064,56 +1052,66 @@ bool QNativeSocketEnginePrivate::fetchConnectionParameters() peerPort = 0; peerAddress.clear(); + HRESULT hr; if (socketType == QAbstractSocket::TcpSocket) { ComPtr hostName; HString tmpHString; ComPtr info; - if (FAILED(tcpSocket()->get_Information(&info))) { - qWarning("QNativeSocketEnginePrivate::fetchConnectionParameters: Could not obtain socket info"); - return false; - } - info->get_LocalAddress(&hostName); + hr = tcpSocket()->get_Information(&info); + Q_ASSERT_SUCCEEDED(hr); + hr = info->get_LocalAddress(&hostName); + Q_ASSERT_SUCCEEDED(hr); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_LocalPort(tmpHString.GetAddressOf()); + hr = info->get_LocalPort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localPort = qt_QStringFromHString(tmpHString).toInt(); } if (!localPort && tcpListener) { ComPtr listenerInfo = 0; - tcpListener->get_Information(&listenerInfo); - listenerInfo->get_LocalPort(tmpHString.GetAddressOf()); + hr = tcpListener->get_Information(&listenerInfo); + Q_ASSERT_SUCCEEDED(hr); + hr = listenerInfo->get_LocalPort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localPort = qt_QStringFromHString(tmpHString).toInt(); - localAddress == QHostAddress::Any; + localAddress = QHostAddress::Any; } info->get_RemoteAddress(&hostName); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_RemotePort(tmpHString.GetAddressOf()); + hr = info->get_RemotePort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerPort = qt_QStringFromHString(tmpHString).toInt(); } } else if (socketType == QAbstractSocket::UdpSocket) { ComPtr hostName; HString tmpHString; ComPtr info; - if (FAILED(udpSocket()->get_Information(&info))) { - qWarning("QNativeSocketEnginePrivate::fetchConnectionParameters: Could not obtain socket information"); - return false; - } - info->get_LocalAddress(&hostName); + hr = udpSocket()->get_Information(&info); + Q_ASSERT_SUCCEEDED(hr); + hr = info->get_LocalAddress(&hostName); + Q_ASSERT_SUCCEEDED(hr); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_LocalPort(tmpHString.GetAddressOf()); + hr = info->get_LocalPort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); localPort = qt_QStringFromHString(tmpHString).toInt(); } - info->get_RemoteAddress(&hostName); + hr = info->get_RemoteAddress(&hostName); + Q_ASSERT_SUCCEEDED(hr); if (hostName) { - hostName->get_CanonicalName(tmpHString.GetAddressOf()); + hr = hostName->get_CanonicalName(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerAddress.setAddress(qt_QStringFromHString(tmpHString)); - info->get_RemotePort(tmpHString.GetAddressOf()); + hr = info->get_RemotePort(tmpHString.GetAddressOf()); + Q_ASSERT_SUCCEEDED(hr); peerPort = qt_QStringFromHString(tmpHString).toInt(); } } @@ -1174,12 +1172,16 @@ void QNativeSocketEnginePrivate::handleConnectionEstablished(IAsyncAction *actio // The callback might be triggered several times if we do not cancel/reset it here if (connectOp) { ComPtr info; - connectOp.As(&info); + hr = connectOp.As(&info); + Q_ASSERT_SUCCEEDED(hr); if (info) { - info->Cancel(); - info->Close(); + hr = info->Cancel(); + Q_ASSERT_SUCCEEDED(hr); + hr = info->Close(); + Q_ASSERT_SUCCEEDED(hr); } - connectOp.Reset(); + hr = connectOp.Reset(); + Q_ASSERT_SUCCEEDED(hr); } socketState = QAbstractSocket::ConnectedState; -- cgit v1.2.3 From 5956d8715c7f8c77221b2baeeff0b7fa807f8f0e Mon Sep 17 00:00:00 2001 From: Samuel Nevala Date: Mon, 9 Nov 2015 12:29:26 +0200 Subject: winrt: Make dialog and window behave similarly. Status bar visibility can be controlled from dialog and dialog size is screen size. Change-Id: Ia8e932a9e1e1549a17d12532639391335760f9e0 Reviewed-by: Andrew Knight --- src/plugins/platforms/winrt/qwinrtscreen.cpp | 3 ++- src/plugins/platforms/winrt/qwinrtwindow.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/winrt/qwinrtscreen.cpp b/src/plugins/platforms/winrt/qwinrtscreen.cpp index 8ba71d88e7..5bb29d3805 100644 --- a/src/plugins/platforms/winrt/qwinrtscreen.cpp +++ b/src/plugins/platforms/winrt/qwinrtscreen.cpp @@ -699,7 +699,8 @@ Xaml::IDependencyObject *QWinRTScreen::canvas() const void QWinRTScreen::setStatusBarVisibility(bool visible, QWindow *window) { Q_D(QWinRTScreen); - if (!window || (window->flags() & Qt::WindowType_Mask) != Qt::Window) + const Qt::WindowFlags windowType = window->flags() & Qt::WindowType_Mask; + if (!window || (windowType != Qt::Window && windowType != Qt::Dialog)) return; QEventDispatcherWinRT::runOnXamlThread([d, visible]() { diff --git a/src/plugins/platforms/winrt/qwinrtwindow.cpp b/src/plugins/platforms/winrt/qwinrtwindow.cpp index 0d43e76c1a..bec94c1e51 100644 --- a/src/plugins/platforms/winrt/qwinrtwindow.cpp +++ b/src/plugins/platforms/winrt/qwinrtwindow.cpp @@ -207,7 +207,8 @@ void QWinRTWindow::setGeometry(const QRect &rect) Q_D(QWinRTWindow); const Qt::WindowFlags windowFlags = window()->flags(); - if (window()->isTopLevel() && (windowFlags & Qt::WindowType_Mask) == Qt::Window) { + const Qt::WindowFlags windowType = windowFlags & Qt::WindowType_Mask; + if (window()->isTopLevel() && (windowType == Qt::Window || windowType == Qt::Dialog)) { QPlatformWindow::setGeometry(windowFlags & Qt::MaximizeUsingFullscreenGeometryHint ? d->screen->geometry() : d->screen->availableGeometry()); QWindowSystemInterface::handleGeometryChange(window(), geometry()); -- cgit v1.2.3 From 708424c305d38c53487a4234361cca5c90486c1f Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Mon, 9 Nov 2015 11:49:39 +0100 Subject: Eliminate duplicate "between" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I548e2df4cb94e41bb5247fc6977a3c3f67bf0bda Reviewed-by: Topi Reiniö --- src/corelib/tools/qtimezone.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qtimezone.cpp b/src/corelib/tools/qtimezone.cpp index 900c8ff14e..22091e641f 100644 --- a/src/corelib/tools/qtimezone.cpp +++ b/src/corelib/tools/qtimezone.cpp @@ -116,8 +116,9 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); \class QTimeZone \inmodule QtCore \since 5.2 - \brief The QTimeZone class converts between between UTC and local time in a - specific time zone. + + \brief The QTimeZone class converts between UTC and local time in a specific + time zone. \threadsafe -- cgit v1.2.3 From 4890c75d0d301fcfea594a5ad80577d0ffa6bb88 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Mon, 9 Nov 2015 12:05:49 +0100 Subject: Prefer "daylight-saving time" and "DST" over "daylight time". MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first two are the "proper" terms; the last is a colloquialism. Also amended "daylight savings" (which summons to mind a hybrid of "daylight robbery" and "bargain-basket savings"). Improved related wording in many of the places amended. Task-number: QTBUG-49308 Change-Id: I726f18a344b2fe37f765a14684d1447c8b7ab00c Reviewed-by: Topi Reiniö --- src/corelib/kernel/qfunctions_wince.h | 2 +- src/corelib/tools/qdatetime.cpp | 68 +++++++++++++------------- src/corelib/tools/qelapsedtimer.cpp | 2 +- src/corelib/tools/qtimezone.cpp | 68 +++++++++++++------------- src/corelib/tools/qtimezoneprivate.cpp | 10 ++-- src/corelib/tools/qtimezoneprivate_android.cpp | 22 ++++----- 6 files changed, 85 insertions(+), 87 deletions(-) diff --git a/src/corelib/kernel/qfunctions_wince.h b/src/corelib/kernel/qfunctions_wince.h index d172acceec..4273070c11 100644 --- a/src/corelib/kernel/qfunctions_wince.h +++ b/src/corelib/kernel/qfunctions_wince.h @@ -103,7 +103,7 @@ struct tm { int tm_year; /* years since 1900 */ int tm_wday; /* days since Sunday - [0,6] */ int tm_yday; /* days since January 1 - [0,365] */ - int tm_isdst; /* daylight savings time flag */ + int tm_isdst; /* daylight-saving time flag */ }; #endif // _TM_DEFINED diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 1519b8b926..9bbf5b8944 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -1383,7 +1383,7 @@ bool QDate::isLeapYear(int y) QTime uses the 24-hour clock format; it has no concept of AM/PM. Unlike QDateTime, QTime knows nothing about time zones or - daylight savings time (DST). + daylight-saving time (DST). A QTime object is typically created either by giving the number of hours, minutes, seconds, and milliseconds explicitly, or by @@ -2059,7 +2059,7 @@ void QTime::start() \warning If the system's clock setting has been changed since the last time start() or restart() was called, the result is - undefined. This can happen when daylight savings time is turned on + undefined. This can happen when daylight-saving time is turned on or off. \sa start(), elapsed(), currentTime() @@ -2087,7 +2087,7 @@ int QTime::restart() \warning If the system's clock setting has been changed since the last time start() or restart() was called, the result is - undefined. This can happen when daylight savings time is turned on + undefined. This can happen when daylight-saving time is turned on or off. \sa start(), restart() @@ -2301,7 +2301,7 @@ static qint64 qt_mktime(QDate *date, QTime *time, QDateTimePrivate::DaylightStat } // Calls the platform variant of localtime for the given msecs, and updates -// the date, time, and daylight status with the returned values. +// the date, time, and DST status with the returned values. static bool qt_localtime(qint64 msecsSinceEpoch, QDate *localDate, QTime *localTime, QDateTimePrivate::DaylightStatus *daylightStatus) { @@ -2417,7 +2417,7 @@ static bool epochMSecsToLocalTime(qint64 msecs, QDate *localDate, QTime *localTi *daylightStatus = QDateTimePrivate::StandardTime; return true; } else if (msecs > (qint64(TIME_T_MAX) * 1000)) { - // Docs state any LocalTime after 2037-12-31 *will* have any Daylight Time applied + // Docs state any LocalTime after 2037-12-31 *will* have any DST applied // but this may fall outside the supported time_t range, so need to fake it. // Use existing method to fake the conversion, but this is deeply flawed as it may // apply the conversion from the wrong day number, e.g. if rule is last Sunday of month @@ -2442,7 +2442,7 @@ static bool epochMSecsToLocalTime(qint64 msecs, QDate *localDate, QTime *localTi } // Convert a LocalTime expressed in local msecs encoding and the corresponding -// daylight status into a UTC epoch msecs. Optionally populate the returned +// DST status into a UTC epoch msecs. Optionally populate the returned // values from mktime for the adjusted local date and time. static qint64 localMSecsToEpochMSecs(qint64 localMsecs, QDateTimePrivate::DaylightStatus *daylightStatus, @@ -2457,10 +2457,10 @@ static qint64 localMSecsToEpochMSecs(qint64 localMsecs, if (localMsecs <= qint64(MSECS_PER_DAY)) { - // Docs state any LocalTime before 1970-01-01 will *not* have any Daylight Time applied + // Docs state any LocalTime before 1970-01-01 will *not* have any DST applied // First, if localMsecs is within +/- 1 day of minimum time_t try mktime in case it does - // fall after minimum and needs proper daylight conversion + // fall after minimum and needs proper DST conversion if (localMsecs >= -qint64(MSECS_PER_DAY)) { bool valid; qint64 utcMsecs = qt_mktime(&dt, &tm, daylightStatus, abbreviation, &valid); @@ -2488,11 +2488,11 @@ static qint64 localMSecsToEpochMSecs(qint64 localMsecs, } else if (localMsecs >= msecsMax - MSECS_PER_DAY) { - // Docs state any LocalTime after 2037-12-31 *will* have any Daylight Time applied + // Docs state any LocalTime after 2037-12-31 *will* have any DST applied // but this may fall outside the supported time_t range, so need to fake it. // First, if localMsecs is within +/- 1 day of maximum time_t try mktime in case it does - // fall before maximum and can use proper daylight conversion + // fall before maximum and can use proper DST conversion if (localMsecs <= msecsMax + MSECS_PER_DAY) { bool valid; qint64 utcMsecs = qt_mktime(&dt, &tm, daylightStatus, abbreviation, &valid); @@ -2662,7 +2662,7 @@ void QDateTimePrivate::setDaylightStatus(QDateTimePrivate::DaylightStatus status } } -// Get the Daylight Status if LocalTime set via msecs +// Get the DST Status if LocalTime set via msecs QDateTimePrivate::DaylightStatus QDateTimePrivate::daylightStatus() const { if ((m_status & SetToDaylightTime) == SetToDaylightTime) @@ -2746,7 +2746,7 @@ void QDateTimePrivate::refreshDateTime() #endif // QT_BOOTSTRAPPED // We have a valid date and time and a Qt::LocalTime or Qt::TimeZone that needs calculating - // LocalTime and TimeZone might fall into "missing" DaylightTime transition hour + // LocalTime and TimeZone might fall into a "missing" DST transition hour // Calling toEpochMSecs will adjust the returned date/time if it does QDate testDate; QTime testTime; @@ -2776,8 +2776,8 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone { // Get the effective data from QTimeZone QTimeZonePrivate::Data data = zone.d->dataForLocalTime(zoneMSecs); - // Docs state any LocalTime before 1970-01-01 will *not* have any Daylight Time applied - // but all times afterwards will have Daylight Time applied. + // Docs state any LocalTime before 1970-01-01 will *not* have any DST applied + // but all affected times afterwards will have DST applied. if (data.atMSecsSinceEpoch >= 0) { msecsToTime(data.atMSecsSinceEpoch + (data.offsetFromUtc * 1000), localDate, localTime); return data.atMSecsSinceEpoch; @@ -2836,7 +2836,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone QDateTime expressed as local time; use toUTC() to convert it to UTC. You can also use timeSpec() to find out if a QDateTime object stores a UTC time or a local time. Operations such as - addSecs() and secsTo() are aware of daylight saving time (DST). + addSecs() and secsTo() are aware of daylight-saving time (DST). \note QDateTime does not account for leap seconds. @@ -2866,7 +2866,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone correctly or not up-to-date, QDateTime will give wrong results as well. - \section2 Daylight Savings Time (DST) + \section2 Daylight-Saving Time (DST) QDateTime takes into account the system's time zone information when dealing with DST. On modern Unix systems, this means it @@ -2884,7 +2884,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone time zone before 1970, even if the system's time zone database supports that information. - QDateTime takes into consideration the Standard Time to Daylight Time + QDateTime takes into consideration the Standard Time to Daylight-Saving Time transition. For example if the transition is at 2am and the clock goes forward to 3am, then there is a "missing" hour from 02:00:00 to 02:59:59.999 which QDateTime considers to be invalid. Any date maths performed @@ -2896,7 +2896,7 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone to define a QDateTime relative to UTC at a fixed offset of a given number of seconds from UTC. For example, an offset of +3600 seconds is one hour ahead of UTC and is usually written in ISO standard notation as - "UTC+01:00". Daylight Savings Time never applies with this TimeSpec. + "UTC+01:00". Daylight-Saving Time never applies with this TimeSpec. There is no explicit size restriction to the offset seconds, but there is an implicit limit imposed when using the toString() and fromString() @@ -2908,8 +2908,8 @@ qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone A Qt::TimeSpec of Qt::TimeZone is also supported in conjunction with the QTimeZone class. This allows you to define a datetime in a named time zone - adhering to a consistent set of daylight savings transition rules. For - example a time zone of "Europe/Berlin" will apply the daylight savings + adhering to a consistent set of daylight-saving transition rules. For + example a time zone of "Europe/Berlin" will apply the daylight-saving rules as used in Germany since 1970. Note that the transition rules applied depend on the platform support. See the QTimeZone documentation for more details. @@ -3051,7 +3051,7 @@ bool QDateTime::isNull() const the current Qt::TimeSpec, otherwise returns \c false. If the timeSpec() is Qt::LocalTime or Qt::TimeZone then the date and time are - checked to see if they fall in the Standard Time to Daylight Time transition + checked to see if they fall in the Standard Time to Daylight-Saving Time transition hour, i.e. if the transition is at 2am and the clock goes forward to 3am then the time from 02:00:00 to 02:59:59.999 is considered to be invalid. @@ -3142,10 +3142,10 @@ QTimeZone QDateTime::timeZone() const If the timeSpec() is Qt::OffsetFromUTC this will be the value originally set. If the timeSpec() is Qt::TimeZone this will be the offset effective in the - Time Zone including any Daylight Saving Offset. + Time Zone including any Daylight-Saving Offset. If the timeSpec() is Qt::LocalTime this will be the difference between the - Local Time and UTC including any Daylight Saving Offset. + Local Time and UTC including any Daylight-Saving Offset. If the timeSpec() is Qt::UTC this will be 0. @@ -3202,7 +3202,7 @@ QString QDateTime::timeZoneAbbreviation() const /*! \since 5.2 - Returns if this datetime falls in Daylight Savings Time. + Returns if this datetime falls in Daylight-Saving Time. If the Qt::TimeSpec is not Qt::LocalTime or Qt::TimeZone then will always return false. @@ -3415,8 +3415,8 @@ void QDateTime::setMSecsSinceEpoch(qint64 msecs) break; case Qt::TimeZone: #ifndef QT_BOOTSTRAPPED - // Docs state any LocalTime before 1970-01-01 will *not* have any Daylight Time applied - // but all times afterwards will have Daylight Time applied. + // Docs state any LocalTime before 1970-01-01 will *not* have any DST applied + // but all affected times afterwards will have DST applied. if (msecs >= 0) d->m_offsetFromUtc = d->m_timeZone.d->offsetFromUtc(msecs); else @@ -3658,7 +3658,7 @@ QString QDateTime::toString(const QString& format) const negative). If the timeSpec() is Qt::LocalTime and the resulting - date and time fall in the Standard Time to Daylight Time transition + date and time fall in the Standard Time to Daylight-Saving Time transition hour then the result will be adjusted accordingly, i.e. if the transition is at 2am and the clock goes forward to 3am and the result falls between 2am and 3am then the result will be adjusted to fall after 3am. @@ -3693,7 +3693,7 @@ QDateTime QDateTime::addDays(qint64 ndays) const is negative). If the timeSpec() is Qt::LocalTime and the resulting - date and time fall in the Standard Time to Daylight Time transition + date and time fall in the Standard Time to Daylight-Saving Time transition hour then the result will be adjusted accordingly, i.e. if the transition is at 2am and the clock goes forward to 3am and the result falls between 2am and 3am then the result will be adjusted to fall after 3am. @@ -3728,7 +3728,7 @@ QDateTime QDateTime::addMonths(int nmonths) const negative). If the timeSpec() is Qt::LocalTime and the resulting - date and time fall in the Standard Time to Daylight Time transition + date and time fall in the Standard Time to Daylight-Saving Time transition hour then the result will be adjusted accordingly, i.e. if the transition is at 2am and the clock goes forward to 3am and the result falls between 2am and 3am then the result will be adjusted to fall after 3am. @@ -3788,7 +3788,7 @@ QDateTime QDateTime::addMSecs(qint64 msecs) const QDateTime dt(*this); if (d->m_spec == Qt::LocalTime || d->m_spec == Qt::TimeZone) - // Convert to real UTC first in case crosses daylight transition + // Convert to real UTC first in case crosses DST transition dt.setMSecsSinceEpoch(d->toMSecsSinceEpoch() + msecs); else // No need to convert, just add on @@ -3823,8 +3823,8 @@ qint64 QDateTime::daysTo(const QDateTime &other) const the value returned is negative. Before performing the comparison, the two datetimes are converted - to Qt::UTC to ensure that the result is correct if one of the two - datetimes has daylight saving time (DST) and the other doesn't. + to Qt::UTC to ensure that the result is correct if daylight-saving + (DST) applies to one of the two datetimes but not the other. Returns 0 if either datetime is invalid. @@ -3845,8 +3845,8 @@ qint64 QDateTime::secsTo(const QDateTime &other) const the value returned is negative. Before performing the comparison, the two datetimes are converted - to Qt::UTC to ensure that the result is correct if one of the two - datetimes has daylight saving time (DST) and the other doesn't. + to Qt::UTC to ensure that the result is correct if daylight-saving + (DST) applies to one of the two datetimes and but not the other. Returns 0 if either datetime is invalid. diff --git a/src/corelib/tools/qelapsedtimer.cpp b/src/corelib/tools/qelapsedtimer.cpp index 41e8b4854d..8360f11632 100644 --- a/src/corelib/tools/qelapsedtimer.cpp +++ b/src/corelib/tools/qelapsedtimer.cpp @@ -83,7 +83,7 @@ QT_BEGIN_NAMESPACE platforms that support it (see QElapsedTimer::isMonotonic()). This has the added benefit that QElapsedTimer is immune to time adjustments, such as the user correcting the time. Also unlike QTime, QElapsedTimer is - immune to changes in the timezone settings, such as daylight saving + immune to changes in the timezone settings, such as daylight-saving periods. On the other hand, this means QElapsedTimer values can only be compared diff --git a/src/corelib/tools/qtimezone.cpp b/src/corelib/tools/qtimezone.cpp index 22091e641f..57c1838b76 100644 --- a/src/corelib/tools/qtimezone.cpp +++ b/src/corelib/tools/qtimezone.cpp @@ -199,14 +199,15 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); The difference between UTC and the local time in a time zone is expressed as an offset in seconds from UTC, i.e. the number of seconds to add to UTC to obtain the local time. The total offset is comprised of two component - parts, the standard time offset and the daylight time offset. The standard - time offset is the number of seconds to add to UTC to obtain standard time - in the time zone. The daylight time offset is the number of seconds to add - to the standard time offset to obtain daylight time in the time zone. + parts, the standard time offset and the daylight-saving time offset. The + standard time offset is the number of seconds to add to UTC to obtain + standard time in the time zone. The daylight-saving time offset is the + number of seconds to add to the standard time offset to obtain + daylight-saving time (abbreviated DST and sometimes called "daylight time" + or "summer time") in the time zone. - Note that the standard and daylight offsets for a time zone may change over - time as countries have changed daylight time laws or even their standard - time offset. + Note that the standard and DST offsets for a time zone may change over time + as countries have changed DST laws or even their standard time offset. \section2 License @@ -241,21 +242,20 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); \enum QTimeZone::TimeType The type of time zone time, for example when requesting the name. In time - zones that do not apply daylight time, all three values may return the - same result. + zones that do not apply DST, all three values may return the same result. \value StandardTime - The standard time in a time zone, i.e. when Daylight Savings is not + The standard time in a time zone, i.e. when Daylight-Saving is not in effect. For example when formatting a display name this will show something like "Pacific Standard Time". \value DaylightTime - A time when Daylight Savings is in effect. + A time when Daylight-Saving is in effect. For example when formatting a display name this will show something - like "Pacific daylight time". + like "Pacific daylight-saving time". \value GenericTime - A time which is not specifically Standard or Daylight time, either - an unknown time or a neutral form. + A time which is not specifically Standard or Daylight-Saving time, + either an unknown time or a neutral form. For example when formatting a display name this will show something like "Pacific Time". */ @@ -286,11 +286,11 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); \li OffsetData::atUtc The datetime of the offset data in UTC time. \li OffsetData::offsetFromUtc The total offset from UTC in effect at the datetime. \li OffsetData::standardTimeOffset The standard time offset component of the total offset. - \li OffsetData::daylightTimeOffset The daylight time offset component of the total offset. + \li OffsetData::daylightTimeOffset The DST offset component of the total offset. \li OffsetData::abbreviation The abbreviation in effect at the datetime. \endlist - For example, for time zone "Europe/Berlin" the OffsetDate in standard and daylight time might be: + For example, for time zone "Europe/Berlin" the OffsetDate in standard and DST might be: \list \li atUtc = QDateTime(QDate(2013, 1, 1), QTime(0, 0, 0), Qt::UTC) @@ -531,8 +531,7 @@ QString QTimeZone::comment() const If the \a locale is not provided then the application default locale will be used. - The display name may change depending on daylight time or historical - events. + The display name may change depending on DST or historical events. \sa abbreviation() */ @@ -572,8 +571,7 @@ QString QTimeZone::displayName(TimeType timeType, NameType nameType, /*! Returns the time zone abbreviation at the given \a atDateTime. The - abbreviation may change depending on daylight time or even - historical events. + abbreviation may change depending on DST or even historical events. Note that the abbreviation is not guaranteed to be unique to this time zone and should not be used in place of the ID or display name. @@ -592,13 +590,13 @@ QString QTimeZone::abbreviation(const QDateTime &atDateTime) const /*! Returns the total effective offset at the given \a atDateTime, i.e. the number of seconds to add to UTC to obtain the local time. This includes - any daylight time offset that may be in effect, i.e. it is the sum of + any DST offset that may be in effect, i.e. it is the sum of standardTimeOffset() and daylightTimeOffset() for the given datetime. For example, for the time zone "Europe/Berlin" the standard time offset is - +3600 seconds and the daylight time offset is +3600 seconds. During standard - time offsetFromUtc() will return +3600 (UTC+01:00), and during daylight time - it will return +7200 (UTC+02:00). + +3600 seconds and the DST offset is +3600 seconds. During standard time + offsetFromUtc() will return +3600 (UTC+01:00), and during DST it will + return +7200 (UTC+02:00). \sa standardTimeOffset(), daylightTimeOffset() */ @@ -614,11 +612,11 @@ int QTimeZone::offsetFromUtc(const QDateTime &atDateTime) const /*! Returns the standard time offset at the given \a atDateTime, i.e. the number of seconds to add to UTC to obtain the local Standard Time. This - excludes any daylight time offset that may be in effect. + excludes any DST offset that may be in effect. For example, for the time zone "Europe/Berlin" the standard time offset is - +3600 seconds. During both standard and daylight time offsetFromUtc() will - return +3600 (UTC+01:00). + +3600 seconds. During both standard and DST offsetFromUtc() will return + +3600 (UTC+01:00). \sa offsetFromUtc(), daylightTimeOffset() */ @@ -632,13 +630,13 @@ int QTimeZone::standardTimeOffset(const QDateTime &atDateTime) const } /*! - Returns the daylight time offset at the given \a atDateTime, i.e. the - number of seconds to add to the standard time offset to obtain the local - daylight time. + Returns the daylight-saving time offset at the given \a atDateTime, + i.e. the number of seconds to add to the standard time offset to obtain the + local daylight-saving time. - For example, for the time zone "Europe/Berlin" the daylight time offset - is +3600 seconds. During standard time daylightTimeOffset() will return - 0, and during daylight time it will return +3600. + For example, for the time zone "Europe/Berlin" the DST offset is +3600 + seconds. During standard time daylightTimeOffset() will return 0, and when + daylight-saving is in effect it will return +3600. \sa offsetFromUtc(), standardTimeOffset() */ @@ -652,7 +650,7 @@ int QTimeZone::daylightTimeOffset(const QDateTime &atDateTime) const } /*! - Returns \c true if the time zone has observed daylight time at any time. + Returns \c true if the time zone has practiced daylight-saving at any time. \sa isDaylightTime(), daylightTimeOffset() */ @@ -666,7 +664,7 @@ bool QTimeZone::hasDaylightTime() const } /*! - Returns \c true if the given \a atDateTime is in daylight time. + Returns \c true if daylight-saving was in effect at the given \a atDateTime. \sa hasDaylightTime(), daylightTimeOffset() */ diff --git a/src/corelib/tools/qtimezoneprivate.cpp b/src/corelib/tools/qtimezoneprivate.cpp index 5bc3610af0..ab8332aea3 100644 --- a/src/corelib/tools/qtimezoneprivate.cpp +++ b/src/corelib/tools/qtimezoneprivate.cpp @@ -246,8 +246,8 @@ QTimeZonePrivate::Data QTimeZonePrivate::data(qint64 forMSecsSinceEpoch) const QTimeZonePrivate::Data QTimeZonePrivate::dataForLocalTime(qint64 forLocalMSecs) const { if (!hasDaylightTime() ||!hasTransitions()) { - // No daylight time means same offset for all local msecs - // Having daylight time but no transitions means we can't calculate, so use nearest + // No DST means same offset for all local msecs + // Having DST but no transitions means we can't calculate, so use nearest return data(forLocalMSecs - (standardTimeOffset(forLocalMSecs) * 1000)); } @@ -276,16 +276,16 @@ QTimeZonePrivate::Data QTimeZonePrivate::dataForLocalTime(qint64 forLocalMSecs) } if (tran.daylightTimeOffset == 0) { - // If tran is in StandardTime, then need to check if falls close either daylight transition + // If tran is in StandardTime, then need to check if falls close to either DST transition. // If it does, then it may need adjusting for missing hour or for second occurrence qint64 diffPrevTran = forLocalMSecs - (tran.atMSecsSinceEpoch + (tran.offsetFromUtc * 1000)); qint64 diffNextTran = nextTran.atMSecsSinceEpoch + (nextTran.offsetFromUtc * 1000) - forLocalMSecs; if (diffPrevTran >= 0 && diffPrevTran < MSECS_TRAN_WINDOW) { - // If tran picked is for standard time check if changed from daylight in last 6 hours, + // If tran picked is for standard time check if changed from DST in last 6 hours, // as the local msecs may be ambiguous and represent two valid utc msecs. - // If in last 6 hours then get prev tran and if diff falls within the daylight offset + // If in last 6 hours then get prev tran and if diff falls within the DST offset // then use the prev tran as we default to the FirstOccurrence // TODO Check if faster to just always get prev tran, or if faster using 6 hour check. Data dstTran = previousTransition(tran.atMSecsSinceEpoch); diff --git a/src/corelib/tools/qtimezoneprivate_android.cpp b/src/corelib/tools/qtimezoneprivate_android.cpp index 6178fe935a..e66d00c67c 100644 --- a/src/corelib/tools/qtimezoneprivate_android.cpp +++ b/src/corelib/tools/qtimezoneprivate_android.cpp @@ -150,7 +150,7 @@ int QAndroidTimeZonePrivate::daylightTimeOffset(qint64 atMSecsSinceEpoch) const bool QAndroidTimeZonePrivate::hasDaylightTime() const { if ( androidTimeZone.isValid() ) - /* note: the Java function only tests for future daylight transtions, not past */ + /* note: the Java function only tests for future DST transtions, not past */ return androidTimeZone.callMethod("useDaylightTime" ); else return false; @@ -210,34 +210,34 @@ QTimeZonePrivate::Data QAndroidTimeZonePrivate::dataForLocalTime(qint64 forLocal } else { qint64 UTCepochMSecs; - // compare the UTC time with standard offset against normal daylight offset of one hour + // compare the UTC time with standard offset against normal DST offset of one hour qint64 standardUTCMSecs(forLocalMSecs - (standardTimeOffset(forLocalMSecs) * 1000)); qint64 daylightUTCMsecs; - // Check if daylight time does apply, - // checking also for daylight time boundaries + // Check if daylight-saving time applies, + // checking also for DST boundaries if (isDaylightTime(standardUTCMSecs)) { - // If daylight does apply, then standardUTCMSecs will be an hour or so ahead of the real epoch time + // If DST does apply, then standardUTCMSecs will be an hour or so ahead of the real epoch time // so check that time daylightUTCMsecs = standardUTCMSecs - daylightTimeOffset(standardUTCMSecs)*1000; if (isDaylightTime(daylightUTCMsecs)) { - // daylight time confirmed + // DST confirmed UTCepochMSecs = daylightUTCMsecs; } else { - // daylight time has just finished + // DST has just finished UTCepochMSecs = standardUTCMSecs; } } else { // Standard time indicated, but check for a false negative. - // Would a standard one-hour daylight offset indicate daylight time? + // Would a standard one-hour DST offset indicate DST? daylightUTCMsecs = standardUTCMSecs - 3600000; // 3600000 MSECS_PER_HOUR if (isDaylightTime(daylightUTCMsecs)) { - // daylight time may have just started, - // but double check against timezone's own daylight offset + // DST may have just started, + // but double check against timezone's own DST offset // (don't necessarily assume a one-hour offset) daylightUTCMsecs = standardUTCMSecs - daylightTimeOffset(daylightUTCMsecs)*1000; if (isDaylightTime(daylightUTCMsecs)) { - // daylight time confirmed + // DST confirmed UTCepochMSecs = daylightUTCMsecs; } else { // false positive, apply standard time after all -- cgit v1.2.3 From 351853e04d585cc7e9098140fb50920d99597629 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Mon, 9 Nov 2015 12:53:54 +0100 Subject: Do not overwrite detailed error message if process fails to launch On Unix we get a detailed error message when a process fails to start, but later on we overwrite it with a generic "Process fails to start". Fix this by keeping the original error message (if one is available). This fixes a regression introduced in commit 5147f73ac3. Task-number: QTBUG-49286 Change-Id: Idd0f0fed9773d39f2947fc3e532b51e670952caf Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira --- src/corelib/io/qprocess.cpp | 5 +++-- src/corelib/io/qprocess_p.h | 2 +- src/corelib/io/qprocess_unix.cpp | 6 +++--- src/corelib/io/qprocess_win.cpp | 2 +- src/corelib/io/qprocess_wince.cpp | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index 8fbe96adb9..b09c99985c 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -1179,14 +1179,15 @@ bool QProcessPrivate::_q_startupNotification() if (startupSocketNotifier) startupSocketNotifier->setEnabled(false); - if (processStarted()) { + QString errorMessage; + if (processStarted(&errorMessage)) { q->setProcessState(QProcess::Running); emit q->started(QProcess::QPrivateSignal()); return true; } q->setProcessState(QProcess::NotRunning); - setErrorAndEmit(QProcess::FailedToStart); + setErrorAndEmit(QProcess::FailedToStart, errorMessage); #ifdef Q_OS_UNIX // make sure the process manager removes this entry waitForDeadChild(); diff --git a/src/corelib/io/qprocess_p.h b/src/corelib/io/qprocess_p.h index fc6b5345d1..d3f251c399 100644 --- a/src/corelib/io/qprocess_p.h +++ b/src/corelib/io/qprocess_p.h @@ -352,7 +352,7 @@ public: #elif defined(QPROCESS_USE_SPAWN) pid_t spawnChild(pid_t *ppid, const char *workingDirectory, char **argv, char **envp); #endif - bool processStarted(); + bool processStarted(QString *errorMessage = Q_NULLPTR); void terminateProcess(); void killProcess(); void findExitCode(); diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index 63480dfc6b..a5488f48cc 100644 --- a/src/corelib/io/qprocess_unix.cpp +++ b/src/corelib/io/qprocess_unix.cpp @@ -714,7 +714,7 @@ report_errno: } #endif -bool QProcessPrivate::processStarted() +bool QProcessPrivate::processStarted(QString *errorMessage) { ushort buf[errorBufferMax]; int i = qt_safe_read(childStartedPipe[0], &buf, sizeof buf); @@ -731,8 +731,8 @@ bool QProcessPrivate::processStarted() #endif // did we read an error message? - if (i > 0) - q_func()->setErrorString(QString((const QChar *)buf, i / sizeof(QChar))); + if ((i > 0) && errorMessage) + *errorMessage = QString((const QChar *)buf, i / sizeof(QChar)); return i <= 0; } diff --git a/src/corelib/io/qprocess_win.cpp b/src/corelib/io/qprocess_win.cpp index e77249975c..80e6d5bb61 100644 --- a/src/corelib/io/qprocess_win.cpp +++ b/src/corelib/io/qprocess_win.cpp @@ -543,7 +543,7 @@ void QProcessPrivate::startProcess() _q_startupNotification(); } -bool QProcessPrivate::processStarted() +bool QProcessPrivate::processStarted(QString * /*errorMessage*/) { return processState == QProcess::Running; } diff --git a/src/corelib/io/qprocess_wince.cpp b/src/corelib/io/qprocess_wince.cpp index 807472b7b2..9b63ece15c 100644 --- a/src/corelib/io/qprocess_wince.cpp +++ b/src/corelib/io/qprocess_wince.cpp @@ -160,7 +160,7 @@ void QProcessPrivate::startProcess() _q_startupNotification(); } -bool QProcessPrivate::processStarted() +bool QProcessPrivate::processStarted(QString * /*errorMessage*/) { return processState == QProcess::Running; } -- cgit v1.2.3 From bee361209f82425e6727a96c210ec6abf76b4bff Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 11 Nov 2015 12:24:07 +0200 Subject: JSON: Fix MSVC2013 warnings json_p.h(283) : warning C4800: 'uint64_t' : forcing value to bool 'true' or 'false' (performance warning) json_p.h(546) : warning C4800: 'uint32_t' : forcing value to bool 'true' or 'false' (performance warning) qjsonvalue.cpp(176) : warning C4244: '=' : conversion from 'int64_t' to 'double', possible loss of data qjsonvalue.cpp(518) : warning C4244: 'return' : conversion from 'const double' to 'int', possible loss of data Change-Id: I2a24f90f7615aeb47f747ecbe3b580f23773ebda Reviewed-by: Marc Mutz Reviewed-by: hjk Reviewed-by: Lars Knoll --- src/corelib/json/qjson_p.h | 4 ++-- src/corelib/json/qjsonvalue.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/corelib/json/qjson_p.h b/src/corelib/json/qjson_p.h index 5fc021c841..35a16b0ef6 100644 --- a/src/corelib/json/qjson_p.h +++ b/src/corelib/json/qjson_p.h @@ -280,7 +280,7 @@ static inline int compressedNumber(double d) if (non_int) return INT_MAX; - bool neg = (val >> 63); + bool neg = (val >> 63) != 0; val &= fraction_mask; val |= ((quint64)1 << 52); int res = (int)(val >> (52 - exp)); @@ -543,7 +543,7 @@ public: offset tableOffset; // content follows here - inline bool isObject() const { return is_object; } + inline bool isObject() const { return !!is_object; } inline bool isArray() const { return !isObject(); } inline offset *table() const { return (offset *) (((char *) this) + tableOffset); } diff --git a/src/corelib/json/qjsonvalue.cpp b/src/corelib/json/qjsonvalue.cpp index 4c7a44b4a0..328e07d18e 100644 --- a/src/corelib/json/qjsonvalue.cpp +++ b/src/corelib/json/qjsonvalue.cpp @@ -173,7 +173,7 @@ QJsonValue::QJsonValue(int n) QJsonValue::QJsonValue(qint64 n) : d(0), t(Double) { - this->dbl = n; + this->dbl = double(n); } /*! @@ -515,7 +515,7 @@ bool QJsonValue::toBool(bool defaultValue) const int QJsonValue::toInt(int defaultValue) const { if (t == Double && int(dbl) == dbl) - return dbl; + return int(dbl); return defaultValue; } -- cgit v1.2.3 From 6f84d50457ad6c8864e776fc722895458350c2e1 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Wed, 11 Nov 2015 14:58:22 +0100 Subject: move styleOverride from QApplicationPrivate to QGuiApplicationPrivate * -style option is also used in other cases than widget world Change-Id: I8555d309a7b9df0d26ad7a7b930411260537180e Reviewed-by: J-P Nurmi --- src/gui/kernel/qguiapplication.cpp | 10 ++++++++++ src/gui/kernel/qguiapplication_p.h | 1 + src/widgets/kernel/qapplication.cpp | 21 +++++++-------------- src/widgets/kernel/qapplication_p.h | 2 -- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 216537e51a..c5762fe1ee 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -127,6 +127,8 @@ Qt::MouseButtons QGuiApplicationPrivate::tabletState = Qt::NoButton; QWindow *QGuiApplicationPrivate::tabletPressTarget = 0; QWindow *QGuiApplicationPrivate::currentMouseWindow = 0; +QString QGuiApplicationPrivate::styleOverride; + Qt::ApplicationState QGuiApplicationPrivate::applicationState = Qt::ApplicationInactive; bool QGuiApplicationPrivate::highDpiScalingUpdated = false; @@ -1256,6 +1258,7 @@ void QGuiApplicationPrivate::init() session_key = QString::fromWCharArray(guidstr); # endif #endif + QString s; int j = argc ? 1 : 0; for (int i=1; i Date: Tue, 10 Nov 2015 17:34:00 +0100 Subject: Docs: Add a note clarifying that Q_MOVABLE_TYPE is not about move semantics Change-Id: Ib1fb9ac00c0437ed2312c46e3e97d7ece05ba8e8 Reviewed-by: Thiago Macieira --- src/corelib/global/qglobal.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index ed8a9163d4..81925642f8 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -3837,7 +3837,8 @@ int qrand() independent copy of the object. \li \c Q_MOVABLE_TYPE specifies that \a Type has a constructor and/or a destructor but can be moved in memory using \c - memcpy(). + memcpy(). Note: despite the name, this has nothing to do with move + constructors or C++ move semantics. \li \c Q_COMPLEX_TYPE (the default) specifies that \a Type has constructors and/or a destructor and that it may not be moved in memory. -- cgit v1.2.3 From 45be40540801bc760b09d731958ba646e4eb946c Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 10 Nov 2015 17:52:28 +0100 Subject: Document performance of QMutex Change-Id: I4de2fd5ba717975b5de98ffe7ca6348afbed1b2f Reviewed-by: Marc Mutz --- src/corelib/thread/qmutex.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp index 742a572bef..fa3bb080ae 100644 --- a/src/corelib/thread/qmutex.cpp +++ b/src/corelib/thread/qmutex.cpp @@ -139,6 +139,11 @@ public: lock calls unlock(). A non-blocking alternative to lock() is tryLock(). + QMutex is optimized to be fast in the non-contended case. A non-recursive + QMutex will not allocate memory if there is no contention on that mutex. + It is constructed and destroyed with almost no overhead, + which means it is fine to have many mutexes as part of other classes. + \sa QMutexLocker, QReadWriteLock, QSemaphore, QWaitCondition */ @@ -165,6 +170,8 @@ public: a thread may only lock a mutex once. The default is QMutex::NonRecursive. + Recursive mutexes are slower and take more memory than non-recursive ones. + \sa lock(), unlock() */ QMutex::QMutex(RecursionMode mode) -- cgit v1.2.3 From d6b45853f5d45b5922c93f947d8909855f19a8b9 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Wed, 11 Nov 2015 15:32:29 +0100 Subject: Make qt_findAtNxFile return the source device pixel ratio MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QTextImageHandler needs it. And QQuickImageBase will also need it. Change-Id: Ica5d17519c4c6c06e25bab7d2b1d3733f4058425 Reviewed-by: Tor Arne Vestbø --- src/gui/image/qicon.cpp | 11 +++++++++-- src/gui/image/qicon.h | 3 ++- src/gui/text/qtextimagehandler.cpp | 20 ++++++++++++-------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index af3af516db..b2d9ed18f5 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -1378,8 +1378,12 @@ QDebug operator<<(QDebug dbg, const QIcon &i) Given base foo.png and a target dpr of 2.5, this function will look for foo@3x.png, then foo@2x, then fall back to foo.png if not found. + + \a sourceDevicePixelRatio will be set to the value of N if the argument is + a non-null pointer */ -QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio) +QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio) { if (targetDevicePixelRatio <= 1.0) return baseFileName; @@ -1397,8 +1401,11 @@ QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRati for (int n = qCeil(targetDevicePixelRatio); n > 1; --n) { QString atNxfileName = baseFileName; atNxfileName.insert(dotIndex, atNx.arg(n)); - if (QFile::exists(atNxfileName)) + if (QFile::exists(atNxfileName)) { + if (sourceDevicePixelRatio) + *sourceDevicePixelRatio = n; return atNxfileName; + } } return baseFileName; diff --git a/src/gui/image/qicon.h b/src/gui/image/qicon.h index 8c72f54629..9ed7336502 100644 --- a/src/gui/image/qicon.h +++ b/src/gui/image/qicon.h @@ -139,7 +139,8 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QIcon &); Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QIcon &); #endif -Q_GUI_EXPORT QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio); +Q_GUI_EXPORT QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio = Q_NULLPTR); QT_END_NAMESPACE diff --git a/src/gui/text/qtextimagehandler.cpp b/src/gui/text/qtextimagehandler.cpp index 747ed90281..16d81a7d6d 100644 --- a/src/gui/text/qtextimagehandler.cpp +++ b/src/gui/text/qtextimagehandler.cpp @@ -44,8 +44,10 @@ QT_BEGIN_NAMESPACE -extern QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio); -static QString resolveFileName(QString fileName, QUrl *url, qreal targetDevicePixelRatio) +extern QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio); +static QString resolveFileName(QString fileName, QUrl *url, qreal targetDevicePixelRatio, + qreal *sourceDevicePixelRatio) { // We might use the fileName for loading if url loading fails // try to make sure it is a valid file path. @@ -64,7 +66,7 @@ static QString resolveFileName(QString fileName, QUrl *url, qreal targetDevicePi return fileName; // try to find a Nx version - return qt_findAtNxFile(fileName, targetDevicePixelRatio); + return qt_findAtNxFile(fileName, targetDevicePixelRatio, sourceDevicePixelRatio); } @@ -76,7 +78,8 @@ static QPixmap getPixmap(QTextDocument *doc, const QTextImageFormat &format, con if (name.startsWith(QLatin1String(":/"))) // auto-detect resources and convert them to url name.prepend(QLatin1String("qrc")); QUrl url = QUrl(name); - name = resolveFileName(name, &url, devicePixelRatio); + qreal sourcePixelRatio = 1.0; + name = resolveFileName(name, &url, devicePixelRatio, &sourcePixelRatio); const QVariant data = doc->resource(QTextDocument::ImageResource, url); if (data.type() == QVariant::Pixmap || data.type() == QVariant::Image) { pm = qvariant_cast(data); @@ -102,7 +105,7 @@ static QPixmap getPixmap(QTextDocument *doc, const QTextImageFormat &format, con } if (name.contains(QStringLiteral("@2x"))) - pm.setDevicePixelRatio(2.0); + pm.setDevicePixelRatio(sourcePixelRatio); return pm; } @@ -157,7 +160,8 @@ static QImage getImage(QTextDocument *doc, const QTextImageFormat &format, const if (name.startsWith(QLatin1String(":/"))) // auto-detect resources name.prepend(QLatin1String("qrc")); QUrl url = QUrl(name); - name = resolveFileName(name, &url, devicePixelRatio); + qreal sourcePixelRatio = 1.0; + name = resolveFileName(name, &url, devicePixelRatio, &sourcePixelRatio); const QVariant data = doc->resource(QTextDocument::ImageResource, url); if (data.type() == QVariant::Image) { image = qvariant_cast(data); @@ -181,8 +185,8 @@ static QImage getImage(QTextDocument *doc, const QTextImageFormat &format, const doc->addResource(QTextDocument::ImageResource, url, image); } - if (name.contains(QStringLiteral("@2x"))) - image.setDevicePixelRatio(2.0); + if (sourcePixelRatio != 1.0) + image.setDevicePixelRatio(sourcePixelRatio); return image; } -- cgit v1.2.3 From b9ed5b9acf9e79f9d1bc0977fd44750661d09d05 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Wed, 11 Nov 2015 19:21:27 +0100 Subject: MakefileGenerator::processSources() doesn't need to be virtual. Only VcprojGenerator over-rode it; and did so with a replacement identical to the one on the base, so there was no point to it. Change-Id: I5b899372247809c82b1cae25817e06c5849cd10d Reviewed-by: Oswald Buddenhagen --- qmake/generators/makefile.h | 2 +- qmake/generators/win32/msvc_vcproj.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/qmake/generators/makefile.h b/qmake/generators/makefile.h index 61b8f9ac60..97159eaef4 100644 --- a/qmake/generators/makefile.h +++ b/qmake/generators/makefile.h @@ -185,7 +185,7 @@ protected: virtual bool doDepends() const { return Option::mkfile::do_deps; } void filterIncludedFiles(const char *); - virtual void processSources() { + void processSources() { filterIncludedFiles("SOURCES"); filterIncludedFiles("GENERATED_SOURCES"); } diff --git a/qmake/generators/win32/msvc_vcproj.h b/qmake/generators/win32/msvc_vcproj.h index 35dc1e8937..50125a30a6 100644 --- a/qmake/generators/win32/msvc_vcproj.h +++ b/qmake/generators/win32/msvc_vcproj.h @@ -75,7 +75,6 @@ public: protected: virtual VCProjectWriter *createProjectWriter(); virtual bool doDepends() const { return false; } //never necesary - virtual void processSources() { filterIncludedFiles("SOURCES"); filterIncludedFiles("GENERATED_SOURCES"); } using Win32MakefileGenerator::replaceExtraCompilerVariables; virtual QString replaceExtraCompilerVariables(const QString &, const QStringList &, const QStringList &, ReplaceFor); virtual bool supportsMetaBuild() { return true; } -- cgit v1.2.3 From d201dd701ed613af59794b0a8ee957dcd538bf92 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Fri, 13 Nov 2015 14:15:06 +0100 Subject: Blacklist tests that fail with Gtk style on RHEL 6.6 tst_qmenubar::taskQTBUG4965_escapeEaten tst_qtabbar::sizeHints These tests will not pass when Gtk style is enabled, similar to the Ubuntu blacklisting. Change-Id: I590d84fb7ce0df28d0e8525e0f04b676280a12ff Reviewed-by: J-P Nurmi --- tests/auto/widgets/widgets/qmenubar/BLACKLIST | 1 + tests/auto/widgets/widgets/qtabbar/BLACKLIST | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/auto/widgets/widgets/qmenubar/BLACKLIST b/tests/auto/widgets/widgets/qmenubar/BLACKLIST index 424ab2ceed..4f9508266c 100644 --- a/tests/auto/widgets/widgets/qmenubar/BLACKLIST +++ b/tests/auto/widgets/widgets/qmenubar/BLACKLIST @@ -2,5 +2,6 @@ ubuntu-14.04 [taskQTBUG4965_escapeEaten] ubuntu-14.04 +redhatenterpriselinuxworkstation-6.6 [task256322_highlight] osx diff --git a/tests/auto/widgets/widgets/qtabbar/BLACKLIST b/tests/auto/widgets/widgets/qtabbar/BLACKLIST index b000b08444..5a3f33e3e4 100644 --- a/tests/auto/widgets/widgets/qtabbar/BLACKLIST +++ b/tests/auto/widgets/widgets/qtabbar/BLACKLIST @@ -1,2 +1,3 @@ [sizeHints] ubuntu-14.04 +redhatenterpriselinuxworkstation-6.6 -- cgit v1.2.3 From a31b4e93cb1bf5b13d0ae27105b304157951de86 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Fri, 13 Nov 2015 13:42:56 +0100 Subject: Blacklist tst_qfontdialog::setFont on RHEL 6.6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is due to the Gtk style in use. It is already blacklisted for Ubuntu and in Qt 5.7 we'll use Gtk 3, so there is no reason to invest into fixing this. The test used to pass because we would build with -no-gtkstyle. Change-Id: I1cf26301ba8b19be9a995837b0b5984838ec777a Reviewed-by: J-P Nurmi Reviewed-by: Jędrzej Nowacki --- tests/auto/widgets/dialogs/qfontdialog/BLACKLIST | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/widgets/dialogs/qfontdialog/BLACKLIST b/tests/auto/widgets/dialogs/qfontdialog/BLACKLIST index 31fbc428c9..6d3c17f35f 100644 --- a/tests/auto/widgets/dialogs/qfontdialog/BLACKLIST +++ b/tests/auto/widgets/dialogs/qfontdialog/BLACKLIST @@ -2,3 +2,4 @@ opensuse-13.1 [setFont] ubuntu-14.04 +redhatenterpriselinuxworkstation-6.6 -- cgit v1.2.3 From 037b05ac760a50630a009362011c12bcce11644d Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Tue, 27 Oct 2015 15:28:38 +0100 Subject: Doc: corrected error in doc static plugins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-43160 Change-Id: I94f92318cec095391050b2af90980010bd1066b9 Reviewed-by: Topi Reiniö Reviewed-by: Martin Smith --- examples/widgets/doc/src/plugandpaint.qdoc | 6 +++--- src/corelib/plugin/qplugin.qdoc | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/widgets/doc/src/plugandpaint.qdoc b/examples/widgets/doc/src/plugandpaint.qdoc index cf83ea3507..b139de9fa1 100644 --- a/examples/widgets/doc/src/plugandpaint.qdoc +++ b/examples/widgets/doc/src/plugandpaint.qdoc @@ -285,9 +285,9 @@ \snippet tools/plugandpaint/main.cpp 0 - The argument to Q_IMPORT_PLUGIN() is the plugin's name, as - specified with Q_PLUGIN_METADATA() in the \l{Exporting the - Plugin}{plugin}. + The argument to Q_IMPORT_PLUGIN() is the plugin name, which corresponds + with the name of the class that declares metadata for the plugin with + Q_PLUGIN_METADATA(). In the \c .pro file, we need to specify the static library. Here's the project file for building Plug & Paint: diff --git a/src/corelib/plugin/qplugin.qdoc b/src/corelib/plugin/qplugin.qdoc index 00ecb30430..1b394c4174 100644 --- a/src/corelib/plugin/qplugin.qdoc +++ b/src/corelib/plugin/qplugin.qdoc @@ -93,9 +93,9 @@ \macro Q_IMPORT_PLUGIN(PluginName) \relates - This macro imports the plugin named \a PluginName, corresponding - to the \l{qmake Variable Reference#TARGET}{TARGET} specified in the - plugin's project file. + This macro imports the plugin named \a PluginName, which corresponds + with the name of the class that declares metadata for the plugin with + Q_PLUGIN_METADATA(). Inserting this macro into your application's source code will allow you to make use of a static plugin. -- cgit v1.2.3 From 0f336e85655fd50cf84b67cf9101e92bba1efbfc Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 7 Nov 2015 00:26:03 +0400 Subject: Introduce png_dependency.pri Just like any other x_dependency.pri, it shall be included instead of linking with png lib directly. Change-Id: I698c8a8137f937d2e2c5f5dc9b9188b780c9e49a Reviewed-by: Oswald Buddenhagen Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/3rdparty/png_dependency.pri | 6 ++++++ src/gui/image/qpnghandler.pri | 7 +------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 src/3rdparty/png_dependency.pri diff --git a/src/3rdparty/png_dependency.pri b/src/3rdparty/png_dependency.pri new file mode 100644 index 0000000000..78da861f77 --- /dev/null +++ b/src/3rdparty/png_dependency.pri @@ -0,0 +1,6 @@ +contains(QT_CONFIG, system-png) { + unix|mingw: LIBS_PRIVATE += -lpng + else: LIBS += libpng.lib +} else: contains(QT_CONFIG, png) { + include($$PWD/libpng.pri) +} diff --git a/src/gui/image/qpnghandler.pri b/src/gui/image/qpnghandler.pri index 9ab175d628..505d214130 100644 --- a/src/gui/image/qpnghandler.pri +++ b/src/gui/image/qpnghandler.pri @@ -1,9 +1,4 @@ HEADERS += $$PWD/qpnghandler_p.h SOURCES += $$PWD/qpnghandler.cpp -contains(QT_CONFIG, system-png) { - if(unix|mingw): LIBS_PRIVATE += -lpng - else:win32: LIBS += libpng.lib -} else { - include($$PWD/../../3rdparty/libpng.pri) -} +include($$PWD/../../3rdparty/png_dependency.pri) -- cgit v1.2.3 From 3a3e2193d7f8879e2d68c311c3149e9f6b779d5a Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 7 Nov 2015 00:31:43 +0400 Subject: QUnicodeTables generator: Minor clean-up & stricter checks Use static_cast instead of C-style cast; ushort -> unsigned short; Avoid a lvalue in qGetProp(); Minor styling fixes. Change-Id: Ic6412e28ac9316a587d32d0e674d21f672967fd6 Reviewed-by: Lars Knoll --- src/corelib/tools/qunicodetables.cpp | 32 +++++------ util/unicode/main.cpp | 105 +++++++++++++++++------------------ 2 files changed, 66 insertions(+), 71 deletions(-) diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp index 24a9eafcd5..14e4fd10aa 100644 --- a/src/corelib/tools/qunicodetables.cpp +++ b/src/corelib/tools/qunicodetables.cpp @@ -40,7 +40,7 @@ QT_BEGIN_NAMESPACE namespace QUnicodeTables { static const unsigned short uc_property_trie[] = { - // 0 - 0x11000 + // [0x0..0x11000) 6256, 6288, 6320, 6352, 6384, 6416, 6448, 6480, 6512, 6544, 6576, 6608, 6640, 6672, 6704, 6736, @@ -331,7 +331,7 @@ static const unsigned short uc_property_trie[] = { 8400, 8400, 8400, 23088, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, 8400, - // 0x11000 - 0x110000 + // [0x11000..0x110000) 23120, 23376, 23632, 23888, 24144, 24400, 24656, 24912, 25168, 25424, 25680, 25424, 25424, 25424, 25424, 25424, @@ -5738,7 +5738,7 @@ static const unsigned short uc_property_trie[] = { 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, - 2494, 2494, 2494, 2494, 2494, 2494, 2489, 2489, + 2494, 2494, 2494, 2494, 2494, 2494, 2489, 2489 }; #define GET_PROP_INDEX(ucs4) \ @@ -8249,14 +8249,12 @@ static const Properties uc_properties[] = { Q_DECL_CONST_FUNCTION static inline const Properties *qGetProp(uint ucs4) Q_DECL_NOTHROW { - const int index = GET_PROP_INDEX(ucs4); - return uc_properties + index; + return uc_properties + GET_PROP_INDEX(ucs4); } Q_DECL_CONST_FUNCTION static inline const Properties *qGetProp(ushort ucs2) Q_DECL_NOTHROW { - const int index = GET_PROP_INDEX_UCS2(ucs2); - return uc_properties + index; + return uc_properties + GET_PROP_INDEX_UCS2(ucs2); } Q_DECL_CONST_FUNCTION Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4) Q_DECL_NOTHROW @@ -8271,26 +8269,26 @@ Q_DECL_CONST_FUNCTION Q_CORE_EXPORT const Properties * QT_FASTCALL properties(us Q_CORE_EXPORT GraphemeBreakClass QT_FASTCALL graphemeBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (GraphemeBreakClass)qGetProp(ucs4)->graphemeBreakClass; + return static_cast(qGetProp(ucs4)->graphemeBreakClass); } Q_CORE_EXPORT WordBreakClass QT_FASTCALL wordBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (WordBreakClass)qGetProp(ucs4)->wordBreakClass; + return static_cast(qGetProp(ucs4)->wordBreakClass); } Q_CORE_EXPORT SentenceBreakClass QT_FASTCALL sentenceBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (SentenceBreakClass)qGetProp(ucs4)->sentenceBreakClass; + return static_cast(qGetProp(ucs4)->sentenceBreakClass); } Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4) Q_DECL_NOTHROW { - return (LineBreakClass)qGetProp(ucs4)->lineBreakClass; + return static_cast(qGetProp(ucs4)->lineBreakClass); } -static const ushort specialCaseMap[] = { +static const unsigned short specialCaseMap[] = { 0x0, // placeholder 0x1, 0x2c65, 0x1, 0x2c66, @@ -10407,8 +10405,8 @@ static const unsigned short uc_decomposition_trie[] = { #define GET_DECOMPOSITION_INDEX(ucs4) \ (ucs4 < 0x3400 \ ? (uc_decomposition_trie[uc_decomposition_trie[ucs4>>4] + (ucs4 & 0xf)]) \ - : (ucs4 < 0x30000\ - ? uc_decomposition_trie[uc_decomposition_trie[((ucs4 - 0x3400)>>8) + 0x340] + (ucs4 & 0xff)]\ + : (ucs4 < 0x30000 \ + ? uc_decomposition_trie[uc_decomposition_trie[((ucs4 - 0x3400)>>8) + 0x340] + (ucs4 & 0xff)] \ : 0xffff)) static const unsigned short uc_decomposition_map[] = { @@ -12608,8 +12606,8 @@ static const unsigned short uc_ligature_trie[] = { #define GET_LIGATURE_INDEX(ucs4) \ (ucs4 < 0x3100 \ ? (uc_ligature_trie[uc_ligature_trie[ucs4>>5] + (ucs4 & 0x1f)]) \ - : (ucs4 < 0x12000\ - ? uc_ligature_trie[uc_ligature_trie[((ucs4 - 0x3100)>>8) + 0x188] + (ucs4 & 0xff)]\ + : (ucs4 < 0x12000 \ + ? uc_ligature_trie[uc_ligature_trie[((ucs4 - 0x3100)>>8) + 0x188] + (ucs4 & 0xff)] \ : 0xffff)) static const unsigned short uc_ligature_map[] = { @@ -12874,7 +12872,7 @@ static const NormalizationCorrection uc_normalization_corrections[] = { { 0x2f874, 0x5f33, 7 }, { 0x2f91f, 0x43ab, 7 }, { 0x2f95f, 0x7aae, 7 }, - { 0x2f9bf, 0x4d57, 7 }, + { 0x2f9bf, 0x4d57, 7 } }; enum { NumNormalizationCorrections = 6 }; diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index ab37bffe87..35f5aa9d24 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -848,12 +848,14 @@ static int appendToSpecialCaseMap(const QList &map) { QList utf16map; for (int i = 0; i < map.size(); ++i) { - int val = map.at(i); - if (QChar::requiresSurrogates(val)) { - utf16map << QChar::highSurrogate(val); - utf16map << QChar::lowSurrogate(val); + uint codepoint = map.at(i); + // if the condition below doesn't hold anymore we need to modify our special case mapping code + Q_ASSERT(!QChar::requiresSurrogates(codepoint)); + if (QChar::requiresSurrogates(codepoint)) { + utf16map << QChar::highSurrogate(codepoint); + utf16map << QChar::lowSurrogate(codepoint); } else { - utf16map << val; + utf16map << codepoint; } } int length = utf16map.size(); @@ -1133,41 +1135,39 @@ static void readUnicodeData() int upperCase = properties[UD_UpperCase].toInt(&ok, 16); Q_ASSERT(ok); int diff = upperCase - codepoint; + // if the conditions below doesn't hold anymore we need to modify our upper casing code + Q_ASSERT(QChar::requiresSurrogates(codepoint) == QChar::requiresSurrogates(upperCase)); + if (QChar::requiresSurrogates(codepoint)) { + Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(upperCase)); + Q_ASSERT(QChar::lowSurrogate(codepoint) + diff == QChar::lowSurrogate(upperCase)); + } if (qAbs(diff) >= (1<<13)) { qWarning() << "upperCaseDiff exceeded (" << hex << codepoint << "->" << upperCase << "); map it for special case"; - // if the condition below doesn't hold anymore we need to modify our special upper casing code in qchar.cpp - Q_ASSERT(!QChar::requiresSurrogates(codepoint) && !QChar::requiresSurrogates(upperCase)); data.p.upperCaseSpecial = true; data.p.upperCaseDiff = appendToSpecialCaseMap(QList() << upperCase); } else { data.p.upperCaseDiff = diff; maxUpperCaseDiff = qMax(maxUpperCaseDiff, qAbs(diff)); } - if (QChar::requiresSurrogates(codepoint) || QChar::requiresSurrogates(upperCase)) { - // if the conditions below doesn't hold anymore we need to modify our upper casing code - Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(upperCase)); - Q_ASSERT(QChar::lowSurrogate(codepoint) + diff == QChar::lowSurrogate(upperCase)); - } } if (!properties[UD_LowerCase].isEmpty()) { int lowerCase = properties[UD_LowerCase].toInt(&ok, 16); Q_ASSERT(ok); int diff = lowerCase - codepoint; + // if the conditions below doesn't hold anymore we need to modify our lower casing code + Q_ASSERT(QChar::requiresSurrogates(codepoint) == QChar::requiresSurrogates(lowerCase)); + if (QChar::requiresSurrogates(codepoint)) { + Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(lowerCase)); + Q_ASSERT(QChar::lowSurrogate(codepoint) + diff == QChar::lowSurrogate(lowerCase)); + } if (qAbs(diff) >= (1<<13)) { qWarning() << "lowerCaseDiff exceeded (" << hex << codepoint << "->" << lowerCase << "); map it for special case"; - // if the condition below doesn't hold anymore we need to modify our special lower casing code in qchar.cpp - Q_ASSERT(!QChar::requiresSurrogates(codepoint) && !QChar::requiresSurrogates(lowerCase)); data.p.lowerCaseSpecial = true; data.p.lowerCaseDiff = appendToSpecialCaseMap(QList() << lowerCase); } else { data.p.lowerCaseDiff = diff; maxLowerCaseDiff = qMax(maxLowerCaseDiff, qAbs(diff)); } - if (QChar::requiresSurrogates(codepoint) || QChar::requiresSurrogates(lowerCase)) { - // if the conditions below doesn't hold anymore we need to modify our lower casing code - Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(lowerCase)); - Q_ASSERT(QChar::lowSurrogate(codepoint) + diff == QChar::lowSurrogate(lowerCase)); - } } // we want toTitleCase to map to ToUpper in case we don't have any titlecase. if (properties[UD_TitleCase].isEmpty()) @@ -1176,21 +1176,20 @@ static void readUnicodeData() int titleCase = properties[UD_TitleCase].toInt(&ok, 16); Q_ASSERT(ok); int diff = titleCase - codepoint; + // if the conditions below doesn't hold anymore we need to modify our title casing code + Q_ASSERT(QChar::requiresSurrogates(codepoint) == QChar::requiresSurrogates(titleCase)); + if (QChar::requiresSurrogates(codepoint)) { + Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(titleCase)); + Q_ASSERT(QChar::lowSurrogate(codepoint) + diff == QChar::lowSurrogate(titleCase)); + } if (qAbs(diff) >= (1<<13)) { qWarning() << "titleCaseDiff exceeded (" << hex << codepoint << "->" << titleCase << "); map it for special case"; - // if the condition below doesn't hold anymore we need to modify our special title casing code in qchar.cpp - Q_ASSERT(!QChar::requiresSurrogates(codepoint) && !QChar::requiresSurrogates(titleCase)); data.p.titleCaseSpecial = true; data.p.titleCaseDiff = appendToSpecialCaseMap(QList() << titleCase); } else { data.p.titleCaseDiff = diff; maxTitleCaseDiff = qMax(maxTitleCaseDiff, qAbs(diff)); } - if (QChar::requiresSurrogates(codepoint) || QChar::requiresSurrogates(titleCase)) { - // if the conditions below doesn't hold anymore we need to modify our title casing code - Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(titleCase)); - Q_ASSERT(QChar::lowSurrogate(codepoint) + diff == QChar::lowSurrogate(titleCase)); - } } if (!properties[UD_DigitValue].isEmpty()) @@ -1546,8 +1545,10 @@ static QByteArray createNormalizationCorrections() ++numCorrections; maxVersion = qMax(c.version, maxVersion); } + if (out.endsWith(",\n")) + out.chop(2); - out += "};\n\n" + out += "\n};\n\n" "enum { NumNormalizationCorrections = " + QByteArray::number(numCorrections) + " };\n" "enum { NormalizationCorrectionsVersionMax = " + QByteArray::number(maxVersion) + " };\n\n"; @@ -1742,23 +1743,20 @@ static void readCaseFolding() if (foldMap.size() == 1) { int caseFolded = foldMap.at(0); int diff = caseFolded - codepoint; + // if the conditions below doesn't hold anymore we need to modify our case folding code + Q_ASSERT(QChar::requiresSurrogates(codepoint) == QChar::requiresSurrogates(caseFolded)); + if (QChar::requiresSurrogates(codepoint)) { + Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(caseFolded)); + Q_ASSERT(QChar::lowSurrogate(codepoint) + diff == QChar::lowSurrogate(caseFolded)); + } if (qAbs(diff) >= (1<<13)) { qWarning() << "caseFoldDiff exceeded (" << hex << codepoint << "->" << caseFolded << "); map it for special case"; - // if the condition below doesn't hold anymore we need to modify our special case folding code in qchar.cpp - Q_ASSERT(!QChar::requiresSurrogates(codepoint) && !QChar::requiresSurrogates(caseFolded)); ud.p.caseFoldSpecial = true; ud.p.caseFoldDiff = appendToSpecialCaseMap(foldMap); } else { ud.p.caseFoldDiff = diff; maxCaseFoldDiff = qMax(maxCaseFoldDiff, qAbs(diff)); } - if (QChar::requiresSurrogates(codepoint) || QChar::requiresSurrogates(caseFolded)) { - // if the conditions below doesn't hold anymore we need to modify our case folding code - Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(caseFolded)); - Q_ASSERT(QChar::lowSurrogate(codepoint) + diff == QChar::lowSurrogate(caseFolded)); - } -// if (caseFolded != codepoint + ud.p.lowerCaseDiff) -// qDebug() << hex << codepoint; } else { qFatal("we currently don't support full case foldings"); // qDebug() << "special" << hex << foldMap; @@ -2301,7 +2299,7 @@ static QByteArray createPropertyInfo() out += "static const unsigned short uc_property_trie[] = {\n"; // first write the map - out += " // 0 - 0x" + QByteArray::number(BMP_END, 16); + out += " // [0x0..0x" + QByteArray::number(BMP_END, 16) + ")"; for (int i = 0; i < BMP_END/BMP_BLOCKSIZE; ++i) { if (!(i % 8)) { if (out.endsWith(' ')) @@ -2315,7 +2313,7 @@ static QByteArray createPropertyInfo() } if (out.endsWith(' ')) out.chop(1); - out += "\n\n // 0x" + QByteArray::number(BMP_END, 16) + " - 0x" + QByteArray::number(SMP_END, 16) + "\n"; + out += "\n\n // [0x" + QByteArray::number(BMP_END, 16) + "..0x" + QByteArray::number(SMP_END, 16) + ")\n"; for (int i = BMP_END/BMP_BLOCKSIZE; i < blockMap.size(); ++i) { if (!(i % 8)) { if (out.endsWith(' ')) @@ -2346,8 +2344,8 @@ static QByteArray createPropertyInfo() out += ", "; } } - if (out.endsWith(' ')) - out.chop(1); + if (out.endsWith(", ")) + out.chop(2); out += "\n};\n\n"; out += "#define GET_PROP_INDEX(ucs4) \\\n" @@ -2430,20 +2428,19 @@ static QByteArray createPropertyInfo() out += QByteArray::number( p.script ); out += " },"; } - out.chop(1); + if (out.endsWith(',')) + out.chop(1); out += "\n};\n\n"; out += "Q_DECL_CONST_FUNCTION static inline const Properties *qGetProp(uint ucs4) Q_DECL_NOTHROW\n" "{\n" - " const int index = GET_PROP_INDEX(ucs4);\n" - " return uc_properties + index;\n" + " return uc_properties + GET_PROP_INDEX(ucs4);\n" "}\n" "\n" "Q_DECL_CONST_FUNCTION static inline const Properties *qGetProp(ushort ucs2) Q_DECL_NOTHROW\n" "{\n" - " const int index = GET_PROP_INDEX_UCS2(ucs2);\n" - " return uc_properties + index;\n" + " return uc_properties + GET_PROP_INDEX_UCS2(ucs2);\n" "}\n" "\n" "Q_DECL_CONST_FUNCTION Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4) Q_DECL_NOTHROW\n" @@ -2458,22 +2455,22 @@ static QByteArray createPropertyInfo() out += "Q_CORE_EXPORT GraphemeBreakClass QT_FASTCALL graphemeBreakClass(uint ucs4) Q_DECL_NOTHROW\n" "{\n" - " return (GraphemeBreakClass)qGetProp(ucs4)->graphemeBreakClass;\n" + " return static_cast(qGetProp(ucs4)->graphemeBreakClass);\n" "}\n" "\n" "Q_CORE_EXPORT WordBreakClass QT_FASTCALL wordBreakClass(uint ucs4) Q_DECL_NOTHROW\n" "{\n" - " return (WordBreakClass)qGetProp(ucs4)->wordBreakClass;\n" + " return static_cast(qGetProp(ucs4)->wordBreakClass);\n" "}\n" "\n" "Q_CORE_EXPORT SentenceBreakClass QT_FASTCALL sentenceBreakClass(uint ucs4) Q_DECL_NOTHROW\n" "{\n" - " return (SentenceBreakClass)qGetProp(ucs4)->sentenceBreakClass;\n" + " return static_cast(qGetProp(ucs4)->sentenceBreakClass);\n" "}\n" "\n" "Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4) Q_DECL_NOTHROW\n" "{\n" - " return (LineBreakClass)qGetProp(ucs4)->lineBreakClass;\n" + " return static_cast(qGetProp(ucs4)->lineBreakClass);\n" "}\n" "\n"; @@ -2486,7 +2483,7 @@ static QByteArray createSpecialCaseMap() QByteArray out; - out += "static const ushort specialCaseMap[] = {\n" + out += "static const unsigned short specialCaseMap[] = {\n" " 0x0, // placeholder"; int i = 1; while (i < specialCaseMap.size()) { @@ -2686,10 +2683,10 @@ static QByteArray createCompositionInfo() " (ucs4 < 0x" + QByteArray::number(BMP_END, 16) + " \\\n" " ? (uc_decomposition_trie[uc_decomposition_trie[ucs4>>" + QByteArray::number(BMP_SHIFT) + "] + (ucs4 & 0x" + QByteArray::number(BMP_BLOCKSIZE-1, 16)+ ")]) \\\n" - " : (ucs4 < 0x" + QByteArray::number(SMP_END, 16) + "\\\n" + " : (ucs4 < 0x" + QByteArray::number(SMP_END, 16) + " \\\n" " ? uc_decomposition_trie[uc_decomposition_trie[((ucs4 - 0x" + QByteArray::number(BMP_END, 16) + ")>>" + QByteArray::number(SMP_SHIFT) + ") + 0x" + QByteArray::number(BMP_END/BMP_BLOCKSIZE, 16) + "]" - " + (ucs4 & 0x" + QByteArray::number(SMP_BLOCKSIZE-1, 16) + ")]\\\n" + " + (ucs4 & 0x" + QByteArray::number(SMP_BLOCKSIZE-1, 16) + ")] \\\n" " : 0xffff))\n\n"; out += "static const unsigned short uc_decomposition_map[] = {"; @@ -2885,10 +2882,10 @@ static QByteArray createLigatureInfo() " (ucs4 < 0x" + QByteArray::number(BMP_END, 16) + " \\\n" " ? (uc_ligature_trie[uc_ligature_trie[ucs4>>" + QByteArray::number(BMP_SHIFT) + "] + (ucs4 & 0x" + QByteArray::number(BMP_BLOCKSIZE-1, 16)+ ")]) \\\n" - " : (ucs4 < 0x" + QByteArray::number(SMP_END, 16) + "\\\n" + " : (ucs4 < 0x" + QByteArray::number(SMP_END, 16) + " \\\n" " ? uc_ligature_trie[uc_ligature_trie[((ucs4 - 0x" + QByteArray::number(BMP_END, 16) + ")>>" + QByteArray::number(SMP_SHIFT) + ") + 0x" + QByteArray::number(BMP_END/BMP_BLOCKSIZE, 16) + "]" - " + (ucs4 & 0x" + QByteArray::number(SMP_BLOCKSIZE-1, 16) + ")]\\\n" + " + (ucs4 & 0x" + QByteArray::number(SMP_BLOCKSIZE-1, 16) + ")] \\\n" " : 0xffff))\n\n"; out += "static const unsigned short uc_ligature_map[] = {"; -- cgit v1.2.3 From 2316db05a89c7de6a10ac64e0860262b25ed2a31 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 7 Nov 2015 09:53:56 +0400 Subject: QFontEngine: Check for AAT support only with HB-NG HB-old is unable to handle these anyways. Change-Id: Ibe69b5d030134b8a0a76dc966b6dfc6b5ff9a883 Reviewed-by: Lars Knoll --- src/gui/text/qfontengine.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index a0eedee6b9..3208a199b7 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -370,17 +370,15 @@ bool QFontEngine::supportsScript(QChar::Script script) const return true; } -#ifdef Q_OS_MAC - { +#ifdef QT_ENABLE_HARFBUZZ_NG + if (qt_useHarfbuzzNG()) { +#if defined(Q_OS_DARWIN) // in AAT fonts, 'gsub' table is effectively replaced by 'mort'/'morx' table uint len; if (getSfntTableData(MAKE_TAG('m','o','r','t'), 0, &len) || getSfntTableData(MAKE_TAG('m','o','r','x'), 0, &len)) return true; - } #endif -#ifdef QT_ENABLE_HARFBUZZ_NG - if (qt_useHarfbuzzNG()) { bool ret = false; if (hb_face_t *face = hb_qt_face_get_for_engine(const_cast(this))) { hb_tag_t script_tag_1, script_tag_2; -- cgit v1.2.3 From 50af66293de8bd5dd9fd9141a45d9415b5c688aa Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 7 Nov 2015 09:54:21 +0400 Subject: QTextEngine: Do not disable graphite2 HB shaper backend This fixes-up bf013c9e745c63cb112be4d3a37027ff997927dd by specifying graphite2 shaper in a "safe" shaper list, one used for non-CoreText font engines (currently, FreeType font engine only). Make the the comment and the code a bit cleaner about the fallback shaper list. Change-Id: Ib0cedc0b593023c9ee771e8e98c314d9c8f13037 Reviewed-by: Lars Knoll --- src/gui/text/qtextengine.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 6b98c14205..530871f65b 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1120,15 +1120,6 @@ QT_BEGIN_INCLUDE_NAMESPACE QT_END_INCLUDE_NAMESPACE -#if defined(Q_OS_OSX) && !defined(QT_NO_FREETYPE) -static const char *s_shapersForOsxFreeType[] = -{ - "ot", - "fallback", - Q_NULLPTR -}; -#endif - int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, const ushort *string, int itemLength, QFontEngine *fontEngine, const QVector &itemBoundaries, bool kerningEnabled) const { uint glyphs_shaped = 0; @@ -1182,13 +1173,21 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, const ushort *st const int num_features = 1; const char *const *shaper_list = Q_NULLPTR; -#if defined(Q_OS_OSX) && !defined(QT_NO_FREETYPE) - // What's behind QFontEngine::FaceData::user_data isn't compatible between CoreText and - // FreeType font engines - specifically functions in hb-coretext.cc would run into undefined - // behavior with data from the FreeType engine. The OpenType shaper works with that engine. - if (actualFontEngine->type() == QFontEngine::Freetype) - shaper_list = s_shapersForOsxFreeType; +#if defined(Q_OS_DARWIN) + // What's behind QFontEngine::FaceData::user_data isn't compatible between different font engines + // - specifically functions in hb-coretext.cc would run into undefined behavior with data + // from non-CoreText engine. The other shapers works with that engine just fine. + if (actualFontEngine->type() != QFontEngine::Mac) { + static const char *s_shaper_list_without_coretext[] = { + "graphite2", + "ot", + "fallback", + Q_NULLPTR + }; + shaper_list = s_shaper_list_without_coretext; + } #endif + bool shapedOk = hb_shape_full(hb_font, buffer, features, num_features, shaper_list); if (Q_UNLIKELY(!shapedOk)) { hb_buffer_destroy(buffer); -- cgit v1.2.3 From c1da13f6db756a9b23c46193304156c5e10f3bc1 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sat, 7 Nov 2015 09:54:46 +0400 Subject: QTextEngine: Apply CoreText specific post-processing for QFE::Mac only These tricks has no meaning to other font engines (i.e. to FreeType). Change-Id: I0410693d4d159367d760433062506691dc7c4610 Reviewed-by: Lars Knoll --- src/gui/text/qtextengine.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 530871f65b..50a242d81e 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1267,19 +1267,20 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, const ushort *st g.glyphs[i] |= (engineIdx << 24); } -#ifdef Q_OS_MAC - // CTRunGetPosition has a bug which applies matrix on 10.6, so we disable - // scaling the advances for this particular version - if (actualFontEngine->fontDef.stretch != 100 - && QSysInfo::MacintoshVersion != QSysInfo::MV_10_6) { - QFixed stretch = QFixed(int(actualFontEngine->fontDef.stretch)) / QFixed(100); - for (uint i = 0; i < num_glyphs; ++i) - g.advances[i] *= stretch; - } - - if (actualFontEngine->fontDef.styleStrategy & QFont::ForceIntegerMetrics) { - for (uint i = 0; i < num_glyphs; ++i) - g.advances[i] = g.advances[i].round(); +#ifdef Q_OS_DARWIN + if (actualFontEngine->type() == QFontEngine::Mac) { + // CTRunGetPosition has a bug which applies matrix on 10.6, so we disable + // scaling the advances for this particular version + if (QSysInfo::MacintoshVersion != QSysInfo::MV_10_6 && actualFontEngine->fontDef.stretch != 100) { + QFixed stretch = QFixed(int(actualFontEngine->fontDef.stretch)) / QFixed(100); + for (uint i = 0; i < num_glyphs; ++i) + g.advances[i] *= stretch; + } + + if (actualFontEngine->fontDef.styleStrategy & QFont::ForceIntegerMetrics) { + for (uint i = 0; i < num_glyphs; ++i) + g.advances[i] = g.advances[i].round(); + } } #endif -- cgit v1.2.3 From 26e66694fad4f3ec1afba2f2c1de3c66c6d3d7ac Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Sun, 8 Nov 2015 11:44:57 +0400 Subject: QFontEngineFT: Minor optimization to convertGRAYToARGB() Precalculate everything we can and use faster loop. Make inlined as it is used just in a single place. Change-Id: If3c33d60739eb4ce896020321442ae81edd1c13d Reviewed-by: Friedemann Kleint Reviewed-by: Lars Knoll --- src/gui/text/qfontengine_ft.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 0d28785aa1..162f409acd 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -590,13 +590,16 @@ static void convertRGBToARGB_V(const uchar *src, uint *dst, int width, int heigh } } -static void convertGRAYToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch) { - for (int y = 0; y < height; ++y) { - int readpos = (y * src_pitch); - int writepos = (y * width); - for (int x = 0; x < width; ++x) { - dst[writepos + x] = (0xFF << 24) + (src[readpos + x] << 16) + (src[readpos + x] << 8) + src[readpos + x]; +static inline void convertGRAYToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch) +{ + while (height--) { + const uchar *p = src; + const uchar * const e = p + width; + while (p < e) { + uchar gray = *p++; + *dst++ = (0xFF << 24) | (gray << 16) | (gray << 8) | gray; } + src += src_pitch; } } -- cgit v1.2.3 From 10d311d9d244c3a6855dd654dcf9af4bbc7044b2 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 9 Nov 2015 15:13:55 +0100 Subject: Windows/Direct2D: Handle screen changes after window creation. Call QWindowSystemInterface::handleWindowScreenChanged() in QWindowsIntegration::createPlatformWindow() should the effective screen be different from the initial screen due to the geometry. In order to avoid code duplication in the Direct2D plugin, fold the helper method createWindowData() into QWindowsIntegration::createPlatformWindow() and introduce a new virtual helper to create the actual platform window for QWindowsDirect2DIntegration to hook in. Task-number: QTBUG-48379 Change-Id: I49c7a50a12245691414ab49bffe802239a87d2d6 Reviewed-by: J-P Nurmi Reviewed-by: Joerg Bornemann --- .../direct2d/qwindowsdirect2dintegration.cpp | 11 ++++---- .../direct2d/qwindowsdirect2dintegration.h | 4 ++- .../platforms/windows/qwindowsintegration.cpp | 30 ++++++++++++++-------- .../platforms/windows/qwindowsintegration.h | 4 ++- src/plugins/platforms/windows/qwindowswindow.h | 2 ++ 5 files changed, 32 insertions(+), 19 deletions(-) diff --git a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp index 20dde476c1..b86dfa3546 100644 --- a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp +++ b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.cpp @@ -219,12 +219,11 @@ QWindowsDirect2DIntegration::~QWindowsDirect2DIntegration() return static_cast(QWindowsIntegration::instance()); } - QPlatformWindow *QWindowsDirect2DIntegration::createPlatformWindow(QWindow *window) const - { - QWindowsWindowData data = createWindowData(window); - return data.hwnd ? new QWindowsDirect2DWindow(window, data) - : Q_NULLPTR; - } + +QWindowsWindow *QWindowsDirect2DIntegration::createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &data) const +{ + return new QWindowsDirect2DWindow(window, data); +} QPlatformNativeInterface *QWindowsDirect2DIntegration::nativeInterface() const { diff --git a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h index 6b7b3fbea2..64042cab0a 100644 --- a/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h +++ b/src/plugins/platforms/direct2d/qwindowsdirect2dintegration.h @@ -52,7 +52,6 @@ public: static QWindowsDirect2DIntegration *instance(); - QPlatformWindow *createPlatformWindow(QWindow *window) const Q_DECL_OVERRIDE; QPlatformNativeInterface *nativeInterface() const Q_DECL_OVERRIDE; QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const Q_DECL_OVERRIDE; QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const Q_DECL_OVERRIDE; @@ -60,6 +59,9 @@ public: QWindowsDirect2DContext *direct2DContext() const; +protected: + QWindowsWindow *createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &) const Q_DECL_OVERRIDE; + private: explicit QWindowsDirect2DIntegration(const QStringList ¶mList); bool init(); diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index b67e0b859f..36ec9ebc92 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -288,7 +288,7 @@ bool QWindowsIntegration::hasCapability(QPlatformIntegration::Capability cap) co return false; } -QWindowsWindowData QWindowsIntegration::createWindowData(QWindow *window) const +QPlatformWindow *QWindowsIntegration::createPlatformWindow(QWindow *window) const { QWindowsWindowData requested; requested.flags = window->flags(); @@ -307,22 +307,30 @@ QWindowsWindowData QWindowsIntegration::createWindowData(QWindow *window) const << "\n Obtained : " << obtained.geometry << " margins=" << obtained.frame << " handle=" << obtained.hwnd << ' ' << obtained.flags << '\n'; - if (obtained.hwnd) { - if (requested.flags != obtained.flags) - window->setFlags(obtained.flags); - // Trigger geometry change signals of QWindow. - if ((obtained.flags & Qt::Desktop) != Qt::Desktop && requested.geometry != obtained.geometry) + if (Q_UNLIKELY(!obtained.hwnd)) + return Q_NULLPTR; + + QWindowsWindow *result = createPlatformWindowHelper(window, obtained); + Q_ASSERT(result); + + if (requested.flags != obtained.flags) + window->setFlags(obtained.flags); + // Trigger geometry/screen change signals of QWindow. + if ((obtained.flags & Qt::Desktop) != Qt::Desktop) { + if (requested.geometry != obtained.geometry) QWindowSystemInterface::handleGeometryChange(window, obtained.geometry); + QPlatformScreen *screen = result->screenForGeometry(obtained.geometry); + if (screen && result->screen() != screen) + QWindowSystemInterface::handleWindowScreenChanged(window, screen->screen()); } - return obtained; + return result; } -QPlatformWindow *QWindowsIntegration::createPlatformWindow(QWindow *window) const +// Overridden to return a QWindowsDirect2DWindow in Direct2D plugin. +QWindowsWindow *QWindowsIntegration::createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &data) const { - QWindowsWindowData data = createWindowData(window); - return data.hwnd ? new QWindowsWindow(window, data) - : Q_NULLPTR; + return new QWindowsWindow(window, data); } #ifndef QT_NO_OPENGL diff --git a/src/plugins/platforms/windows/qwindowsintegration.h b/src/plugins/platforms/windows/qwindowsintegration.h index fa5192ba03..cb10bf08f5 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.h +++ b/src/plugins/platforms/windows/qwindowsintegration.h @@ -62,7 +62,6 @@ public: bool hasCapability(QPlatformIntegration::Capability cap) const; - QWindowsWindowData createWindowData(QWindow *window) const; QPlatformWindow *createPlatformWindow(QWindow *window) const; #ifndef QT_NO_OPENGL QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const Q_DECL_OVERRIDE; @@ -101,6 +100,9 @@ public: QPlatformSessionManager *createPlatformSessionManager(const QString &id, const QString &key) const Q_DECL_OVERRIDE; #endif +protected: + virtual QWindowsWindow *createPlatformWindowHelper(QWindow *window, const QWindowsWindowData &) const; + private: QScopedPointer d; diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h index 583d3a4267..40d7a3f076 100644 --- a/src/plugins/platforms/windows/qwindowswindow.h +++ b/src/plugins/platforms/windows/qwindowswindow.h @@ -143,6 +143,8 @@ public: QWindowsWindow(QWindow *window, const QWindowsWindowData &data); ~QWindowsWindow(); + using QPlatformWindow::screenForGeometry; + QSurfaceFormat format() const Q_DECL_OVERRIDE { return m_format; } void setGeometry(const QRect &rect) Q_DECL_OVERRIDE; QRect geometry() const Q_DECL_OVERRIDE { return m_data.geometry; } -- cgit v1.2.3 From d29fbbd6ebc1464d5d2fada4e20512dbffe8f0e8 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Fri, 13 Nov 2015 14:14:11 +0100 Subject: Make CoreFoundation event dispatcher available on OS X also MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CoreFoundation event dispatcher on OS X can help users working with QtBluetooth from either non-GUI threads or non-GUI applications. Change-Id: Ie0793e7f49074a8ea9059251cd7c9bdf7953c206 Task-number: QTBUG-48758 Task-number: QTBUG-46625 Reviewed-by: Tor Arne Vestbø --- src/corelib/kernel/kernel.pri | 13 +++++-------- src/corelib/kernel/qeventdispatcher_cf.mm | 10 +++++++++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/corelib/kernel/kernel.pri b/src/corelib/kernel/kernel.pri index 600c28b5d7..f09fa4debc 100644 --- a/src/corelib/kernel/kernel.pri +++ b/src/corelib/kernel/kernel.pri @@ -101,7 +101,8 @@ winrt { mac { HEADERS += \ kernel/qcfsocketnotifier_p.h \ - kernel/qcore_mac_p.h + kernel/qcore_mac_p.h \ + kernel/qeventdispatcher_cf_p.h SOURCES += \ kernel/qcfsocketnotifier.cpp \ @@ -109,18 +110,14 @@ mac { kernel/qcore_mac.cpp OBJECTIVE_SOURCES += \ - kernel/qcore_mac_objc.mm + kernel/qcore_mac_objc.mm \ + kernel/qeventdispatcher_cf.mm LIBS_PRIVATE += -framework Foundation - osx: LIBS_PRIVATE += -framework CoreServices + osx: LIBS_PRIVATE += -framework CoreServices -framework AppKit ios { - OBJECTIVE_SOURCES += \ - kernel/qeventdispatcher_cf.mm - HEADERS += \ - kernel/qeventdispatcher_cf_p.h - # We need UIKit for UIDevice LIBS_PRIVATE += -framework UIKit } diff --git a/src/corelib/kernel/qeventdispatcher_cf.mm b/src/corelib/kernel/qeventdispatcher_cf.mm index 5b9ad38b28..240dfed79f 100644 --- a/src/corelib/kernel/qeventdispatcher_cf.mm +++ b/src/corelib/kernel/qeventdispatcher_cf.mm @@ -43,7 +43,11 @@ #include -#include +#ifdef Q_OS_OSX +# include +#else +# include +#endif @interface RunLoopModeTracker : NSObject { QStack m_runLoopModes; @@ -61,7 +65,11 @@ addObserver:self selector:@selector(receivedNotification:) name:nil +#ifdef Q_OS_OSX + object:[NSApplication sharedApplication]]; +#else object:[UIApplication sharedApplication]]; +#endif } return self; -- cgit v1.2.3 From 9020bdcc336ad580c597533b56a630c7488f7344 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Fri, 13 Nov 2015 13:20:57 +0100 Subject: winrt: Launch application on Windows 10 Mobile final Between the very latest images linking against kernel32.lib has been forbidden. This is completely undocumented and only throws a "dependent dll not found" error. Instead we should link against OneCore for msvc2015, which can be used for Windows 10 Desktop and Mobile. Task-number: QTBUG-49349 Change-Id: I21d32a92dfd41548ca563d3e56c623a0cb297588 Reviewed-by: Oliver Wolff --- mkspecs/winrt-arm-msvc2015/qmake.conf | 4 ++-- mkspecs/winrt-x64-msvc2015/qmake.conf | 4 ++-- mkspecs/winrt-x86-msvc2015/qmake.conf | 5 ++--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/mkspecs/winrt-arm-msvc2015/qmake.conf b/mkspecs/winrt-arm-msvc2015/qmake.conf index 820f66deb1..a5bb342456 100644 --- a/mkspecs/winrt-arm-msvc2015/qmake.conf +++ b/mkspecs/winrt-arm-msvc2015/qmake.conf @@ -10,9 +10,9 @@ DEFINES += WINAPI_FAMILY=WINAPI_FAMILY_PC_APP WINAPI_PARTITION_PH QMAKE_CFLAGS += -FS QMAKE_CXXFLAGS += -FS -QMAKE_LFLAGS += /MACHINE:ARM +QMAKE_LFLAGS += /MACHINE:ARM /NODEFAULTLIB:kernel32.lib -QMAKE_LIBS += windowscodecs.lib WindowsApp.lib runtimeobject.lib kernel32.lib +QMAKE_LIBS += windowscodecs.lib WindowsApp.lib runtimeobject.lib OneCore.lib VCPROJ_ARCH = ARM MSVC_VER = 14.0 diff --git a/mkspecs/winrt-x64-msvc2015/qmake.conf b/mkspecs/winrt-x64-msvc2015/qmake.conf index e3edde78c1..5b82f79981 100644 --- a/mkspecs/winrt-x64-msvc2015/qmake.conf +++ b/mkspecs/winrt-x64-msvc2015/qmake.conf @@ -10,9 +10,9 @@ DEFINES += WINAPI_FAMILY=WINAPI_FAMILY_PC_APP WINAPI_PARTITION_PH QMAKE_CFLAGS += -FS QMAKE_CXXFLAGS += -FS -QMAKE_LFLAGS += /MACHINE:X64 +QMAKE_LFLAGS += /MACHINE:X64 /NODEFAULTLIB:kernel32.lib -QMAKE_LIBS += windowscodecs.lib WindowsApp.lib runtimeobject.lib kernel32.lib +QMAKE_LIBS += windowscodecs.lib WindowsApp.lib runtimeobject.lib OneCore.lib VCPROJ_ARCH = x64 MSVC_VER = 14.0 diff --git a/mkspecs/winrt-x86-msvc2015/qmake.conf b/mkspecs/winrt-x86-msvc2015/qmake.conf index 82c6f9bd7f..bc7cf4118e 100644 --- a/mkspecs/winrt-x86-msvc2015/qmake.conf +++ b/mkspecs/winrt-x86-msvc2015/qmake.conf @@ -10,10 +10,9 @@ DEFINES += WINAPI_FAMILY=WINAPI_FAMILY_PC_APP WINAPI_PARTITION_PH QMAKE_CFLAGS += -FS QMAKE_CXXFLAGS += -FS -QMAKE_LFLAGS += /SAFESEH /MACHINE:X86 - -QMAKE_LIBS += windowscodecs.lib WindowsApp.lib runtimeobject.lib kernel32.lib +QMAKE_LFLAGS += /SAFESEH /MACHINE:X86 /NODEFAULTLIB:kernel32.lib +QMAKE_LIBS += windowscodecs.lib WindowsApp.lib runtimeobject.lib OneCore.lib VCPROJ_ARCH = Win32 MSVC_VER = 14.0 WINSDK_VER = 10.0 -- cgit v1.2.3 From 8ff36d48978cbdc848053338a7cec3d990da4ff2 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 9 Nov 2015 09:15:25 +0100 Subject: Install fixqt4headers.pl script Task-number: QTBUG-45662 Change-Id: If03b623d4ebcc5cf81b94d2e87ab753a553cff35 Reviewed-by: Iikka Eklund Reviewed-by: Jani Heikkinen Reviewed-by: Oswald Buddenhagen Reviewed-by: Friedemann Kleint --- qtbase.pro | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/qtbase.pro b/qtbase.pro index 24d0f5287b..98ca86ad58 100644 --- a/qtbase.pro +++ b/qtbase.pro @@ -51,6 +51,11 @@ licheck.path = $$[QT_HOST_BINS] licheck.files = $$PWD/bin/$$QT_LICHECK !isEmpty(QT_LICHECK): INSTALLS += licheck +#fixqt4headers.pl +fixqt4headers.path = $$[QT_HOST_BINS] +fixqt4headers.files = $$PWD/bin/fixqt4headers.pl +INSTALLS += fixqt4headers + #syncqt syncqt.path = $$[QT_HOST_BINS] syncqt.files = $$PWD/bin/syncqt.pl -- cgit v1.2.3 From 08a4b7f74507be7aa9dc09a9234d3bc83d4ed908 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 10 Nov 2015 11:26:27 +0100 Subject: Windows: Move GUI event dispatcher to QtPlatformSupport. This makes it possible to reuse it for the minimalegl QPA plugin. Change-Id: I1c3dbaf67f32294a5d0e03cc1eb8557049b810a5 Reviewed-by: Oliver Wolff --- .../eventdispatchers/eventdispatchers.pri | 6 + .../qwindowsguieventdispatcher.cpp | 197 ++++++++++++++++++++ .../qwindowsguieventdispatcher_p.h | 69 +++++++ .../platforms/windows/qwindowsclipboard.cpp | 3 +- src/plugins/platforms/windows/qwindowscontext.cpp | 3 +- .../windows/qwindowsguieventdispatcher.cpp | 201 --------------------- .../platforms/windows/qwindowsguieventdispatcher.h | 60 ------ .../platforms/windows/qwindowsintegration.cpp | 4 +- .../platforms/windows/qwindowskeymapper.cpp | 2 +- src/plugins/platforms/windows/windows.pri | 2 - 10 files changed, 279 insertions(+), 268 deletions(-) create mode 100644 src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp create mode 100644 src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h delete mode 100644 src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp delete mode 100644 src/plugins/platforms/windows/qwindowsguieventdispatcher.h diff --git a/src/platformsupport/eventdispatchers/eventdispatchers.pri b/src/platformsupport/eventdispatchers/eventdispatchers.pri index 6e16a46b34..a0b37cae1a 100644 --- a/src/platformsupport/eventdispatchers/eventdispatchers.pri +++ b/src/platformsupport/eventdispatchers/eventdispatchers.pri @@ -6,6 +6,12 @@ SOURCES +=\ HEADERS +=\ $$PWD/qunixeventdispatcher_qpa_p.h\ $$PWD/qgenericunixeventdispatcher_p.h\ +} else: win32 { +SOURCES +=\ + $$PWD/qwindowsguieventdispatcher.cpp + +HEADERS +=\ + $$PWD/qwindowsguieventdispatcher_p.h } contains(QT_CONFIG, glib) { diff --git a/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp new file mode 100644 index 0000000000..f57d16f51d --- /dev/null +++ b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp @@ -0,0 +1,197 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Samuel Gaist +** Copyright (C) 2015 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 "qwindowsguieventdispatcher_p.h" + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +/*! + \class QWindowsGuiEventDispatcher + \brief Event dispatcher for Windows + + Maintains a global stack storing the current event dispatcher and + its processing flags for access from the Windows procedure + qWindowsWndProc. Handling the Lighthouse gui events should be done + from within the qWindowsWndProc to ensure correct processing of messages. + + \internal + \ingroup qt-lighthouse-win +*/ + +QWindowsGuiEventDispatcher::QWindowsGuiEventDispatcher(QObject *parent) : + QEventDispatcherWin32(parent), m_flags(0) +{ + setObjectName(QStringLiteral("QWindowsGuiEventDispatcher")); + createInternalHwnd(); // QTBUG-40881: Do not delay registering timers, etc. for QtMfc. +} + +bool QWindowsGuiEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) +{ + const QEventLoop::ProcessEventsFlags oldFlags = m_flags; + m_flags = flags; + const bool rc = QEventDispatcherWin32::processEvents(flags); + m_flags = oldFlags; + return rc; +} + +void QWindowsGuiEventDispatcher::sendPostedEvents() +{ + QEventDispatcherWin32::sendPostedEvents(); + QWindowSystemInterface::sendWindowSystemEvents(m_flags); +} + +// Helpers for printing debug output for WM_* messages. +struct MessageDebugEntry +{ + UINT message; + const char *description; + bool interesting; +}; + +static const MessageDebugEntry +messageDebugEntries[] = { + {WM_CREATE, "WM_CREATE", true}, + {WM_PAINT, "WM_PAINT", true}, + {WM_CLOSE, "WM_CLOSE", true}, + {WM_DESTROY, "WM_DESTROY", true}, + {WM_MOVE, "WM_MOVE", true}, + {WM_SIZE, "WM_SIZE", true}, + {WM_GETICON, "WM_GETICON", false}, + {WM_KEYDOWN, "WM_KEYDOWN", true}, + {WM_SYSKEYDOWN, "WM_SYSKEYDOWN", true}, + {WM_SYSCOMMAND, "WM_SYSCOMMAND", true}, + {WM_KEYUP, "WM_KEYUP", true}, + {WM_SYSKEYUP, "WM_SYSKEYUP", true}, +#if defined(WM_APPCOMMAND) + {WM_APPCOMMAND, "WM_APPCOMMAND", true}, +#endif + {WM_IME_CHAR, "WM_IMECHAR", true}, + {WM_IME_KEYDOWN, "WM_IMECHAR", true}, + {WM_CANCELMODE, "WM_CANCELMODE", true}, + {WM_CHAR, "WM_CHAR", true}, + {WM_DEADCHAR, "WM_DEADCHAR", true}, + {WM_ACTIVATE, "WM_ACTIVATE", true}, + {WM_SETFOCUS, "WM_SETFOCUS", true}, + {WM_KILLFOCUS, "WM_KILLFOCUS", true}, + {WM_ENABLE, "WM_ENABLE", true}, + {WM_SHOWWINDOW, "WM_SHOWWINDOW", true}, + {WM_WINDOWPOSCHANGED, "WM_WINDOWPOSCHANGED", true}, + {WM_SETCURSOR, "WM_SETCURSOR", false}, + {WM_GETFONT, "WM_GETFONT", true}, + {WM_LBUTTONDOWN, "WM_LBUTTONDOWN", true}, + {WM_LBUTTONUP, "WM_LBUTTONUP", true}, + {WM_LBUTTONDBLCLK, "WM_LBUTTONDBLCLK", true}, + {WM_RBUTTONDOWN, "WM_RBUTTONDOWN", true}, + {WM_RBUTTONUP, "WM_RBUTTONUP", true}, + {WM_RBUTTONDBLCLK, "WM_RBUTTONDBLCLK", true}, + {WM_MBUTTONDOWN, "WM_MBUTTONDOWN", true}, + {WM_MBUTTONUP, "WM_MBUTTONUP", true}, + {WM_MBUTTONDBLCLK, "WM_MBUTTONDBLCLK", true}, + {WM_MOUSEWHEEL, "WM_MOUSEWHEEL", true}, + {WM_XBUTTONDOWN, "WM_XBUTTONDOWN", true}, + {WM_XBUTTONUP, "WM_XBUTTONUP", true}, + {WM_XBUTTONDBLCLK, "WM_XBUTTONDBLCLK", true}, + {WM_MOUSEHWHEEL, "WM_MOUSEHWHEEL", true}, + {WM_IME_SETCONTEXT, "WM_IME_SETCONTEXT", true}, + {WM_INPUTLANGCHANGE, "WM_INPUTLANGCHANGE", true}, + {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, +#if defined(WM_DWMNCRENDERINGCHANGED) + {WM_DWMNCRENDERINGCHANGED, "WM_DWMNCRENDERINGCHANGED", true}, +#endif + {WM_IME_SETCONTEXT, "WM_IME_SETCONTEXT", true}, + {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, + {WM_RENDERFORMAT, "WM_RENDERFORMAT", true}, + {WM_RENDERALLFORMATS, "WM_RENDERALLFORMATS", true}, + {WM_DESTROYCLIPBOARD, "WM_DESTROYCLIPBOARD", true}, + {WM_CAPTURECHANGED, "WM_CAPTURECHANGED", true}, + {WM_IME_STARTCOMPOSITION, "WM_IME_STARTCOMPOSITION", true}, + {WM_IME_COMPOSITION, "WM_IME_COMPOSITION", true}, + {WM_IME_ENDCOMPOSITION, "WM_IME_ENDCOMPOSITION", true}, + {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, + {WM_IME_REQUEST, "WM_IME_REQUEST", true}, +#if !defined(Q_OS_WINCE) && !defined(QT_NO_SESSIONMANAGER) + {WM_QUERYENDSESSION, "WM_QUERYENDSESSION", true}, + {WM_ENDSESSION, "WM_ENDSESSION", true}, +#endif +#ifndef Q_OS_WINCE + {WM_MOUSEACTIVATE,"WM_MOUSEACTIVATE", true}, + {WM_CHILDACTIVATE, "WM_CHILDACTIVATE", true}, + {WM_PARENTNOTIFY, "WM_PARENTNOTIFY", true}, + {WM_ENTERIDLE, "WM_ENTERIDLE", false}, + {WM_GETMINMAXINFO, "WM_GETMINMAXINFO", true}, + {WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING", true}, + {WM_NCCREATE, "WM_NCCREATE", true}, + {WM_NCCALCSIZE, "WM_NCCALCSIZE", true}, + {WM_NCACTIVATE, "WM_NCACTIVATE", true}, + {WM_NCMOUSEMOVE, "WM_NCMOUSEMOVE", true}, + {WM_NCMOUSELEAVE, "WM_NCMOUSELEAVE", true}, + {WM_NCLBUTTONDOWN, "WM_NCLBUTTONDOWN", true}, + {WM_NCLBUTTONUP, "WM_NCLBUTTONUP", true}, + {WM_ACTIVATEAPP, "WM_ACTIVATEAPP", true}, + {WM_NCPAINT, "WM_NCPAINT", true}, + {WM_ERASEBKGND, "WM_ERASEBKGND", true}, + {WM_MOUSEMOVE, "WM_MOUSEMOVE", true}, + {WM_MOUSELEAVE, "WM_MOUSELEAVE", true}, + {WM_NCHITTEST, "WM_NCHITTEST", false}, +#ifdef WM_TOUCH + {WM_TOUCH, "WM_TOUCH", true}, +#endif + {WM_CHANGECBCHAIN, "WM_CHANGECBCHAIN", true}, + {WM_DISPLAYCHANGE, "WM_DISPLAYCHANGE", true}, + {WM_DRAWCLIPBOARD, "WM_DRAWCLIPBOARD", true}, +#endif // !Q_OS_WINCE + {WM_THEMECHANGED, "WM_THEMECHANGED", true} +}; + +static inline const MessageDebugEntry *messageDebugEntry(UINT msg) +{ + for (size_t i = 0; i < sizeof(messageDebugEntries)/sizeof(MessageDebugEntry); i++) + if (messageDebugEntries[i].message == msg) + return messageDebugEntries + i; + return 0; +} + +const char *QWindowsGuiEventDispatcher::windowsMessageName(UINT msg) +{ + if (const MessageDebugEntry *e = messageDebugEntry(msg)) + return e->description; + return "Unknown"; +} + +QT_END_NAMESPACE diff --git a/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h new file mode 100644 index 0000000000..1e9c906cc8 --- /dev/null +++ b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2015 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 QWINDOWSGUIEVENTDISPATCHER_H +#define QWINDOWSGUIEVENTDISPATCHER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include + +QT_BEGIN_NAMESPACE + +class QWindowsGuiEventDispatcher : public QEventDispatcherWin32 +{ + Q_OBJECT +public: + explicit QWindowsGuiEventDispatcher(QObject *parent = 0); + + static const char *windowsMessageName(UINT msg); + + bool QT_ENSURE_STACK_ALIGNED_FOR_SSE processEvents(QEventLoop::ProcessEventsFlags flags) Q_DECL_OVERRIDE; + void sendPostedEvents() Q_DECL_OVERRIDE; + +private: + QEventLoop::ProcessEventsFlags m_flags; +}; + +QT_END_NAMESPACE + +#endif // QWINDOWSGUIEVENTDISPATCHER_H diff --git a/src/plugins/platforms/windows/qwindowsclipboard.cpp b/src/plugins/platforms/windows/qwindowsclipboard.cpp index 8936b96b1f..25cfd12b44 100644 --- a/src/plugins/platforms/windows/qwindowsclipboard.cpp +++ b/src/plugins/platforms/windows/qwindowsclipboard.cpp @@ -35,7 +35,6 @@ #include "qwindowscontext.h" #include "qwindowsole.h" #include "qwindowsmime.h" -#include "qwindowsguieventdispatcher.h" #include #include @@ -48,6 +47,8 @@ #include #include +#include + QT_BEGIN_NAMESPACE static const char formatTextPlainC[] = "text/plain"; diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp index 02accfae01..5cda6379de 100644 --- a/src/plugins/platforms/windows/qwindowscontext.cpp +++ b/src/plugins/platforms/windows/qwindowscontext.cpp @@ -36,7 +36,6 @@ #include "qwindowsintegration.h" #include "qwindowswindow.h" #include "qwindowskeymapper.h" -#include "qwindowsguieventdispatcher.h" #include "qwindowsmousehandler.h" #include "qtwindowsglobal.h" #include "qwindowsmime.h" @@ -66,6 +65,8 @@ #include #include +#include + #include #include #include diff --git a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp b/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp deleted file mode 100644 index 0bfa0239aa..0000000000 --- a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Samuel Gaist -** Copyright (C) 2015 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 "qwindowsguieventdispatcher.h" -#include "qwindowscontext.h" - -#include - -#include -#include -#include - -#include - -QT_BEGIN_NAMESPACE - -/*! - \class QWindowsGuiEventDispatcher - \brief Event dispatcher for Windows - - Maintains a global stack storing the current event dispatcher and - its processing flags for access from the Windows procedure - qWindowsWndProc. Handling the Lighthouse gui events should be done - from within the qWindowsWndProc to ensure correct processing of messages. - - \internal - \ingroup qt-lighthouse-win -*/ - -QWindowsGuiEventDispatcher::QWindowsGuiEventDispatcher(QObject *parent) : - QEventDispatcherWin32(parent), m_flags(0) -{ - setObjectName(QStringLiteral("QWindowsGuiEventDispatcher")); - createInternalHwnd(); // QTBUG-40881: Do not delay registering timers, etc. for QtMfc. -} - -bool QWindowsGuiEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags) -{ - const QEventLoop::ProcessEventsFlags oldFlags = m_flags; - m_flags = flags; - if (QWindowsContext::verbose > 2 && lcQpaEvents().isDebugEnabled()) - qCDebug(lcQpaEvents) << '>' << __FUNCTION__ << objectName() << flags; - const bool rc = QEventDispatcherWin32::processEvents(flags); - if (QWindowsContext::verbose > 2 && lcQpaEvents().isDebugEnabled()) - qCDebug(lcQpaEvents) << '<' << __FUNCTION__ << "returns" << rc; - m_flags = oldFlags; - return rc; -} - -void QWindowsGuiEventDispatcher::sendPostedEvents() -{ - QEventDispatcherWin32::sendPostedEvents(); - QWindowSystemInterface::sendWindowSystemEvents(m_flags); -} - -// Helpers for printing debug output for WM_* messages. -struct MessageDebugEntry -{ - UINT message; - const char *description; - bool interesting; -}; - -static const MessageDebugEntry -messageDebugEntries[] = { - {WM_CREATE, "WM_CREATE", true}, - {WM_PAINT, "WM_PAINT", true}, - {WM_CLOSE, "WM_CLOSE", true}, - {WM_DESTROY, "WM_DESTROY", true}, - {WM_MOVE, "WM_MOVE", true}, - {WM_SIZE, "WM_SIZE", true}, - {WM_MOUSEACTIVATE,"WM_MOUSEACTIVATE", true}, - {WM_CHILDACTIVATE, "WM_CHILDACTIVATE", true}, - {WM_PARENTNOTIFY, "WM_PARENTNOTIFY", true}, - {WM_ENTERIDLE, "WM_ENTERIDLE", false}, - {WM_GETICON, "WM_GETICON", false}, - {WM_KEYDOWN, "WM_KEYDOWN", true}, - {WM_SYSKEYDOWN, "WM_SYSKEYDOWN", true}, - {WM_SYSCOMMAND, "WM_SYSCOMMAND", true}, - {WM_KEYUP, "WM_KEYUP", true}, - {WM_SYSKEYUP, "WM_SYSKEYUP", true}, -#if defined(WM_APPCOMMAND) - {WM_APPCOMMAND, "WM_APPCOMMAND", true}, -#endif - {WM_IME_CHAR, "WM_IMECHAR", true}, - {WM_IME_KEYDOWN, "WM_IMECHAR", true}, - {WM_CANCELMODE, "WM_CANCELMODE", true}, - {WM_CHAR, "WM_CHAR", true}, - {WM_DEADCHAR, "WM_DEADCHAR", true}, - {WM_ACTIVATE, "WM_ACTIVATE", true}, - {WM_GETMINMAXINFO, "WM_GETMINMAXINFO", true}, - {WM_SETFOCUS, "WM_SETFOCUS", true}, - {WM_KILLFOCUS, "WM_KILLFOCUS", true}, - {WM_ENABLE, "WM_ENABLE", true}, - {WM_SHOWWINDOW, "WM_SHOWWINDOW", true}, - {WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING", true}, - {WM_WINDOWPOSCHANGED, "WM_WINDOWPOSCHANGED", true}, - {WM_SETCURSOR, "WM_SETCURSOR", false}, - {WM_GETFONT, "WM_GETFONT", true}, - {WM_NCMOUSEMOVE, "WM_NCMOUSEMOVE", true}, - {WM_LBUTTONDOWN, "WM_LBUTTONDOWN", true}, - {WM_LBUTTONUP, "WM_LBUTTONUP", true}, - {WM_LBUTTONDBLCLK, "WM_LBUTTONDBLCLK", true}, - {WM_RBUTTONDOWN, "WM_RBUTTONDOWN", true}, - {WM_RBUTTONUP, "WM_RBUTTONUP", true}, - {WM_RBUTTONDBLCLK, "WM_RBUTTONDBLCLK", true}, - {WM_MBUTTONDOWN, "WM_MBUTTONDOWN", true}, - {WM_MBUTTONUP, "WM_MBUTTONUP", true}, - {WM_MBUTTONDBLCLK, "WM_MBUTTONDBLCLK", true}, - {WM_MOUSEWHEEL, "WM_MOUSEWHEEL", true}, - {WM_XBUTTONDOWN, "WM_XBUTTONDOWN", true}, - {WM_XBUTTONUP, "WM_XBUTTONUP", true}, - {WM_XBUTTONDBLCLK, "WM_XBUTTONDBLCLK", true}, - {WM_MOUSEHWHEEL, "WM_MOUSEHWHEEL", true}, - {WM_NCCREATE, "WM_NCCREATE", true}, - {WM_NCCALCSIZE, "WM_NCCALCSIZE", true}, - {WM_NCACTIVATE, "WM_NCACTIVATE", true}, - {WM_NCMOUSELEAVE, "WM_NCMOUSELEAVE", true}, - {WM_NCLBUTTONDOWN, "WM_NCLBUTTONDOWN", true}, - {WM_NCLBUTTONUP, "WM_NCLBUTTONUP", true}, - {WM_ACTIVATEAPP, "WM_ACTIVATEAPP", true}, - {WM_NCPAINT, "WM_NCPAINT", true}, - {WM_ERASEBKGND, "WM_ERASEBKGND", true}, - {WM_MOUSEMOVE, "WM_MOUSEMOVE", true}, - {WM_MOUSELEAVE, "WM_MOUSELEAVE", true}, - {WM_NCHITTEST, "WM_NCHITTEST", false}, - {WM_IME_SETCONTEXT, "WM_IME_SETCONTEXT", true}, - {WM_INPUTLANGCHANGE, "WM_INPUTLANGCHANGE", true}, - {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, -#if defined(WM_DWMNCRENDERINGCHANGED) - {WM_DWMNCRENDERINGCHANGED, "WM_DWMNCRENDERINGCHANGED", true}, -#endif - {WM_IME_SETCONTEXT, "WM_IME_SETCONTEXT", true}, - {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, - {WM_TOUCH, "WM_TOUCH", true}, - {WM_CHANGECBCHAIN, "WM_CHANGECBCHAIN", true}, - {WM_DRAWCLIPBOARD, "WM_DRAWCLIPBOARD", true}, - {WM_RENDERFORMAT, "WM_RENDERFORMAT", true}, - {WM_RENDERALLFORMATS, "WM_RENDERALLFORMATS", true}, - {WM_DESTROYCLIPBOARD, "WM_DESTROYCLIPBOARD", true}, - {WM_CAPTURECHANGED, "WM_CAPTURECHANGED", true}, - {WM_IME_STARTCOMPOSITION, "WM_IME_STARTCOMPOSITION", true}, - {WM_IME_COMPOSITION, "WM_IME_COMPOSITION", true}, - {WM_IME_ENDCOMPOSITION, "WM_IME_ENDCOMPOSITION", true}, - {WM_IME_NOTIFY, "WM_IME_NOTIFY", true}, - {WM_IME_REQUEST, "WM_IME_REQUEST", true}, -#if !defined(Q_OS_WINCE) && !defined(QT_NO_SESSIONMANAGER) - {WM_QUERYENDSESSION, "WM_QUERYENDSESSION", true}, - {WM_ENDSESSION, "WM_ENDSESSION", true}, -#endif - {WM_DISPLAYCHANGE, "WM_DISPLAYCHANGE", true}, - {WM_THEMECHANGED, "WM_THEMECHANGED", true} -}; - -static inline const MessageDebugEntry *messageDebugEntry(UINT msg) -{ - for (size_t i = 0; i < sizeof(messageDebugEntries)/sizeof(MessageDebugEntry); i++) - if (messageDebugEntries[i].message == msg) - return messageDebugEntries + i; - return 0; -} - -const char *QWindowsGuiEventDispatcher::windowsMessageName(UINT msg) -{ - if (const MessageDebugEntry *e = messageDebugEntry(msg)) - return e->description; - return "Unknown"; -} - -QT_END_NAMESPACE diff --git a/src/plugins/platforms/windows/qwindowsguieventdispatcher.h b/src/plugins/platforms/windows/qwindowsguieventdispatcher.h deleted file mode 100644 index 3389139461..0000000000 --- a/src/plugins/platforms/windows/qwindowsguieventdispatcher.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 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 QWINDOWSGUIEVENTDISPATCHER_H -#define QWINDOWSGUIEVENTDISPATCHER_H - -#include "qtwindows_additional.h" - -#include - -QT_BEGIN_NAMESPACE - -class QWindowsGuiEventDispatcher : public QEventDispatcherWin32 -{ - Q_OBJECT -public: - explicit QWindowsGuiEventDispatcher(QObject *parent = 0); - - static const char *windowsMessageName(UINT msg); - - bool QT_ENSURE_STACK_ALIGNED_FOR_SSE processEvents(QEventLoop::ProcessEventsFlags flags) Q_DECL_OVERRIDE; - void sendPostedEvents() Q_DECL_OVERRIDE; - -private: - QEventLoop::ProcessEventsFlags m_flags; -}; - -QT_END_NAMESPACE - -#endif // QWINDOWSGUIEVENTDISPATCHER_H diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index 36ec9ebc92..797a96cda7 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -44,7 +44,6 @@ # include "qwindowsfontdatabase_ft.h" #endif #include "qwindowsfontdatabase.h" -#include "qwindowsguieventdispatcher.h" #ifndef QT_NO_CLIPBOARD # include "qwindowsclipboard.h" # ifndef QT_NO_DRAGANDDROP @@ -66,7 +65,8 @@ #include #include -#include +#include + #include #include diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp index f8e2ded228..4c0b94e6e7 100644 --- a/src/plugins/platforms/windows/qwindowskeymapper.cpp +++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp @@ -35,7 +35,6 @@ #include "qwindowscontext.h" #include "qwindowsintegration.h" #include "qwindowswindow.h" -#include "qwindowsguieventdispatcher.h" #include "qwindowsinputcontext.h" #include @@ -43,6 +42,7 @@ #include #include #include +#include #if defined(WM_APPCOMMAND) # ifndef FAPPCOMMAND_MOUSE diff --git a/src/plugins/platforms/windows/windows.pri b/src/plugins/platforms/windows/windows.pri index 6e5789a86e..29297116da 100644 --- a/src/plugins/platforms/windows/windows.pri +++ b/src/plugins/platforms/windows/windows.pri @@ -29,7 +29,6 @@ SOURCES += \ $$PWD/qwindowsfontengine.cpp \ $$PWD/qwindowsfontdatabase.cpp \ $$PWD/qwindowsmousehandler.cpp \ - $$PWD/qwindowsguieventdispatcher.cpp \ $$PWD/qwindowsole.cpp \ $$PWD/qwindowsmime.cpp \ $$PWD/qwindowsinternalmimedata.cpp \ @@ -51,7 +50,6 @@ HEADERS += \ $$PWD/qwindowsfontengine.h \ $$PWD/qwindowsfontdatabase.h \ $$PWD/qwindowsmousehandler.h \ - $$PWD/qwindowsguieventdispatcher.h \ $$PWD/qtwindowsglobal.h \ $$PWD/qtwindows_additional.h \ $$PWD/qwindowsole.h \ -- cgit v1.2.3 From 3d6975af4b0b77f13b5a4f36f82b86ed551aa85a Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 10 Nov 2015 11:28:38 +0100 Subject: Compile minimalegl QPA plugin on Windows/WinRT. Add event dispatchers. Change-Id: I548b50d1ec648fa8cb6c77881c95125f361343f0 Reviewed-by: Andrew Knight Reviewed-by: Laszlo Agocs --- .../minimalegl/qminimaleglintegration.cpp | 41 +++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp index ef96985f1a..1bcb22618e 100644 --- a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp +++ b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp @@ -37,7 +37,15 @@ #include "qminimaleglbackingstore.h" #include -#include + +#if defined(Q_OS_UNIX) +# include +#elif defined(Q_OS_WINRT) +# include +# include +#elif defined(Q_OS_WIN) +# include +#endif #include #include @@ -48,6 +56,29 @@ QT_BEGIN_NAMESPACE +#ifdef Q_OS_WINRT +namespace { +class QWinRTEventDispatcher : public QEventDispatcherWinRT { +public: + QWinRTEventDispatcher() {} + +protected: + bool hasPendingEvents() Q_DECL_OVERRIDE + { + return QEventDispatcherWinRT::hasPendingEvents() || QWindowSystemInterface::windowSystemEventsQueued(); + } + + bool sendPostedEvents(QEventLoop::ProcessEventsFlags flags) + { + bool didProcess = QEventDispatcherWinRT::sendPostedEvents(flags); + if (!(flags & QEventLoop::ExcludeUserInputEvents)) + didProcess |= QWindowSystemInterface::sendWindowSystemEvents(flags); + return didProcess; + } +}; +} // anonymous namespace +#endif // Q_OS_WINRT + QMinimalEglIntegration::QMinimalEglIntegration() : mFontDb(new QGenericUnixFontDatabase()), mScreen(new QMinimalEglScreen(EGL_DEFAULT_DISPLAY)) { @@ -104,7 +135,15 @@ QPlatformFontDatabase *QMinimalEglIntegration::fontDatabase() const QAbstractEventDispatcher *QMinimalEglIntegration::createEventDispatcher() const { +#if defined(Q_OS_UNIX) return createUnixEventDispatcher(); +#elif defined(Q_OS_WINRT) + return new QWinRTEventDispatcher; +#elif defined(Q_OS_WIN) + return new QWindowsGuiEventDispatcher; +#else + return Q_NULLPTR; +#endif } QVariant QMinimalEglIntegration::styleHint(QPlatformIntegration::StyleHint hint) const -- cgit v1.2.3 From 2f9effeb64e00325c6d0978c48f2c820021bb414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 11 Nov 2015 15:26:03 +0100 Subject: Fix OS X 10.11 (Xcode 7.1) build issues due to strongly typed enums MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Apple changed some enums in the 10.11 SDK from being just: enum { ... }; typedef uint64_t Foo; to: typedef CF_ENUM(uint64_t, Foo) { ... }; which in C++11 mode expands to: typedef enum Foo : uint64_t Foo; enum Foo : uint64_t { ... }; The use of strongly typed enums means we need to explicitly cast from int in the places where we know what we are doing. Change-Id: I7c8cfdbc0549471a3292de14d8b766fe17133e25 Reviewed-by: Simon Hausmann Reviewed-by: Tor Arne Vestbø --- .../other/macnativeevents/qnativeevents_mac.cpp | 29 ++++++++++++++-------- .../tst_qaccessibilitymac_helpers.mm | 12 ++++----- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/tests/auto/other/macnativeevents/qnativeevents_mac.cpp b/tests/auto/other/macnativeevents/qnativeevents_mac.cpp index 6053a649a1..d3b50a5405 100644 --- a/tests/auto/other/macnativeevents/qnativeevents_mac.cpp +++ b/tests/auto/other/macnativeevents/qnativeevents_mac.cpp @@ -56,15 +56,15 @@ static Qt::KeyboardModifiers getModifiersFromQuartzEvent(CGEventRef inEvent) static void setModifiersFromQNativeEvent(CGEventRef inEvent, const QNativeEvent &event) { - CGEventFlags flags = 0; + CGEventFlags flags = CGEventFlags(0); if (event.modifiers.testFlag(Qt::ShiftModifier)) - flags |= kCGEventFlagMaskShift; + flags = CGEventFlags(flags | kCGEventFlagMaskShift); if (event.modifiers.testFlag(Qt::ControlModifier)) - flags |= kCGEventFlagMaskControl; + flags = CGEventFlags(flags | kCGEventFlagMaskControl); if (event.modifiers.testFlag(Qt::AltModifier)) - flags |= kCGEventFlagMaskAlternate; + flags = CGEventFlags(flags | kCGEventFlagMaskAlternate); if (event.modifiers.testFlag(Qt::MetaModifier)) - flags |= kCGEventFlagMaskCommand; + flags = CGEventFlags(flags | kCGEventFlagMaskCommand); CGEventSetFlags(inEvent, flags); } @@ -240,7 +240,7 @@ Qt::Native::Status sendNativeMouseMoveEvent_Quartz(const QNativeMouseMoveEvent & pos.x = event.globalPos.x(); pos.y = event.globalPos.y(); - CGEventRef e = CGEventCreateMouseEvent(0, kCGEventMouseMoved, pos, 0); + CGEventRef e = CGEventCreateMouseEvent(0, kCGEventMouseMoved, pos, kCGMouseButtonLeft /* ignored */); setModifiersFromQNativeEvent(e, event); CGEventPost(kCGHIDEventTap, e); CFRelease(e); @@ -253,7 +253,7 @@ Qt::Native::Status sendNativeMouseButtonEvent_Quartz(const QNativeMouseButtonEve pos.x = event.globalPos.x(); pos.y = event.globalPos.y(); - CGEventType type = 0; + CGEventType type = kCGEventNull; if (event.button == Qt::LeftButton) type = (event.clickCount > 0) ? kCGEventLeftMouseDown : kCGEventLeftMouseUp; else if (event.button == Qt::RightButton) @@ -261,7 +261,12 @@ Qt::Native::Status sendNativeMouseButtonEvent_Quartz(const QNativeMouseButtonEve else type = (event.clickCount > 0) ? kCGEventOtherMouseDown : kCGEventOtherMouseUp; - CGEventRef e = CGEventCreateMouseEvent(0, type, pos, event.button); + // The mouseButton argument to CGEventCreateMouseEvent() is ignored unless the type + // is kCGEventOtherSomething, so defaulting to kCGMouseButtonLeft is fine. + CGMouseButton mouseButton = (type == kCGEventOtherMouseDown || type == kCGEventOtherMouseUp) ? + kCGMouseButtonCenter : kCGMouseButtonLeft; + + CGEventRef e = CGEventCreateMouseEvent(0, type, pos, mouseButton); setModifiersFromQNativeEvent(e, event); CGEventSetIntegerValueField(e, kCGMouseEventClickState, event.clickCount); CGEventPost(kCGHIDEventTap, e); @@ -275,7 +280,7 @@ Qt::Native::Status sendNativeMouseDragEvent_Quartz(const QNativeMouseDragEvent & pos.x = event.globalPos.x(); pos.y = event.globalPos.y(); - CGEventType type = 0; + CGEventType type = kCGEventNull; if (event.button == Qt::LeftButton) type = kCGEventLeftMouseDragged; else if (event.button == Qt::RightButton) @@ -283,7 +288,11 @@ Qt::Native::Status sendNativeMouseDragEvent_Quartz(const QNativeMouseDragEvent & else type = kCGEventOtherMouseDragged; - CGEventRef e = CGEventCreateMouseEvent(0, type, pos, event.button); + // The mouseButton argument to CGEventCreateMouseEvent() is ignored unless the type + // is kCGEventOtherSomething, so defaulting to kCGMouseButtonLeft is fine. + CGMouseButton mouseButton = type == kCGEventOtherMouseDragged ? kCGMouseButtonCenter : kCGMouseButtonLeft; + + CGEventRef e = CGEventCreateMouseEvent(0, type, pos, mouseButton); setModifiersFromQNativeEvent(e, event); CGEventPost(kCGHIDEventTap, e); CFRelease(e); diff --git a/tests/auto/other/qaccessibilitymac/tst_qaccessibilitymac_helpers.mm b/tests/auto/other/qaccessibilitymac/tst_qaccessibilitymac_helpers.mm index 3056904dcf..65dbff4f92 100644 --- a/tests/auto/other/qaccessibilitymac/tst_qaccessibilitymac_helpers.mm +++ b/tests/auto/other/qaccessibilitymac/tst_qaccessibilitymac_helpers.mm @@ -199,7 +199,7 @@ QDebug operator<<(QDebug dbg, AXErrorTag err) CFRange cfRange; NSRange range = NSMakeRange(0, 0); - if (!AXValueGetValue((AXValueRef)value, kAXValueCFRangeType, &cfRange)) + if (!AXValueGetValue(AXValueRef(value), AXValueType(kAXValueCFRangeType), &cfRange)) qDebug() << "Could not get CFRange value out of AXValueRef"; else if (cfRange.location < 0 || cfRange.length < 0) qDebug() << "Cannot convert CFRange with negative location or length to NSRange"; @@ -217,7 +217,7 @@ QDebug operator<<(QDebug dbg, AXErrorTag err) + (NSRect)_rectFromValue:(CFTypeRef)value { NSRect rect = NSMakeRect(0, 0, 0, 0); - if (!AXValueGetValue((AXValueRef)value, kAXValueCGRectType, reinterpret_cast(&rect))) + if (!AXValueGetValue(AXValueRef(value), AXValueType(kAXValueCGRectType), reinterpret_cast(&rect))) { qDebug() << "Could not get CGRect value out of AXValueRef"; } @@ -227,7 +227,7 @@ QDebug operator<<(QDebug dbg, AXErrorTag err) + (NSPoint)_pointFromValue:(CFTypeRef)value { NSPoint point = NSMakePoint(0, 0); - if (!AXValueGetValue((AXValueRef)value, kAXValueCGPointType, reinterpret_cast(&point))) + if (!AXValueGetValue(AXValueRef(value), AXValueType(kAXValueCGPointType), reinterpret_cast(&point))) { qDebug() << "Could not get CGPoint value out of AXValueRef"; } @@ -237,7 +237,7 @@ QDebug operator<<(QDebug dbg, AXErrorTag err) + (NSSize)_sizeFromValue:(CFTypeRef)value { NSSize size = NSMakeSize(0, 0); - if (!AXValueGetValue((AXValueRef)value, kAXValueCGSizeType, reinterpret_cast(&size))) + if (!AXValueGetValue(AXValueRef(value), AXValueType(kAXValueCGSizeType), reinterpret_cast(&size))) { qDebug() << "Could not get CGSize value out of AXValueRef"; } @@ -308,7 +308,7 @@ QDebug operator<<(QDebug dbg, AXErrorTag err) - (CFTypeRef)_attributeValue:(CFStringRef)attribute forRange:(NSRange)aRange { CFRange cfRange = CFRangeMake(aRange.location, aRange.length); - AXValueRef range = AXValueCreate(kAXValueCFRangeType, &cfRange); + AXValueRef range = AXValueCreate(AXValueType(kAXValueCFRangeType), &cfRange); CFTypeRef value = [self _attributeValue:attribute forParameter:range]; CFRelease(range); return value; @@ -324,7 +324,7 @@ QDebug operator<<(QDebug dbg, AXErrorTag err) - (CFTypeRef)_attributeValue:(CFStringRef)attribute forPoint:(CGPoint)aPoint { - AXValueRef point = AXValueCreate(kAXValueCGPointType, &aPoint); + AXValueRef point = AXValueCreate(AXValueType(kAXValueCGPointType), &aPoint); CFTypeRef value = [self _attributeValue:attribute forParameter:point]; CFRelease(point); return value; -- cgit v1.2.3 From 96cebb46c2e9b74ea119b8ed13896f012bea496e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 4 Nov 2015 15:19:13 +0100 Subject: OS X: Don't forward key events to popup window if it's a tooltip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 676edc006e9f43 introduced a regression by not filtering the active popup window for tooltips, which is what the corresponding mouse handler in QNSView does. Change-Id: I5091dba0dd43be2e859ea360dfd812c0f081fd32 Reviewed-by: Eike Ziller Reviewed-by: Jake Petroules Reviewed-by: Richard Moe Gustavsen Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/cocoa/qnsview.mm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index aac50e7833..f414193bdb 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -1465,8 +1465,10 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent) // Popups implicitly grab key events; forward to the active popup if there is one. // This allows popups to e.g. intercept shortcuts and close the popup in response. - if (QCocoaWindow *popup = QCocoaIntegration::instance()->activePopupWindow()) - window = popup->window(); + if (QCocoaWindow *popup = QCocoaIntegration::instance()->activePopupWindow()) { + if (!popup->m_windowFlags.testFlag(Qt::ToolTip)) + window = popup->window(); + } if (eventType == QEvent::KeyPress) { -- cgit v1.2.3 From a856c4a902816a7d691ca50e6f556521287be441 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Tue, 27 Oct 2015 11:00:35 +0100 Subject: Fix falsely reported style for fallback font In change 8f6b3284106fa11129e4fa6e5ec3adc6cb1f489f we override the fontDef of the fallback font with the fontDef of the original font (with the family name replaced) to fix a regression where boldness was not inherited by the fallback font. This caused a bug, though, since the contents of the fontDef would now misrepresent the actual font used. The side effect of this was that isSmoothlyScalable() returned false because the family and styleName combination we claim to have did not exist in the font database. Result: We fell back to native rendering for the font even though it's scalable. Weight and style are the only parts that should be inherited, since they are synthesized. So rather than overwriting the fontDef completely, we copy the weight and style when needed. The bug in QTBUG-42963 is still fixed after this change. [ChangeLog][Text] Fixed problem where fallback fonts for text with certain styles would be reported as unscalable. Change-Id: I95ef67f818852aea5a6ae8df789a52364ecb59a6 Task-number: QTBUG-47547 Reviewed-by: Lars Knoll Reviewed-by: Konstantin Ritt --- src/gui/text/qfontengine.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 3208a199b7..f267b2d147 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -1835,7 +1835,10 @@ QFontEngine *QFontEngineMulti::loadEngine(int at) request.family = fallbackFamilyAt(at - 1); if (QFontEngine *engine = QFontDatabase::findFont(request, m_script)) { - engine->fontDef = request; + if (request.weight > QFont::Normal) + engine->fontDef.weight = request.weight; + if (request.style > QFont::StyleNormal) + engine->fontDef.style = request.style; return engine; } -- cgit v1.2.3 From 6a7155997bfbc909c9875198a93dc2a6cba75795 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 9 Nov 2015 01:21:24 +0400 Subject: QFontEngineFT: Revise the legacy LCD filter implementation Use an optimized version of the intra-pixel filter found in FreeType's _ft_lcd_filter_legacy(). Gives us somewhat better accuracy and better performance. Change-Id: Id4200b67e6ff55f605037c3e5464fef8bb03fbde Reviewed-by: Friedemann Kleint Reviewed-by: Lars Knoll Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qfontengine_ft.cpp | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 162f409acd..242dd84096 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -534,25 +534,18 @@ QFontEngineFT::Glyph::~Glyph() delete [] data; } -static const uint subpixel_filter[3][3] = { - { 180, 60, 16 }, - { 38, 180, 38 }, - { 16, 60, 180 } -}; - -static inline uint filterPixel(uint red, uint green, uint blue, bool legacyFilter) +static inline uint filterPixel(uchar red, uchar green, uchar blue, bool legacyFilter) { - uint res; if (legacyFilter) { - uint high = (red*subpixel_filter[0][0] + green*subpixel_filter[0][1] + blue*subpixel_filter[0][2]) >> 8; - uint mid = (red*subpixel_filter[1][0] + green*subpixel_filter[1][1] + blue*subpixel_filter[1][2]) >> 8; - uint low = (red*subpixel_filter[2][0] + green*subpixel_filter[2][1] + blue*subpixel_filter[2][2]) >> 8; - res = (mid << 24) + (high << 16) + (mid << 8) + low; - } else { - uint alpha = green; - res = (alpha << 24) + (red << 16) + (green << 8) + blue; + uint r = red, g = green, b = blue; + // intra-pixel filter used by the legacy filter (adopted from _ft_lcd_filter_legacy) + red = (r * uint(65538 * 9/13) + g * uint(65538 * 1/6) + b * uint(65538 * 1/13)) / 65536; + green = (r * uint(65538 * 3/13) + g * uint(65538 * 4/6) + b * uint(65538 * 3/13)) / 65536; + blue = (r * uint(65538 * 1/13) + g * uint(65538 * 1/6) + b * uint(65538 * 9/13)) / 65536; } - return res; + + // alpha = green + return (green << 24) + (red << 16) + (green << 8) + blue; } static void convertRGBToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) @@ -563,9 +556,9 @@ static void convertRGBToARGB(const uchar *src, uint *dst, int width, int height, while (h--) { uint *dd = dst; for (int x = 0; x < w; x += 3) { - uint red = src[x+1-offs]; - uint green = src[x+1]; - uint blue = src[x+1+offs]; + uchar red = src[x + 1 - offs]; + uchar green = src[x + 1]; + uchar blue = src[x + 1 + offs]; *dd = filterPixel(red, green, blue, legacyFilter); ++dd; } @@ -580,9 +573,9 @@ static void convertRGBToARGB_V(const uchar *src, uint *dst, int width, int heigh const int offs = bgr ? -src_pitch : src_pitch; while (h--) { for (int x = 0; x < width; x++) { - uint red = src[x+src_pitch-offs]; - uint green = src[x+src_pitch]; - uint blue = src[x+src_pitch+offs]; + uchar red = src[x + src_pitch - offs]; + uchar green = src[x + src_pitch]; + uchar blue = src[x + src_pitch + offs]; dst[x] = filterPixel(red, green, blue, legacyFilter); } dst += width; -- cgit v1.2.3 From 4d5b57825a2ec5eb15ab8a40bb173306e2279914 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 9 Nov 2015 01:47:07 +0400 Subject: QFontEngineFT: Optimize format convertion code with template magic Avoids in-loop check for every pixel by costs of slightly bigger code. Change-Id: I8321d0945ac6b677786431670b2316c60e4db492 Reviewed-by: Friedemann Kleint Reviewed-by: Lars Knoll --- src/gui/text/qfontengine_ft.cpp | 54 +++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 242dd84096..8dfabd48ad 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -534,55 +534,77 @@ QFontEngineFT::Glyph::~Glyph() delete [] data; } -static inline uint filterPixel(uchar red, uchar green, uchar blue, bool legacyFilter) +struct LcdFilterDummy { - if (legacyFilter) { + static inline void filterPixel(uchar &, uchar &, uchar &) + {} +}; + +struct LcdFilterLegacy +{ + static inline void filterPixel(uchar &red, uchar &green, uchar &blue) + { uint r = red, g = green, b = blue; // intra-pixel filter used by the legacy filter (adopted from _ft_lcd_filter_legacy) red = (r * uint(65538 * 9/13) + g * uint(65538 * 1/6) + b * uint(65538 * 1/13)) / 65536; green = (r * uint(65538 * 3/13) + g * uint(65538 * 4/6) + b * uint(65538 * 3/13)) / 65536; blue = (r * uint(65538 * 1/13) + g * uint(65538 * 1/6) + b * uint(65538 * 9/13)) / 65536; } +}; - // alpha = green - return (green << 24) + (red << 16) + (green << 8) + blue; -} - -static void convertRGBToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +template +static void convertRGBToARGB_helper(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr) { - int h = height; const int offs = bgr ? -1 : 1; const int w = width * 3; - while (h--) { + while (height--) { uint *dd = dst; for (int x = 0; x < w; x += 3) { uchar red = src[x + 1 - offs]; uchar green = src[x + 1]; uchar blue = src[x + 1 + offs]; - *dd = filterPixel(red, green, blue, legacyFilter); - ++dd; + LcdFilter::filterPixel(red, green, blue); + // alpha = green + *dd++ = (green << 24) | (red << 16) | (green << 8) | blue; } dst += width; src += src_pitch; } } -static void convertRGBToARGB_V(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +static inline void convertRGBToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +{ + if (!legacyFilter) + convertRGBToARGB_helper(src, dst, width, height, src_pitch, bgr); + else + convertRGBToARGB_helper(src, dst, width, height, src_pitch, bgr); +} + +template +static void convertRGBToARGB_V_helper(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr) { - int h = height; const int offs = bgr ? -src_pitch : src_pitch; - while (h--) { + while (height--) { for (int x = 0; x < width; x++) { uchar red = src[x + src_pitch - offs]; uchar green = src[x + src_pitch]; uchar blue = src[x + src_pitch + offs]; - dst[x] = filterPixel(red, green, blue, legacyFilter); + LcdFilter::filterPixel(red, green, blue); + // alpha = green + *dst++ = (green << 24) | (red << 16) | (green << 8) | blue; } - dst += width; src += 3*src_pitch; } } +static inline void convertRGBToARGB_V(const uchar *src, uint *dst, int width, int height, int src_pitch, bool bgr, bool legacyFilter) +{ + if (!legacyFilter) + convertRGBToARGB_V_helper(src, dst, width, height, src_pitch, bgr); + else + convertRGBToARGB_V_helper(src, dst, width, height, src_pitch, bgr); +} + static inline void convertGRAYToARGB(const uchar *src, uint *dst, int width, int height, int src_pitch) { while (height--) { -- cgit v1.2.3 From c26764686718f46a22371ea16d683d6bf17b9e66 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Thu, 5 Nov 2015 11:03:28 +0400 Subject: Move CasexTraits from qstring.cpp to qunicodetables_p.h and implement TitlecaseTraits as well, to be re-used in the following commit. Change-Id: I5c0bff42fe3b9bc9c2454cc16916cc2be87f604f Reviewed-by: Lars Knoll --- src/corelib/tools/qstring.cpp | 24 ------------------------ src/corelib/tools/qunicodetables_p.h | 32 ++++++++++++++++++++++++++++++++ util/unicode/main.cpp | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 24 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index a88b48c767..6b15900031 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -5666,30 +5666,6 @@ QString QString::rightJustified(int width, QChar fill, bool truncate) const */ namespace QUnicodeTables { -struct LowercaseTraits -{ - static signed short caseDiff(const Properties *prop) - { return prop->lowerCaseDiff; } - static bool caseSpecial(const Properties *prop) - { return prop->lowerCaseSpecial; } -}; - -struct UppercaseTraits -{ - static signed short caseDiff(const Properties *prop) - { return prop->upperCaseDiff; } - static bool caseSpecial(const Properties *prop) - { return prop->upperCaseSpecial; } -}; - -struct CasefoldTraits -{ - static signed short caseDiff(const Properties *prop) - { return prop->caseFoldDiff; } - static bool caseSpecial(const Properties *prop) - { return prop->caseFoldSpecial; } -}; - template Q_NEVER_INLINE static QString detachAndConvertCase(T &str, QStringIterator it) diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h index 1fbcc39666..6a2797be0e 100644 --- a/src/corelib/tools/qunicodetables_p.h +++ b/src/corelib/tools/qunicodetables_p.h @@ -82,6 +82,38 @@ struct Properties { Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4) Q_DECL_NOTHROW; Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2) Q_DECL_NOTHROW; +struct LowercaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->lowerCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->lowerCaseSpecial; } +}; + +struct UppercaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->upperCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->upperCaseSpecial; } +}; + +struct TitlecaseTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->titleCaseDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->titleCaseSpecial; } +}; + +struct CasefoldTraits +{ + static inline signed short caseDiff(const Properties *prop) + { return prop->caseFoldDiff; } + static inline bool caseSpecial(const Properties *prop) + { return prop->caseFoldSpecial; } +}; + enum GraphemeBreakClass { GraphemeBreak_Other, GraphemeBreak_CR, diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 35f5aa9d24..d1713795dd 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -765,6 +765,38 @@ static const char *property_string = "};\n\n" "Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4) Q_DECL_NOTHROW;\n" "Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2) Q_DECL_NOTHROW;\n" + "\n" + "struct LowercaseTraits\n" + "{\n" + " static inline signed short caseDiff(const Properties *prop)\n" + " { return prop->lowerCaseDiff; }\n" + " static inline bool caseSpecial(const Properties *prop)\n" + " { return prop->lowerCaseSpecial; }\n" + "};\n" + "\n" + "struct UppercaseTraits\n" + "{\n" + " static inline signed short caseDiff(const Properties *prop)\n" + " { return prop->upperCaseDiff; }\n" + " static inline bool caseSpecial(const Properties *prop)\n" + " { return prop->upperCaseSpecial; }\n" + "};\n" + "\n" + "struct TitlecaseTraits\n" + "{\n" + " static inline signed short caseDiff(const Properties *prop)\n" + " { return prop->titleCaseDiff; }\n" + " static inline bool caseSpecial(const Properties *prop)\n" + " { return prop->titleCaseSpecial; }\n" + "};\n" + "\n" + "struct CasefoldTraits\n" + "{\n" + " static inline signed short caseDiff(const Properties *prop)\n" + " { return prop->caseFoldDiff; }\n" + " static inline bool caseSpecial(const Properties *prop)\n" + " { return prop->caseFoldSpecial; }\n" + "};\n" "\n"; static const char *methods = -- cgit v1.2.3 From e593e5aa67397752a5ce3364fb1a2ba8b883c41b Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Thu, 5 Nov 2015 11:31:48 +0400 Subject: QChar: Simplify case convertion code with template magic Same as in QString, though simpler a bit due to fixed-length sequence. Change-Id: Idd6670a7b6415f5d515987c30931d16b73dd280e Reviewed-by: Lars Knoll --- src/corelib/tools/qchar.cpp | 72 +++++++++++++-------------------------------- 1 file changed, 21 insertions(+), 51 deletions(-) diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index 9d2d90fc0d..78fa0bccf0 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -1430,48 +1430,18 @@ QChar::UnicodeVersion QChar::currentUnicodeVersion() Q_DECL_NOTHROW } -template -Q_DECL_CONST_FUNCTION static inline T toLowerCase_helper(T uc) Q_DECL_NOTHROW +template +Q_DECL_CONST_FUNCTION static inline T convertCase_helper(T uc) Q_DECL_NOTHROW { - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->lowerCaseSpecial) { - const ushort *specialCase = specialCaseMap + p->lowerCaseDiff; - return (*specialCase == 1) ? specialCase[1] : uc; - } - return uc + p->lowerCaseDiff; -} - -template -Q_DECL_CONST_FUNCTION static inline T toUpperCase_helper(T uc) Q_DECL_NOTHROW -{ - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->upperCaseSpecial) { - const ushort *specialCase = specialCaseMap + p->upperCaseDiff; - return (*specialCase == 1) ? specialCase[1] : uc; - } - return uc + p->upperCaseDiff; -} + const QUnicodeTables::Properties *prop = qGetProp(uc); -template -Q_DECL_CONST_FUNCTION static inline T toTitleCase_helper(T uc) Q_DECL_NOTHROW -{ - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->titleCaseSpecial) { - const ushort *specialCase = specialCaseMap + p->titleCaseDiff; - return (*specialCase == 1) ? specialCase[1] : uc; + if (Q_UNLIKELY(Traits::caseSpecial(prop))) { + const ushort *specialCase = specialCaseMap + Traits::caseDiff(prop); + // so far, there are no special cases beyond BMP (guaranteed by the qunicodetables generator) + return *specialCase == 1 ? specialCase[1] : uc; } - return uc + p->titleCaseDiff; -} -template -Q_DECL_CONST_FUNCTION static inline T toCaseFolded_helper(T uc) Q_DECL_NOTHROW -{ - const QUnicodeTables::Properties *p = qGetProp(uc); - if (p->caseFoldSpecial) { - const ushort *specialCase = specialCaseMap + p->caseFoldDiff; - return (*specialCase == 1) ? specialCase[1] : uc; - } - return uc + p->caseFoldDiff; + return uc + Traits::caseDiff(prop); } /*! @@ -1491,7 +1461,7 @@ uint QChar::toLower(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toLowerCase_helper(ucs4); + return convertCase_helper(ucs4); } /*! @@ -1511,7 +1481,7 @@ uint QChar::toUpper(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toUpperCase_helper(ucs4); + return convertCase_helper(ucs4); } /*! @@ -1531,29 +1501,29 @@ uint QChar::toTitleCase(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toTitleCase_helper(ucs4); + return convertCase_helper(ucs4); } static inline uint foldCase(const ushort *ch, const ushort *start) { - uint c = *ch; - if (QChar(c).isLowSurrogate() && ch > start && QChar(*(ch - 1)).isHighSurrogate()) - c = QChar::surrogateToUcs4(*(ch - 1), c); - return toCaseFolded_helper(c); + uint ucs4 = *ch; + if (QChar::isLowSurrogate(ucs4) && ch > start && QChar::isHighSurrogate(*(ch - 1))) + ucs4 = QChar::surrogateToUcs4(*(ch - 1), ucs4); + return convertCase_helper(ucs4); } static inline uint foldCase(uint ch, uint &last) Q_DECL_NOTHROW { - uint c = ch; - if (QChar(c).isLowSurrogate() && QChar(last).isHighSurrogate()) - c = QChar::surrogateToUcs4(last, c); + uint ucs4 = ch; + if (QChar::isLowSurrogate(ucs4) && QChar::isHighSurrogate(last)) + ucs4 = QChar::surrogateToUcs4(last, ucs4); last = ch; - return toCaseFolded_helper(c); + return convertCase_helper(ucs4); } static inline ushort foldCase(ushort ch) Q_DECL_NOTHROW { - return toCaseFolded_helper(ch); + return convertCase_helper(ch); } /*! @@ -1572,7 +1542,7 @@ uint QChar::toCaseFolded(uint ucs4) Q_DECL_NOTHROW { if (ucs4 > LastValidCodePoint) return ucs4; - return toCaseFolded_helper(ucs4); + return convertCase_helper(ucs4); } /*! -- cgit v1.2.3 From 79cdc7a26c0ab66b4df32b6ec9ef0d27de37d46b Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 12 Nov 2015 16:35:44 +0100 Subject: remove abuse of module include path overrides these modules simply have no "proper" include paths (they are used only within qtbase, with explicit INCLUDEPATH statements). Change-Id: Iec6aa6ae0bc449eb8cac2fa1c86a791755eec06e Reviewed-by: Laszlo Agocs --- src/plugins/platforms/eglfs/eglfs_device_lib.pro | 7 ------- src/plugins/platforms/xcb/xcb_qpa_lib.pro | 7 ------- 2 files changed, 14 deletions(-) diff --git a/src/plugins/platforms/eglfs/eglfs_device_lib.pro b/src/plugins/platforms/eglfs/eglfs_device_lib.pro index 22a32663c7..4fe2ce4897 100644 --- a/src/plugins/platforms/eglfs/eglfs_device_lib.pro +++ b/src/plugins/platforms/eglfs/eglfs_device_lib.pro @@ -6,13 +6,6 @@ TARGET = QtEglDeviceIntegration CONFIG += no_module_headers internal_module -MODULE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE \ - \$\$QT_MODULE_INCLUDE_BASE/QtQGui -MODULE_PRIVATE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION/QtGui - load(qt_module) QT += core-private gui-private platformsupport-private diff --git a/src/plugins/platforms/xcb/xcb_qpa_lib.pro b/src/plugins/platforms/xcb/xcb_qpa_lib.pro index 12987567ff..945bf06d6f 100644 --- a/src/plugins/platforms/xcb/xcb_qpa_lib.pro +++ b/src/plugins/platforms/xcb/xcb_qpa_lib.pro @@ -1,13 +1,6 @@ TARGET = QtXcbQpa CONFIG += no_module_headers internal_module -MODULE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE \ - \$\$QT_MODULE_INCLUDE_BASE/QtQGui -MODULE_PRIVATE_INCLUDES = \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION \ - \$\$QT_MODULE_INCLUDE_BASE/QtGui/$$QT.gui.VERSION/QtGui - load(qt_module) QT += core-private gui-private platformsupport-private -- cgit v1.2.3 From 778e6de8a24357d9f4d317a837cbdf2df83c35e8 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 13 Nov 2015 21:01:06 +0100 Subject: move addition of libdl to right project Change-Id: Ifae8b906ef3767d9c21f09953076bd640829858f Reviewed-by: Laszlo Agocs --- src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro | 2 ++ src/plugins/platforms/xcb/xcb_qpa_lib.pro | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro index 57cd81ec3b..1c577e5dc9 100644 --- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro +++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/xcb_glx.pro @@ -17,6 +17,8 @@ contains(QT_CONFIG, xcb-glx) { LIBS += -lxcb-glx } +LIBS += $$QMAKE_LIBS_DYNLOAD + HEADERS += \ qxcbglxintegration.h \ qxcbglxwindow.h \ diff --git a/src/plugins/platforms/xcb/xcb_qpa_lib.pro b/src/plugins/platforms/xcb/xcb_qpa_lib.pro index 945bf06d6f..60eb8a02e3 100644 --- a/src/plugins/platforms/xcb/xcb_qpa_lib.pro +++ b/src/plugins/platforms/xcb/xcb_qpa_lib.pro @@ -40,8 +40,6 @@ HEADERS = \ qxcbxsettings.h \ qxcbsystemtraytracker.h -LIBS += $$QMAKE_LIBS_DYNLOAD - DEFINES += QT_BUILD_XCB_PLUGIN # needed by Xcursor ... contains(QT_CONFIG, xcb-xlib) { -- cgit v1.2.3 From 5292dbc59544b44264c2403e147760285350c6ae Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 11 Nov 2015 19:45:39 +0100 Subject: remove pointless conditional defines wince triggers the functionally identical cross_compile scope above. Change-Id: I92cdbb1df51599b2b4aa8a7ca2f3d6407034ba26 Reviewed-by: Joerg Bornemann --- tests/auto/corelib/tools/qsharedpointer/externaltests.pri | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/auto/corelib/tools/qsharedpointer/externaltests.pri b/tests/auto/corelib/tools/qsharedpointer/externaltests.pri index cac94bb522..604bd7f59f 100644 --- a/tests/auto/corelib/tools/qsharedpointer/externaltests.pri +++ b/tests/auto/corelib/tools/qsharedpointer/externaltests.pri @@ -4,4 +4,3 @@ cleanedQMAKESPEC = $$replace(QMAKESPEC, \\\\, /) DEFINES += DEFAULT_MAKESPEC=\\\"$$cleanedQMAKESPEC\\\" cross_compile:DEFINES += QTEST_NO_RTTI QTEST_CROSS_COMPILED -wince: DEFINES += QTEST_CROSS_COMPILED QTEST_NO_RTTI -- cgit v1.2.3 From 5c4c5dd7a2032a6769c51174eb46d456a769378d Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Fri, 13 Nov 2015 13:47:26 +0100 Subject: Doc: corrected snippet QSqlTableModel Wrongly used QSQLQueryModel previously Task-number: QTBUG-35860 Change-Id: I059ba45e54ac67b75b68eb0b804f66642b87a29f Reviewed-by: Martin Smith --- src/sql/doc/snippets/sqldatabase/sqldatabase.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp b/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp index 0938fa775d..068a2c04f1 100644 --- a/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp +++ b/src/sql/doc/snippets/sqldatabase/sqldatabase.cpp @@ -239,8 +239,9 @@ void QSqlQueryModel_snippets() } //! [21] - QSqlQueryModel model; - model.setQuery("SELECT * FROM employee"); + QSqlTableModel model; + model.setTable("employee"); + model.select(); int salary = model.record(4).value("salary").toInt(); //! [21] Q_UNUSED(salary); -- cgit v1.2.3 From c81fcffed86cb3a4ed21d880bc9f1a4d3b847197 Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Mon, 16 Nov 2015 13:22:40 +0100 Subject: Doc: Corrected minor typo Task-number: QTBUG-27499 Change-Id: I20b8da6300b84a107f6f581b99c63a39f8455d6c Reviewed-by: Martin Smith --- src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc b/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc index 0547c4f64a..843807b67c 100644 --- a/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc +++ b/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc @@ -829,7 +829,7 @@ \l{#selected-ps}{:selected}, and \l{#checked-ps}{:checked} pseudo states. - Sort indicator in can be styled using the + The sort indicator can be styled using the \l{#up-arrow-sub}{::up-arrow} and the \l{#down-arrow-sub}{::down-arrow} Sub-control. -- cgit v1.2.3 From 50f91545a341b609f54af3dd4a335a734f8e78aa Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Wed, 11 Nov 2015 15:05:29 +0100 Subject: Doc: removed 2 invalid external links in external resources. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Link to Using a Designer UI File Task-number: QTBUG-49251 Change-Id: I9d2e5ad746ce5c3933f28b8159e381dcdb8e643a Reviewed-by: Topi Reiniö Reviewed-by: Martin Smith --- src/corelib/doc/src/external-resources.qdoc | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/corelib/doc/src/external-resources.qdoc b/src/corelib/doc/src/external-resources.qdoc index d612ce8280..3d01b9ee2d 100644 --- a/src/corelib/doc/src/external-resources.qdoc +++ b/src/corelib/doc/src/external-resources.qdoc @@ -56,16 +56,6 @@ \title IANA character-sets encoding file */ -/*! - \externalpage http://doc-snapshot.qt-project.org/qt5-5.4/qtdesigner-manual.html - \title Using a Designer UI File in Your Application -*/ - -/*! - \externalpage http://doc-snapshot.qt-project.org/qt5-5.4/designer-widget-mode.html#the-property-editor - \title Qt Designer's Widget Editing Mode#The Property Editor -*/ - /*! \externalpage http://marcmutz.wordpress.com/effective-qt/containers/#containers-qlist \title Pros and Cons of Using QList -- cgit v1.2.3 From 90c81366d18c94cea17c2b25d2b7c55b6fa0ab97 Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Mon, 9 Nov 2015 13:20:58 +0100 Subject: Doc: added specs to setHorizontalHeaderItem() Added that adding an item deletes an existing one Task-number: QTBUG-42105 Change-Id: Ibcf08e6e2bf9c9239e7eca5aa48f2f30c8417fec Reviewed-by: Martin Smith --- src/widgets/itemviews/qtablewidget.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp index a10b95f701..cd38f4b282 100644 --- a/src/widgets/itemviews/qtablewidget.cpp +++ b/src/widgets/itemviews/qtablewidget.cpp @@ -2029,6 +2029,8 @@ QTableWidgetItem *QTableWidget::horizontalHeaderItem(int column) const /*! Sets the horizontal header item for column \a column to \a item. + If necessary, the column count is increased to fit the item. + The previous header item (if there was one) is deleted. */ void QTableWidget::setHorizontalHeaderItem(int column, QTableWidgetItem *item) { -- cgit v1.2.3 From d0f57439d02582cf7564d1509d13f715eadc7f05 Mon Sep 17 00:00:00 2001 From: Nico Vertriest Date: Thu, 12 Nov 2015 12:10:21 +0100 Subject: Doc: Added info about sorting in QItemSelectionModel::selectedIndexes Task-number: QTBUG-40726 Change-Id: I450f9735fbbdc6574e8a14ea0076a28ee65077de Reviewed-by: Martin Smith --- src/corelib/itemmodels/qitemselectionmodel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/corelib/itemmodels/qitemselectionmodel.cpp b/src/corelib/itemmodels/qitemselectionmodel.cpp index 51c670f79e..222e722c06 100644 --- a/src/corelib/itemmodels/qitemselectionmodel.cpp +++ b/src/corelib/itemmodels/qitemselectionmodel.cpp @@ -1646,6 +1646,7 @@ QModelIndexList QItemSelectionModel::selectedIndexes() const /*! \since 4.2 Returns the indexes in the given \a column for the rows where all columns are selected. + The list is not sorted. \sa selectedIndexes(), selectedColumns() */ -- cgit v1.2.3 From d2792d2ed90e1e2789aa80f1667d6e67cd35af66 Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Fri, 30 Oct 2015 15:58:10 +0100 Subject: Fix screenForGeometry on a corner case MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QRect only deals with integers, and I had a window set on the corner and without a size. When this screen was created, it was reported to be on the wrong screen, thus created there wrong. The reason for this is that ::center is not prepared for this use. QRect(QPoint(500,500), QSize()).center() is QRect(499, 499) Change-Id: I24e57182f84873306f180749e96368d6da1147a9 Reviewed-by: Paul Olav Tvete Reviewed-by: Tor Arne Vestbø --- src/gui/kernel/qplatformwindow.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qplatformwindow.cpp b/src/gui/kernel/qplatformwindow.cpp index ea3b75c81c..8757715c0d 100644 --- a/src/gui/kernel/qplatformwindow.cpp +++ b/src/gui/kernel/qplatformwindow.cpp @@ -484,7 +484,9 @@ QPlatformScreen *QPlatformWindow::screenForGeometry(const QRect &newGeometry) co { QPlatformScreen *currentScreen = screen(); QPlatformScreen *fallback = currentScreen; - QPoint center = newGeometry.center(); + //QRect::center can return a value outside the rectangle if it's empty + const QPoint center = newGeometry.isEmpty() ? newGeometry.topLeft() : newGeometry.center(); + if (!parent() && currentScreen && !currentScreen->geometry().contains(center)) { Q_FOREACH (QPlatformScreen* screen, currentScreen->virtualSiblings()) { if (screen->geometry().contains(center)) -- cgit v1.2.3 From 99d061ffd5ea9fc52d96b92cdf3dce93685b4205 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Fri, 13 Nov 2015 15:02:01 +0100 Subject: winrt: Do not emit keyboard changes in the constructor QWinRTInputContext is created from the XAML Thread, which can cause problems when handleVisibilityChange is invoked. Instead just query the keyboardRect and skip the emit. Task-number: QTBUG-49389 Change-Id: I158204a07b9e000adffdc308e68b0f1425ed7c62 Reviewed-by: Andrew Knight --- src/plugins/platforms/winrt/qwinrtinputcontext.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/plugins/platforms/winrt/qwinrtinputcontext.cpp b/src/plugins/platforms/winrt/qwinrtinputcontext.cpp index 750233c94f..9d8792a6db 100644 --- a/src/plugins/platforms/winrt/qwinrtinputcontext.cpp +++ b/src/plugins/platforms/winrt/qwinrtinputcontext.cpp @@ -54,6 +54,14 @@ typedef ITypedEventHandler InputPaneV QT_BEGIN_NAMESPACE +inline QRectF getInputPaneRect(IInputPane *pane, qreal scaleFactor) +{ + Rect rect; + pane->get_OccludedRect(&rect); + return QRectF(qRound(rect.X * scaleFactor), qRound(rect.Y * scaleFactor), + qRound(rect.Width * scaleFactor), qRound(rect.Height * scaleFactor)); +} + /*! \class QWinRTInputContext \brief Manages Input Method visibility @@ -87,7 +95,7 @@ QWinRTInputContext::QWinRTInputContext(QWinRTScreen *screen) inputPane->add_Hiding(Callback( this, &QWinRTInputContext::onHiding).Get(), &hideToken); - handleVisibilityChange(inputPane); + m_keyboardRect = getInputPaneRect(inputPane, m_screen->scaleFactor()); m_isInputPanelVisible = !m_keyboardRect.isEmpty(); } else { qWarning(Q_FUNC_INFO ": failed to retrieve InputPane."); @@ -120,10 +128,7 @@ HRESULT QWinRTInputContext::onHiding(IInputPane *pane, IInputPaneVisibilityEvent HRESULT QWinRTInputContext::handleVisibilityChange(IInputPane *pane) { - Rect rect; - pane->get_OccludedRect(&rect); - const QRectF keyboardRect = QRectF(qRound(rect.X * m_screen->scaleFactor()), qRound(rect.Y * m_screen->scaleFactor()), - qRound(rect.Width * m_screen->scaleFactor()), qRound(rect.Height * m_screen->scaleFactor())); + const QRectF keyboardRect = getInputPaneRect(pane, m_screen->scaleFactor()); if (m_keyboardRect != keyboardRect) { m_keyboardRect = keyboardRect; emitKeyboardRectChanged(); -- cgit v1.2.3 From 2a2ca8e6bb544c777799fc3cdeb36946858eaf9f Mon Sep 17 00:00:00 2001 From: Dmitry Shachnev Date: Sat, 14 Nov 2015 21:38:21 +0300 Subject: =?UTF-8?q?Use=20=E2=80=9CAdwaita=E2=80=9D=20as=20the=20default=20?= =?UTF-8?q?icon=20theme=20for=20QGnomeTheme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit That is the new name for gnome-icon-theme for more than 1.5 years. See [1] for details. Still keep “gnome” as the fallback icon theme, so this commit should not break anything. [1]: https://mail.gnome.org/archives/desktop-devel-list/2014-April/msg00086.html Change-Id: Ifc2178827ad2cf6fdbc4e5248c83789ebc5b797e Reviewed-by: Friedemann Kleint Reviewed-by: Jens Bache-Wiig --- src/platformsupport/themes/genericunix/qgenericunixthemes.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp index a369747a64..c94bfd4f4e 100644 --- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp +++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp @@ -609,8 +609,9 @@ QVariant QGnomeTheme::themeHint(QPlatformTheme::ThemeHint hint) const case QPlatformTheme::DialogButtonBoxLayout: return QVariant(QPlatformDialogHelper::GnomeLayout); case QPlatformTheme::SystemIconThemeName: + return QVariant(QStringLiteral("Adwaita")); case QPlatformTheme::SystemIconFallbackThemeName: - return QVariant(QString(QStringLiteral("gnome"))); + return QVariant(QStringLiteral("gnome")); case QPlatformTheme::IconThemeSearchPaths: return QVariant(QGenericUnixTheme::xdgIconThemePaths()); case QPlatformTheme::StyleNames: { -- cgit v1.2.3 From a981ba8c5a27c51e4843d2622aaea6c72310d01a Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 17 Nov 2015 09:31:17 +0100 Subject: tst_qfilesystemwatcher: Blacklist flaky tests on Windows. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extend the current BLACKLIST to cover all all Windows versions and add watchFileAndItsDirectory:native backend-testfile. Task-number: QTBUG-30943 Change-Id: Ic58c090f23d3584843bc1e74eba533d75c530ad3 Reviewed-by: Jędrzej Nowacki --- tests/auto/corelib/io/qfilesystemwatcher/BLACKLIST | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/corelib/io/qfilesystemwatcher/BLACKLIST b/tests/auto/corelib/io/qfilesystemwatcher/BLACKLIST index 10a4ba069e..90b714758a 100644 --- a/tests/auto/corelib/io/qfilesystemwatcher/BLACKLIST +++ b/tests/auto/corelib/io/qfilesystemwatcher/BLACKLIST @@ -1,9 +1,9 @@ # QTBUG-33574 QTBUG-30943 [signalsEmittedAfterFileMoved] -windows 32bit msvc-2010 -windows 64bit msvc +windows [watchFileAndItsDirectory:native backend-testfile] osx +windows [watchFileAndItsDirectory:native backend-specialchars] osx windows -- cgit v1.2.3 From f49deb790fb26ae613f54689c307e5c6b1d88b82 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Tue, 17 Nov 2015 14:58:23 +0700 Subject: Windows: Open GL - Blacklist all 6th generation intel hd graphics devices the windows driver for Intel HD Graphics 3000 is buggy. the original blacklist was using device ids from: http://www.pcidatabase.com/search.php?device_search_str=graphics however this list seems to be incomplete. to be on the safe side, we should blacklist all 6th generation devices, as taken from: https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units#Sixth_generation Change-Id: I1bb6c39a310d741b7a9eb0fed9767bb316415996 Reviewed-by: Friedemann Kleint Reviewed-by: Laszlo Agocs --- src/plugins/platforms/windows/openglblacklists/default.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/platforms/windows/openglblacklists/default.json b/src/plugins/platforms/windows/openglblacklists/default.json index 5d8bd56a1e..a5d42719a9 100644 --- a/src/plugins/platforms/windows/openglblacklists/default.json +++ b/src/plugins/platforms/windows/openglblacklists/default.json @@ -47,7 +47,7 @@ "id": 4, "description": "Intel HD Graphics 3000 crashes when initializing the OpenGL driver (QTBUG-42240)", "vendor_id": "0x8086", - "device_id": [ "0x0102", "0x0116" ], + "device_id": [ "0x0102", "0x0106", "0x010A", "0x0112", "0x0116", "0x0122", "0x0126" ], "os": { "type": "win" }, -- cgit v1.2.3 From 4e7c0993d555ffa4ed32ffb9c36dab648e4f8bd4 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Tue, 17 Nov 2015 12:48:11 +0100 Subject: tests: blacklist the data row which uses internet in tst_qftp.cpp Task-number: QTBUG-49485 Change-Id: I2e4af34cd148e7aa888bf93cafa012515c5cd504 Reviewed-by: Timur Pocheptsov --- tests/auto/network/access/qftp/BLACKLIST | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/auto/network/access/qftp/BLACKLIST b/tests/auto/network/access/qftp/BLACKLIST index a67c22265c..92ad1aee8f 100644 --- a/tests/auto/network/access/qftp/BLACKLIST +++ b/tests/auto/network/access/qftp/BLACKLIST @@ -9,3 +9,6 @@ osx-10.10 opensuse-13.1 64bit redhatenterpriselinuxworkstation-6.6 osx-10.10 + +[list:epsvNotSupported] +* -- cgit v1.2.3 From 4f1234033ba647dd4d32e87eecb832773d089abc Mon Sep 17 00:00:00 2001 From: Samuel Nevala Date: Mon, 16 Nov 2015 13:21:46 +0200 Subject: wirt: Fix cursor position method. The native position is given in device-independent pixels, so multiply that by the window scale factor. If no cursor is present (e.g. on Windows Phone), the native API returns SHRT_MIN as the coordinate values. Catch that and pass Infinity instead in order to enable the cursorless fall-back behavior in QQuickMenu::popup(). Change-Id: Ibe8ebcdbe257e8df25eea9873e8f4fa647ae1ab2 Task-Id: QTBUG-48265 Reviewed-by: Andrew Knight --- src/plugins/platforms/winrt/qwinrtcursor.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/plugins/platforms/winrt/qwinrtcursor.cpp b/src/plugins/platforms/winrt/qwinrtcursor.cpp index 707f3bf0ba..1a511f103f 100644 --- a/src/plugins/platforms/winrt/qwinrtcursor.cpp +++ b/src/plugins/platforms/winrt/qwinrtcursor.cpp @@ -161,15 +161,19 @@ void QWinRTCursor::changeCursor(QCursor *windowCursor, QWindow *window) QPoint QWinRTCursor::pos() const { - ICoreWindow *coreWindow = - static_cast(QGuiApplication::primaryScreen()->handle())->coreWindow(); - HRESULT hr; + const QWinRTScreen *screen = static_cast(QGuiApplication::primaryScreen()->handle()); + Q_ASSERT(screen); + ICoreWindow *coreWindow = screen->coreWindow(); + Q_ASSERT(coreWindow); Point point; - hr = QEventDispatcherWinRT::runOnXamlThread([coreWindow, &point]() { + HRESULT hr = QEventDispatcherWinRT::runOnXamlThread([coreWindow, &point]() { return coreWindow->get_PointerPosition(&point); }); - RETURN_IF_FAILED("Failed to get native cursor position", QPoint()); - return QPoint(point.X, point.Y); + Q_ASSERT_SUCCEEDED(hr); + const QPoint position = QPoint(point.X, point.Y) * screen->scaleFactor(); + // If no cursor get_PointerPosition returns SHRT_MIN for x and y + return position.x() == SHRT_MIN && position.y() == SHRT_MIN || FAILED(hr) ? QPointF(Q_INFINITY, Q_INFINITY).toPoint() + : position; } QT_END_NAMESPACE -- cgit v1.2.3 From 874aaa6ea02d02a2eedc2b604f9b52daee630460 Mon Sep 17 00:00:00 2001 From: Volker Krause Date: Tue, 17 Nov 2015 16:16:12 +0100 Subject: QTest::mouseEvent expects window-local coordinates. This makes the automatic center click feature of the mouse event methods also work if the target window isn't positioned at 0,0. Change-Id: I0d711e484620900ba2ffc4139f7e13346a7482d3 Reviewed-by: Friedemann Kleint --- src/testlib/qtestmouse.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h index c422a990ef..c5969a1603 100644 --- a/src/testlib/qtestmouse.h +++ b/src/testlib/qtestmouse.h @@ -95,7 +95,7 @@ namespace QTest } if (pos.isNull()) - pos = window->geometry().center(); + pos = QPoint(window->width() / 2, window->height() / 2); QTEST_ASSERT(uint(stateKey) == 0 || stateKey & Qt::KeyboardModifierMask); -- cgit v1.2.3 From 8beec998999b0ad7abf3192069c649b64aa999f5 Mon Sep 17 00:00:00 2001 From: Alexander Volkov Date: Thu, 5 Nov 2015 18:31:32 +0300 Subject: xcb: Handle screen siblings in QXcbVirtualDesktop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2f3c3ad75bb3914667cf6f27dc2d91aac103607b Reviewed-by: Błażej Szczygieł Reviewed-by: Shawn Rutledge --- src/plugins/platforms/xcb/qxcbconnection.cpp | 15 +++++---------- src/plugins/platforms/xcb/qxcbscreen.cpp | 5 +++++ src/plugins/platforms/xcb/qxcbscreen.h | 12 +++++++----- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp index a20d957138..e4eaeef5d8 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection.cpp @@ -263,8 +263,7 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event) // Known screen removed -> delete it m_screens.removeOne(screen); - foreach (QXcbScreen *otherScreen, m_screens) - otherScreen->removeVirtualSibling((QPlatformScreen *) screen); + virtualDesktop->removeScreen(screen); QXcbIntegration::instance()->destroyScreen(screen); @@ -283,9 +282,7 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event) qCDebug(lcQpaScreen) << "output" << screen->name() << "is connected and enabled"; screen->setPrimary(checkOutputIsPrimary(output.window, output.output)); - foreach (QXcbScreen *otherScreen, m_screens) - if (otherScreen->root() == output.window) - otherScreen->addVirtualSibling(screen); + virtualDesktop->addScreen(screen); m_screens << screen; QXcbIntegration::instance()->screenAdded(screen, screen->isPrimary()); @@ -308,8 +305,7 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event) if (outputInfo->crtc == XCB_NONE) { qCDebug(lcQpaScreen) << "output" << screen->name() << "has been disabled"; m_screens.removeOne(screen); - foreach (QXcbScreen *otherScreen, m_screens) - otherScreen->removeVirtualSibling((QPlatformScreen *) screen); + virtualDesktop->removeScreen(screen); QXcbIntegration::instance()->destroyScreen(screen); } else { qCDebug(lcQpaScreen) << "output" << screen->name() << "has been temporarily disabled for the mode switch"; @@ -443,8 +439,7 @@ void QXcbConnection::initializeScreens() } } } - foreach (QPlatformScreen* s, siblings) - ((QXcbScreen*)s)->setVirtualSiblings(siblings); + virtualDesktop->setScreens(siblings); xcb_screen_next(&it); ++xcbScreenNumber; } // for each xcb screen @@ -460,7 +455,7 @@ void QXcbConnection::initializeScreens() QXcbVirtualDesktop *virtualDesktop = m_virtualDesktops.value(0); if (virtualDesktop && !hasOutputs && !virtualDesktop->size().isEmpty() && m_screens.isEmpty()) { QXcbScreen *screen = createScreen(virtualDesktop, 0, Q_NULLPTR); - screen->setVirtualSiblings(QList() << screen); + virtualDesktop->setScreens(QList() << screen); m_screens << screen; primaryScreen = screen; primaryScreen->setPrimary(true); diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp index 0aa5810a72..9b24884e1c 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.cpp +++ b/src/plugins/platforms/xcb/qxcbscreen.cpp @@ -74,6 +74,11 @@ QXcbScreen *QXcbVirtualDesktop::screenAt(const QPoint &pos) const return Q_NULLPTR; } +void QXcbVirtualDesktop::addScreen(QPlatformScreen *s) +{ + ((QXcbScreen *) s)->isPrimary() ? m_screens.prepend(s) : m_screens.append(s); +} + QXcbXSettings *QXcbVirtualDesktop::xSettings() const { if (!m_xSettings) { diff --git a/src/plugins/platforms/xcb/qxcbscreen.h b/src/plugins/platforms/xcb/qxcbscreen.h index 51c92a40ae..7b5d3cb30f 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.h +++ b/src/plugins/platforms/xcb/qxcbscreen.h @@ -68,6 +68,11 @@ public: xcb_window_t root() const { return m_screen->root; } QXcbScreen *screenAt(const QPoint &pos) const; + QList screens() const { return m_screens; } + void setScreens(QList sl) { m_screens = sl; } + void removeScreen(QPlatformScreen *s) { m_screens.removeOne(s); } + void addScreen(QPlatformScreen *s); + QXcbXSettings *xSettings() const; bool compositingActive() const; @@ -78,6 +83,7 @@ public: private: xcb_screen_t *m_screen; int m_number; + QList m_screens; QXcbXSettings *m_xSettings; xcb_atom_t m_net_wm_cm_atom; @@ -110,10 +116,7 @@ public: QPlatformCursor *cursor() const Q_DECL_OVERRIDE; qreal refreshRate() const Q_DECL_OVERRIDE { return m_refreshRate; } Qt::ScreenOrientation orientation() const Q_DECL_OVERRIDE { return m_orientation; } - QList virtualSiblings() const Q_DECL_OVERRIDE { return m_siblings; } - void setVirtualSiblings(QList sl) { m_siblings = sl; } - void removeVirtualSibling(QPlatformScreen *s) { m_siblings.removeOne(s); } - void addVirtualSibling(QPlatformScreen *s) { ((QXcbScreen *) s)->isPrimary() ? m_siblings.prepend(s) : m_siblings.append(s); } + QList virtualSiblings() const Q_DECL_OVERRIDE { return m_virtualDesktop->screens(); } QXcbVirtualDesktop *virtualDesktop() const { return m_virtualDesktop; } void setPrimary(bool primary) { m_primary = primary; } @@ -171,7 +174,6 @@ private: QRect m_availableGeometry; QSize m_virtualSize; QSizeF m_virtualSizeMillimeters; - QList m_siblings; Qt::ScreenOrientation m_orientation; QString m_windowManagerName; bool m_syncRequestSupported; -- cgit v1.2.3 From 2047fe9253775347cced87bca5a6b9adf364c0bb Mon Sep 17 00:00:00 2001 From: Alexander Volkov Date: Wed, 19 Aug 2015 19:13:07 +0300 Subject: xcb: Process _NET_WORKAREA and screen geometry changes separately MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit allows to avoid superfluous calls to the X server. We don't request _NET_WORKAREA values when the screen geometry changes, and we avoid RandR calls on each _NET_WORKAREA change. Besides, update the available geometry of all screens with the same root window, rather than only that one which corresponds to Qt::Desktop window. Change-Id: I5ec624717f5f261c986cd9aaf2425f22985e11c0 Reviewed-by: Błażej Szczygieł Reviewed-by: Uli Schlachter Reviewed-by: Shawn Rutledge --- src/plugins/platforms/xcb/qxcbconnection.cpp | 11 ++++- src/plugins/platforms/xcb/qxcbscreen.cpp | 68 +++++++++++++++++++--------- src/plugins/platforms/xcb/qxcbscreen.h | 8 ++++ src/plugins/platforms/xcb/qxcbwindow.cpp | 2 - 4 files changed, 64 insertions(+), 25 deletions(-) diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp index e4eaeef5d8..901764bbf8 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection.cpp @@ -1121,8 +1121,17 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event) handled = false; break; case XCB_PROPERTY_NOTIFY: - HANDLE_PLATFORM_WINDOW_EVENT(xcb_property_notify_event_t, window, handlePropertyNotifyEvent); + { + xcb_property_notify_event_t *pn = (xcb_property_notify_event_t *)event; + if (pn->atom == atom(QXcbAtom::_NET_WORKAREA)) { + QXcbVirtualDesktop *virtualDesktop = virtualDesktopForRootWindow(pn->window); + if (virtualDesktop) + virtualDesktop->updateWorkArea(); + } else { + HANDLE_PLATFORM_WINDOW_EVENT(xcb_property_notify_event_t, window, handlePropertyNotifyEvent); + } break; + } #if defined(XCB_USE_XINPUT2) case XCB_GE_GENERIC: // Here the windowEventListener is invoked from xi2HandleEvent() diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp index 9b24884e1c..2a53b18890 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.cpp +++ b/src/plugins/platforms/xcb/qxcbscreen.cpp @@ -58,6 +58,8 @@ QXcbVirtualDesktop::QXcbVirtualDesktop(QXcbConnection *connection, xcb_screen_t cmAtomName += QByteArray::number(m_number); m_net_wm_cm_atom = connection->internAtom(cmAtomName.constData()); m_compositingActive = connection->getSelectionOwner(m_net_wm_cm_atom); + + m_workArea = getWorkArea(); } QXcbVirtualDesktop::~QXcbVirtualDesktop() @@ -112,6 +114,40 @@ void QXcbVirtualDesktop::subscribeToXFixesSelectionNotify() } } +QRect QXcbVirtualDesktop::getWorkArea() const +{ + QRect r; + xcb_get_property_reply_t * workArea = + xcb_get_property_reply(xcb_connection(), + xcb_get_property_unchecked(xcb_connection(), false, screen()->root, + atom(QXcbAtom::_NET_WORKAREA), + XCB_ATOM_CARDINAL, 0, 1024), NULL); + if (workArea && workArea->type == XCB_ATOM_CARDINAL && workArea->format == 32 && workArea->value_len >= 4) { + // If workArea->value_len > 4, the remaining ones seem to be for WM's virtual desktops + // (don't mess with QXcbVirtualDesktop which represents an X screen). + // But QScreen doesn't know about that concept. In reality there could be a + // "docked" panel (with _NET_WM_STRUT_PARTIAL atom set) on just one desktop. + // But for now just assume the first 4 values give us the geometry of the + // "work area", AKA "available geometry" + uint32_t *geom = (uint32_t*)xcb_get_property_value(workArea); + r = QRect(geom[0], geom[1], geom[2], geom[3]); + } else { + r = QRect(QPoint(), size()); + } + free(workArea); + return r; +} + +void QXcbVirtualDesktop::updateWorkArea() +{ + QRect workArea = getWorkArea(); + if (m_workArea != workArea) { + m_workArea = workArea; + foreach (QPlatformScreen *screen, m_screens) + ((QXcbScreen *)screen)->updateAvailableGeometry(); + } +} + QXcbScreen::QXcbScreen(QXcbConnection *connection, QXcbVirtualDesktop *virtualDesktop, xcb_randr_output_t outputId, xcb_randr_get_output_info_reply_t *output, QString outputName) @@ -457,7 +493,6 @@ void QXcbScreen::updateGeometry(xcb_timestamp_t timestamp) void QXcbScreen::updateGeometry(const QRect &geom, uint8_t rotation) { QRect xGeometry = geom; - QRect xAvailableGeometry = xGeometry; switch (rotation) { case XCB_RANDR_ROTATION_ROTATE_0: // xrandr --rotate normal m_orientation = Qt::LandscapeOrientation; @@ -486,34 +521,23 @@ void QXcbScreen::updateGeometry(const QRect &geom, uint8_t rotation) Q_MM_PER_INCH * xGeometry.width() / dpi.second); } - xcb_get_property_reply_t * workArea = - xcb_get_property_reply(xcb_connection(), - xcb_get_property_unchecked(xcb_connection(), false, screen()->root, - atom(QXcbAtom::_NET_WORKAREA), - XCB_ATOM_CARDINAL, 0, 1024), NULL); - - if (workArea && workArea->type == XCB_ATOM_CARDINAL && workArea->format == 32 && workArea->value_len >= 4) { - // If workArea->value_len > 4, the remaining ones seem to be for virtual desktops. - // But QScreen doesn't know about that concept. In reality there could be a - // "docked" panel (with _NET_WM_STRUT_PARTIAL atom set) on just one desktop. - // But for now just assume the first 4 values give us the geometry of the - // "work area", AKA "available geometry" - uint32_t *geom = (uint32_t*)xcb_get_property_value(workArea); - QRect virtualAvailableGeometry(geom[0], geom[1], geom[2], geom[3]); - // Take the intersection of the desktop's available geometry with this screen's geometry - // to get the part of the available geometry which belongs to this screen. - xAvailableGeometry = xGeometry & virtualAvailableGeometry; - } - free(workArea); - qreal dpi = xGeometry.width() / physicalSize().width() * qreal(25.4); m_pixelDensity = qRound(dpi/96); m_geometry = QRect(xGeometry.topLeft(), xGeometry.size()); m_nativeGeometry = QRect(xGeometry.topLeft(), xGeometry.size()); - m_availableGeometry = QRect(xAvailableGeometry.topLeft(), xAvailableGeometry.size()); + m_availableGeometry = xGeometry & m_virtualDesktop->workArea(); QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry); } +void QXcbScreen::updateAvailableGeometry() +{ + QRect availableGeometry = m_geometry & m_virtualDesktop->workArea(); + if (m_availableGeometry != availableGeometry) { + m_availableGeometry = availableGeometry; + QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry); + } +} + void QXcbScreen::updateRefreshRate(xcb_randr_mode_t mode) { if (!connection()->hasXRandr()) diff --git a/src/plugins/platforms/xcb/qxcbscreen.h b/src/plugins/platforms/xcb/qxcbscreen.h index 7b5d3cb30f..c68c290791 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.h +++ b/src/plugins/platforms/xcb/qxcbscreen.h @@ -77,10 +77,15 @@ public: bool compositingActive() const; + QRect workArea() const { return m_workArea; } + void updateWorkArea(); + void handleXFixesSelectionNotify(xcb_xfixes_selection_notify_event_t *notify_event); void subscribeToXFixesSelectionNotify(); private: + QRect getWorkArea() const; + xcb_screen_t *m_screen; int m_number; QList m_screens; @@ -88,6 +93,8 @@ private: QXcbXSettings *m_xSettings; xcb_atom_t m_net_wm_cm_atom; bool m_compositingActive; + + QRect m_workArea; }; class Q_XCB_EXPORT QXcbScreen : public QXcbObject, public QPlatformScreen @@ -142,6 +149,7 @@ public: void handleScreenChange(xcb_randr_screen_change_notify_event_t *change_event); void updateGeometry(const QRect &geom, uint8_t rotation); void updateGeometry(xcb_timestamp_t timestamp = XCB_TIME_CURRENT_TIME); + void updateAvailableGeometry(); void updateRefreshRate(xcb_randr_mode_t mode); void readXResources(); diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index b691c7550f..bcc571c3c8 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -2378,8 +2378,6 @@ void QXcbWindow::handlePropertyNotifyEvent(const xcb_property_notify_event_t *ev return; } else if (event->atom == atom(QXcbAtom::_NET_FRAME_EXTENTS)) { m_dirtyFrameMargins = true; - } else if (event->atom == atom(QXcbAtom::_NET_WORKAREA) && xcbScreen() && event->window == xcbScreen()->root()) { - xcbScreen()->updateGeometry(event->time); } } -- cgit v1.2.3 From 8df17d233c62506f7758160d9af711dda4fc760e Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 26 Oct 2015 12:38:50 +0100 Subject: introduce -optimized-tools option instead of building host tools always in debug mode, follow the overall build type, and provide an option to override it. this supersedes the pre-existing -optimized-qmake option. however, that option never existed in the windows configure, and this legacy continues as far as qmake is concerned (msvc builds of qmake are always somewhat optimized, but not mingw builds). Change-Id: I42e7ef1a481840699a8dffff13fec2626af19cc6 Reviewed-by: Lars Knoll Reviewed-by: Simon Hausmann --- configure | 41 +++++++++++++++++++++++++--------------- mkspecs/features/qt_app.prf | 2 +- mkspecs/features/qt_module.prf | 2 +- tools/configure/configureapp.cpp | 16 ++++++++++++++++ 4 files changed, 44 insertions(+), 17 deletions(-) diff --git a/configure b/configure index 8f4aa8206d..1eb893d9cc 100755 --- a/configure +++ b/configure @@ -604,6 +604,7 @@ CFG_MYSQL_CONFIG= CFG_PSQL_CONFIG= CFG_DEBUG_RELEASE=no CFG_FORCEDEBUGINFO=no +CFG_RELEASE_TOOLS=no CFG_SHARED=yes CFG_SM=auto CFG_XSHAPE=auto @@ -642,7 +643,6 @@ CFG_BUILD_PARTS="" CFG_NOBUILD_PARTS="" CFG_SKIP_MODULES="" CFG_COMPILE_EXAMPLES=yes -CFG_RELEASE_QMAKE=no CFG_AUDIO_BACKEND=auto CFG_QML_DEBUG=yes CFG_PKGCONFIG=auto @@ -1433,13 +1433,6 @@ while [ "$#" -gt 0 ]; do UNKNOWN_OPT=yes fi ;; - optimized-qmake) - if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then - CFG_RELEASE_QMAKE="$VAL" - else - UNKNOWN_OPT=yes - fi - ;; release) if [ "$VAL" = "yes" ]; then CFG_DEBUG=no @@ -1455,6 +1448,13 @@ while [ "$#" -gt 0 ]; do force-debug-info) CFG_FORCEDEBUGINFO="$VAL" ;; + optimized-qmake|optimized-tools) + if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then + CFG_RELEASE_TOOLS="$VAL" + else + UNKNOWN_OPT=yes + fi + ;; developer-build) CFG_DEV="yes" ;; @@ -2433,6 +2433,9 @@ Configure options: -developer-build ... Compile and link Qt with Qt developer options (including auto-tests exporting) + * -no-optimized-tools ... Do not build optimized host tools even in debug build. + -optimized-tools ...... Build optimized host tools even in debug build. + -opensource ........ Compile and link the Open-Source Edition of Qt. -commercial ........ Compile and link the Commercial Edition of Qt. @@ -2618,9 +2621,6 @@ Additional options: -silent ............ Reduce the build output so that warnings and errors can be seen more easily. - * -no-optimized-qmake ... Do not build qmake optimized. - -optimized-qmake ...... Build qmake optimized. - -no-nis ............ Do not compile NIS support. * -nis ............... Compile NIS support. @@ -3387,6 +3387,10 @@ if [ "$CFG_FORCEDEBUGINFO" = "yes" ]; then QMAKE_CONFIG="$QMAKE_CONFIG force_debug_info" fi +if [ "$CFG_RELEASE_TOOLS" = "yes" ]; then + QT_CONFIG="$QT_CONFIG release_tools" +fi + if [ "$XPLATFORM_MAC" = "yes" ]; then [ "$CFG_PKGCONFIG" = "auto" ] && CFG_PKGCONFIG="no" fi @@ -4017,7 +4021,7 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ]; setBootstrapVariable QMAKE_LFLAGS setBootstrapVariable QMAKE_LFLAGS_GCSECTIONS - if [ "$CFG_RELEASE_QMAKE" = "yes" ]; then + if [ "$CFG_RELEASE_TOOLS" = "yes" ]; then setBootstrapVariable QMAKE_CFLAGS_RELEASE setBootstrapVariable QMAKE_CXXFLAGS_RELEASE EXTRA_CFLAGS="$EXTRA_CFLAGS \$(QMAKE_CFLAGS_RELEASE)" @@ -7237,10 +7241,12 @@ release="release" [ "$CFG_FORCEDEBUGINFO" = "yes" ] && release="release (with debug info)" [ "$CFG_DEBUG" = "yes" ] && build_mode="debug" || build_mode=$release if [ "$CFG_DEBUG_RELEASE" = "yes" ]; then - echo " Mode ................... debug and $release; default link: $build_mode" -else - echo " Mode ................... $build_mode" + build_mode="debug and $release; default link: $build_mode" fi +if [ "$CFG_RELEASE_TOOLS" = "yes" ]; then + build_mode="$build_mode; optimized tools" +fi +echo " Mode ................... $build_mode" unset build_mode release echo " Using sanitizer(s)...... $CFG_SANITIZERS" echo " Using C++ standard ..... $CFG_STDCXX" @@ -7406,6 +7412,11 @@ if [ "$CFG_QREAL" = double ] && [ "$CFG_ARCH" = arm ]; then echo "NOTE: Qt is using double for qreal on this system. This is binary incompatible against Qt 5.1." echo "Configure with '-qreal float' to create a build that is binary compatible with 5.1." fi +if [ "$CFG_RELEASE_TOOLS" = "yes" -a \( "$CFG_DEBUG" = "no" -o "$CFG_DEBUG_RELEASE" = "yes" \) ]; then + echo + echo "NOTE: -optimized-tools is not useful in -release mode." + echo +fi exec 1>&3 3>&- # restore stdout cat $outpath/config.summary # display config feedback to user diff --git a/mkspecs/features/qt_app.prf b/mkspecs/features/qt_app.prf index b446ed1cd1..823a4c9490 100644 --- a/mkspecs/features/qt_app.prf +++ b/mkspecs/features/qt_app.prf @@ -21,7 +21,7 @@ QMAKE_LFLAGS += $$QMAKE_LFLAGS_GCSECTIONS host_build: QT -= gui # no host tool will ever use gui host_build:force_bootstrap { - !build_pass: CONFIG += release + !build_pass:contains(QT_CONFIG, release_tools): CONFIG += release contains(QT, core(-private)?|xml) { QT -= core core-private xml QT += bootstrap-private diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index 193629b532..906657580e 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -32,7 +32,7 @@ host_build { QMAKE_CFLAGS += $$QMAKE_CFLAGS_SPLIT_SECTIONS QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_SPLIT_SECTIONS force_bootstrap { - !build_pass: CONFIG += release + !build_pass:contains(QT_CONFIG, release_tools): CONFIG += release contains(QT, core(-private)?|xml) { QT -= core core-private xml QT += bootstrap-private diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 5ddb3cb489..3767640536 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -230,6 +230,7 @@ Configure::Configure(int& argc, char** argv) : verbose(0) dictionary[ "BUILD" ] = "debug"; dictionary[ "BUILDALL" ] = "auto"; // Means yes, but not explicitly dictionary[ "FORCEDEBUGINFO" ] = "no"; + dictionary[ "OPTIMIZED_TOOLS" ] = "no"; dictionary[ "BUILDTYPE" ] = "none"; @@ -460,6 +461,10 @@ void Configure::parseCmdLine() dictionary[ "SEPARATE_DEBUG_INFO" ] = "no"; else if (configCmdLine.at(i) == "-separate-debug-info") dictionary[ "SEPARATE_DEBUG_INFO" ] = "yes"; + else if (configCmdLine.at(i) == "-optimized-tools") + dictionary[ "RELEASE_TOOLS" ] = "yes"; + else if (configCmdLine.at(i) == "-no-optimized-tools") + dictionary[ "RELEASE_TOOLS" ] = "no"; else if (configCmdLine.at(i) == "-compile-examples") { dictionary[ "COMPILE_EXAMPLES" ] = "yes"; @@ -1814,6 +1819,9 @@ bool Configure::displayHelp() desc("BUILDDEV", "yes", "-developer-build", "Compile and link Qt with Qt developer options (including auto-tests exporting)\n"); + desc("RELEASE_TOOLS", "yes", "-optimized-tools", "Do not build optimized host tools even in debug build."); + desc("RELEASE_TOOLS", "no", "-no-optimized-tools", "Build optimized host tools even in debug build.\n"); + desc("OPENSOURCE", "opensource", "-opensource", "Compile and link the Open-Source Edition of Qt."); desc("COMMERCIAL", "commercial", "-commercial", "Compile and link the Commercial Edition of Qt.\n"); @@ -2738,6 +2746,8 @@ void Configure::generateOutputVars() qtConfig += "debug_and_release build_all debug"; qtConfig += "release"; } + if (dictionary[ "RELEASE_TOOLS" ] == "yes") + qtConfig += "release_tools"; if (dictionary[ "C++STD" ] == "c++11") qtConfig += "c++11"; @@ -3837,6 +3847,8 @@ void Configure::displayConfig() } if (dictionary[ "BUILD" ] == "release" || dictionary[ "BUILDALL" ] == "yes") sout << "Force debug info............" << dictionary[ "FORCEDEBUGINFO" ] << endl; + if (dictionary[ "BUILD" ] == "debug") + sout << "Force optimized tools......." << dictionary[ "RELEASE_TOOLS" ] << endl; sout << "C++ language standard......." << dictionary[ "C++STD" ] << endl; sout << "Link Time Code Generation..." << dictionary[ "LTCG" ] << endl; sout << "Accessibility support......." << dictionary[ "ACCESSIBILITY" ] << endl; @@ -4010,6 +4022,10 @@ void Configure::displayConfig() << "Qt 5.6 build, but you should update your build scripts to remove the" << endl << "option and, if necessary, upgrade your compiler." << endl; } + if (dictionary["RELEASE_TOOLS"] == "yes" && dictionary["BUILD"] != "debug" ) { + sout << endl + << "NOTE: -optimized-tools is not useful in -release mode." << endl; + } if (!dictionary["PREFIX_COMPLAINTS"].isEmpty()) { sout << endl << dictionary["PREFIX_COMPLAINTS"] << endl -- cgit v1.2.3 From 0dcf35cdd9154ecde96812481d27dccb6cdf267e Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 10 Nov 2015 17:24:53 +0100 Subject: don't create version script for header-only modules there is nothing to link with it anyway. Change-Id: I2e942d24bb39855b3682f3e8d85cb6abca75cb61 Reviewed-by: Joerg Bornemann Reviewed-by: Thiago Macieira --- mkspecs/features/qt_module.prf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index 906657580e..12f146fe11 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -189,7 +189,7 @@ equals(QT_ARCH, i386):contains(QT_CPU_FEATURES.$$QT_ARCH, sse2):compiler_support android: CONFIG += qt_android_deps no_linker_version_script -unix:!isEmpty(QMAKE_LFLAGS_VERSION_SCRIPT):!no_linker_version_script:!static { +!header_module:unix:!isEmpty(QMAKE_LFLAGS_VERSION_SCRIPT):!no_linker_version_script:!static { verscript = $$OUT_PWD/$${TARGET}.version QMAKE_LFLAGS += $${QMAKE_LFLAGS_VERSION_SCRIPT}$$verscript -- cgit v1.2.3 From 3d3b4129cd197e9cb77cd59460749a38e91b087f Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 12 Nov 2015 09:48:03 +0100 Subject: unbreak relative rpaths on darwin check the right variable. amends 8e846b33. Task-number: QTBUG-49369 Change-Id: I9108d13b5e9c93aadaa802a62ba64816d81448d5 Reviewed-by: Eike Ziller Reviewed-by: Joerg Bornemann Reviewed-by: Frederik Gladhorn --- mkspecs/features/qt.prf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf index d0d6bb27ce..ed1e3fb43c 100644 --- a/mkspecs/features/qt.prf +++ b/mkspecs/features/qt.prf @@ -155,7 +155,7 @@ qt_module_deps = $$resolve_depends(qt_module_deps, "QT.") !no_qt_rpath:!static:contains(QT_CONFIG, rpath):!contains(QT_CONFIG, static):\ contains(qt_module_deps, core) { - relative_qt_rpath:!isEmpty(QMAKE_LFLAGS_REL_RPATH):contains(INSTALLS, target):\ + relative_qt_rpath:!isEmpty(QMAKE_REL_RPATH_BASE):contains(INSTALLS, target):\ isEmpty(target.files):isEmpty(target.commands):isEmpty(target.extra) { mac { if(equals(TEMPLATE, app):app_bundle)|\ -- cgit v1.2.3 From ded63fbb94088c3b0fbbf9d3b3a421b2b934ab50 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 10 Nov 2015 18:40:04 +0100 Subject: make a proper header-only module for QtZlib that way other modules can use the headers without hacks. this required making the base directory for paths in headers.pri configurable in syncqt. Change-Id: Id35cfe05bcf4c576d3f2d0d8d09590a5e23d21d3 Reviewed-by: Andy Nichols --- bin/syncqt.pl | 1 + mkspecs/features/qt_module_headers.prf | 5 +++-- src/corelib/qtzlib.pro | 7 +++++++ src/corelib/tools/tools.pri | 4 ---- src/src.pro | 4 ++++ src/tools/bootstrap/bootstrap.pro | 5 +---- sync.profile | 2 +- 7 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 src/corelib/qtzlib.pro diff --git a/bin/syncqt.pl b/bin/syncqt.pl index ff539f5fe0..83e8350f81 100755 --- a/bin/syncqt.pl +++ b/bin/syncqt.pl @@ -812,6 +812,7 @@ foreach my $lib (@modules_to_sync) { my $is_qt = !($module =~ s/^!//); my @dirs = split(/;/, $module); my $dir = $dirs[0]; + shift @dirs if ($dir =~ s/^>//); my $pathtoheaders = ""; $pathtoheaders = $moduleheaders{$lib} if ($moduleheaders{$lib}); diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf index 3f2383c120..78a1e38bb0 100644 --- a/mkspecs/features/qt_module_headers.prf +++ b/mkspecs/features/qt_module_headers.prf @@ -38,6 +38,9 @@ git_build: \ else: \ INC_PATH = $$MODULE_BASE_INDIR include($$INC_PATH/include/$$MODULE_INCNAME/headers.pri, "", true) +CONFIG += qt_install_headers + +alien_syncqt: return() for (injection, SYNCQT.INJECTIONS) { injects = $$split(injection, :) @@ -82,8 +85,6 @@ SYNCQT.HEADER_FILES += $$MODULE_MASTER_DEPS_HEADER isEmpty(PRECOMPILED_HEADER): PRECOMPILED_HEADER = $$MODULE_MASTER_DEPS_HEADER } -CONFIG += qt_install_headers - headersclean:!internal_module { # Make sure that the header compiles with our strict options hcleanDEFS = -DQT_NO_CAST_TO_ASCII=1 \ diff --git a/src/corelib/qtzlib.pro b/src/corelib/qtzlib.pro new file mode 100644 index 0000000000..744750fbbe --- /dev/null +++ b/src/corelib/qtzlib.pro @@ -0,0 +1,7 @@ +TARGET = QtZlib +MODULE = zlib +MAKEFILE = Makefile.qtzlib +CONFIG += internal_module header_module alien_syncqt +QT = + +load(qt_module) diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri index c43fd761d8..ed07f70e87 100644 --- a/src/corelib/tools/tools.pri +++ b/src/corelib/tools/tools.pri @@ -155,10 +155,6 @@ else:SOURCES += tools/qelapsedtimer_generic.cpp contains(QT_CONFIG, zlib) { include($$PWD/../../3rdparty/zlib.pri) - corelib_zlib_headers.files = $$PWD/../../3rdparty/zlib/zconf.h\ - $$PWD/../../3rdparty/zlib/zlib.h - corelib_zlib_headers.path = $$[QT_INSTALL_HEADERS]/QtZlib - INSTALLS += corelib_zlib_headers } else { include($$PWD/../../3rdparty/zlib_dependency.pri) } diff --git a/src/src.pro b/src/src.pro index a970391382..df5c85fa53 100644 --- a/src/src.pro +++ b/src/src.pro @@ -2,6 +2,9 @@ TEMPLATE = subdirs load(qfeatures) +src_qtzlib.file = $$PWD/corelib/qtzlib.pro +src_qtzlib.target = sub-zlib + src_tools_bootstrap.subdir = tools/bootstrap src_tools_bootstrap.target = sub-bootstrap src_tools_bootstrap.CONFIG = host_build @@ -125,6 +128,7 @@ src_plugins.depends = src_sql src_xml src_network src_android.subdir = $$PWD/android # this order is important +contains(QT_CONFIG, zlib)|cross_compile: SUBDIRS += src_qtzlib SUBDIRS += src_tools_bootstrap src_tools_moc src_tools_rcc !contains(QT_DISABLED_FEATURES, regularexpression):pcre { SUBDIRS += src_3rdparty_pcre diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index b6b16dcd3d..ca05f804a2 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -39,10 +39,7 @@ MODULE_PRIVATE_INCLUDES = \ # We need the forwarding headers before their respective modules are built, # so do a minimal syncqt run. CONFIG += minimal_syncqt -QMAKE_SYNCQT_OPTIONS = -module QtCore -module QtDBus -module QtXml -contains(QT_CONFIG, zlib): \ - QMAKE_SYNCQT_OPTIONS += -module QtZlib -QMAKE_SYNCQT_OPTIONS += -version $$QT_VERSION +QMAKE_SYNCQT_OPTIONS = -module QtCore -module QtDBus -module QtXml -version $$QT_VERSION load(qt_module) diff --git a/sync.profile b/sync.profile index 1700d94fff..bba0ff2b2f 100644 --- a/sync.profile +++ b/sync.profile @@ -16,7 +16,7 @@ "QtANGLE/GLES2" => "!$basedir/src/3rdparty/angle/include/GLES2", "QtANGLE/GLES3" => "!$basedir/src/3rdparty/angle/include/GLES3", "QtANGLE/EGL" => "!$basedir/src/3rdparty/angle/include/EGL", - "QtZlib" => "!$basedir/src/3rdparty/zlib", + "QtZlib" => "!>$basedir/src/corelib;$basedir/src/3rdparty/zlib", "QtOpenGLExtensions" => "$basedir/src/openglextensions", ); %moduleheaders = ( # restrict the module headers to those found in relative path -- cgit v1.2.3 From 5c2c890b014f295696fe1a09c0eb40e2a4a95bde Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 10 Nov 2015 20:39:25 +0100 Subject: (re-)move qt build specific dependency checks from generic paths the check whether a module depends on itself should be done by the code which *builds* modules, not which *uses* them. the check whether a plugin tries to use itself seems kinda pointless in the first place, so just remove it. Change-Id: I89b357dae7d7979d131b6824f197e7088047272f Reviewed-by: Andy Nichols --- mkspecs/features/qt.prf | 11 +---------- mkspecs/features/qt_module.prf | 2 ++ 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf index ed1e3fb43c..dfff6cc091 100644 --- a/mkspecs/features/qt.prf +++ b/mkspecs/features/qt.prf @@ -76,11 +76,6 @@ for(ever) { next() } - target_qt:isEqual(TARGET, $$MODULE_NAME) { - warning("$$TARGET cannot have a QT$$var_sfx of $$QTLIB") - next() - } - contains(MODULE_CONFIG, internal_module): \ using_privates = true contains(MODULE_CONFIG, ltcg): \ @@ -349,11 +344,7 @@ for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) { QT_PLUGINPATH = $$eval(QT_PLUGIN.$${QTPLUG}.TYPE) # Generate the plugin linker line - target_qt:isEqual(TARGET, QTPLUG) { - warning($$TARGET cannot have a QTPLUGIN of $$QTPLUG) - } else { - QT_LINKAGE = -l$${QTPLUG}$$qtPlatformTargetSuffix() - } + QT_LINKAGE = -l$${QTPLUG}$$qtPlatformTargetSuffix() # Only link against plugin in static builds isEqual(QT_CURRENT_VERIFY, QTPLUGIN): { diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index 12f146fe11..46b526d6ac 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -53,6 +53,8 @@ internal_module: \ else: \ MODULE_DEPENDS = $$replace(QT, -private$, ) MODULE_DEPENDS = $$unique(MODULE_DEPENDS) +contains(MODULE_DEPENDS, $$MODULE): \ + error("$$TARGET depends on itself.") contains(TARGET, QtAddOn.*): \ MODULE_DEFINE = QT_ADDON_$${ucmodule}_LIB -- cgit v1.2.3 From 004aeff8ee6d71e1d0a49bbea29cef0c148cfa24 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 12 Nov 2015 16:08:28 +0100 Subject: don't create distclean targets in minimal syncqt mode the projects which use full mode with the named modules have them. Change-Id: I3b9383d1cc2b43411c25690a5e35e7e84a55aa23 Reviewed-by: Joerg Bornemann Reviewed-by: Andy Nichols --- mkspecs/features/qt_module_headers.prf | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf index 78a1e38bb0..892a9a2c4b 100644 --- a/mkspecs/features/qt_module_headers.prf +++ b/mkspecs/features/qt_module_headers.prf @@ -25,9 +25,12 @@ load(qt_build_paths) !silent: message($$QMAKE_SYNCQT) system($$QMAKE_SYNCQT)|error("Failed to run: $$QMAKE_SYNCQT") - include-distclean.commands = $$QMAKE_DEL_TREE $$shell_quote($$shell_path($$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME)) - QMAKE_EXTRA_TARGETS += include-distclean - DISTCLEAN_DEPS += include-distclean + !minimal_syncqt { + include-distclean.commands = \ + $$QMAKE_DEL_TREE $$shell_quote($$shell_path($$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME)) + QMAKE_EXTRA_TARGETS += include-distclean + DISTCLEAN_DEPS += include-distclean + } } minimal_syncqt: return() -- cgit v1.2.3 From 6c5d227da1709eb81968823f38a133747c0e95b0 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 12 Nov 2015 16:11:37 +0100 Subject: don't create .pc files for frameworks and internal modules frameworks are currently broken anyway, and we don't create .pc files for the private part of public modules, so creating them for entirely private modules is just inconsistent. Change-Id: I98da8def73d72ac69b9b246687dce6b1fd150f61 Reviewed-by: Joerg Bornemann Reviewed-by: Andy Nichols --- mkspecs/features/qt_module.prf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index 46b526d6ac..391c923327 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -236,7 +236,7 @@ load(qt_installs) load(qt_targets) # this builds on top of qt_common -unix|mingw { +!internal_module:!qt_framework:if(unix|mingw) { CONFIG += create_pc QMAKE_PKGCONFIG_DESTDIR = pkgconfig host_build: \ -- cgit v1.2.3 From b72d1db446231311a7ee855ed3e0fbb64a62ea06 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 11 Nov 2015 17:59:18 +0100 Subject: centralize determination whether a module is built as a framework Change-Id: Ie5f8ab6bb789536707050f0fd83b953650028cf2 Reviewed-by: Andy Nichols --- mkspecs/features/qt_module.prf | 7 +++++-- mkspecs/features/qt_module_pris.prf | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index 391c923327..663bddffb0 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -42,6 +42,9 @@ host_build { } } +mac:CONFIG(shared, static|shared):contains(QT_CONFIG, qt_framework): \ + CONFIG += qt_framework + CONFIG += relative_qt_rpath # Qt libraries should be relocatable ucmodule = $$upper($$MODULE) @@ -103,11 +106,11 @@ else: \ DEFINES += QT_BUILD_$${ucmodule}_LIB # OS X and iOS frameworks -mac:CONFIG(shared, static|shared):contains(QT_CONFIG, qt_framework) { +qt_framework { # Set the CFBundleIdentifier prefix for Qt frameworks QMAKE_TARGET_BUNDLE_PREFIX = org.qt-project #QMAKE_FRAMEWORK_VERSION = 4.0 - CONFIG += sliced_bundle qt_framework + CONFIG += sliced_bundle header_module { CONFIG += bundle QMAKE_BUNDLE_EXTENSION = .framework diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf index cc6d48ac21..8c05b90cd6 100644 --- a/mkspecs/features/qt_module_pris.prf +++ b/mkspecs/features/qt_module_pris.prf @@ -55,7 +55,7 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri module_rundep = static: \ module_build_type = staticlib - else:mac:contains(QT_CONFIG, qt_framework): \ + else: qt_framework: \ module_build_type = lib_bundle else: \ module_build_type = -- cgit v1.2.3 From f29b6943f0a3b535309a383c41711de05f22eb54 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 2 Nov 2015 16:06:49 -0500 Subject: QString: Fix in-place toUpper/Lower when there's size expansion When that happens, we need to detach (in-place conversion won't work), so we recurse back into the same function, but the template version that does detaching. Task-number: QTBUG-49181 Change-Id: Idba8c29717f34c70a58fffff1412fea3acc95f98 Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/corelib/tools/qstring.cpp | 41 +++++++++++++++++++++--- src/corelib/tools/qstringiterator_p.h | 7 ++++ tests/auto/corelib/tools/qstring/tst_qstring.cpp | 16 +++++++++ 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 6b15900031..d1b5327f5c 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -5666,10 +5666,36 @@ QString QString::rightJustified(int width, QChar fill, bool truncate) const */ namespace QUnicodeTables { +/*! + \internal + Converts the \a str string starting from the position pointed to by the \a + it iterator, using the Unicode case traits \c Traits, and returns the + result. The input string must not be empty (the convertCase function below + guarantees that). + + The string type \c{T} is also a template and is either \c{const QString} or + \c{QString}. This function can do both copy-conversion and in-place + conversion depending on the state of the \a str parameter: + \list + \li \c{T} is \c{const QString}: copy-convert + \li \c{T} is \c{QString} and its refcount != 1: copy-convert + \li \c{T} is \c{QString} and its refcount == 1: in-place convert + \endlist + + In copy-convert mode, the local variable \c{s} is detached from the input + \a str. In the in-place convert mode, \a str is in moved-from state (which + this function requires to be a valid, empty string) and \c{s} contains the + only copy of the string, without reallocation (thus, \a it is still valid). + + There's one pathological case left: when the in-place conversion needs to + reallocate memory to grow the buffer. In that case, we need to adjust the \a + it pointer. + */ template Q_NEVER_INLINE static QString detachAndConvertCase(T &str, QStringIterator it) { + Q_ASSERT(!str.isEmpty()); QString s = qMove(str); // will copy if T is const QString QChar *pp = s.begin() + it.index(); // will detach if necessary uint uc = it.nextUnchecked(); @@ -5678,12 +5704,19 @@ static QString detachAndConvertCase(T &str, QStringIterator it) signed short caseDiff = Traits::caseDiff(prop); if (Q_UNLIKELY(Traits::caseSpecial(prop))) { - // slow path + // slow path: the string is growing const ushort *specialCase = specialCaseMap + caseDiff; ushort length = *specialCase++; - int pos = pp - s.constBegin(); - s.replace(pos, 1, reinterpret_cast(specialCase), length); - pp = const_cast(s.constBegin()) + pos + length; + int inpos = it.index() - 1; + int outpos = pp - s.constBegin(); + + s.replace(outpos, 1, reinterpret_cast(specialCase), length); + pp = const_cast(s.constBegin()) + outpos + length; + + // do we need to adjust the input iterator too? + // if it is pointing to s's data, str is empty + if (str.isEmpty()) + it = QStringIterator(s.constBegin(), inpos + length, s.constEnd()); } else if (QChar::requiresSurrogates(uc)) { *pp++ = QChar::highSurrogate(uc + caseDiff); *pp++ = QChar::lowSurrogate(uc + caseDiff); diff --git a/src/corelib/tools/qstringiterator_p.h b/src/corelib/tools/qstringiterator_p.h index 06b05de833..1c098a314d 100644 --- a/src/corelib/tools/qstringiterator_p.h +++ b/src/corelib/tools/qstringiterator_p.h @@ -69,6 +69,13 @@ public: { } + inline explicit QStringIterator(const QChar *begin, int idx, const QChar *end) + : i(begin), + pos(begin + idx), + e(end) + { + } + inline QString::const_iterator position() const { return pos; diff --git a/tests/auto/corelib/tools/qstring/tst_qstring.cpp b/tests/auto/corelib/tools/qstring/tst_qstring.cpp index d18aa9f5f3..cc9f250be9 100644 --- a/tests/auto/corelib/tools/qstring/tst_qstring.cpp +++ b/tests/auto/corelib/tools/qstring/tst_qstring.cpp @@ -2144,6 +2144,22 @@ void tst_QString::toUpper() QCOMPARE( QString("`abyz{").toUpper(), QString("`ABYZ{")); QCOMPARE( QString(1, QChar(0xdf)).toUpper(), QString("SS")); + { + QString s = QString::fromUtf8("Gro\xc3\x9fstra\xc3\x9f""e"); + + // call lvalue-ref version, mustn't change the original + QCOMPARE(s.toUpper(), QString("GROSSSTRASSE")); + QCOMPARE(s, QString::fromUtf8("Gro\xc3\x9fstra\xc3\x9f""e")); + + // call rvalue-ref while shared (the original mustn't change) + QString copy = s; + QCOMPARE(qMove(copy).toUpper(), QString("GROSSSTRASSE")); + QCOMPARE(s, QString::fromUtf8("Gro\xc3\x9fstra\xc3\x9f""e")); + + // call rvalue-ref version on detached case + copy.clear(); + QCOMPARE(qMove(s).toUpper(), QString("GROSSSTRASSE")); + } QString lower, upper; lower += QChar(QChar::highSurrogate(0x10428)); -- cgit v1.2.3 From 1378e7af1de3c0133e277ec3832ccd72e7286e67 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 16 Nov 2015 14:06:42 -0800 Subject: qdrawhelper.cpp: Fix constexpr build with MSVC 2015 Update 1 error C2397: conversion from 'uint' to 'uchar' requires a narrowing conversion Change-Id: Ic1b9e0a78b2faa5a0ae4e6de33ab2ee4b654af5f Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/gui/painting/qdrawhelper.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 5c1cd8adef..52843fa113 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -379,9 +379,9 @@ static const uint *QT_FASTCALL convertARGBPMFromARGB32PM(uint *buffer, const uin template Q_DECL_CONSTEXPR static inline QPixelLayout pixelLayoutRGB() { return QPixelLayout{ - redWidth(), redShift(), - greenWidth(), greenShift(), - blueWidth(), blueShift(), + uchar(redWidth()), uchar(redShift()), + uchar(greenWidth()), uchar(greenShift()), + uchar(blueWidth()), uchar(blueShift()), 0, 0, false, bitsPerPixel(), convertToRGB32, @@ -394,10 +394,10 @@ template Q_DECL_CONSTEXPR static inline QPixelLayout pixe template Q_DECL_CONSTEXPR static inline QPixelLayout pixelLayoutARGBPM() { return QPixelLayout{ - redWidth(), redShift(), - greenWidth(), greenShift(), - blueWidth(), blueShift(), - alphaWidth(), alphaShift(), + uchar(redWidth()), uchar(redShift()), + uchar(greenWidth()), uchar(greenShift()), + uchar(blueWidth()), uchar(blueShift()), + uchar(alphaWidth()), uchar(alphaShift()), true, bitsPerPixel(), convertARGBPMToARGB32PM, convertARGBPMFromARGB32PM, -- cgit v1.2.3 From e8d9bb906b777678c56ee80a4b51ef84ebbdc96d Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 12 Nov 2015 17:28:18 -0800 Subject: tst_compiler: Silence MSVC 2015 warning about unused variable tst_compiler.cpp(639): warning C4101: 'c': unreferenced local variable Change-Id: If0101953ceb66bc8e8f5ab969d54f4e1c25dd414 Reviewed-by: Friedemann Kleint --- tests/auto/other/compiler/tst_compiler.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/other/compiler/tst_compiler.cpp b/tests/auto/other/compiler/tst_compiler.cpp index 5ef247483d..2c95002cb2 100644 --- a/tests/auto/other/compiler/tst_compiler.cpp +++ b/tests/auto/other/compiler/tst_compiler.cpp @@ -637,6 +637,7 @@ void tst_Compiler::cxx11_alignas() QSKIP("Compiler does not support C++11 feature"); #else alignas(double) char c; + Q_UNUSED(c); QCOMPARE(Q_ALIGNOF(c), Q_ALIGNOF(double)); #endif } -- cgit v1.2.3 From 7ad560b2bcae2d85aead0693219dd49233f8c9e4 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sat, 17 Oct 2015 14:18:19 -0700 Subject: Fix build with OS X 10.8 SDK The ffsll function is missing with that SDK, but Clang and GCC support it as the builtin. Change-Id: I9f4d900898814b569c1affff140e15fb59fb45d8 Reviewed-by: Samuel Gaist Reviewed-by: Jake Petroules --- src/corelib/tools/qsimd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp index ad02d2c147..3e4fdfaaf1 100644 --- a/src/corelib/tools/qsimd.cpp +++ b/src/corelib/tools/qsimd.cpp @@ -636,7 +636,7 @@ int ffsll(quint64 i) #endif } #endif -#elif defined(Q_OS_ANDROID) || defined(Q_OS_QNX) +#elif defined(Q_OS_ANDROID) || defined(Q_OS_QNX) || defined(Q_OS_OSX) # define ffsll __builtin_ffsll #endif -- cgit v1.2.3 From 3dd6ac244fce7ed5f09910b427eaf0eac338be4b Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 16 Nov 2015 13:44:12 -0800 Subject: Add support for the C++11 features fixed in MSVC 2015 Update 1 This brings MSVC 2015 support to almost C++11 feature completion. Constexpr support still has one annoying bug, for which the fix is promised for Update 2. Change-Id: I92c2ee6638625c61e3a16690563434e32d853368 Reviewed-by: Friedemann Kleint Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/corelib/global/qcompilerdetection.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h index 2ff75d7561..ba830977ad 100644 --- a/src/corelib/global/qcompilerdetection.h +++ b/src/corelib/global/qcompilerdetection.h @@ -914,6 +914,13 @@ //# define Q_COMPILER_UNIFORM_INIT # define Q_COMPILER_UNRESTRICTED_UNIONS # endif +# if _MSC_FULL_VER >= 190023419 +# define Q_COMPILER_ATTRIBUTES +// Almost working, see https://connect.microsoft.com/VisualStudio/feedback/details/2011648 +//# define Q_COMPILER_CONSTEXPR +# define Q_COMPILER_THREADSAFE_STATICS +# define Q_COMPILER_UNIFORM_INIT +# endif # endif /* __cplusplus */ #endif /* Q_CC_MSVC */ -- cgit v1.2.3 From aecf3006bddb959795d03dd72d9c520e49713913 Mon Sep 17 00:00:00 2001 From: Samuel Nevala Date: Tue, 17 Nov 2015 09:32:20 +0200 Subject: winrt: Fix startup orientation handling Calling QWinRTScreen::onOrientationChanged in the class constructor can lead to situation where QWinRTScreen is expected to be fully constructed. Moving the onOrientationChanged call to QWinRTScreen::initialize ensures that QWinRTScreen is fully constructed when it is called. Task-Id: QTBUG-49470 Change-Id: I52748f33a9011dec3a172c1a74023cad15aae38a Reviewed-by: Andrew Knight --- src/plugins/platforms/winrt/qwinrtscreen.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/plugins/platforms/winrt/qwinrtscreen.cpp b/src/plugins/platforms/winrt/qwinrtscreen.cpp index 5bb29d3805..158917184c 100644 --- a/src/plugins/platforms/winrt/qwinrtscreen.cpp +++ b/src/plugins/platforms/winrt/qwinrtscreen.cpp @@ -507,11 +507,7 @@ QWinRTScreen::QWinRTScreen() hr = d->displayInformation->get_NativeOrientation(&displayOrientation); Q_ASSERT_SUCCEEDED(hr); d->nativeOrientation = static_cast(static_cast(qtOrientationsFromNative(displayOrientation))); - - // Set initial orientation & pixel density - onDpiChanged(Q_NULLPTR, Q_NULLPTR); d->orientation = d->nativeOrientation; - onOrientationChanged(Q_NULLPTR, Q_NULLPTR); ComPtr applicationViewStatics; hr = RoGetActivationFactory(HString::MakeReference(RuntimeClass_Windows_UI_ViewManagement_ApplicationView).Get(), @@ -757,6 +753,8 @@ void QWinRTScreen::initialize() Q_ASSERT_SUCCEEDED(hr); hr = d->displayInformation->add_DpiChanged(Callback(this, &QWinRTScreen::onDpiChanged).Get(), &d->displayTokens[&IDisplayInformation::remove_DpiChanged]); Q_ASSERT_SUCCEEDED(hr); + onDpiChanged(Q_NULLPTR, Q_NULLPTR); + onOrientationChanged(Q_NULLPTR, Q_NULLPTR); onVisibilityChanged(nullptr, nullptr); } -- cgit v1.2.3 From 08f9a1bd6ab9b1777ee5ba163d75e5c848c39eb4 Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Tue, 10 Nov 2015 08:28:12 +0100 Subject: winrt: Fixed listening to tcp socket For some reason add_ConnectionReceived has to be called on the Xaml thread now. Otherwise the callback function won't be called and thus listening on a TCP socket won't work at all. Task-number: QTBUG-49121 Change-Id: I11ce2f72b0c1d3bb20e9579de5a2ce5150ca966a Reviewed-by: Andrew Knight Reviewed-by: Samuel Nevala Reviewed-by: Maurice Kalinowski --- src/network/socket/qnativesocketengine_winrt.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp index cfb950592f..e9fa227733 100644 --- a/src/network/socket/qnativesocketengine_winrt.cpp +++ b/src/network/socket/qnativesocketengine_winrt.cpp @@ -47,11 +47,13 @@ #include #include +#include #ifndef QT_NO_SSL #include #endif +#include #include #include #include @@ -315,9 +317,11 @@ bool QNativeSocketEngine::bind(const QHostAddress &address, quint16 port) Q_ASSERT_SUCCEEDED(hr); } - hr = d->tcpListener->add_ConnectionReceived( - Callback(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(), - &d->connectionToken); + hr = QEventDispatcherWinRT::runOnXamlThread([d]() { + return d->tcpListener->add_ConnectionReceived( + Callback(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(), + &d->connectionToken); + }); Q_ASSERT_SUCCEEDED(hr); hr = d->tcpListener->BindEndpointAsync(hostAddress.Get(), portString.Get(), &op); } else if (d->socketType == QAbstractSocket::UdpSocket) { -- cgit v1.2.3