diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 16:51:28 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 16:51:28 +0000 |
commit | 940b4d1848e8c70ab7642901a68594e8016caffc (patch) | |
tree | eb72f344ee6c3d9b80a7ecc079ea79e9fba8676d /writerfilter/qa | |
parent | Initial commit. (diff) | |
download | libreoffice-940b4d1848e8c70ab7642901a68594e8016caffc.tar.xz libreoffice-940b4d1848e8c70ab7642901a68594e8016caffc.zip |
Adding upstream version 1:7.0.4.upstream/1%7.0.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'writerfilter/qa')
140 files changed, 3168 insertions, 0 deletions
diff --git a/writerfilter/qa/cppunittests/dmapper/CellColorHandler.cxx b/writerfilter/qa/cppunittests/dmapper/CellColorHandler.cxx new file mode 100644 index 000000000..646d0968b --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/CellColorHandler.cxx @@ -0,0 +1,70 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <test/bootstrapfixture.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/drawing/FillStyle.hpp> + +using namespace ::com::sun::star; + +namespace +{ +/// Tests for writerfilter/source/dmapper/CellColorHandler.cxx. +class Test : public test::BootstrapFixture, public unotest::MacrosTest +{ +private: + uno::Reference<lang::XComponent> mxComponent; + +public: + void setUp() override; + void tearDown() override; + uno::Reference<lang::XComponent>& getComponent() { return mxComponent; } +}; + +void Test::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void Test::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); +} + +char const DATA_DIRECTORY[] = "/writerfilter/qa/cppunittests/dmapper/data/"; + +CPPUNIT_TEST_FIXTURE(Test, test129205) +{ + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "tdf129205.docx"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<text::XTextDocument> xTextDocument(getComponent(), uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), + uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration(); + uno::Reference<beans::XPropertySet> xPara(xParaEnum->nextElement(), uno::UNO_QUERY); + drawing::FillStyle eFillStyle = drawing::FillStyle::FillStyle_NONE; + xPara->getPropertyValue("FillStyle") >>= eFillStyle; + // Without the accompanying fix in place, this test would have failed with: + // - Expected: drawing::FillStyle_NONE + // - Actual : FillStyle_SOLID + // i.e. the paragraph had a solid fill, making the header image invisible. + CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, eFillStyle); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx b/writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx new file mode 100644 index 000000000..d6e6830b8 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx @@ -0,0 +1,82 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <test/bootstrapfixture.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/style/BreakType.hpp> +#include <com/sun/star/drawing/XDrawPageSupplier.hpp> +#include <com/sun/star/text/WritingMode2.hpp> + +#include <tools/UnitConversion.hxx> + +using namespace ::com::sun::star; + +namespace +{ +/// Tests for writerfilter/source/dmapper/DomainMapper.cxx. +class Test : public test::BootstrapFixture, public unotest::MacrosTest +{ +private: + uno::Reference<lang::XComponent> mxComponent; + +public: + void setUp() override; + void tearDown() override; + uno::Reference<lang::XComponent>& getComponent() { return mxComponent; } +}; + +void Test::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void Test::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); +} + +char const DATA_DIRECTORY[] = "/writerfilter/qa/cppunittests/dmapper/data/"; + +CPPUNIT_TEST_FIXTURE(Test, testLargeParaTopMargin) +{ + // Given a document with a paragraph with a large "before" spacing. + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "large-para-top-margin.docx"; + getComponent() = loadFromDesktop(aURL); + + // When checking the first paragraph. + uno::Reference<text::XTextDocument> xTextDocument(getComponent(), uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), + uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration(); + uno::Reference<beans::XPropertySet> xPara(xParaEnum->nextElement(), uno::UNO_QUERY); + + // Then assert its top margin. + sal_Int32 nParaTopMargin{}; + xPara->getPropertyValue("ParaTopMargin") >>= nParaTopMargin; + // <w:spacing w:before="37050"/> in the document. + sal_Int32 nExpected = convertTwipToMm100(37050); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 65352 + // - Actual : 0 + // i.e. the paragraph margin was lost, which shifted the paragraph to the right (no top margin + // -> wrap around a TextBox), which shifted the triangle shape out of the page frame. + CPPUNIT_ASSERT_EQUAL(nExpected, nParaTopMargin); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/dmapper/DomainMapperTableHandler.cxx b/writerfilter/qa/cppunittests/dmapper/DomainMapperTableHandler.cxx new file mode 100644 index 000000000..a1a7595ce --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/DomainMapperTableHandler.cxx @@ -0,0 +1,72 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <test/bootstrapfixture.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/table/BorderLine2.hpp> +#include <com/sun/star/text/XTextTable.hpp> +#include <com/sun/star/text/XTextTablesSupplier.hpp> + +using namespace ::com::sun::star; + +namespace +{ +/// Tests for writerfilter/source/dmapper/DomainMapperTableHandler.cxx. +class Test : public test::BootstrapFixture, public unotest::MacrosTest +{ +private: + uno::Reference<lang::XComponent> mxComponent; + +public: + void setUp() override; + void tearDown() override; + uno::Reference<lang::XComponent>& getComponent() { return mxComponent; } +}; + +void Test::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void Test::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); +} + +char const DATA_DIRECTORY[] = "/writerfilter/qa/cppunittests/dmapper/data/"; + +CPPUNIT_TEST_FIXTURE(Test, test1cellInsidevRightborder) +{ + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "1cell-insidev-rightborder.docx"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<text::XTextTablesSupplier> xTextDocument(getComponent(), uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xTables(xTextDocument->getTextTables(), uno::UNO_QUERY); + uno::Reference<text::XTextTable> xTable(xTables->getByIndex(0), uno::UNO_QUERY); + uno::Reference<beans::XPropertySet> xCell(xTable->getCellByName("A1"), uno::UNO_QUERY); + table::BorderLine2 aBorder; + xCell->getPropertyValue("RightBorder") >>= aBorder; + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 0 + // - Actual : 18 + // i.e. the request to have no table-level right border was lost on import. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(0), aBorder.LineWidth); +} +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx b/writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx new file mode 100644 index 000000000..ade216411 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/DomainMapper_Impl.cxx @@ -0,0 +1,109 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <test/bootstrapfixture.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/style/BreakType.hpp> + +using namespace ::com::sun::star; + +namespace +{ +/// Tests for writerfilter/source/dmapper/DomainMapper_Impl.cxx. +class Test : public test::BootstrapFixture, public unotest::MacrosTest +{ +private: + uno::Reference<lang::XComponent> mxComponent; + +public: + void setUp() override; + void tearDown() override; + uno::Reference<lang::XComponent>& getComponent() { return mxComponent; } +}; + +void Test::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void Test::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); +} + +char const DATA_DIRECTORY[] = "/writerfilter/qa/cppunittests/dmapper/data/"; + +CPPUNIT_TEST_FIXTURE(Test, testPageBreakFooterTable) +{ + // Load a document which refers to a footer which ends with a table, and there is a page break + // in the body text right after the footer reference. + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "page-break-footer-table.docx"; + getComponent() = loadFromDesktop(aURL); + + // Check the last paragraph. + uno::Reference<text::XTextDocument> xTextDocument(getComponent(), uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), + uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration(); + uno::Reference<beans::XPropertySet> xPara; + while (xParaEnum->hasMoreElements()) + { + xPara.set(xParaEnum->nextElement(), uno::UNO_QUERY); + } + style::BreakType eType = style::BreakType_NONE; + xPara->getPropertyValue("BreakType") >>= eType; + + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 4 + // - Actual : 0 + // i.e. there was no page break before the last paragraph. + CPPUNIT_ASSERT_EQUAL(style::BreakType_PAGE_BEFORE, eType); +} + +CPPUNIT_TEST_FIXTURE(Test, testNumberingRestartStyleParent) +{ + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "num-restart-style-parent.docx"; + getComponent() = loadFromDesktop(aURL); + + // The paragraphs are A 1 2 B 1 2. + uno::Reference<text::XTextDocument> xTextDocument(getComponent(), uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), + uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration(); + uno::Reference<beans::XPropertySet> xPara; + OUStringLiteral aProp("ListLabelString"); + xPara.set(xParaEnum->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("A."), xPara->getPropertyValue(aProp).get<OUString>()); + xPara.set(xParaEnum->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("1."), xPara->getPropertyValue(aProp).get<OUString>()); + xPara.set(xParaEnum->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("2."), xPara->getPropertyValue(aProp).get<OUString>()); + xPara.set(xParaEnum->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("B."), xPara->getPropertyValue(aProp).get<OUString>()); + xPara.set(xParaEnum->nextElement(), uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1. + // - Actual : 3. + // i.e. the numbering was not restarted after B. + CPPUNIT_ASSERT_EQUAL(OUString("1."), xPara->getPropertyValue(aProp).get<OUString>()); + xPara.set(xParaEnum->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(OUString("2."), xPara->getPropertyValue(aProp).get<OUString>()); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/dmapper/GraphicImport.cxx b/writerfilter/qa/cppunittests/dmapper/GraphicImport.cxx new file mode 100644 index 000000000..28a0cc178 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/GraphicImport.cxx @@ -0,0 +1,170 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <test/bootstrapfixture.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/drawing/XDrawPageSupplier.hpp> +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/container/XNamed.hpp> +#include <com/sun/star/text/RelOrientation.hpp> +#include <com/sun/star/drawing/PointSequenceSequence.hpp> + +#include <basegfx/polygon/b2dpolypolygontools.hxx> + +using namespace ::com::sun::star; + +namespace +{ +/// Tests for writerfilter/source/dmapper/GraphicImport.cxx. +class Test : public test::BootstrapFixture, public unotest::MacrosTest +{ +private: + uno::Reference<lang::XComponent> mxComponent; + +public: + void setUp() override; + void tearDown() override; + uno::Reference<lang::XComponent>& getComponent() { return mxComponent; } +}; + +void Test::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void Test::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); +} + +char const DATA_DIRECTORY[] = "/writerfilter/qa/cppunittests/dmapper/data/"; + +CPPUNIT_TEST_FIXTURE(Test, testGroupShapeRotation) +{ + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "group-shape-rotation.docx"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(getComponent(), uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<beans::XPropertySet> xShape(xDrawPage->getByIndex(0), uno::UNO_QUERY); + sal_Int32 nVertPosition = 0; + xShape->getPropertyValue("VertOrientPosition") >>= nVertPosition; + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1221 + // - Actual : -2048 + // i.e. the group shape had a so low vertical position that the line shape did not point into + // it. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1221), nVertPosition); +} + +CPPUNIT_TEST_FIXTURE(Test, testDrawShapeInlineEffect) +{ + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "draw-shape-inline-effect.docx"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(getComponent(), uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<beans::XPropertySet> xShape(xDrawPage->getByIndex(0), uno::UNO_QUERY); + sal_Int32 nBottomMargin = 0; + xShape->getPropertyValue("BottomMargin") >>= nBottomMargin; + // 273 in mm100 is 98425 EMUs from the file. + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 273 + // - Actual : 0 + // i.e. the layout result had less pages than expected (compared to Word). + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(273), nBottomMargin); +} + +CPPUNIT_TEST_FIXTURE(Test, testInlineAnchoredZOrder) +{ + // Load a document which has two shapes: an inline one and an anchored one. The inline has no + // explicit ZOrder, the anchored one has, and it's set to a value so it's visible. + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "inline-anchored-zorder.docx"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(getComponent(), uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<container::XNamed> xOval(xDrawPage->getByIndex(1), uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: Oval 2 + // - Actual : + // i.e. the rectangle (with no name) was on top of the oval one, not the other way around. + CPPUNIT_ASSERT_EQUAL(OUString("Oval 2"), xOval->getName()); +} + +CPPUNIT_TEST_FIXTURE(Test, testInlineInShapeAnchoredZOrder) +{ + // This document has a textbox shape and then an inline shape inside that. + // The ZOrder of the inline shape is larger than the hosting textbox, so the image is visible. + OUString aURL + = m_directories.getURLFromSrc(DATA_DIRECTORY) + "inline-inshape-anchored-zorder.docx"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(getComponent(), uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<container::XNamed> xOval(xDrawPage->getByIndex(1), uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: Picture 1 + // - Actual : Text Box 2 + // i.e. the image was behind the textbox that was hosting it. + CPPUNIT_ASSERT_EQUAL(OUString("Picture 1"), xOval->getName()); +} + +CPPUNIT_TEST_FIXTURE(Test, testRelfromhInsidemargin) +{ + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "relfromh-insidemargin.docx"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(getComponent(), uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<beans::XPropertySet> xShape(xDrawPage->getByIndex(0), uno::UNO_QUERY); + sal_Int16 nRelation = 0; + xShape->getPropertyValue("HoriOrientRelation") >>= nRelation; + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 7 (PAGE_FRAME) + // - Actual : 0 (FRAME) + // i.e. the horizontal position was relative to the paragraph area, not to the entire page. + CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, nRelation); + bool bPageToggle = false; + xShape->getPropertyValue("PageToggle") >>= bPageToggle; + CPPUNIT_ASSERT(bPageToggle); +} + +CPPUNIT_TEST_FIXTURE(Test, testWrapPolyCrop) +{ + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "wrap-poly-crop.docx"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(getComponent(), uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference<beans::XPropertySet> xShape(xDrawPage->getByIndex(0), uno::UNO_QUERY); + drawing::PointSequenceSequence aContour; + xShape->getPropertyValue("ContourPolyPolygon") >>= aContour; + auto aPolyPolygon = basegfx::utils::UnoPointSequenceSequenceToB2DPolyPolygon(aContour); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(1), aPolyPolygon.count()); + auto aPolygon = aPolyPolygon.getB2DPolygon(0); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(4), aPolygon.count()); + + // Ideally this would be 2352, because the graphic size in mm100, using the graphic's DPI is + // 10582, the lower 33% of the graphic is cropped, and the wrap polygon covers the middle third + // of the area vertically. Which means 10582*2/3 = 7054.67 is the cropped height, and the top of + // the middle third is 2351.55. + // Then there is a 15 twips shift from the origo, so it's 2351.55 + 26.46 = 2378.01 in mm100. + // + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 2368 + // - Actual : 3542 + // i.e. the wrap polygon covered a larger-than-correct area, which end the end means 3 lines + // were wrapping around the image, not only 2 as Word does it. + CPPUNIT_ASSERT_EQUAL(2368., aPolygon.getB2DPoint(0).getY()); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/dmapper/PropertyMap.cxx b/writerfilter/qa/cppunittests/dmapper/PropertyMap.cxx new file mode 100644 index 000000000..71b3ab80e --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/PropertyMap.cxx @@ -0,0 +1,68 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <test/bootstrapfixture.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/text/XPageCursor.hpp> +#include <com/sun/star/text/XTextViewCursorSupplier.hpp> + +using namespace ::com::sun::star; + +namespace +{ +/// Tests for writerfilter/source/dmapper/PropertyMap.cxx. +class Test : public test::BootstrapFixture, public unotest::MacrosTest +{ +private: + uno::Reference<lang::XComponent> mxComponent; + +public: + void setUp() override; + void tearDown() override; + uno::Reference<lang::XComponent>& getComponent() { return mxComponent; } +}; + +void Test::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void Test::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); +} + +char const DATA_DIRECTORY[] = "/writerfilter/qa/cppunittests/dmapper/data/"; + +CPPUNIT_TEST_FIXTURE(Test, testFloatingTableHeader) +{ + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "floating-table-header.docx"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<frame::XModel> xModel(getComponent(), uno::UNO_QUERY); + uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier( + xModel->getCurrentController(), uno::UNO_QUERY); + uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), + uno::UNO_QUERY); + xCursor->jumpToLastPage(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1 + // - Actual : 3 + // i.e. a document which is 1 page in Word was imported as a 3 page one. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(1), xCursor->getPage()); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/dmapper/TextEffectsHandler.cxx b/writerfilter/qa/cppunittests/dmapper/TextEffectsHandler.cxx new file mode 100644 index 000000000..d48a35e25 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/TextEffectsHandler.cxx @@ -0,0 +1,74 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <test/bootstrapfixture.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/text/XTextDocument.hpp> + +using namespace ::com::sun::star; + +namespace +{ +/// Tests for writerfilter/source/dmapper/TextEffectsHandler.cxx. +class Test : public test::BootstrapFixture, public unotest::MacrosTest +{ +private: + uno::Reference<lang::XComponent> mxComponent; + +public: + void setUp() override; + void tearDown() override; + uno::Reference<lang::XComponent>& getComponent() { return mxComponent; } +}; + +void Test::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void Test::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); +} + +char const DATA_DIRECTORY[] = "/writerfilter/qa/cppunittests/dmapper/data/"; + +CPPUNIT_TEST_FIXTURE(Test, testSemiTransparentText) +{ + // Load a document with a single paragraph: second text portion has semi-transparent text. + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "semi-transparent-text.docx"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<text::XTextDocument> xTextDocument(getComponent(), uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), + uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration(); + uno::Reference<container::XEnumerationAccess> xPara(xParaEnum->nextElement(), uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xPortionEnum = xPara->createEnumeration(); + xPortionEnum->nextElement(); + uno::Reference<beans::XPropertySet> xPortion(xPortionEnum->nextElement(), uno::UNO_QUERY); + sal_Int16 nCharTransparence = 0; + xPortion->getPropertyValue("CharTransparence") >>= nCharTransparence; + + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 74 + // - Actual : 0 + // i.e. text was imported as regular text with solid color only. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(74), nCharTransparence); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/dmapper/data/1cell-insidev-rightborder.docx b/writerfilter/qa/cppunittests/dmapper/data/1cell-insidev-rightborder.docx Binary files differnew file mode 100644 index 000000000..d0bc40e23 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/1cell-insidev-rightborder.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/draw-shape-inline-effect.docx b/writerfilter/qa/cppunittests/dmapper/data/draw-shape-inline-effect.docx Binary files differnew file mode 100644 index 000000000..3eb5b0e2f --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/draw-shape-inline-effect.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/floating-table-header.docx b/writerfilter/qa/cppunittests/dmapper/data/floating-table-header.docx Binary files differnew file mode 100644 index 000000000..3840b2550 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/floating-table-header.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/group-shape-rotation.docx b/writerfilter/qa/cppunittests/dmapper/data/group-shape-rotation.docx Binary files differnew file mode 100644 index 000000000..c9fee726b --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/group-shape-rotation.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/inline-anchored-zorder.docx b/writerfilter/qa/cppunittests/dmapper/data/inline-anchored-zorder.docx Binary files differnew file mode 100644 index 000000000..93932c470 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/inline-anchored-zorder.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/inline-inshape-anchored-zorder.docx b/writerfilter/qa/cppunittests/dmapper/data/inline-inshape-anchored-zorder.docx Binary files differnew file mode 100644 index 000000000..3792285f4 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/inline-inshape-anchored-zorder.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/large-para-top-margin.docx b/writerfilter/qa/cppunittests/dmapper/data/large-para-top-margin.docx Binary files differnew file mode 100644 index 000000000..34f24a3e2 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/large-para-top-margin.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/num-restart-style-parent.docx b/writerfilter/qa/cppunittests/dmapper/data/num-restart-style-parent.docx Binary files differnew file mode 100644 index 000000000..f908d94b5 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/num-restart-style-parent.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/page-break-footer-table.docx b/writerfilter/qa/cppunittests/dmapper/data/page-break-footer-table.docx Binary files differnew file mode 100644 index 000000000..376a1fb1e --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/page-break-footer-table.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/relfromh-insidemargin.docx b/writerfilter/qa/cppunittests/dmapper/data/relfromh-insidemargin.docx Binary files differnew file mode 100644 index 000000000..1f7a281e8 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/relfromh-insidemargin.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/semi-transparent-text.docx b/writerfilter/qa/cppunittests/dmapper/data/semi-transparent-text.docx Binary files differnew file mode 100644 index 000000000..6c0f8a79c --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/semi-transparent-text.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/tdf129205.docx b/writerfilter/qa/cppunittests/dmapper/data/tdf129205.docx Binary files differnew file mode 100644 index 000000000..4289254d0 --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/tdf129205.docx diff --git a/writerfilter/qa/cppunittests/dmapper/data/wrap-poly-crop.docx b/writerfilter/qa/cppunittests/dmapper/data/wrap-poly-crop.docx Binary files differnew file mode 100644 index 000000000..1835a130d --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/wrap-poly-crop.docx diff --git a/writerfilter/qa/cppunittests/filters-test/README b/writerfilter/qa/cppunittests/filters-test/README new file mode 100644 index 000000000..2cc9fb3cb --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/README @@ -0,0 +1,7 @@ +Files with the string 'CVE' in their name are encrypted to avoid +problems with virus checkers on source code download.; use: + +mdecrypt --bare -a arcfour -o hex -k 435645 -s 3 foo.doc # to unencrypt +mcrypt --bare -a arcfour -o hex -k 435645 -s 3 foo.doc # to create new tests + +to get access to the plain files for manual testing. diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/CVE-2005-2971-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/CVE-2005-2971-1.rtf Binary files differnew file mode 100644 index 000000000..5cd42052c --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/CVE-2005-2971-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/CVE-2010-3451-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/CVE-2010-3451-1.rtf Binary files differnew file mode 100644 index 000000000..0c639810d --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/CVE-2010-3451-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/EDB-18749-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/EDB-18749-1.rtf Binary files differnew file mode 100644 index 000000000..18795f5be --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/EDB-18749-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/destinationtest-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/destinationtest-1.rtf Binary files differnew file mode 100644 index 000000000..63465b073 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/destinationtest-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/destinationtest-2.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/destinationtest-2.rtf Binary files differnew file mode 100644 index 000000000..f0152b0fa --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/destinationtest-2.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/nopropertyset-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/nopropertyset-1.rtf Binary files differnew file mode 100644 index 000000000..59c3630a7 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/nopropertyset-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/popstate-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/popstate-1.rtf Binary files differnew file mode 100644 index 000000000..041891713 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/popstate-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/popstate-2.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/popstate-2.rtf new file mode 100644 index 000000000..273bb135c --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/popstate-2.rtf @@ -0,0 +1 @@ +\\rttt\noTidqtpdp{\"pb18}\p{\"ptxtbr } diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/propheight-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/propheight-1.rtf Binary files differnew file mode 100644 index 000000000..130ff3f23 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/propheight-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/sf_edeb1eb341ad4c8608af9396952724a0-128299-minimized.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/sf_edeb1eb341ad4c8608af9396952724a0-128299-minimized.rtf new file mode 100644 index 000000000..45597c085 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/sf_edeb1eb341ad4c8608af9396952724a0-128299-minimized.rtf @@ -0,0 +1,57 @@ +{\rtf1\ansi\ansicpg1252\deff0 +{\fonttbl +{\f0\fnil\fcharset0\fprq0\fttruetype Times New Roman;} +{\f1\fnil\fcharset0\fprq0\fttruetype Nimbus Sans L;} +{\f2\fnil\fcharset0\fprq0\fttruetype Dingbats;} +{\f3\fnil\fcharset0\fprq0\fttruetype Symbol;} +{\f4\fnil\fcharset0\fprq0\fttruetype Courier New;}} +{\colortbl +\red0\green0\blue0; +\red255\green255\blue255;} +{\stylesheet +{\s1\fi-431\li720\sbasedon28\snext28 Contents 1;} +{\s2\fi-431\li1440\sbasedon28\snext28 Contents 2;} +{\s3\fi-431\li2160\sbasedon28\snext28 Contents 3;} +{\s8\fi-431\li720\sbasedon28 Lower Roman List;} +{\s5\tx431\sbasedon24\snext28 Numbered Heading 1;} +{\s6\tx431\sbasedon25\snext28 Numbered Heading 2;} +{\s7\fi-431\li720 Square List;} +{\*\cs11\sbasedon28 Endnote Text;} +{\s4\fi-431\li2880\sbasedon28\snext28 Contents 4;} +{\s9\fi-431\li720 Diamond List;} +{\s10\fi-431\li720 Numbered List;} +{\*\cs12\fs20\super Endnote Reference;} +{\s13\fi-431\li720 Triangle List;} +{\s14\tx431\sbasedon26\snext28 Numbered Heading 3;} +{\s15\fi-431\li720 Dashed List;} +{\s16\fi-431\li720\sbasedon10 Upper Roman List;} +{\s17\sb440\sa60\f1\fs24\b\sbasedon28\snext28 Heading 4;} +{\s18\fi-431\li720 Heart List;} +{\s34\fi-431\li720 Box List;} +{\s20\fi-431\li720\sbasedon10 Upper Case List;} +{\s21\fi-431\li720 Bullet List;} +{\s22\fi-431\li720 Hand List;} +{\*\cs23\fs20\sbasedon28 Footnote Text;} +{\s24\sb440\sa60\f1\fs34\b\sbasedon28\snext28 Heading 1;} +{\s25\sb440\sa60\f1\fs28\b\sbasedon28\snext28 Heading 2;} +{\s19\qc\sb240\sa120\f1\fs32\b\sbasedon28\snext28 Contents Header;} +{\s27\fi-431\li720 Tick List;} +{\s26\sb440\sa60\f1\fs24\b\sbasedon28\snext28 Heading 3;} +{\s29\fi-431\li720\sbasedon10 Lower Case List;} +{\s30\li1440\ri1440\sa120\sbasedon28 Block Text;} +{\s36\f4\sbasedon28 Plain Text;} +{\s32\tx1584\sbasedon5\snext28 Section Heading;} +{\s33\fi-431\li720 Implies List;} +{\s28\f0\fs24\lang1033 Normal;} +{\s35\fi-431\li720 Star List;} +{\*\cs31\fs20\super Footnote Reference;} +{\s37\tx1584\sbasedon5\snext28 Chapter Heading;}} +{\*\listtable +{\list\listtemplateid1002\listsimple{\listlevel\levelnfc0\levelstartat1\levelspAce0\levelfollow0\fi-431\li720{\leveltext\'02\'00.{}{\levelnumbers\'01;}}\listid1000}} +{\*\listoverridetable +{\listoverride\listoverridecount0\listid1000\levelnfc0\levelstartat1\levelspace0\levelfollow0\fi-431\li720{\leveltext\'02\'00.;}{\levelnumbers\'01;}\ls1}} + +\kerning0\cf0\ftnbj\fet2\ftnstart1\ftnnar\aftnnar\ftnstart1\aftnstart1\aenddoc\facingp\titlepg\revprop3{\info}\deftab720\viewkind1\paperw12240\paperh15840\margl1440\margr1440\widowctl +\sectd\sbknone\colsx360\pgncont\ltrsect +{\listtext\pard\fi-431\li720 1. }\pard\plain{\ltrpar\ql\fi-431\li720\s28{\*\abilist\abilistid1000\abilistparentid0\abilistlevel1\abistartat1{\abifieldfont NULL}{\abilistdecimal .}{\abilistdelim %L.}{\abiliststyle Numbered List}}{\*\pn\pnql\pnstart1\pnlvlbody\pndec{\pntxtb AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA}{\pntxta .}}\fn-431\li720\ls1\ilvl0\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\abinodiroverride\ltrch test}{\s28\f0\fs24\lang1033{\*\listtag1001}\par} +}\pard\plain\ltrpar\ql\s28\itap0{\s28\f0\fs24\lang1033{\*\listtag0}\par}} diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/tablemanager-5.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/tablemanager-5.rtf Binary files differnew file mode 100644 index 000000000..a03be130d --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/tablemanager-5.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/tablemanager-6.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/tablemanager-6.rtf Binary files differnew file mode 100644 index 000000000..67a0ea175 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/tablemanager-6.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/tablemanager-7.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/tablemanager-7.rtf Binary files differnew file mode 100644 index 000000000..df41b1f88 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/tablemanager-7.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/topcontext-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/topcontext-1.rtf Binary files differnew file mode 100644 index 000000000..7cdb94ab2 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/topcontext-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/topcontext-2.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/topcontext-2.rtf Binary files differnew file mode 100644 index 000000000..c0bd2691c --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/topcontext-2.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/fail/topcontext-3.rtf b/writerfilter/qa/cppunittests/filters-test/data/fail/topcontext-3.rtf new file mode 100644 index 000000000..112162397 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/fail/topcontext-3.rtf @@ -0,0 +1,28 @@ +{\ul\001ll\fJ + {Ystylesheet;{;}} +{bbbbbbbbbbbbbbbbb{O\00\80\00\tc\DD\00\FFDD\BED@DDD\F7bTr\00\00*i\\FF\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FF\ +\\\BD\EB||){Tb\FD\00\00\00p\FFA\00\00\00r \00\00\00\BB +\88\83AA4A\FC\E5C\E5\F5\E5\E5\FF\80\E5\E5\E5\D3O<BZ\ +\D\00 +\EA\00\00\00\FFbT\9B\85\00{rbNNNNNNNNNNNNNNNNN\E5\E5\E5\E5\E5\E5\E5\E5\E5IA\00\FFiH\\ +\T\\\E7\00\ED(\\92\DEs\\F0 \82\AA\AA =\00V n\E7\00\ect\00\00\00\B1\B1\B1w^w\AAuu\00\00 +\d\00\00\00\00\00\00\FFbTUUQVUߘ\98U\00DF\F6\F63#\99\00\00\98\AC\98\98\00\00 x\95es\E4\B7\D3\\00\80w\80\FF\00\AAd\FF\00*\00菋\8B\8BM`I\00 \00\80\v\U\i\F8\F8\AB\98\D8\\91\sect\\F0\F0\F0\F0\F0\F0\F0ec\F0\F0\F0 \8B\00\8B\8B\8BOOOMII\C2\C2\EC\FEw{O\00\80\00d<tR}\\iL@\A4u{\E8A\00剉\89\89\89\89\89\89\{O\86]UvII<OOOOOOOOOOMI:\C2\C2\00\00\00\00\EC\F1w{O\00\80\00d\t\B5}\\iL\\00\89k \FF\DF\DF\DF\DF\DD\DF\DF\DF\DF\00 \8EiE \E5\q\FA{P\00zri\A2\00\DD\00\AAe{\00\C0DDDD\8FDD\BED\00\E8\f\\i\\FF\E9\FF\9Bc\F1[\8\00\EB{\98 +\DFh\FF\\00\\\BD\E1||||Z|||||\A1\FD\98\98\98\98\98\98\8F\90\98\98\D8\tc}ww\00\tc}\\i\FE\\00/k շ\D3\\FF\FF}wX\EB\tc}\\iL\\9F\00/k \F6\FF\FE\FFE\FF\FF\FE\E8KK\00\00\00 \00\E6ii{ۜ\80\85 +\80\q\FA\00\00\FA\F8\E5 ގ|^ +\E5\E5\E5\E5C\E5\E5\E5\E5\FF\80\E5\E5\E5\D3\E5 +BZ\ +\t\00 +\E5\FF\FFi\00 +\ \FA>\006\FA\00\00\EB\F8\E5 \00\00\\98\00xtesշ\D3^t000c\00\00\00\00ppu\00\00\00\00\00\E5\D1\E5\80\00\00\00\FA\F8\E5'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb{O\00\80\00\tc\A5\\iL\\00\E5\F2\E5\E5\E5\80\E8\E5\E5\E5\FF\FFbTUEQU\00\00\00\00\80\00\00\AD\E5\E5\E5\E5C\00\00\00\E5\E5\E5\E5\E5\E5I \00\{P\FFig\\ +{O\00\80\00d<tR\T\ect\00\00\.AK\EF +\F\80\FF +\\\E5\FF\FF\i"\00\FFw\F4\F2\D9\00\89\89\89s\89\89k\89\8AigQ\hhhhhhhA\\00Ad\00\FFiI \00iI d\00\00\009\FFH\E2\F8\006\FA\00\00 \00NNNNNNNNNNNNNNNNNNNNN\00\B6\FA\E5[\ +\Z\ +6\006\D3\00\80\E5\FF\ig\FB~\9Fo +^ +\E5\E5\E4\E5C\E5\E5\E5\E5\E5\E5\E5\E5\E5\E5IA\00\FFiH\\ +\T\\EAd\00\FF\iI \00\E8\00\\\ +\R\xKKKKKKKKKKKKKKKKKKKKKKKKK\FF\\\F8\FF\FA\00\82\00\00\00rd\00\00ppp\FF\i\\FF\FF\A0\00\00\00%C +\FF\FF\00}g ~\80\00\80xxxxxxxxxxig\\ +\\%\E5\E5\E5\E5\E5\E5\E5\C6\E5\E5tes\E4\B7\D3\\00\80}\E5\E5,TgU\\00~ +\\006\00 diff --git a/writerfilter/qa/cppunittests/filters-test/data/indeterminate/.gitignore b/writerfilter/qa/cppunittests/filters-test/data/indeterminate/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/indeterminate/.gitignore diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2005-2964-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2005-2964-1.rtf Binary files differnew file mode 100644 index 000000000..da97fba57 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2005-2964-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2005-2972-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2005-2972-1.rtf Binary files differnew file mode 100644 index 000000000..70321707f --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2005-2972-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2005-2972-2.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2005-2972-2.rtf Binary files differnew file mode 100644 index 000000000..c5ea695bc --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2005-2972-2.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2007-0245-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2007-0245-1.rtf Binary files differnew file mode 100644 index 000000000..757cfe62e --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2007-0245-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2010-3333-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2010-3333-1.rtf Binary files differnew file mode 100644 index 000000000..4dac58c0c --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2010-3333-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2010-3452-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2010-3452-1.rtf new file mode 100644 index 000000000..da5d0f39b --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2010-3452-1.rtf @@ -0,0 +1 @@ +2 Hv$s
Au4j
\ No newline at end of file diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2014-1761-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2014-1761-1.rtf Binary files differnew file mode 100644 index 000000000..44d28adcb --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2014-1761-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2014-1761-2.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2014-1761-2.rtf Binary files differnew file mode 100644 index 000000000..64109fbe2 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-2014-1761-2.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-pseudo-2009-0238-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-pseudo-2009-0238-1.rtf Binary files differnew file mode 100644 index 000000000..44ed96982 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/CVE-pseudo-2009-0238-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/EDB-18754-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/EDB-18754-1.rtf Binary files differnew file mode 100644 index 000000000..f4a736920 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/EDB-18754-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/EDB-18940-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/EDB-18940-1.rtf Binary files differnew file mode 100644 index 000000000..794f325c5 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/EDB-18940-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/TCI-TN65GP-DDRHDLL-partial.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/TCI-TN65GP-DDRHDLL-partial.rtf new file mode 100644 index 000000000..7cdb1e15c --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/TCI-TN65GP-DDRHDLL-partial.rtf @@ -0,0 +1,1719 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff1\deff1\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} +{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f4\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Helvetica;} +{\f10\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f46\froman\fcharset2\fprq2{\*\panose 05030102010509060703}Webdings;}{\f273\froman\fcharset238\fprq2 Times New Roman CE;}{\f274\froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f276\froman\fcharset161\fprq2 Times New Roman Greek;}{\f277\froman\fcharset162\fprq2 Times New Roman Tur;}{\f278\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f279\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f280\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f281\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f283\fswiss\fcharset238\fprq2 Arial CE;}{\f284\fswiss\fcharset204\fprq2 Arial Cyr;}{\f286\fswiss\fcharset161\fprq2 Arial Greek;} +{\f287\fswiss\fcharset162\fprq2 Arial Tur;}{\f288\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f289\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f290\fswiss\fcharset186\fprq2 Arial Baltic;}{\f291\fswiss\fcharset163\fprq2 Arial (Vietnamese);} +{\f293\fmodern\fcharset238\fprq1 Courier New CE;}{\f294\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f296\fmodern\fcharset161\fprq1 Courier New Greek;}{\f297\fmodern\fcharset162\fprq1 Courier New Tur;} +{\f298\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f299\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f300\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f301\fmodern\fcharset163\fprq1 Courier New (Vietnamese);} +{\f313\fswiss\fcharset238\fprq2 Helvetica CE;}{\f314\fswiss\fcharset204\fprq2 Helvetica Cyr;}{\f316\fswiss\fcharset161\fprq2 Helvetica Greek;}{\f317\fswiss\fcharset162\fprq2 Helvetica Tur;}{\f318\fbidi \fswiss\fcharset177\fprq2 Helvetica (Hebrew);} +{\f319\fbidi \fswiss\fcharset178\fprq2 Helvetica (Arabic);}{\f320\fswiss\fcharset186\fprq2 Helvetica Baltic;}{\f321\fswiss\fcharset163\fprq2 Helvetica (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255; +\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0; +\red128\green128\blue128;\red192\green192\blue192;\red255\green153\blue0;}{\stylesheet{\qr \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch +\f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sautoupd Normal;}{\s1\qr \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch \ab\af1\afs28\alang1025 \ltrch +\b\caps\f1\fs28\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 1,Title Data;}{\s2\qr \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch +\f1\fs16\cf8\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 2;}{\s3\qr \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch \ab\af4\afs26\alang1025 \ltrch +\b\f4\fs26\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 3;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv +\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af0\afs20 \ltrch \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{ +\s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs20\alang1025 \ltrch \f1\fs20\cf1\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 \snext0 Body Spec;}{\*\cs16 \additive \rtlch \ab\af0\afs22 \ltrch +\b\scaps\fs22\expnd3\expndtw18\lang1024\langfe1024\noproof \sbasedon10 Header Spec;}{\s17\ql \fi-72\li72\ri0\sb240\widctlpar\tx72\aspalpha\aspnum\faauto\adjustright\rin0\lin72\itap0 \rtlch \af1\afs13\alang1025 \ltrch +\f1\fs13\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 \snext17 \sautoupd mouse print;}{\s18\ql \li29\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin29\itap0 \rtlch \ab\af1\afs26\alang1025 \ltrch +\b\scaps\f1\fs26\expnd4\expndtw24\cf1\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 \snext18 Datasheet Title;}{\s19\ql \li0\ri0\sl-210\slmult0\widctlpar\tx180\tx3780\tx4050\tx9180\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch +\af1\afs16\alang1025 \ltrch \f1\fs16\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 \snext19 \sautoupd Bullet Spec;}{\s20\qr \li0\ri0\widctlpar\tqc\tx4320\tqr\tx8640\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch +\af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 header;}{\s21\ql \li50\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin50\itap0 \rtlch \ab\af1\afs22\alang1025 \ltrch +\b\scaps\f1\fs22\expnd3\expndtw17\cf1\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 \snext21 \sautoupd Sub Header;}{\s22\ql \fi-216\li216\ri0\widctlpar\tqr\tx216\aspalpha\aspnum\faauto\ls38\adjustright\rin0\lin216\itap0 \rtlch +\af1\afs19\alang1025 \ltrch \f1\fs19\cf17\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 \snext22 \sautoupd copper bullet text;}{\s23\ql \fi-216\li216\ri0\widctlpar\tqr\tx216\aspalpha\aspnum\faauto\ls39\adjustright\rin0\lin216\itap0 \rtlch +\af1\afs19\alang1025 \ltrch \f1\fs19\cf1\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 \sbasedon22 \snext23 white bullet black text;}{\s24\ql \li0\ri0\sb40\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch +\af1\afs17\alang1025 \ltrch \f1\fs17\cf1\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 \sbasedon0 \snext24 Part No.;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable +{\list\listtemplateid-1695512888{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-4044 ?;}{\levelnumbers;}\b0\i0\strike0\outl0\shad0\embo0\impr0\caps0\v0\f46\fs18\ulnone\cf17\nosupersub\striked0\fbias0 \s22\fi-216\li216\jclisttab\tx360\lin216 } +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\loch\af3\hich\af3\dbch\af0\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers +;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 } +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\loch\af3\hich\af3\dbch\af0\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid265384847} +{\list\listtemplateid422860360{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-4044 ?;}{\levelnumbers;}\b0\i0\strike0\outl0\shad0\embo0\impr0\caps0\v0\f46\fs18\ulnone\cf8\nosupersub\striked0\fbias0 \s23\fi-216\li216\jclisttab\tx360\lin216 }{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;} +\loch\af3\hich\af3\dbch\af0\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600 +\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\loch\af3\hich\af3\dbch\af0\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid678429498} +}{\*\listoverridetable{\listoverride\listid1665083218\listoverridecount0\ls1}{\listoverride\listid1904289489\listoverridecount0\ls2} +{\listoverride\listid1272055411\listoverridecount0\ls3}{\listoverride\listid1786775403\listoverridecount0\ls4}{\listoverride\listid95443872\listoverridecount0\ls5}{\listoverride\listid610892914\listoverridecount0\ls6}{\listoverride\listid1358891263 +\listoverridecount0\ls7}{\listoverride\listid406534060\listoverridecount0\ls8}{\listoverride\listid1411807819\listoverridecount0\ls9}{\listoverride\listid1946690268\listoverridecount0\ls10}{\listoverride\listid1825658399\listoverridecount0\ls11} +{\listoverride\listid646323806\listoverridecount0\ls12}{\listoverride\listid1445687661\listoverridecount0\ls13}{\listoverride\listid379482012\listoverridecount0\ls14}{\listoverride\listid1058817243\listoverridecount0\ls15}{\listoverride\listid1246576990 +\listoverridecount0\ls16}{\listoverride\listid1776748315\listoverridecount0\ls17}{\listoverride\listid778525720\listoverridecount0\ls18}{\listoverride\listid1312296586\listoverridecount0\ls19}{\listoverride\listid1358582950\listoverridecount0\ls20} +{\listoverride\listid455831286\listoverridecount0\ls21}{\listoverride\listid673074249\listoverridecount0\ls22}{\listoverride\listid2094740677\listoverridecount0\ls23}{\listoverride\listid-129\listoverridecount0\ls24}{\listoverride\listid275143120 +\listoverridecount0\ls25}{\listoverride\listid1245842577\listoverridecount0\ls26}{\listoverride\listid804469837\listoverridecount0\ls27}{\listoverride\listid568426430\listoverridecount0\ls28}{\listoverride\listid942303892\listoverridecount0\ls29} +{\listoverride\listid1117597776\listoverridecount0\ls30}{\listoverride\listid1117597776\listoverridecount0\ls31}{\listoverride\listid1117597776\listoverridecount0\ls32}{\listoverride\listid1117597776\listoverridecount0\ls33}{\listoverride\listid1995066837 +\listoverridecount0\ls34}{\listoverride\listid529074992\listoverridecount0\ls35}{\listoverride\listid524364841\listoverridecount0\ls36}{\listoverride\listid1529562644\listoverridecount0\ls37}{\listoverride\listid265384847\listoverridecount0\ls38} +{\listoverride\listid678429498\listoverridecount0\ls39}}{\*\rsidtbl \rsid7564464\rsid8398352\rsid9049968}{\*\generator Microsoft Word 11.0.5604;}\margl0\margr0\margt0\margb0\ltrsect +\deftab14\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin0\dgvorigin0\dghshow0\dgvshow0 +\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\rsidroot9049968 \fet0\ltrpar \sectd \ltrsect +\linex0\headery0\footery0\sectdefaultcl\sectrsid7564464\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}} +{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang +{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar +\s20\qr \li0\ri0\sb240\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \lang1024\langfe1024\noproof\insrsid7564464 +{\shp{\*\shpinst\shpleft1281\shptop9231\shpright4476\shpbottom11909\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz5\shplid1027{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}} +{\sp{\sn lTxid}{\sv 131072}}{\sp{\sn dxTextLeft}{\sv 64008}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 137160}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn hspNext}{\sv 1027}} +{\sp{\sn fFitShapeToText}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn lidRegroup}{\sv 1}}{\sp{\sn posrelh}{\sv 0}}{\sp{\sn posrelv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \ltrpar +\pard\plain \ltrpar\s21\ql \li50\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin50\itap0 \rtlch \ab\af1\afs22\alang1025 \ltrch \b\scaps\f1\fs22\expnd3\expndtw17\cf1\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch +\cf8\insrsid7564464 Deliverables +\par }\pard\plain \ltrpar\qr \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 +\par {\listtext\pard\plain\ltrpar \s23 \rtlch \af46\afs18 \ltrch \f46\fs18\cf8\lang1024\langfe1024\noproof \loch\af46\dbch\af0\hich\f46 \'34\tab}}\pard\plain \ltrpar\s23\ql \fi-216\li216\ri0\widctlpar +\tqr\tx216\aspalpha\aspnum\faauto\ls39\adjustright\rin0\lin216\itap0 \rtlch \af1\afs19\alang1025 \ltrch \f1\fs19\cf1\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 GDSII and LVS Spice netlist, behavioral, synthesis, and \line LEF models, and extensive user documentation. +\par }\pard \ltrpar\s23\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch \af1 \ltrch \insrsid7564464 +\par {\listtext\pard\plain\ltrpar \s23 \rtlch \af46\afs18 \ltrch \f46\fs18\cf8\lang1024\langfe1024\noproof \loch\af46\dbch\af0\hich\f46 \'34\tab}}\pard \ltrpar\s23\ql \fi-216\li216\ri0\widctlpar +\tqr\tx216\aspalpha\aspnum\faauto\ls39\adjustright\rin0\lin216\itap0 {\rtlch \af1 \ltrch \insrsid7564464 Integration support to ensure \line a successful tape out (included \line in standard design license fee). +\par }\pard\plain \ltrpar\qr \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 +\par +\par }}}} +{\shp{\*\shpinst\shpleft1282\shptop2362\shpright10462\shpbottom2765\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz4\shplid1028{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}} +{\sp{\sn lTxid}{\sv 196608}}{\sp{\sn dxTextLeft}{\sv 45720}}{\sp{\sn dyTextTop}{\sv 0}}{\sp{\sn dxTextRight}{\sv 0}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn hspNext}{\sv 1028}}{\sp{\sn fFitShapeToText}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fLine}{\sv 0}} +{\sp{\sn lidRegroup}{\sv 1}}{\sp{\sn posrelh}{\sv 0}}{\sp{\sn posrelv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \ltrpar \pard\plain \ltrpar +\s18\ql \li29\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin29\itap0 \rtlch \ab\af1\afs26\alang1025 \ltrch \b\scaps\f1\fs26\expnd4\expndtw24\cf1\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 +DDR DLL +\par }}}} +{\shp{\*\shpinst\shpleft5674\shptop12370\shpright11068\shpbottom14170\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz3\shplid1029{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}} +{\sp{\sn lTxid}{\sv 196608}}{\sp{\sn hspNext}{\sv 1029}}{\sp{\sn fFitShapeToText}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn lidRegroup}{\sv 4}}{\sp{\sn fLayoutInCell}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 0}}{\shptxt \ltrpar +\pard\plain \ltrpar\qc \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\pard\plain \ltrpar +\qc \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \af1\afs24 \ltrch \fs24\insrsid5645506 {\pict\wmetafile8\picw8995\pich2892 +\picwgoal5105\pichgoal1655 +0100090000034612000004006e0000000000050000000b0200000000050000000c024c01fe030500000004010d000000050000002e01180000000500000002010100000005000000090200000000050000000102ffffff00030000001e0008000000fa02060004000000daa12900040000002d010000050000001402400038 +03050000001302400029010500000014024000db010500000013026f00db0107000000fc020000daa129000000040000002d01010008000000fa0205000100000000000000040000002d01020004000000f00100000c00000024030400cf016a00db017e00e6016a00cf016a0008000000fa02060004000000daa129000400 +00002d010000050000001402400038030500000013026f003803040000002d01020004000000f00100000c000000240304002c036a0038037e0044036a002c036a0008000000fa0206000200000000000000040000002d0100000500000014024801fa03050000001302480103000500000014024801030005000000130203 +000300050000001402030003000500000013020300fa030500000014020300fa030500000013024801fa03050000001402a5002601050000001302a5009a00050000001402a5009a0005000000130221009a0005000000140221009a000500000013022100260105000000140221002601050000001302a500260107000000 +fc020000000000000000040000002d01030004000000f0010100040000002d01020004000000f00100006600000024033100c1004a00c1004a00bd004900b9004800bb004400bb004400be004500c1004600c1004600c3004500c4004400c4004400c3004300c2004200bf004200bf004200bd004100bc004000bb003e00ba +003c00ba003c00bb003900bd003700bf003600c2003500c2003500c6003600c9003700c7003b00c7003b00c5003a00c2003900c2003900c1003a00c0003b00c0003b00c1003c00c2003d00c4003d00c4003d00c8003f00c9004000ca004300ca004300c9004600c7004800c4004900c1004a00c1004a003000000024031600 +d2004a00d2004a00d0004a00ce004900ce004700ce004500ce003b00ce003b00ce003500d3003400d3003400d3003800d3004300d3004300d3004600d4004700d4004700d5004600d5004a00d5004a00d2004a00d2004a006e00000024033500e1004900e1004900df004a00dd004a00dd004a00db004a00d9004900d80047 +00d8004500d8004500d8004300da004200dc004100df004000df004000df004000df003f00df003f00df003e00de003e00de003e00dc003e00da004000d8003d00d8003d00db003b00df003a00df003a00e2003b00e4003d00e4003d00e4003f00e4004500e4004500e5004600e5004700e3004a00e3004a00e1004900e100 +4900e1004900dd004500dd004500dd004600de004700de004700df004600df004300df004300dd004400dd004500dd004500e10049001e00000024030d00f1004a00ed004a00e7003b00ec003b00ee003f00ee003f00ef004300ef004300ef004300f0003f00f1003b00f6003b00f1004a005800000024032a00ff004600ff +0046000101460003014500050148000501480002014a00ff004a00ff004a00fc004900fa004800f8004600f8004200f8004200f8003f00f9003d00fc003b00fe003a00fe003a0001013b0004013d0005013f00050143000501430005014400fd004400fd004400fd004500fe004600ff004600ff004600ff004600ff003e00 +ff003e00fd003e00fd004100000141000001410000013f00ff003e00ff003e00ff0046005400000024032800b6006d00b6006d00b2006d00af006b00af006b00ad006700ad006300ad006300ad006000ae005d00ae005d00b0005b00b2005a00b4005900b6005900b6005900b9005900bb005a00b9005e00b9005e00b6005d +00b6005d00b4005e00b4005e00b3005f00b3006200b3006200b3006600b4006800b4006800b5006900b6006900b6006900b8006900ba006800bc006b00bc006b00b9006d00b6006d00b6006d005400000024032800cc006500cc006500cb006900ca006b00c7006d00c5006d00c5006d00c2006d00c0006b00be006900be00 +6600be006600be006200c0006000c2005e00c5005e00c5005e00c8005e00ca006000cb006200cc006500cc006500cc006500c3006600c3006600c4006900c4006a00c5006a00c5006a00c6006a00c6006900c7006500c7006500c6006200c5006100c5006100c4006200c3006600c3006600cc0065003400000024031800d8 +006d00d8006400d8006400d7006200d7006200d7006200d5006300d5006d00d0006d00d0006400d0006400cf005f00d4005e00d4005e00d4005f00d4005f00d6005e00d9005e00d9005e00db005e00dc005f00dd006200dd006d00d8006d003a00000024031b00e7005e00ea005e00e9006100e7006100e7006700e7006700 +e7006900e9006a00e9006a00ea006a00ea006d00ea006d00e7006d00e7006d00e3006d00e2006c00e2006a00e2006100e1006100e1005e00e2005e00e2005e00e2005a00e7005a00e7005a00e7005e00e7005e002c00000024031400f7006200f7006200f5006200f5006200f4006200f3006300f3006d00ee006d00ee0064 +00ee006400ee005f00f2005e00f2005e00f3006000f3006000f4005e00f6005e00f6005e00f8005e00f7006200540000002403280007016500070165000601690005016b0003016d0000016d0000016d00fd006d00fb006b00fa006900f9006600f9006600fa006200fb006000fd005e0000015e0000015e0003015e000501 +600007016200070165000701650007016500ff006600ff006600ff006900ff006a0000016a0000016a0001016a00010169000201650002016500010162000001610000016100ff006200ff006600ff0066000701650030000000240316000f016d000f016d000d016d000c016c000b016a000b0168000b015e000b015e000b +015900100158001001580010015c0010016700100167001001690011016a0011016a0012016a0013016d0013016d000f016d000f016d001200000024030700cc009000c1009000c1007c00c6007c00c6008c00cd008c00cc0090005400000024032800dd008900dd008900dc008c00db008f00d9009000d6009100d6009100 +d3009000d1008f00d0008c00cf008900cf008900d0008600d1008300d3008200d6008100d6008100d9008200db008300dc008500dd008900dd008900dd008900d4008900d4008900d5008c00d5008d00d6008d00d6008d00d7008d00d7008c00d8008800d8008800d7008500d6008500d6008500d5008500d4008900d40089 +00dd0089005400000024032800ee008900ee008900ed008c00ec008f00e9009000e7009100e7009100e4009000e2008f00e0008c00e0008900e0008900e0008600e2008300e4008200e7008100e7008100ea008200ec008300ed008500ee008900ee008900ee008900e5008900e5008900e6008c00e6008d00e7008d00e700 +8d00e8008d00e8008c00e8008800e8008800e8008500e7008500e7008500e6008500e5008900e5008900ee0089005800000024032a00f9008100f9008100fd008200fe008400ff008600ff008800ff008800ff008c00fe008f00fc009000f9009100f9009100f7009000f7009000f7009300f7009600f2009700f2008700f2 +008700f1008200f6008100f6008100f6008300f6008300f7008200f9008100f9008100f9008100f7008600f7008c00f7008c00f8008d00f8008d00f9008c00fa008900fa008900fa008600f8008500f8008500f7008600f7008600f900810008000000fa0206000200000000000000040000002d0100000500000014026400 +6c0005000000130264008900040000002d01020004000000f00100000c0000002403040087006f009a0064008700590087006f004c0000002403240026006e002400680024006800230066002200650022006e001c006e001c0058002400580024005800280059002a005a002c005c002c005e002c005e002c0061002b0063 +002900640027006400270064002a0067002a0067002d006e0026006e0026006e0022005d002200610023006100230061002500610026005f0026005f0025005d0023005d0022005d0026006e00540000002403280039006e0039006e0036006d0032006b0032006b003000680030006300300063003000600031005d003100 +5d0033005b0035005900370058003a0058003a0058003d005800400059003d005d003d005d003a005c003a005c0038005d0038005d0036005f003600620036006200360066003700680037006800380069003a006a003a006a003c0069003e00680040006c0040006c003d006e0039006e0039006e00120000002403070050 +006e0044006e00440058004a0058004a0069005100690050006e002000000024030e0055006e00550058005b0058005b006e0055006e0055006e006100620067006e0060006e005b0062005f005800660058006100620055006e001e00000024030d00e4012c01e4013801e6013801e6013b01dd013b01dd013801e0013801 +e0013001e0013001dd013201dc013001e2012c01e4012c011600000024030900eb011d01eb013301ee013301ee013601e7013601e7011a01ee011a01ee011d01eb011d011600000024030900fb013301fb011d01f8011d01f8011a01ff011a01ff013601f8013601f8013301fb01330108000000fa02060002000000000000 +00040000002d010000050000001402b0006f01050000001302b0008d01040000002d01020004000000f00100000c000000240304008a01bc009d01b1008a01a5008a01bc000e000000240305004e01a5004e01ba004a01ba004a01a5004e01a5002a000000240313005801a5005c01ad005c01ad005e01b3005e01b3005e01 +ad005e01a5006201a5006201ba005d01ba005a01b2005a01b2005701ab005701ab005701b1005701ba005301ba005301a5005801a5001e00000024030d006c01b5006c01c1006e01c1006e01c4006501c4006501c1006801c1006801ba006801ba006501bb006401b9006901b5006c01b50008000000fa0206000200000000 +000000040000002d010000050000001402b0001602050000001302b0003002040000002d01020004000000f00100000c000000240304002d02bc004002b1002d02a5002d02bc006e000000240335005602af005602af005602b3005502b6005302b8005102ba005102ba004f02ba004d02bb004d02bb004902ba004602b700 +4602b7004402b4004302b0004302b0004402ac004502a9004602a7004802a5004802a5004d02a4004d02a4005102a5005402a7005502ab005602af005602af005602af004902aa004902aa004902ac004802b0004802b0004902b4004a02b6004a02b6004d02b7004d02b7004f02b7005002b5005102b3005102af005102af +005102aa005102aa004f02a9004d02a8004d02a8004b02a8004902aa004902aa005602af004000000024031e005d02a5005d02b3005d02b3005d02b5005d02b5005f02b6006002b7006002b7006302b6006402b4006402b4006402b2006402a5006802a5006802b3006802b3006802b7006802b7006702b8006602b9006402 +ba006102bb006102bb005c02ba005a02b8005a02b8005902b6005902b4005902a5005d02a50016000000240309007a02a5007902a8007402a8007402ba007002ba007002a8006a02a8006a02a5007a02a5001e00000024030d008202b5008202c1008402c1008402c4007b02c4007b02c1007e02c1007e02ba007e02ba007a +02bb007902b9007f02b5008202b50008000000fa0206000200000000000000040000002d010000050000001402e3001602050000001302e3009e01050000001402e3009e010500000013027f009e010500000014027f009e010500000013027f0016020500000014027f001602050000001302e3001602040000002d010200 +04000000f00100006600000024033100bb01a900bb01a900b701a900b301a700b501a300b501a300b801a500bb01a500bb01a500bd01a500be01a300be01a300bd01a200bb01a200b901a100b901a100b701a000b6019f00b5019d00b4019b00b4019b00b5019800b6019600b9019500bc019500bc019500c0019500c30197 +00c1019a00c1019a00be019900bc019900bc019900bb019900ba019a00ba019a00bb019b00bc019c00be019c00be019c00c2019e00c3019f00c301a200c301a200c301a500c101a700be01a900bb01a900bb01a9003000000024031600cc01a900cc01a900ca01a900c801a800c801a600c801a400c8019a00c8019a00c801 +9500cd019400cd019400cd019800cd01a300cd01a300cd01a500ce01a600ce01a600ce01a600cf01a900cf01a900cc01a900cc01a9006e00000024033500db01a800db01a800d901a900d701a900d701a900d501a900d301a800d201a600d201a400d201a400d201a300d401a100d601a000d801a000d801a000d901a000d9 +019f00d9019f00d9019e00d8019d00d8019d00d6019e00d4019f00d2019c00d2019c00d5019a00d9019a00d9019a00dc019a00de019c00de019c00de019f00de01a400de01a400de01a600df01a700dc01aa00dc01aa00db01a800db01a800db01a800d701a400d701a400d701a500d801a600d801a600d901a500d901a300 +d901a300d701a300d701a400d701a400db01a8001e00000024030d00ea01a900e601a900e1019a00e6019a00e7019e00e7019e00e801a300e901a300e901a300e9019e00eb019a00f0019a00ea01a9005800000024032a00f901a600f901a600fb01a500fd01a400ff01a700ff01a700fc01a900f901a900f901a900f601a9 +00f301a700f201a500f101a200f101a200f2019e00f3019c00f5019a00f8019a00f8019a00fb019a00fd019c00ff019e00ff01a200ff01a200ff01a300f701a300f701a300f701a500f801a600f901a600f901a600f901a600f8019d00f8019d00f7019e00f701a000fa01a000fa01a000fa019e00f8019d00f8019d00f901 +a6004800000024032200c101ca00c101ca00bf01cc00bb01cc00b401cc00b401b800bb01b800bb01b800bd01b800c001ba00c001ba00c101bb00c201bd00c301c200c301c200c301c600c101ca00c101ca00c101ca00bb01bd00b901bd00b901c800bb01c800bb01c800bc01c800bd01c700bd01c200bd01c200bd01bf00bd +01bd00bc01bd00bb01bd00bb01bd00c101ca005800000024032a00ce01c900ce01c900d001c900d201c800d401cb00d401cb00d101cc00ce01cd00ce01cd00ca01cc00c801cb00c701c800c601c500c601c500c701c200c801bf00ca01be00cd01bd00cd01bd00d001be00d201bf00d301c200d401c500d401c500d401c600 +cb01c600cb01c600cc01c800cc01c900ce01c900ce01c900ce01c900cd01c100cd01c100cc01c100cb01c300cf01c300cf01c300ce01c100cd01c100cd01c100ce01c9003000000024031600dc01cd00dc01cd00d901cc00d801cb00d801ca00d801c800d801bd00d801bd00d701b800dc01b700dc01b700dd01bb00dd01c6 +00dd01c600dd01c900de01c900de01c900de01c900df01cc00df01cc00dc01cd00dc01cd006e00000024033500ea01cb00ea01cb00e901cc00e701cd00e701cd00e401cc00e301cb00e201ca00e201c800e201c800e201c600e301c400e501c300e801c300e801c300e901c300e901c200e901c200e901c100e801c100e801 +c100e601c100e401c200e201bf00e201bf00e501be00e801bd00e801bd00ec01be00ee01c000ee01c000ee01c200ee01c700ee01c700ee01c900ef01ca00ec01cd00ec01cd00ea01cb00ea01cb00ea01cb00e601c800e601c800e701c900e801c900e801c900e901c900e901c600e901c600e701c700e601c800e601c800ea +01cb003400000024031800fb01cc00fb01cc00fa01cf00f901d100f701d300f401d300f201d000f201d000f501cf00f701cc00f601cc00f601cc00f501c900f101be00f601bd00f801c500f801c500f901c800f901c800f901c800fa01c300fc01bd000102bd00fb01cc0008000000fa020600020000000000000004000000 +2d010000050000001402e300da010500000013021801da010500000014020801cf01050000001302f200e501040000002d01020004000000f0010000480000002403220045033b0139033b0139033701390337013c0336013c033601400333014103310141033101400330013e032f013e032f013d0330013a03310138032f +0138032f013b032c013f032c013f032c0142032c0143032d0145032f0145033001450330014403330142033501420335013e0337013e0337013e0338013e033801400338014603380145033b0116000000240309004a031d014a0333014d0333014d0336014703360147031a014d031a014d031d014a031d01160000002403 +09005a0333015a031d0158031d0158031a015e031a015e03360158033601580333015a03330108000000fa0206000200000000000000040000002d010000050000001402b000cd02050000001302b000ea02040000002d01020004000000f00100000c00000024030400e702bc00fa02b100e702a500e702bc000e00000024 +030500a802a500a802ba00a402ba00a402a500a802a5002a00000024031300b102a500b502ad00b502ad00b802b300b802b300b702ad00b702a500bb02a500bb02ba00b702ba00b302b200b302b200b002ab00b002ab00b102b100b102ba00ad02ba00ad02a500b102a5004800000024032200cb02c400bf02c400bf02c100 +bf02c100c202bf00c202bf00c602bc00c702ba00c702ba00c602b900c402b800c402b800c302b900c102ba00be02b800be02b800c202b600c602b500c602b500c802b500ca02b600cb02b800cb02ba00cb02ba00ca02bc00c802be00c802be00c402c100c402c100c402c100c402c100c702c100cc02c100cb02c400080000 +00fa0206000200000000000000040000002d010000050000001402b0007403050000001302b0008d03040000002d01020004000000f00100000c000000240304008a03bc009d03b1008a03a5008a03bc006e00000024033500b303af00b303af00b303b300b203b600b103b800af03ba00af03ba00ad03ba00aa03bb00aa03 +bb00a603ba00a303b700a303b700a103b400a103b000a103b000a103ac00a203a900a403a700a603a500a603a500aa03a400aa03a400ae03a500b103a700b303ab00b303af00b303af00b303af00a703aa00a703aa00a603ac00a603b000a603b000a603b400a803b600a803b600aa03b700aa03b700ac03b700ad03b500ae +03b300ae03af00ae03af00ae03aa00ae03aa00ad03a900aa03a800aa03a800a803a800a703aa00a703aa00b303af004000000024031e00ba03a500ba03b300ba03b300bb03b500bb03b500bc03b600be03b700be03b700c003b600c103b400c103b400c103b200c103a500c603a500c603b300c603b300c503b700c503b700 +c403b800c303b900c103ba00be03bb00be03bb00ba03ba00b703b800b703b800b603b600b603b400b603a500ba03a5001600000024030900d703a500d603a800d103a800d103ba00cd03ba00cd03a800c803a800c803a500d703a5004800000024032200e403c400d803c400d803c100d803c100db03bf00db03bf00df03bc +00e003ba00e003ba00df03b900de03b800de03b800dc03b900da03ba00d703b800d703b800db03b600df03b500df03b500e103b500e303b600e403b800e403ba00e403ba00e303bc00e203be00e203be00de03c100de03c100dd03c100dd03c100e003c100e503c100e403c40008000000fa02060002000000000000000400 +00002d010000050000001402e3007303050000001302e300fb02050000001402e300fb020500000013027f00fb020500000014027f00fb020500000013027f0073030500000014027f007303050000001302e3007303040000002d01020004000000f001000066000000240331001803a9001803a9001403a9001103a70012 +03a3001203a3001503a5001803a5001803a5001a03a5001b03a3001b03a3001a03a2001903a2001603a1001603a1001403a00013039f0012039d0012039b0012039b0012039800140396001603950019039500190395001d039500210397001e039a001e039a001c0399001a0399001a0399001803990017039a0017039a00 +18039b0019039c001b039c001b039c001f039e0020039f002103a2002103a2002003a5001e03a7001c03a9001803a9001803a90030000000240316002903a9002903a9002703a9002603a8002503a6002503a40025039a0025039a00250395002a0394002a0394002a0398002a03a3002a03a3002a03a5002b03a6002b03a6 +002c03a6002d03a9002d03a9002903a9002903a9006e000000240335003803a8003803a8003603a9003403a9003403a9003203a9003003a8002f03a6002f03a4002f03a4003003a3003103a1003303a0003603a0003603a0003703a00037039f0037039f0036039e0035039d0035039d0033039e0031039f002f039c002f03 +9c0032039a0036039a0036039a003a039a003b039c003b039c003c039f003c03a4003c03a4003c03a6003d03a7003a03aa003a03aa003803a8003803a8003803a8003403a4003403a4003403a5003503a6003503a6003703a5003703a3003703a3003403a3003403a4003403a4003803a8001e00000024030d004803a90044 +03a9003e039a0043039a0045039e0045039e004603a3004603a3004603a30047039e0048039a004d039a004803a9005800000024032a005603a6005603a6005803a5005a03a4005c03a7005c03a7005903a9005603a9005603a9005303a9005103a7004f03a5004f03a2004f03a2004f039e0051039c0053039a0056039a00 +56039a0059039a005b039c005c039e005c03a2005c03a2005c03a3005403a3005403a3005403a5005503a6005603a6005603a6005603a60056039d0056039d0054039e005403a0005703a0005703a00057039e0056039d0056039d005603a60048000000240322001e03ca001e03ca001c03cc001903cc001103cc001103b8 +001803b8001803b8001b03b8001d03ba001d03ba001f03bb002003bd002003c2002003c2002003c6001e03ca001e03ca001e03ca001803bd001603bd001603c8001803c8001803c8001903c8001a03c7001b03c2001b03c2001b03bf001a03bd001903bd001803bd001803bd001e03ca005800000024032a002b03c9002b03 +c9002d03c9002f03c8003103cb003103cb002e03cc002b03cd002b03cd002803cc002503cb002403c8002403c5002403c5002403c2002503bf002703be002a03bd002a03bd002d03be002f03bf003103c2003103c5003103c5003103c6002903c6002903c6002903c8002a03c9002b03c9002b03c9002b03c9002a03c1002a +03c1002903c1002903c3002c03c3002c03c3002c03c1002a03c1002a03c1002b03c90030000000240316003903cd003903cd003703cc003503cb003503ca003503c8003503bd003503bd003503b8003a03b7003a03b7003a03bb003a03c6003a03c6003a03c9003b03c9003b03c9003c03c9003c03cc003c03cc003903cd00 +3903cd006e000000240335004803cb004803cb004603cc004403cd004403cd004203cc004003cb003f03ca003f03c8003f03c8003f03c6004103c4004303c3004603c3004603c3004603c3004603c2004603c2004603c1004503c1004503c1004303c1004103c2003f03bf003f03bf004203be004603bd004603bd004903be +004b03c0004b03c0004b03c2004b03c7004b03c7004c03c9004c03ca004a03cd004a03cd004803cb004803cb004803cb004403c8004403c8004403c9004503c9004503c9004603c9004603c6004603c6004403c7004403c8004403c8004803cb0034000000240318005903cc005903cc005803cf005603d1005403d3005103 +d3004f03d0004f03d0005303cf005403cc005303cc005303cc005203c9004e03be005303bd005603c5005603c5005603c8005603c8005603c8005703c3005903bd005e03bd005903cc0008000000fa0206000200000000000000040000002d010000050000001402e30037030500000013021801370305000000140208012c +03050000001302f2004203040000002d01020004000000f00100002a000000240313001803310118032d0113032d01120331010d03310113031e0118031e011e0331011803310118033101160326011603260115032401150324011503270114032a0117032a01160326011803310144000000240320002b032f012b032f01 +29033001260331011f0331011f031e0126031e0126031e0128031f012a031f012a031f012d0322012d0327012d0327012d032b012b032f012b032f012b032f01260322012403220124032d0126032d0126032d0127032d0127032c012803270128032701270323012703220126032201260322012b032f011c00000024030c +0035033001350330013503320133033401300336012e0334012e0334013003310130032e0130031e0135031e01350330012a00000024031300bc013101bb012d01b6012d01b5013101b0013101b6011e01bb011e01c1013101bc013101bc013101b9012601b9012601b9012401b9012401b8012701b7012a01ba012a01b901 +2601bc0131014400000024032000ce012f01ce012f01cc013001c9013101c3013101c3011e01c9011e01c9011e01cb011f01cd011f01cd011f01d0012201d1012701d1012701d0012b01ce012f01ce012f01ce012f01c9012201c7012201c7012d01c9012d01c9012d01ca012d01cb012c01cb012701cb012701cb012301ca +012201c9012201c9012201ce012f011c00000024030c00d8013001d8013001d8013201d7013401d3013601d1013401d1013401d3013101d3012e01d3011e01d8011e01d8013001040000002701ffff030000000000}}}{\rtlch \af1 \ltrch \insrsid5645506 +\par }}}} +{\shp{\*\shpinst\shpleft1281\shptop3312\shpright4428\shpbottom9000\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz2\shplid1030{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}} +{\sp{\sn lTxid}{\sv 327680}}{\sp{\sn dxTextLeft}{\sv 64008}}{\sp{\sn dyTextTop}{\sv 182880}}{\sp{\sn dxTextRight}{\sv 137160}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn hspNext}{\sv 1030}} +{\sp{\sn fFitShapeToText}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn lidRegroup}{\sv 1}}{\sp{\sn posrelh}{\sv 0}}{\sp{\sn posrelv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \ltrpar +\pard\plain \ltrpar\s21\ql \li50\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin50\itap0 \rtlch \ab\af1\afs22\alang1025 \ltrch \b\scaps\f1\fs22\expnd3\expndtw17\cf1\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch +\insrsid7564464 Features +\par }\pard\plain \ltrpar\qr \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 +\par {\listtext\pard\plain\ltrpar \s22 \rtlch \af46\afs18 \ltrch \f46\fs18\cf17\lang1024\langfe1024\noproof \loch\af46\dbch\af0\hich\f46 \'34\tab}}\pard\plain \ltrpar\s22\ql \fi-216\li216\ri0\widctlpar +\tqr\tx216\aspalpha\aspnum\faauto\ls38\adjustright\rin0\lin216\itap0 \rtlch \af1\afs19\alang1025 \ltrch \f1\fs19\cf17\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 Designed for high-speed DDR style interface applications. +\par }\pard\plain \ltrpar\qr \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 +\par {\listtext\pard\plain\ltrpar \s22 \rtlch \af46\afs18 \ltrch \f46\fs18\cf17\lang1024\langfe1024\noproof \loch\af46\dbch\af0\hich\f46 \'34\tab}}\pard\plain \ltrpar\s22\ql \fi-216\li216\ri0\widctlpar +\tqr\tx216\aspalpha\aspnum\faauto\ls38\adjustright\rin0\lin216\itap0 \rtlch \af1\afs19\alang1025 \ltrch \f1\fs19\cf17\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 Generates precise delays that can be programmed from 0 to 360 degrees of the reference period. +\par }\pard\plain \ltrpar\qr \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 +\par {\listtext\pard\plain\ltrpar \s22 \rtlch \af46\afs18 \ltrch \f46\fs18\cf17\lang1024\langfe1024\noproof \loch\af46\dbch\af0\hich\f46 \'34\tab}}\pard\plain \ltrpar\s22\ql \fi-216\li216\ri0\widctlpar +\tqr\tx216\aspalpha\aspnum\faauto\ls38\adjustright\rin0\lin216\itap0 \rtlch \af1\afs19\alang1025 \ltrch \f1\fs19\cf17\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 Delays multiple periodic or aperiodic signals independent of voltage and temperature. +\par }\pard\plain \ltrpar\qr \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 +\par {\listtext\pard\plain\ltrpar \s22 \rtlch \af46\afs18 \ltrch \f46\fs18\cf17\lang1024\langfe1024\noproof \loch\af46\dbch\af0\hich\f46 \'34\tab}}\pard\plain \ltrpar\s22\ql \fi-216\li216\ri0\widctlpar +\tqr\tx216\aspalpha\aspnum\faauto\ls38\adjustright\rin0\lin216\itap0 \rtlch \af1\afs19\alang1025 \ltrch \f1\fs19\cf17\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 Delivers optimal jitter \line performance over a wide \line frequency range. +\par }\pard\plain \ltrpar\qr \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 +\par {\listtext\pard\plain\ltrpar \s22 \rtlch \af46\afs18 \ltrch \f46\fs18\cf17\lang1024\langfe1024\noproof \loch\af46\dbch\af0\hich\f46 \'34\tab}}\pard\plain \ltrpar\s22\ql \fi-216\li216\ri0\widctlpar +\tqr\tx216\aspalpha\aspnum\faauto\ls38\adjustright\rin0\lin216\itap0 \rtlch \af1\afs19\alang1025 \ltrch \f1\fs19\cf17\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 Available in flexible form factors for easier integration. +\par }}}} +{\shp{\*\shpinst\shpleft5061\shptop3312\shpright11541\shpbottom11952\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz1\shplid1031{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}} +{\sp{\sn lTxid}{\sv 393216}}{\sp{\sn dxTextLeft}{\sv 274320}}{\sp{\sn dyTextTop}{\sv 182880}}{\sp{\sn dxTextRight}{\sv 137160}}{\sp{\sn dyTextBottom}{\sv 0}}{\sp{\sn hspNext}{\sv 1031}} +{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn lidRegroup}{\sv 1}}{\sp{\sn posrelh}{\sv 0}}{\sp{\sn posrelv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \ltrpar \pard\plain \ltrpar +\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs16\alang1025 \ltrch \f1\fs16\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \ab\af1\afs22 \ltrch +\cs16\b\scaps\fs22\expnd3\expndtw18\lang1024\langfe1024\noproof\insrsid7564464 Specifications +\par }\pard\plain \ltrpar\s24\ql \li0\ri0\sb40\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs17\alang1025 \ltrch \f1\fs17\cf1\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 +Part No. TCI-TN65GP-DDRHDLL +\par }\pard\plain \ltrpar\s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af1\afs20\alang1025 \ltrch \f1\fs20\cf1\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 +\par }\pard\plain \ltrpar\s19\ql \fi-3780\li3780\ri0\sl-210\slmult0\widctlpar\tx180\tx3780\tx4050\tx9180\aspalpha\aspnum\faauto\adjustright\rin0\lin3780\itap0 \rtlch \af1\afs16\alang1025 \ltrch +\f1\fs16\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 - Reference input frequency range\tab 220MHz - 1.1GHz +\par - Slave delay adjustment range\tab 0% - 50% of reference cycle +\par - Slave delay adjustment resolution\tab 0.83% of reference cycle +\par - Specified master adjustment setting (MADJ)\tab 120 +\par - Allowed master adjustment range (MADJ)\tab 76 - 256 +\par - Specified slave adjustment range (ADJ)\tab 0 - 60 +\par - Slave delay equation\tab ADJ[7:0]/MADJ[7:0]*Tref +\par - Number of slaves in cluster\tab 2 +\par - Pulse-width distortion (max)\tab }{\rtlch \af1 \ltrch \i\cf17\insrsid3022649\charrsid3022649 NDA Required}{\rtlch \af1 \ltrch \insrsid3022649 +\par - Slave delay DNL (max)\tab }{\rtlch \af1 \ltrch \i\cf17\insrsid3022649\charrsid3022649 NDA Required}{\rtlch \af1 \ltrch \insrsid3022649 +\par - Slave delay INL (max)\tab }{\rtlch \af1 \ltrch \i\cf17\insrsid3022649\charrsid3022649 NDA Required}{\rtlch \af1 \ltrch \insrsid3022649 +\par - Slave delay jitter (P-P) (max)\tab }{\rtlch \af1 \ltrch \i\cf17\insrsid3022649\charrsid3022649 NDA Required}{\rtlch \af1 \ltrch \insrsid3022649 +\par - Total slave timing uncertainty (max)\tab }{\rtlch \af1 \ltrch \i\cf17\insrsid3022649\charrsid3022649 NDA Required}{\rtlch \af1 \ltrch \insrsid3022649 +\par +\par - Power dissipation (nom)\tab }{\rtlch \af1 \ltrch \i\cf17\insrsid3022649\charrsid3022649 NDA Required}{\rtlch \af1 \ltrch \insrsid3022649 +\par - Reset pulse width (min)\tab 1\'b5s +\par - Lock time (min allowed)\tab }{\rtlch \af1 \ltrch \i\cf17\insrsid3022649\charrsid3022649 NDA Required}{\rtlch \af1 \ltrch \insrsid3022649 +\par - Area (master + 2 slaves, isolation) (max)\tab }{\rtlch \af1 \ltrch \i\cf17\insrsid3022649\charrsid3022649 NDA Required}{\rtlch \af1 \ltrch \insrsid3022649 +\par +\par - Added core supply package pins\tab 1 VDD and 1 VSS +\par - Low freq. supply noise est. (P-P) (max)\tab 10% VDD +\par - Low freq. sub. noise est. (P-P) (max)\tab 10% VDD +\par - Reference input jitter (period, P-P) (max)\tab }{\rtlch \af1 \ltrch \i\cf17\insrsid3022649\charrsid3022649 NDA Required}{\rtlch \af1 \ltrch \insrsid3022649 +\par - Reference input duty-cycle range\tab }{\rtlch \af1 \ltrch \i\cf17\insrsid3022649\charrsid3022649 NDA Required}{\rtlch \af1 \ltrch \insrsid3022649 +\par - High/low slave input pulse width (min)\tab }{\rtlch \af1 \ltrch \i\cf17\insrsid3022649\charrsid3022649 NDA Required}{\rtlch \af1 \ltrch \insrsid3022649 +\par - Slave inputs need not be periodic +\par - Reference input 10%-90% edge time (max)\tab 150ps +\par - Slave input 10%-90% edge time (max)\tab 150ps +\par - Slave output loading (max)\tab 200fF +\par +\par - Process technology\tab TSMC CLN65GP 65nm +\par - Supply voltage (nom, tol)\tab 1.0V, +/-10% +\par - Junction temperature (nom, min, max)\tab 70C, -40C, 125C +\par }\pard\plain \ltrpar\s17\ql \fi-72\li72\ri0\sb240\widctlpar\tx72\aspalpha\aspnum\faauto\adjustright\rin0\lin72\itap0 \rtlch \af1\afs13\alang1025 \ltrch \f1\fs13\lang1024\langfe1024\cgrid\noproof\langnp1033\langfenp1033 {\rtlch \af1 \ltrch \insrsid7564464 +*\tab Jitter numbers are worst-case estimates with 10% VDD supply and \line substrate noise\emdash actual results will be better. +\par }}}} +{\shp{\*\shpinst\shpleft0\shptop0\shpright11784\shpbottom15364\shpfhdr0\shpbxmargin\shpbxignore\shpbymargin\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz0\shplid1032{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}} +{\sp{\sn pib}{\sv {\pict\picscalex33\picscaley33\piccropl0\piccropr0\piccropt0\piccropb0\picw62336\pich81306\picwgoal35340\pichgoal46095\wmetafile8\bliptag463789102{\*\blipuid 1ba4dc2e9856bff4bcf39ce845fe6d2b} +010009000003d7b900000400e09e000000000400000003010800050000000b0230002e00050000000c02010c3409040000000601010007000000fc020000cccc +cc000000040000002d01000008000000fa0205000000000000000000040000002d0101000f00000038050100050082002801f2002801f2003601820036018200 +2801040000000601010007000000fc020000000000000000040000002d01020004000000f00100000f000000380501000500f2002801cf012801cf013601f200 +3601f2002801040000000601020007000000fc020000efa000000000040000002d01000004000000f001020017000000380501000900fe00e100f900e100f900 +f100f400f100f400e100ef00e100ef00dd00ff00dd00fe00e10004000000060102004c0000003805020018000b000d01f1000d01f1000b01ed000b01ed000901 +ea000801e9000701e9000701f1000301f1000301dd000a01dd000a01dd000d01dd001001df001001df001101e1001201e3001201e3001101e5001001e7000e01 +e8000e01e8001301f1000d01f1000901e1000701e1000701e5000901e5000901e5000c01e5000c01e3000c01e3000c01e1000901e1000901e100040000000601 +020041000000380501001e002401ef002401ef002201f0001e01f1001e01f1001a01f0001701ef001701ef001601ed001601ea001601dd001b01dd001b01ea00 +1b01ea001b01ec001b01ec001c01ed001e01ed001e01ed002001ec002001ec002101eb002101e9002101dd002601dd002601ea002601ea002501ed002401ef00 +2401ef0004000000060102001f000000380501000d002b01f1002b01dd003801dd003701e1003001e1003001e4003601e4003601e8003001e8003001ed003801 +ed003801f1002b01f1001c000000fb02dcff000000000000900100000000000002224d657461506c7573426f6c644361707300f4cd0c00000000312027403120 +2700040000002d010200040000000601020007000000fc020000000000000000040000002d01030004000000f0010000550000003805010028004d01f1004d01 +f1004a01f0004701ef004701ef004501eb004401e7004401e7004401e4004601e1004601e1004901de004b01dd004d01dd004d01dd005001dd005301df005101 +e1005101e1004e01e0004e01e0004b01e0004901e2004901e2004801e4004801e7004801e7004801ea004901ec004901ec004b01ee004e01ee004e01ee005001 +ee005201ed005301ef005301ef005101f0004d01f1004d01f10004000000060102000f0000003805010005005701f1005701dd005b01dd005b01f1005701f100 +04000000060102005c000000380502001d000e006c01f1006c01f1006a01ee006a01ee006601e9006601e9006501e8006501f1006101f1006101dd006701dd00 +6701dd006a01de006d01df006d01df006e01e0006f01e3006f01e3006e01e5006d01e7006c01e8006901e8006901e8006a01e9006a01e9006d01ed006d01ed00 +7001f1006c01f1006501e0006501e6006701e6006701e6006a01e5006a01e5006b01e4006b01e3006b01e3006b01e1006901e0006901e0006701e0006501e000 +0400000006010200550000003805010028007d01f1007d01f1007901f0007601ef007601ef007401eb007301e7007301e7007401e4007501e1007501e1007801 +de007a01dd007d01dd007d01dd008001dd008201df008001e1008001e1007d01e0007d01e0007a01e0007801e2007801e2007701e4007701e7007701e7007701 +ea007901ec007901ec007a01ee007d01ee007d01ee007f01ee008101ed008301ef008301ef008001f0007d01f1007d01f1000400000006010200430000003805 +01001f009301ef009301ef009101f1008e01f1008e01f1008901f0008701ee008701ee008601ec008601ea008601dd008a01dd008a01e9008a01e9008a01ec00 +8a01ec008b01ee008e01ee008e01ee009001ee009101ed009101ed009201ec009201ea009201dd009501dd009501ea009501ea009501ed009301ef009301ef00 +04000000060102000f0000003805010005009c01f1009c01dd009f01dd009f01f1009c01f100040000000601020017000000380501000900b201e000ad01e000 +ad01f100a901f100a901e000a401e000a401dd00b301dd00b201e000040000000601020071000000380501003600c101f000c101f000be01f100bc01f100bc01 +f100b801f100b501ef00b601ed00b601ed00b901ee00bc01ee00bc01ee00bf01ee00bf01ee00c001ed00c001eb00c001eb00bf01ea00bd01e900ba01e800ba01 +e800b801e700b601e500b601e500b501e300b501e300b601e000b701de00ba01dd00bd01dd00bd01dd00c001dd00c401df00c201e100c201e100bf01e000bd01 +e000bd01e000ba01e000b901e200b901e200ba01e400bc01e500bf01e500bf01e500c101e600c301e700c301e700c401e900c401eb00c401eb00c301ee00c101 +f000c101f00004000000060102000f000000380501000500cf01f100cf01dd00d201dd00d201f100cf01f10004000000060102002b000000380501001300e401 +f100df01e700df01e700dc01e200dc01e200dc01e700dc01f100d901f100d901dd00dd01dd00e201e700e201e700e501ec00e501ec00e401e600e401dd00e801 +dd00e801f100e401f100040000000601020055000000380501002800f601f100f601f100f201f000ef01ef00ef01ef00ed01eb00ed01e700ed01e700ed01e400 +ee01e100ee01e100f201de00f401dd00f601dd00f601dd00f901dd00fb01df00fa01e100fa01e100f601e000f601e000f301e000f101e200f101e200f101e400 +f001e700f001e700f101ea00f201ec00f201ec00f401ee00f601ee00f601ee00f801ee00fa01ed00fc01ef00fc01ef00f901f000f601f100f601f10004000000 +0601020007000000fc020000efa000000000040000002d01000004000000f001030008000000fa0205000000000000000000040000002d01030004000000f001 +010007000000fc020000efa000000000040000002d01010004000000f00100000d0000003805010004006a007f007e0089006a0094006a007f0008000000fa02 +05000000000000000000040000002d01000004000000f001030007000000fc020100000000000000040000002d01030004000000f00101000c00000025030400 +6a007f007e0089006a0094006a007f00040000000601020007000000fc020000000000000000040000002d01010004000000f001030008000000fa0205000000 +000000000000040000002d01030004000000f001000007000000fc020000000000000000040000002d01000004000000f00101001b000000380501000b008200 +ca00820074009000740090008300e5008300e5009100900091009000bc00e400bc00e400ca008200ca0008000000fa0205000000000000000000040000002d01 +010004000000f001030007000000fc020100000000000000040000002d01030004000000f00100001a00000025030b008200ca00820074009000740090008300 +e5008300e5009100900091009000bc00e400bc00e400ca008200ca00040000000601020007000000fc020000000000000000040000002d01000004000000f001 +030008000000fa0205000000000000000000040000002d01030004000000f001010007000000fc020000000000000000040000002d01010004000000f0010000 +170000003805010009005601ca00f300ca00f30083005601830056019100010191000101bc005601bc005601ca0008000000fa02050000000000000000000400 +00002d01000004000000f001030007000000fc020100000000000000040000002d01030004000000f001010016000000250309005601ca00f300ca00f3008300 +5601830056019100010191000101bc005601bc005601ca00040000000601020007000000fc020000000000000000040000002d01010004000000f00103000800 +0000fa0205000000000000000000040000002d01030004000000f001000007000000fc020000000000000000040000002d01000004000000f00101000f000000 +3805010005007301ca006401ca0064018300730183007301ca0008000000fa0205000000000000000000040000002d01010004000000f001030007000000fc02 +0100000000000000040000002d01030004000000f00100000e000000250305007301ca006401ca0064018300730183007301ca00040000000601020007000000 +fc020000000000000000040000002d01000004000000f001030008000000fa0205000000000000000000040000002d01030004000000f001010007000000fc02 +0000000000000000040000002d01010004000000f00100003a000000380502000a0010000002ed000002f200ff01f200ff01ed00fd01ed00fd01ec000202ec00 +0202ed000002ed000002ed000902f2000902ed000902ed000702f2000602f2000502ed000402ed000402f2000302f2000302ec000502ec000702f0000802ec00 +0a02ec000a02f2000902f20008000000fa0205000000000000000000040000002d01000004000000f001030007000000fc020100000000000000040000002d01 +030004000000f00101001800000025030a000002ed000002f200ff01f200ff01ed00fd01ed00fd01ec000202ec000202ed000002ed000002ed00240000002503 +10000902f2000902ed000902ed000702f2000602f2000502ed000402ed000402f2000302f2000302ec000502ec000702f0000802ec000a02ec000a02f2000902 +f200040000000601010007000000fc020000efa000000000040000002d01010004000000f00103000f000000380501000500cf0128010c0928010c093601cf01 +3601cf012801e09e0000430f2000cc0000002700b6020000000075002208bc01ee0028000000b60200002700000001001800000000007c3d0100130b0000130b +00000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef +02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00a +a4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7 +f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf1 +1dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126 +aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1 +f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f2 +38b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341 +b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bb +f449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef4 +51bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55a +c1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5 +f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f6 +6bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674 +cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bce +f77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f7 +85d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88c +d4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7 +f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf9 +9cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4 +ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0 +faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fa +b4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbc +e6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8 +fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfc +caebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1 +eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1 +fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fd +e0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6 +f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8 +feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafe +f3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8 +fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefe +fffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06 +a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6 +f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f0 +18a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120 +acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229af +f22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f2 +32b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33b +b6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9 +f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf4 +4dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455 +c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3 +f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f5 +67c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66e +c9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677cc +f677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff7 +7fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888 +d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6 +f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f8 +98d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99f +dbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7de +f9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1fa +afe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7 +e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7 +fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafb +c6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcce +edfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4ef +fcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fd +dcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2 +f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7 +fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9fe +eff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5 +fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfe +fffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00 +a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3 +f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f0 +12a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11c +aaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125ae +f125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f2 +2eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237 +b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7 +f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf3 +48bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450 +bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1 +f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f5 +61c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66a +c8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cb +f673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf7 +7bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782 +d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4 +f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f8 +93d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99b +daf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3dd +f9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0fa +abe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3 +e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5 +fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fb +c3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9 +ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0ee +fcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fd +d8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddf +f3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6 +fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8fe +ecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2 +fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fc +fff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfeff +fdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2 +ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f0 +0ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017 +a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11fac +f120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff2 +28aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231 +b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6 +f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f3 +43b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44c +bcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bf +f454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f5 +5dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565 +c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9 +f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf6 +76ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77e +cff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2 +f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f8 +8fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897 +d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edb +f99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9 +a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faae +e1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4 +fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fb +bee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5 +eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdec +fccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effc +d4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fdda +f1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4 +fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fe +e8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feef +f9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fb +fef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdff +fafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffff +ffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f0 +08a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011 +a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaa +f11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf1 +23adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22c +b1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4 +f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f3 +3eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346 +baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbd +f450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f4 +58c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560 +c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7 +f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf6 +72caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77a +cdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0 +f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f8 +8ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892 +d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9 +f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9 +a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaa +dffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2 +fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fb +bae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1 +e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8eb +fcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfc +d0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7 +f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3 +fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fd +e5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feeb +f8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fa +fef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfe +f7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffc +fefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef +03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00d +a5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8 +f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf1 +1facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127 +aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2 +f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f3 +39b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342 +b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbc +f44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff4 +53bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55c +c2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5 +f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f6 +6cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675 +cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcf +f77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f7 +86d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88e +d5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8 +f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf9 +9edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5 +def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1 +faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fa +b5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbd +e6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9 +fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfc +ccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3 +effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1 +fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fd +e1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7 +f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9 +feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfe +f4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffa +fdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffff +ffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07 +a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6 +f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f1 +19a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122 +adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0 +f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f2 +34b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33d +b7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345ba +f346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf4 +4ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457 +c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3 +f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f6 +68c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670 +caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cd +f779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f7 +81d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889 +d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6 +f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f9 +99d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1 +dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9df +faa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fa +b1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9 +e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7 +fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafc +c7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccf +edfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0 +fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fd +ddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4 +f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7 +feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fe +f1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6 +fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfe +fffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02 +a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4 +f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f0 +15a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11e +abf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126ae +f127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f2 +2fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238 +b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8 +f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf4 +49bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452 +bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1 +f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f5 +64c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66b +c8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cb +f674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef7 +7ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785 +d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4 +f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f8 +95d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99d +dbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4dd +f9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0fa +ace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4 +e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6 +fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fb +c3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccb +ecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1ee +fcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fd +daf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0 +f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6 +fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8fe +edf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3 +fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fd +fff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefeff +fefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2 +ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f0 +0fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118 +a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121ac +f121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f2 +2ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233 +b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6 +f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f3 +45baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44d +bdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0 +f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f5 +5ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567 +c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fca +f66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf6 +78cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780 +d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3 +f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f8 +90d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998 +d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dc +f9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffa +a8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0 +e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4 +fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fb +c0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6 +eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceed +fcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effc +d5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddc +f2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5 +fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7fe +eaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0 +f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fb +fef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfeff +fbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0 +ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f0 +0aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014 +a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caa +f11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef1 +26aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22e +b1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4 +f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f3 +3fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448 +bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451be +f451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f5 +5ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561 +c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8 +f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf6 +73cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77b +cef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1 +f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f8 +8cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894 +d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bda +f99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9 +a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faab +e0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3 +fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fb +bbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3 +e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaeb +fccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefc +d1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8 +f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3 +fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fd +e6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feec +f8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fa +fef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdff +f8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffe +fefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef +06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00e +a5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9 +f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf1 +20acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229 +aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3 +f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f3 +3bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343 +b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbc +f44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff4 +54bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55d +c3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6 +f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f6 +6ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677 +ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecf +f77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f7 +88d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88f +d5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8 +f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf9 +9fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7 +def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1 +faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fa +b7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbe +e7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5ea +fbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfc +cdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4 +effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2 +fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fd +e2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9 +f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9 +feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfe +f5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffa +fdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb +00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009 +a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7 +f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf1 +1caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123 +adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1 +f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f2 +35b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33e +b7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bb +f347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef4 +50bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459 +c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4 +f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f6 +69c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672 +caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acd +f77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f7 +82d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88b +d4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7 +f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f9 +9bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2 +dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadf +faabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fa +b2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbba +e5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8 +fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfc +c9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0 +eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0 +fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fd +def3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5 +f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8 +feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafe +f2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8 +fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfe +fffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03 +a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5 +f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f0 +16a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11f +acf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128af +f228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f2 +31b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33a +b6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8 +f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf4 +4bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453 +bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2 +f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f5 +65c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66d +c9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676cc +f676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff7 +7ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786 +d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5 +f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f8 +96d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99e +dbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6de +f9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1fa +aee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6 +e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6 +fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fb +c4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfccc +ecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3ef +fcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fd +daf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1 +f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6 +fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9fe +eff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4 +fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafd +fffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffff +acb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3 +f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f0 +11a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11a +aaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122ad +f123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f2 +2bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234 +b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7 +f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf3 +46baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44f +bdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1 +f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f5 +60c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668 +c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670ca +f670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf7 +79cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781 +d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3 +f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f8 +92d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99a +d9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dc +f9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffa +a9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1 +e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5 +fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fb +c1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8 +ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0ed +fcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fc +d7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fddd +f2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5 +fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7fe +ebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1 +fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fc +fef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfeff +fcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1 +ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f0 +0ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015 +a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eab +f11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef1 +27aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230 +b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5 +f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f3 +42b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449 +bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bf +f452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f5 +5bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564 +c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8 +f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf6 +75cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77d +cff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1 +f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f8 +8dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895 +d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddb +f99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9 +a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faad +e1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3 +fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fb +bde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3 +e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbec +fccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefc +d2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fdda +f1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4 +fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fd +e7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feee +f9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fb +fef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdff +f9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffe +ffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef +07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010 +a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9 +f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf1 +22adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22a +b0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3 +f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f3 +3cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345 +baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebd +f44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f4 +57c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55f +c3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6 +f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf6 +6fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778 +cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0 +f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f8 +89d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891 +d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9 +f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9 +a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8 +dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2 +fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fb +b8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0 +e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7ea +fcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfc +cfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6 +f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2 +fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fd +e3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feea +f7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9 +fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfe +f6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffc +fefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef +02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00a +a4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7 +f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf1 +1dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126 +aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1 +f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f2 +38b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341 +b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bb +f449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef4 +51bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55a +c1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5 +f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f6 +6bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674 +cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bce +f77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f7 +85d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88c +d4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7 +f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf9 +9cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4 +ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0 +faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fa +b4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbc +e6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8 +fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfc +caebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1 +eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1 +fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fd +e0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6 +f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8 +feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafe +f3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8 +fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefe +fffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06 +a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6 +f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f0 +18a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120 +acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229af +f22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f2 +32b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33b +b6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9 +f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf4 +4dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455 +c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3 +f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f5 +67c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66e +c9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677cc +f677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff7 +7fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888 +d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6 +f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f8 +98d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99f +dbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7de +f9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1fa +afe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7 +e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7 +fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafb +c6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcce +edfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4ef +fcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fd +dcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2 +f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7 +fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9fe +eff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5 +fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfe +fffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00 +a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3 +f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f0 +12a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11c +aaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125ae +f125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f2 +2eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237 +b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7 +f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf3 +48bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450 +bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1 +f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f5 +61c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66a +c8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cb +f673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf7 +7bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782 +d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4 +f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f8 +93d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99b +daf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3dd +f9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0fa +abe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3 +e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5 +fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fb +c3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9 +ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0ee +fcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fd +d8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddf +f3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6 +fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8fe +ecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2 +fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fc +fff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfeff +fdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2 +ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f0 +0ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017 +a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11fac +f120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff2 +28aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231 +b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6 +f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f3 +43b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44c +bcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bf +f454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f5 +5dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565 +c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9 +f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf6 +76ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77e +cff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2 +f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f8 +8fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897 +d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edb +f99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9 +a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faae +e1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4 +fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fb +bee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5 +eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdec +fccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effc +d4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fdda +f1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4 +fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fe +e8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feef +f9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fb +fef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdff +fafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffff +ffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f0 +08a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011 +a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaa +f11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf1 +23adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22c +b1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4 +f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f3 +3eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346 +baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbd +f450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f4 +58c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560 +c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7 +f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf6 +72caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77a +cdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0 +f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f8 +8ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892 +d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9 +f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9 +a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaa +dffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2 +fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fb +bae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1 +e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8eb +fcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfc +d0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7 +f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3 +fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fd +e5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feeb +f8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fa +fef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfe +f7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffc +fefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef +03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00d +a5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8 +f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf1 +1facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127 +aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2 +f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f3 +39b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342 +b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbc +f44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff4 +53bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55c +c2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5 +f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f6 +6cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675 +cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcf +f77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f7 +86d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88e +d5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8 +f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf9 +9edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5 +def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1 +faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fa +b5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbd +e6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9 +fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfc +ccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3 +effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1 +fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fd +e1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7 +f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9 +feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfe +f4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffa +fdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffff +ffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07 +a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6 +f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f1 +19a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122 +adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0 +f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f2 +34b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33d +b7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345ba +f346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf4 +4ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457 +c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3 +f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f6 +68c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670 +caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cd +f779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f7 +81d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889 +d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6 +f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f9 +99d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1 +dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9df +faa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fa +b1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9 +e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7 +fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafc +c7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccf +edfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0 +fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fd +ddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4 +f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7 +feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fe +f1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6 +fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfe +fffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02 +a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4 +f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f0 +15a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11e +abf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126ae +f127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f2 +2fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238 +b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8 +f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf4 +49bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452 +bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1 +f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f5 +64c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66b +c8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cb +f674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef7 +7ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785 +d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4 +f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f8 +95d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99d +dbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4dd +f9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0fa +ace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4 +e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6 +fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fb +c3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccb +ecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1ee +fcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fd +daf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0 +f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6 +fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8fe +edf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3 +fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fd +fff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefeff +fefffffeffffffffffffffffacb0ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2 +ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f0 +0fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118 +a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121ac +f121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f2 +2ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233 +b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6 +f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f3 +45baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44d +bdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0 +f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f5 +5ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567 +c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fca +f66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf6 +78cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780 +d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3 +f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f8 +90d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998 +d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dc +f9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffa +a8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0 +e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4 +fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fb +c0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6 +eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceed +fcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effc +d5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddc +f2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5 +fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7fe +eaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0 +f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fb +fef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfeff +fbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffff2e60ffffffbfe7fb00a0ef00a0ef01a0 +ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f0 +0aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014 +a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caa +f11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef1 +26aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22e +b1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4 +f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f3 +3fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448 +bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451be +f451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f5 +5ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561 +c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8 +f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf6 +73cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77b +cef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1 +f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f8 +8cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894 +d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bda +f99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9 +a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faab +e0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3 +fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fb +bbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3 +e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaeb +fccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefc +d1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8 +f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3 +fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fd +e6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feec +f8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fa +fef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdff +f8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffe +fefffefefffefefffefffffeffffffffffffffff2e60ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef +06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00e +a5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9 +f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf1 +20acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229 +aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3 +f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f3 +3bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343 +b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbc +f44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff4 +54bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55d +c3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6 +f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f6 +6ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677 +ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecf +f77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f7 +88d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88f +d5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8 +f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf9 +9fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7 +def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1 +faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fa +b7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbe +e7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5ea +fbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfc +cdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4 +effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2 +fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fd +e2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9 +f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9 +feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfe +f5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffa +fdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffff2e60ffffffbfe7fb +00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009 +a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7 +f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf1 +1caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123 +adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1 +f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f2 +35b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33e +b7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bb +f347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef4 +50bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459 +c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4 +f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f6 +69c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672 +caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acd +f77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f7 +82d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88b +d4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7 +f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f9 +9bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2 +dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadf +faabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fa +b2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbba +e5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8 +fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfc +c9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0 +eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0 +fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fd +def3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5 +f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8 +feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafe +f2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8 +fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfe +fffdfefffdfefffefefffefefffefefffefffffeffffffffffffffff2e60ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03 +a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5 +f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f0 +16a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11f +acf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128af +f228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f2 +31b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33a +b6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8 +f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf4 +4bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453 +bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2 +f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f5 +65c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66d +c9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676cc +f676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff7 +7ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786 +d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5 +f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f8 +96d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99e +dbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6de +f9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1fa +aee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6 +e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6 +fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fb +c4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfccc +ecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3ef +fcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fd +daf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1 +f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6 +fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9fe +eff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4 +fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafd +fffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffff +2e60ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3 +f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f0 +11a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11a +aaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122ad +f123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f2 +2bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234 +b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7 +f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf3 +46baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44f +bdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1 +f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f5 +60c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668 +c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670ca +f670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf7 +79cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781 +d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3 +f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f8 +92d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99a +d9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dc +f9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffa +a9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1 +e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5 +fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fb +c1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8 +ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0ed +fcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fc +d7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fddd +f2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5 +fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7fe +ebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1 +fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fc +fef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfeff +fcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffff2e60ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1 +ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f0 +0ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015 +a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eab +f11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef1 +27aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230 +b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5 +f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f3 +42b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449 +bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bf +f452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f5 +5bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564 +c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8 +f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf6 +75cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77d +cff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1 +f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f8 +8dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895 +d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddb +f99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9 +a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faad +e1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3 +fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fb +bde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3 +e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbec +fccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefc +d2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fdda +f1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4 +fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fd +e7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feee +f9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fb +fef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdff +f9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffe +ffffffffffffffff2e60ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef +07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010 +a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9 +f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf1 +22adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22a +b0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3 +f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f3 +3cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345 +baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebd +f44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f4 +57c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55f +c3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6 +f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf6 +6fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778 +cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0 +f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f8 +89d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891 +d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9 +f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9 +a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8 +dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2 +fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fb +b8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0 +e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7ea +fcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfc +cfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6 +f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2 +fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fd +e3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feea +f7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9 +fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfe +f6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffc +fefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffff2e60ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef +02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00a +a4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7 +f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf1 +1dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126 +aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1 +f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f2 +38b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341 +b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bb +f449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef4 +51bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55a +c1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5 +f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f6 +6bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674 +cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bce +f77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f7 +85d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88c +d4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7 +f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf9 +9cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4 +ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0 +faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fa +b4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbc +e6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8 +fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfc +caebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1 +eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1 +fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fd +e0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6 +f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8 +feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafe +f3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8 +fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefe +fffefefffefffffeffffffffffffffff2e60ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06 +a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6 +f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f0 +18a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120 +acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229af +f22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f2 +32b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33b +b6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9 +f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf4 +4dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455 +c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3 +f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f5 +67c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66e +c9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677cc +f677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff7 +7fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888 +d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6 +f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f8 +98d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99f +dbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7de +f9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1fa +afe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7 +e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7 +fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafb +c6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcce +edfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4ef +fcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fd +dcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2 +f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7 +fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9fe +eff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5 +fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfe +fffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffff2e60ffffffbfe7fb00a0ef00 +a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3 +f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f00ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f0 +12a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11c +aaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11facf120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125ae +f125aef126aef126aef126aef127aef127aef127aef128aff228aff228aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f2 +2eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237 +b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7 +f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f343b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf3 +48bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44cbcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450 +bef451bef451bef451bef452bff452bff452bff453bff453bff454bff454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1 +f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f55dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f5 +61c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66a +c8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cb +f673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf676ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf7 +7bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77ecff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782 +d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4 +f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f88fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f8 +93d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99b +daf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edbf99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3dd +f9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0fa +abe0faabe0faace0faace0faace0faade1faade1faade1faaee1faaee1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3 +e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5 +fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fbbee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fb +c3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9 +ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdecfccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0ee +fcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effcd4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fd +d8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddf +f3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6 +fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fee8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8fe +ecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2 +fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fc +fff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfeff +fdfefffefefffefefffefefffefffffeffffffffffffffff2e60ffffffbfe7fb00a0ef00a0ef01a0ef01a0ef02a1ef02a1ef02a1ef03a1ef03a1ef03a1ef05a2 +ef05a2ef06a2ef06a2ef06a2ef07a3ef07a3ef07a3ef08a3f008a3f008a3f009a3f009a3f00aa4f00aa4f00aa4f00ca4f00ca4f00ca4f00da5f00da5f00ea5f0 +0ea5f00ea5f00fa6f00fa6f00fa6f010a6f010a6f010a6f011a6f011a6f012a7f012a7f012a7f014a7f014a7f014a7f015a8f015a8f016a8f016a8f016a8f017 +a9f017a9f017a9f018a9f118a9f118a9f119a9f119a9f11aaaf11aaaf11aaaf11caaf11caaf11caaf11dabf11dabf11eabf11eabf11eabf11facf11facf11fac +f120acf120acf120acf121acf121acf122adf122adf122adf123adf123adf123adf125aef125aef126aef126aef126aef127aef127aef127aef128aff228aff2 +28aff229aff229aff22ab0f22ab0f22ab0f22bb0f22bb0f22bb0f22cb1f22cb1f22eb1f22eb1f22eb1f22fb1f22fb1f22fb1f230b2f230b2f230b2f231b2f231 +b2f232b3f232b3f232b3f233b3f233b3f233b3f234b3f234b3f235b4f235b4f235b4f237b4f237b4f237b4f238b5f238b5f238b5f239b5f339b5f33ab6f33ab6 +f33ab6f33bb6f33bb6f33bb6f33cb6f33cb6f33db7f33db7f33db7f33eb7f33eb7f33eb7f33fb8f33fb8f341b8f341b8f341b8f342b8f342b8f342b8f343b9f3 +43b9f343b9f344b9f344b9f345baf345baf345baf346baf346baf346baf347bbf347bbf348bbf448bbf448bbf449bbf449bbf449bbf44bbcf44bbcf44bbcf44c +bcf44cbcf44dbdf44dbdf44dbdf44ebdf44ebdf44ebdf44fbdf44fbdf450bef450bef450bef451bef451bef451bef452bff452bff452bff453bff453bff454bf +f454bff454bff455c0f455c0f455c0f457c0f457c0f458c1f458c1f458c1f459c1f559c1f559c1f55ac1f55ac1f55ac1f55bc2f55bc2f55cc2f55cc2f55cc2f5 +5dc3f55dc3f55dc3f55ec3f55ec3f55fc3f55fc3f55fc3f560c4f560c4f560c4f561c4f561c4f561c4f563c5f563c5f564c5f564c5f564c5f565c6f565c6f565 +c6f566c6f566c6f567c6f567c6f567c6f568c7f668c7f668c7f669c7f669c7f669c7f66ac8f66ac8f66bc8f66bc8f66bc8f66cc8f66cc8f66cc8f66dc9f66dc9 +f66ec9f66ec9f66ec9f66fcaf66fcaf66fcaf670caf670caf670caf672caf672caf673cbf673cbf673cbf674cbf674cbf674cbf675cbf675cbf676ccf676ccf6 +76ccf677ccf677ccf677ccf678cdf778cdf778cdf779cdf779cdf77acdf77acdf77acdf77bcef77bcef77bcef77ccef77ccef77dcff77dcff77dcff77ecff77e +cff77ecff77fcff77fcff780d0f780d0f780d0f781d0f781d0f781d0f782d1f782d1f782d1f783d1f783d1f785d1f785d1f785d1f786d2f786d2f786d2f787d2 +f787d2f788d3f888d3f888d3f889d3f889d3f889d3f88ad3f88ad3f88ad3f88bd4f88bd4f88cd4f88cd4f88cd4f88dd4f88dd4f88dd4f88ed5f88ed5f88fd5f8 +8fd5f88fd5f890d6f890d6f890d6f891d6f891d6f891d6f892d6f892d6f893d7f893d7f893d7f894d7f894d7f894d7f895d8f895d8f896d8f896d8f896d8f897 +d8f897d8f897d8f898d9f998d9f998d9f999d9f999d9f99ad9f99ad9f99ad9f99bdaf99bdaf99bdaf99cdaf99cdaf99ddbf99ddbf99ddbf99edbf99edbf99edb +f99fdbf99fdbf99fdbf9a0dcf9a0dcf9a1dcf9a1dcf9a1dcf9a2dcf9a2dcf9a2dcf9a3ddf9a3ddf9a4ddf9a4ddf9a4ddf9a5def9a5def9a5def9a6def9a6def9 +a6def9a7def9a7def9a8dffaa8dffaa8dffaa9dffaa9dffaa9dffaaadffaaadffaabe0faabe0faabe0faace0faace0faace0faade1faade1faade1faaee1faae +e1faafe1faafe1faafe1fab0e2fab0e2fab0e2fab1e2fab1e2fab2e2fab2e2fab2e2fab3e3fab3e3fab3e3fab4e3fab4e3fab5e3fab5e3fab5e3fab6e4fab6e4 +fab6e4fab7e4fab7e4fab7e4fab8e5fbb8e5fbb9e5fbb9e5fbb9e5fbbae5fbbae5fbbae5fbbbe6fbbbe6fbbce6fbbce6fbbce6fbbde6fbbde6fbbde6fbbee7fb +bee7fbbee7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc4e9fbc4e9fbc4e9fbc5 +eafbc5eafbc6eafbc6eafbc6eafbc7eafcc7eafcc7eafcc8ebfcc8ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccbecfccbecfccbecfcccecfcccecfccdec +fccdecfccdecfcceedfcceedfcceedfccfedfccfedfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1eefcd2eefcd2eefcd3effcd3effcd3effc +d4effcd4effcd4effcd5effcd5effcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd8f0fdd8f0fdd8f0fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fdda +f1fddbf2fddbf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fddef3fddef3fddef3fddff3fddff3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4 +fde2f4fde2f4fde2f4fde3f5fde3f5fde3f5fde4f5fde4f5fde5f5fde5f5fde5f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fee7f6fee8f6fee8f6fe +e8f6fee9f7fee9f7fee9f7feeaf7feeaf7feebf7feebf7feebf7feebf8feebf8feebf8feecf8feecf8feecf8feedf8feedf8feeef9feeef9feeef9feeff9feef +f9feeff9feeff9feeff9fef0f9fef0f9fef0f9fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef5fb +fef5fbfef5fbfef5fbfef5fbfef6fcfef6fcfef6fcfef7fcfef7fcfef7fcfef8fcfff8fcfff8fdfff8fdfff8fdfff9fdfff9fdfff9fdfffafdfffafdfffafdff +fafdfffafdfffbfefffbfefffbfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffefefffefefffefefffefffffeffffffffffffffff2e60ffff +ffeff9febfe7fbbfe7fbbfe7fbbfe7fbc0e7fbc0e7fbc0e7fbc0e7fbc0e7fbc0e7fbc0e8fbc0e8fbc1e8fbc1e8fbc1e8fbc1e8fbc1e8fbc1e8fbc1e8fbc1e8fb +c1e8fbc1e8fbc1e8fbc2e8fbc2e8fbc2e8fbc2e8fbc2e8fbc2e8fbc2e8fbc2e8fbc3e8fbc3e8fbc3e8fbc3e9fbc3e9fbc3e9fbc3e9fbc3e9fbc3e9fbc3e9fbc3 +e9fbc4e9fbc4e9fbc4e9fbc4e9fbc4e9fbc4e9fbc4e9fbc4e9fbc5e9fbc5e9fbc5e9fbc5e9fbc5e9fbc5e9fbc5e9fbc5e9fbc5e9fbc5e9fbc5e9fbc6eafbc6ea +fbc6eafbc6eafbc6eafbc6eafbc6eafbc6eafbc7eafbc7eafbc7eafbc7eafbc7eafbc7eafbc7eafbc7eafbc7eafbc7eafbc7eafbc8eafbc8eafbc8eafbc8eafb +c8eafbc8eafbc8ebfbc8ebfbc9ebfbc9ebfbc9ebfbc9ebfbc9ebfbc9ebfbc9ebfcc9ebfcc9ebfcc9ebfcc9ebfccaebfccaebfccaebfccaebfccaebfccaebfcca +ebfccaebfccbebfccbebfccbebfccbebfccbebfccbebfccbecfccbecfccbecfccbecfccbecfcccecfcccecfcccecfcccecfcccecfcccecfcccecfcccecfcccec +fcccecfcccecfccdecfccdecfccdecfccdecfccdecfccdecfccdecfccdecfcceedfcceedfcceedfcceedfcceedfcceedfcceedfcceedfcceedfcceedfcceedfc +cfedfccfedfccfedfccfedfccfedfccfedfccfedfccfedfcd0edfcd0edfcd0edfcd0edfcd0edfcd0edfcd0edfcd0edfcd0eefcd0eefcd0eefcd1eefcd1eefcd1 +eefcd1eefcd1eefcd1eefcd1eefcd1eefcd1eefcd1eefcd1eefcd2eefcd2eefcd2eefcd2eefcd2eefcd2eefcd2eefcd2eefcd3eefcd3eefcd3eefcd3eefcd3ee +fcd3effcd3effcd3effcd3effcd3effcd3effcd4effcd4effcd4effcd4effcd4effcd4effcd4effcd4effcd4effcd4effcd4effcd5effcd5effcd5effcd5effc +d5effcd5effcd5effcd5effcd6effcd6effcd6effcd6f0fcd6f0fcd6f0fcd6f0fcd6f0fcd6f0fcd6f0fcd6f0fcd7f0fcd7f0fcd7f0fcd7f0fcd7f0fcd7f0fcd7 +f0fcd7f0fcd7f0fcd7f0fcd7f0fcd8f0fcd8f0fcd8f0fcd8f0fcd8f0fcd8f1fcd8f1fcd8f1fcd9f1fcd9f1fcd9f1fcd9f1fcd9f1fcd9f1fdd9f1fdd9f1fdd9f1 +fdd9f1fdd9f1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddaf1fddbf1fddbf1fddbf1fddbf2fddbf2fddbf2fddbf2fddbf2fddbf2fd +dcf2fddcf2fddcf2fddcf2fddcf2fddcf2fddcf2fddcf2fddcf2fddcf2fdddf2fdddf2fdddf2fdddf2fdddf2fdddf2fdddf2fdddf2fdddf2fdddf2fdddf2fdde +f2fddef2fddef2fddef3fddef3fddef3fddef3fddef3fddef3fddef3fddef3fddff3fddff3fddff3fddff3fddff3fddff3fddff3fddff3fddff3fddff3fddff3 +fde0f3fde0f3fde0f3fde0f3fde0f3fde0f3fde0f3fde0f3fde1f4fde1f4fde1f4fde1f4fde1f4fde1f4fde1f4fde1f4fde1f4fde1f4fde1f4fde2f4fde2f4fd +e2f4fde2f4fde2f4fde2f4fde2f4fde2f4fde2f4fde2f4fde2f4fde3f4fde3f4fde3f4fde3f4fde3f4fde3f5fde3f5fde3f5fde3f5fde3f5fde3f5fde4f5fde4 +f5fde4f5fde4f5fde4f5fde4f5fde4f5fde4f5fde4f5fde4f5fde5f5fde5f5fde5f5fde5f5fde5f5fde5f5fde5f5fde5f5fde5f5fde5f5fde5f5fde6f5fde6f5 +fde6f5fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde6f6fde7f6fde7f6fde7f6fde7f6fde7f6fde7f6fde7f6fde7f6fde7f6fde7f6fde7f6fde8f6fd +e8f6fde8f6fde8f6fde8f6fde8f6fde8f6fde8f6fde8f7fde8f7fde8f7fde9f7fde9f7fde9f7fde9f7fde9f7fde9f7fee9f7fee9f7fee9f7fee9f7fee9f7feea +f7feeaf7feeaf7feeaf7feeaf7feeaf7feeaf7feeaf7feeaf7feeaf7feeaf7feebf7feebf7feebf7feebf7feebf7feebf8feebf8feebf8feebf8feebf8feecf8 +feecf8feecf8feecf8feecf8feecf8feecf8feecf8feecf8feecf8feecf8feedf8feedf8feedf8feedf8feedf8feedf8feedf8feedf8feedf8feedf8feedf8fe +eef8feeef8feeef8feeef9feeef9feeef9feeef9feeef9feeef9feeef9feeef9feeff9feeff9feeff9feeff9feeff9feeff9feeff9feeff9feeff9feeff9feef +f9fef0f9fef0f9fef0f9fef0f9fef0f9fef0f9fef0f9fef0f9fef0f9fef0f9fef0f9fef0fafef0fafef1fafef1fafef1fafef1fafef1fafef1fafef1fafef1fa +fef1fafef1fafef1fafef2fafef2fafef2fafef2fafef2fafef2fafef2fafef2fafef2fafef2fafef2fafef3fafef3fafef3fafef3fafef3fafef3fafef3fafe +f3fafef3fbfef3fbfef3fbfef3fbfef3fbfef3fbfef4fbfef4fbfef4fbfef4fbfef4fbfef4fbfef4fbfef4fbfef4fbfef4fbfef5fbfef5fbfef5fbfef5fbfef5 +fbfef5fbfef5fbfef5fbfef5fbfef5fbfef5fbfef6fbfef6fbfef6fbfef6fbfef6fbfef6fbfef6fcfef6fcfef6fcfef6fcfef6fcfef6fcfef6fcfef6fcfef7fc +fef7fcfef7fcfef7fcfef7fcfef7fcfef7fcfef7fcfef7fcfef7fcfef7fcfef7fcfef7fcfef8fcfef8fcfef8fcfef8fcfef8fcfef8fcfef8fcfef8fcfef8fcfe +f8fcfef8fcfef9fdfef9fdfef9fdfef9fdfef9fdfef9fdfef9fdfff9fdfff9fdfff9fdfff9fdfff9fdfff9fdfff9fdfffafdfffafdfffafdfffafdfffafdfffa +fdfffafdfffafdfffafdfffafdfffafdfffafdfffafdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfdfffbfefffbfefffbfe +fffcfefffcfefffcfefffcfefffcfefffcfefffcfefffcfefffcfefffcfefffcfefffcfefffcfefffcfefffcfefffcfefffdfefffdfefffdfefffdfefffdfeff +fdfefffdfefffdfefffdfefffdfefffdfefffdfefffdfefffdfefffefefffefefffefefffefefffefefffefffffefffffefffffefffffefffffefffffefffffe +fffffefffffefffffeffffffffffffffffffffffffffffffffffffffffffffff2e60ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff2e60040000000601020008000000fa0205000000000000000000040000002d01030004000000f001000007000000fc020000efa00000000004000000 +2d01000004000000f00101000d0000003805010004008200e10182000f02a300f7018200e10108000000fa0205000000000000000000040000002d0101000400 +0000f001030007000000fc020100000000000000040000002d01030004000000f00100000c000000250304008200e10182000f02a300f7018200e10104000000 +0601010007000000fc020000efa000000000040000002d01000004000000f00103000f000000380501000500f20017077603170776034b09f2004b09f2001707 +07000000fc020100000000000000040000002d01030004000000f001000008000000fa02000008000800efa00000040000002d01000004000000f00101009700 +00003805010049000909ff080909ff080809060907090e090609140903091b0900092109fc082709f8082d09f4083209ef083709e9083b09e3083e09dd084109 +d6084409cf084609c8084709c1084709410447094104470939044709320446092b044409250441091f043e0919043b09130437090e04320909042d0905042709 +02042109fe031b09fc031409fa030e09f9030609f903ff08f903d702f903d702f903d002fa03c802fc03c202fe03bb020204b5020504af020904a9020e04a402 +13049f0219049b021f049802250495022b0492023204900239048f0241048f02c1088f02c1088f02c8088f02cf089002d6089202dd089502e3089802e9089b02 +ef089f02f408a402f808a902fc08af020009b5020309bb020609c2020709c8020809d0020909d7020909ff08040000000601020007000000fc02000000000000 +0000040000002d01010004000000f001030008000000fa0205000000000000000000040000002d01030004000000f00100003f000000380501001d00c2058a0b +be058a0bbc05800bbc05800bbb057a0bbb057a0bbb057a0bba05800bb7058a0bb4058a0baf05760bb205760bb405800bb405800bb505870bb605870bb605870b +b705810bb905760bbc05760bbf05810bbf05810bc005870bc005870bc005870bc105800bc305760bc605760bc2058a0b04000000060102003f00000038050100 +1d00e0058a0bdc058a0bda05800bda05800bd9057a0bd9057a0bd9057a0bd705800bd5058a0bd2058a0bcd05760bd005760bd205800bd205800bd305870bd305 +870bd305870bd505810bd705760bda05760bdd05810bdd05810bde05870bde05870bde05870bdf05800be105760be405760be0058a0b04000000060102003f00 +0000380501001d00fd058a0bfa058a0bf805800bf805800bf7057a0bf6057a0bf6057a0bf505800bf3058a0bf0058a0beb05760bee05760bf005800bf005800b +f105870bf105870bf105870bf305810bf505760bf805760bfb05810bfb05810bfc05870bfc05870bfc05870bfd05800bff05760b0206760bfd058a0b04000000 +0601020021000000380501000e000d06880b0d06880b0c068a0b0b068b0b0b068b0b09068a0b0806880b0806880b0906870b0b06860b0b06860b0c06870b0d06 +880b0d06880b0400000006010200170000003805010009002206780b1c06780b1c068a0b1a068a0b1a06780b1406780b1406760b2206760b2206780b04000000 +0601020060000000380502001d00100034068a0b34068a0b3306870b3306870b2f06820b2f06820b2d06810b2d068a0b2a068a0b2a06760b3006760b3006760b +3306760b3506770b3506770b3606790b37067b0b37067b0b36067e0b35067f0b3306810b3106810b3106810b3306830b3306830b3506850b3506850b38068a0b +34068a0b3206780b3206780b2f06780b2d06780b2d067f0b2f067f0b2f067f0b31067f0b33067e0b33067e0b33067d0b34067b0b34067b0b3306790b3206780b +3206780b040000000601020041000000380501001e004d06880b4d06880b4b068a0b47068b0b47068b0b43068a0b4106880b4106880b4006840b4006760b4306 +760b4306830b4306830b4306850b4406870b4406870b4506880b4706880b4706880b4906880b4b06870b4b06870b4b06830b4b06760b4e06760b4e06840b4e06 +840b4e06870b4d06880b4d06880b04000000060102001f000000380501000d0059068a0b5906760b6406760b6306780b5c06780b5c067e0b62067e0b6206810b +5c06810b5c06880b6406880b64068a0b59068a0b04000000060102005700000038050100290074068b0b74068b0b71068a0b6e06870b6e06870b6c06840b6c06 +800b6c06800b6c067d0b6d067a0b6d067a0b6e06780b7006760b7206760b7506750b7506750b7706760b7a06770b7806790b7806790b7606780b7506780b7506 +780b7206780b70067a0b70067a0b6f067d0b6f06800b6f06800b7006850b7006850b7206870b7506880b7506880b7706880b7906870b7a06890b7a06890b7706 +8a0b74068b0b74068b0b04000000060102000f00000038050100050085068a0b8506760b8206760b82068a0b85068a0b04000000060102006000000038050200 +1d0010009a068a0b9a068a0b9906870b9906870b9506820b9506820b9306810b93068a0b90068a0b9006760b9606760b9606760b9906760b9b06770b9b06770b +9c06790b9d067b0b9d067b0b9d067e0b9c067f0b9a06810b9706810b9706810b9906830b9906830b9b06850b9b06850b9e068a0b9a068a0b9806780b9806780b +9606780b9306780b93067f0b95067f0b95067f0b98067f0b99067e0b99067e0b9a067d0b9a067b0b9a067b0b9906790b9806780b9806780b0400000006010200 +57000000380501002900ae068b0bae068b0bab068a0ba806870ba806870ba606840ba606800ba606800ba6067d0ba7067a0ba7067a0ba806780baa06760bac06 +760bae06750bae06750bb106760bb306770bb206790bb206790bb006780bae06780bae06780bac06780baa067a0baa067a0ba9067d0ba906800ba906800ba906 +850ba906850bac06870baf06880baf06880bb106880bb206870bb406890bb406890bb1068a0bae068b0bae068b0b040000000601020041000000380501001e00 +c906880bc906880bc7068a0bc3068b0bc3068b0bbf068a0bbd06880bbd06880bbc06840bbc06760bbf06760bbf06830bbf06830bbf06850bc006870bc006870b +c106880bc306880bc306880bc506880bc606870bc606870bc706830bc706760bca06760bca06840bca06840bca06870bc906880bc906880b0400000006010200 +0f000000380501000500d5068a0bd506760bd806760bd8068a0bd5068a0b040000000601020017000000380501000900ee06780be806780be8068a0be5068a0b +e506780be006780be006760bee06760bee06780b040000000601020067000000380501003100fb068b0bfb068b0bf7068a0bf406890bf506870bf506870bf806 +880bfb06880bfb06880bfe06870bff06860bff06850bff06850bfe06830bfc06810bfa06810bfa06810bf6067f0bf5067d0bf5067b0bf5067b0bf506790bf706 +770bf906760bfc06750bfc06750bff06760b0207770b0107790b0107790bfe06780bfc06780bfc06780bf906780bf8067b0bf8067b0bf9067d0bfb067e0bfe06 +7e0bfe067e0b0107800b0207820b0307840b0307840b0207860b0107890bfe068a0bfb068b0bfb068b0b040000000601020021000000380501000e000d07860b +0d07860b0c07870b0b07880b0b07880b0c078a0b0d078b0b0d078b0b0f078a0b0f07880b0f07880b0f07870b0d07860b0d07860b040000000601020057000000 +3805010029002607890b2407870b2407870b2307880b2007880b2007880b1d07870b1b07850b1b07850b1b07800b1b07800b1b077d0b1c077a0b1c077a0b1d07 +780b2007780b2007780b2207780b2407790b2507770b2507770b2307760b2007750b2007750b1e07760b1c07760b1a07780b19077a0b19077a0b18077d0b1707 +800b1707800b1807840b1a07870b1a07870b1c078a0b20078b0b20078b0b23078a0b2607890b2607890b04000000060102005e00000038050200160016003507 +8b0b35078b0b31078a0b2f07880b2d07840b2c07800b2c07800b2d077b0b2f07780b3107760b3507750b3507750b3907760b3b07780b3d077c0b3d07800b3d07 +800b3d07840b3b07880b38078a0b35078b0b35078b0b3507770b3507770b3207780b31077a0b30077c0b3007800b3007800b3007830b3107860b3207880b3507 +880b3507880b3707880b3907870b3a07840b3a07800b3a07800b3a077d0b39077a0b3707780b3507770b3507770b04000000060102003f000000380501001d00 +57078a0b56077c0b56077c0b5607790b5607790b5607790b55077c0b51078a0b4f078a0b4b077d0b4b077d0b4a07790b4a07790b4a07790b4a077d0b49078a0b +46078a0b4807760b4c07760b4f07820b4f07820b5007860b5007860b5007860b5107820b5507760b5907760b5a078a0b57078a0b04000000060102000f000000 +38050100050065078f0b63078f0b6b07730b6d07730b65078f0b04000000060102004c00000038050200130010008107810b8107810b8007820b7d07820b7a07 +820b7a078a0b77078a0b7707760b7c07760b7c07760b7f07760b8107770b8107770b8307790b84077c0b84077c0b83077f0b8107810b8107810b8007790b8007 +790b7e07780b7c07780b7a07780b7a07800b7d07800b7d07800b7f07800b80077f0b80077f0b81077c0b81077c0b80077a0b8007790b8007790b040000000601 +020060000000380502001d00100096078a0b96078a0b9407870b9407870b9107820b9107820b8f07810b8f078a0b8c078a0b8c07760b9207760b9207760b9507 +760b9707770b9707770b9807790b99077b0b99077b0b98077e0b97077f0b9507810b9307810b9307810b9507830b9507830b9707850b9707850b9a078a0b9607 +8a0b9407780b9407780b9107780b8f07780b8f077f0b91077f0b91077f0b93077f0b95077e0b95077e0b95077d0b96077b0b96077b0b9507790b9407780b9407 +780b04000000060102005e0000003805020016001600aa078b0baa078b0ba6078a0ba307880ba207840ba107800ba107800ba2077b0ba307780ba607760ba907 +750ba907750bad07760bb007780bb1077c0bb207800bb207800bb107840bb007880bad078a0baa078b0baa078b0ba907770ba907770ba707780ba5077a0ba507 +7c0ba407800ba407800ba507830ba507860ba707880baa07880baa07880bac07880bad07870bae07840baf07800baf07800bae077d0bad077a0bac07780ba907 +770ba907770b04000000060102004a0000003805020011001100c707870bc707870bc5078a0bc1078a0bbb078a0bbb07760bc007760bc007760bc507760bc807 +790bc807790bc9077c0bca07800bca07800bc907840bc707870bc707870bc5077a0bc5077a0bc307780bc107780bbe07780bbe07880bc107880bc107880bc407 +870bc507860bc507860bc607830bc707800bc707800bc6077d0bc5077a0bc5077a0b040000000601020041000000380501001e00e007880be007880bde078a0b +da078b0bda078b0bd6078a0bd407880bd407880bd307840bd307760bd607760bd607830bd607830bd607850bd707870bd707870bd807880bda07880bda07880b +dc07880bde07870bde07870bde07830bde07760be107760be107840be107840be107870be007880be007880b040000000601020057000000380501002900f307 +8b0bf3078b0bef078a0bed07870bed07870beb07840bea07800bea07800beb077d0bec077a0bec077a0bed07780bef07760bf107760bf307750bf307750bf607 +760bf807770bf707790bf707790bf507780bf307780bf307780bf107780bef077a0bef077a0bee077d0bee07800bee07800bee07850bee07850bf007870bf307 +880bf307880bf607880bf707870bf907890bf907890bf6078a0bf3078b0bf3078b0b0400000006010200170000003805010009000d08760bff07760bff07780b +0408780b04088a0b07088a0b0708780b0d08780b0d08760b04000000060102000f00000038050100050012088e0b12088d0b21088d0b21088e0b12088e0b0400 +0000060102003f000000380501001d003a088a0b39087c0b39087c0b3908790b3808790b3808790b38087c0b34088a0b31088a0b2d087d0b2d087d0b2c08790b +2c08790b2c08790b2c087d0b2b088a0b28088a0b2a08760b2e08760b3208820b3208820b3208860b3208860b3208860b3308820b3708760b3b08760b3d088a0b +3a088a0b040000000601020028000000380502000900080052088a0b5008840b4908840b47088a0b44088a0b4a08760b4e08760b55088a0b52088a0b4c08780b +4c08780b4c08780b4908820b4f08820b4f08820b4c08780b4c08780b0400000006010200170000003805010009006708780b6108780b61088a0b5f088a0b5f08 +780b5908780b5908760b6708760b6708780b040000000601020060000000380502001d00100079088a0b79088a0b7808870b7808870b7408820b7408820b7208 +810b72088a0b6f088a0b6f08760b7508760b7508760b7808760b7a08770b7a08770b7b08790b7c087b0b7c087b0b7b087e0b7a087f0b7908810b7608810b7608 +810b7808830b7808830b7a08850b7a08850b7d088a0b79088a0b7708780b7708780b7408780b7208780b72087f0b74087f0b74087f0b76087f0b78087e0b7808 +7e0b78087d0b79087b0b79087b0b7808790b7708780b7708780b04000000060102000f00000038050100050086088a0b8608760b8908760b89088a0b86088a0b +04000000060102001f000000380501000d009d088a0b9908810b94088a0b91088a0b97087f0b9108760b9508760b99087d0b9c08760ba008760b9a087f0ba108 +8a0b9d088a0b040000000601020021000000380501000e00aa08860baa08860ba808870ba808880ba808880ba8088a0baa088b0baa088b0bab088a0bac08880b +ac08880bab08870baa08860baa08860b04000000060102001f000000380501000d00c0088a0bc008800bb808800bb8088a0bb6088a0bb608760bb808760bb808 +7e0bc0087e0bc008760bc308760bc3088a0bc0088a0b040000000601020017000000380501000900d908780bd408780bd4088a0bd1088a0bd108780bcc08780b +cc08760bd908760bd908780b04000000060102003f000000380501001d00f2088a0bf1087c0bf1087c0bf008790bf008790bf008790bf0087c0bec088a0be908 +8a0be5087d0be5087d0be408790be408790be408790be4087d0be3088a0be0088a0be208760be608760bea08820bea08820bea08860bea08860bea08860beb08 +820bef08760bf308760bf5088a0bf2088a0b0400000006010200130000003805010007000909880b0109880b0109760bfe08760bfe088a0b09098a0b0909880b +0400000006010200170000003805010009009000780b8b00780b8b008a0b88008a0b8800780b8300780b8300760b9000760b9000780b04000000060102006000 +0000380502001d001000a3008a0ba3008a0ba100870ba100870b9d00820b9d00820b9b00810b9b008a0b99008a0b9900760b9e00760b9e00760ba100760ba300 +770ba300770ba500790ba5007b0ba5007b0ba5007e0ba4007f0ba200810ba000810ba000810ba100830ba100830ba300850ba300850ba6008a0ba3008a0ba000 +780ba000780b9e00780b9b00780b9b007f0b9d007f0b9d007f0ba0007f0ba1007e0ba1007e0ba2007d0ba2007b0ba2007b0ba200790ba000780ba000780b0400 +00000601020041000000380501001e00bc00880bbc00880bb9008a0bb6008b0bb6008b0bb2008a0baf00880baf00880baf00840baf00760bb200760bb200830b +b200830bb200850bb200870bb200870bb400880bb600880bb600880bb800880bb900870bb900870bba00830bba00760bbd00760bbd00840bbd00840bbd00870b +bc00880bbc00880b04000000060102001f000000380501000d00c7008a0bc700760bd200760bd200780bca00780bca007e0bd1007e0bd100810bca00810bca00 +880bd300880bd3008a0bc7008a0b040000000601020057000000380501002900ef008b0bef008b0beb008a0be800870be800870be600840be600800be600800b +e6007d0be7007a0be7007a0be900780bea00760bec00760bef00750bef00750bf100760bf400770bf200790bf200790bf100780bef00780bef00780bec00780b +ea007a0bea007a0be9007d0be900800be900800bea00850bea00850bec00870bef00880bef00880bf100880bf300870bf400890bf400890bf1008a0bef008b0b +ef008b0b04000000060102000f000000380501000500fd008a0bfd00760bff00760bff008a0bfd008a0b040000000601020060000000380502001d0010001501 +8a0b15018a0b1301870b1301870b0f01820b0f01820b0d01810b0d018a0b0b018a0b0b01760b1001760b1001760b1301760b1501770b1501770b1601790b1701 +7b0b17017b0b17017e0b16017f0b1401810b1201810b1201810b1301830b1301830b1501850b1501850b18018a0b15018a0b1201780b1201780b1001780b0d01 +780b0d017f0b0f017f0b0f017f0b12017f0b13017e0b13017e0b14017d0b14017b0b14017b0b1401790b1201780b1201780b0400000006010200570000003805 +0100290028018b0b28018b0b25018a0b2201870b2201870b2001840b2001800b2001800b20017d0b21017a0b21017a0b2201780b2401760b2601760b2801750b +2801750b2b01760b2d01770b2c01790b2c01790b2a01780b2801780b2801780b2601780b24017a0b24017a0b23017d0b2301800b2301800b2401850b2401850b +2601870b2901880b2901880b2b01880b2c01870b2e01890b2e01890b2b018a0b28018b0b28018b0b040000000601020041000000380501001e004301880b4301 +880b41018a0b3d018b0b3d018b0b39018a0b3701880b3701880b3601840b3601760b3901760b3901830b3901830b3901850b3a01870b3a01870b3b01880b3d01 +880b3d01880b3f01880b4001870b4001870b4101830b4101760b4401760b4401840b4401840b4401870b4301880b4301880b04000000060102000f0000003805 +010005004f018a0b4f01760b5201760b52018a0b4f018a0b0400000006010200170000003805010009006801780b6201780b62018a0b60018a0b6001780b5a01 +780b5a01760b6801760b6801780b04000000060102006700000038050100310075018b0b75018b0b71018a0b6e01890b6f01870b6f01870b7201880b7501880b +7501880b7801870b7901860b7901850b7901850b7901830b7601810b7401810b7401810b70017f0b6f017d0b6f017b0b6f017b0b6f01790b7101770b7301760b +7601750b7601750b7901760b7c01770b7b01790b7b01790b7801780b7601780b7601780b7301780b72017b0b72017b0b73017d0b75017e0b78017e0b78017e0b +7b01800b7c01820b7d01840b7d01840b7c01860b7b01890b78018a0b75018b0b75018b0b04000000060102002d00000038050100140086018f0b85018d0b8501 +8d0b86018c0b87018b0b87018b0b86018a0b86018a0b85018a0b8501880b8501880b8501870b8701860b8701860b8901870b8901890b8901890b88018c0b8601 +8f0b86018f0b04000000060102000f0000003805010005009f018a0b9f01760ba101760ba1018a0b9f018a0b04000000060102002f000000380501001500b701 +8a0bb2017f0bb2017f0baf017a0baf017a0baf017a0baf017f0baf018a0bad018a0bad01760bb001760bb601810bb601810bb801860bb801860bb801860bb801 +800bb801760bba01760bba018a0bb7018a0b040000000601020057000000380501002900cc018b0bcc018b0bc8018a0bc601870bc601870bc401840bc301800b +c301800bc4017d0bc5017a0bc5017a0bc601780bc801760bca01760bcc01750bcc01750bcf01760bd101770bd001790bd001790bce01780bcc01780bcc01780b +c901780bc8017a0bc8017a0bc7017d0bc701800bc701800bc701850bc701850bc901870bcc01880bcc01880bce01880bd001870bd201890bd201890bcf018a0b +cc018b0bcc018b0b040000000601020021000000380501000e00dd01880bdd01880bdd018a0bdb018b0bdb018b0bda018a0bd901880bd901880bda01870bdb01 +860bdb01860bdd01870bdd01880bdd01880b040000000601020057000000380501002900fa018b0bfa018b0bf6018a0bf401870bf401870bf201840bf101800b +f101800bf2017d0bf3017a0bf3017a0bf401780bf601760bf801760bfa01750bfa01750bfd01760bff01770bfe01790bfe01790bfc01780bfa01780bfa01780b +f701780bf6017a0bf6017a0bf5017d0bf501800bf501800bf501850bf501850bf701870bfa01880bfa01880bfd01880bfe01870b0002890b0002890bfd018a0b +fa018b0bfa018b0b04000000060102005e00000038050200160016000f028b0b0f028b0b0b028a0b0902880b0702840b0602800b0602800b07027b0b0902780b +0b02760b0f02750b0f02750b1302760b1502780b17027c0b1702800b1702800b1702840b1502880b12028a0b0f028b0b0f028b0b0f02770b0f02770b0c02780b +0b027a0b0a027c0b0a02800b0a02800b0a02830b0b02860b0c02880b0f02880b0f02880b1102880b1302870b1402840b1402800b1402800b14027d0b13027a0b +1102780b0f02770b0f02770b04000000060102002f0000003805010015002b028a0b26027f0b26027f0b23027a0b23027a0b23027a0b23027f0b23028a0b2102 +8a0b2102760b2402760b2a02810b2a02810b2c02860b2c02860b2c02860b2c02800b2c02760b2e02760b2e028a0b2b028a0b04000000060102001b0000003805 +01000b004402780b3c02780b3c027e0b42027e0b4202810b3c02810b3c028a0b39028a0b3902760b4402760b4402780b04000000060102000f00000038050100 +05004c028a0b4c02760b4f02760b4f028a0b4c028a0b04000000060102004c00000038050200120011006602870b6602870b64028a0b5f028a0b5a028a0b5a02 +760b5f02760b5f02760b6302760b6502770b6702790b6702790b68027c0b6902800b6902800b6802840b6602870b6602870b64027a0b64027a0b6202780b5f02 +780b5d02780b5d02880b5f02880b5f02880b6202870b6402860b6402860b6502830b6502800b6502800b65027d0b64027a0b64027a0b04000000060102001f00 +0000380501000d0072028a0b7202760b7d02760b7d02780b7502780b75027e0b7c027e0b7c02810b7502810b7502880b7e02880b7e028a0b72028a0b04000000 +060102002f00000038050100150092028a0b8c027f0b8c027f0b8a027a0b8a027a0b8a027a0b8a027f0b8a028a0b87028a0b8702760b8a02760b9002810b9002 +810b9202860b9202860b9202860b9202800b9202760b9502760b95028a0b92028a0b040000000601020017000000380501000900ab02780ba502780ba5028a0b +a2028a0ba202780b9d02780b9d02760bab02760bab02780b04000000060102000f000000380501000500b3028a0bb302760bb602760bb6028a0bb3028a0b0400 +000006010200280000003805020009000800cc028a0bca02840bc302840bc1028a0bbe028a0bc502760bc802760bcf028a0bcc028a0bc602780bc602780bc602 +780bc302820bc902820bc902820bc602780bc602780b040000000601020013000000380501000700e1028a0bd7028a0bd702760bd902760bd902880be102880b +e1028a0b04000000060102000f000000380501000500f5028a0bf502760bf802760bf8028a0bf5028a0b04000000060102002f0000003805010015000d038a0b +08037f0b08037f0b05037a0b05037a0b05037a0b05037f0b05038a0b03038a0b0303760b0603760b0c03810b0c03810b0e03860b0e03860b0e03860b0e03800b +0e03760b1003760b10038a0b0d038a0b04000000060102001b000000380501000b002603780b1e03780b1e037e0b24037e0b2403810b1e03810b1e038a0b1b03 +8a0b1b03760b2603760b2603780b04000000060102005e000000380502001600160035038b0b35038b0b31038a0b2f03880b2d03840b2d03800b2d03800b2d03 +7b0b2f03780b3203760b3503750b3503750b3903760b3c03780b3d037c0b3e03800b3e03800b3d03840b3b03880b39038a0b35038b0b35038b0b3503770b3503 +770b3303780b31037a0b30037c0b3003800b3003800b3003830b3103860b3303880b3503880b3503880b3703880b3903870b3a03840b3a03800b3a03800b3a03 +7d0b39037a0b3803780b3503770b3503770b040000000601020060000000380502001d00100051038a0b51038a0b4f03870b4f03870b4c03820b4c03820b4a03 +810b4a038a0b47038a0b4703760b4d03760b4d03760b5003760b5203770b5203770b5303790b54037b0b54037b0b53037e0b52037f0b5003810b4e03810b4e03 +810b5003830b5003830b5203850b5203850b55038a0b51038a0b4f03780b4f03780b4c03780b4a03780b4a037f0b4c037f0b4c037f0b4e037f0b50037e0b5003 +7e0b50037d0b51037b0b51037b0b5003790b4f03780b4f03780b04000000060102003f000000380501001d006e038a0b6d037c0b6d037c0b6d03790b6d03790b +6d03790b6c037c0b68038a0b66038a0b62037d0b62037d0b6103790b6103790b6103790b61037d0b60038a0b5d038a0b5f03760b6303760b6603820b6603820b +6703860b6703860b6703860b6803820b6b03760b6f03760b71038a0b6e038a0b040000000601020028000000380502000900080086038a0b8403840b7d03840b +7b038a0b78038a0b7f03760b8303760b89038a0b86038a0b8103780b8103780b8103780b7e03820b8303820b8303820b8103780b8103780b0400000006010200 +170000003805010009009b03780b9603780b96038a0b93038a0b9303780b8e03780b8e03760b9c03760b9b03780b04000000060102000f000000380501000500 +a7038a0ba703760ba403760ba4038a0ba7038a0b04000000060102005e0000003805020016001600b9038b0bb9038b0bb5038a0bb203880bb103840bb003800b +b003800bb1037b0bb203780bb503760bb803750bb803750bbc03760bbf03780bc0037c0bc103800bc103800bc003840bbf03880bbc038a0bb9038b0bb9038b0b +b803770bb803770bb603780bb4037a0bb4037c0bb303800bb303800bb403830bb403860bb603880bb903880bb903880bbb03880bbc03870bbd03840bbe03800b +be03800bbd037d0bbc037a0bbb03780bb803770bb803770b04000000060102002f000000380501001500d5038a0bcf037f0bcf037f0bcd037a0bcd037a0bcd03 +7a0bcd037f0bcd038a0bca038a0bca03760bce03760bd303810bd303810bd503860bd503860bd503860bd503800bd503760bd803760bd8038a0bd5038a0b0400 +00000601010007000000fc020000facf8a000000040000002d01000004000000f0010100f50000003805010078006009f90b6009ea0b0c09ea0b0c09a50baa08 +a50baa08ea0b6c08ea0b6c08a50b0b08a50b0b08ea0bcd07ea0bcd07a50b6c07a50b6c07ea0b2e07ea0b2e07a50bcd06a50bcd06ea0b8f06ea0b8f06a50b2d06 +a50b2d06ea0bf005ea0bf005a50b8e05a50b8e05ea0b5005ea0b5005a50bef04a50bef04ea0bb104ea0bb104a50b5004a50b5004ea0b1204ea0b1204a50bb103 +a50bb103ea0b7303ea0b7303a50b1103a50b1103ea0bc202ea0bc202ea0bc202a50b6002a50b6002ea0b2302ea0b2302a50bc101a50bc101ea0b8301ea0b8301 +a50b2201a50b2201ea0be400ea0be400a50b8300a50b8300ea0b3000ea0b3000f90b9500f90b9500b40bd200b40bd200f90b3401f90b3401b40b7201b40b7201 +b40b7201f90b7201f90bd301f90bd301b40b1102b40b1102f90b7202f90b7202b40bb002b40bb002f90b2303f90b2303b40b6103b40b6103f90bc203f90bc203 +b40b0004b40b0004f90b6204f90b6204b40b9f04b40b9f04f90b0105f90b0105b40b3f05b40b3f05f90ba005f90ba005b40bde05b40bde05f90b3f06f90b3f06 +b40b7d06b40b7d06f90bde06f90bde06b40b1c07b40b1c07f90b7e07f90b7e07b40bbb07b40bbb07f90b1d08f90b1d08b40b5b08b40b5b08f90bbc08f90bbc08b40bfa08b40bfa08f90b6009f90b04000000f001000004000000f001020004000000f00103000300000000000000} +}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn posh}{\sv 2}}{\sp{\sn posrelh}{\sv 0}}{\sp{\sn posv}{\sv 2}}{\sp{\sn posrelv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}{\shprslt\par\pard +\ql \li0\ri0\widctlpar\phmrg\posxc\posyc\dxfrtext180\dfrmtxtx180\dfrmtxty0\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \par}} +\par }} diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/abi3623.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/abi3623.rtf new file mode 100644 index 000000000..a47161a2f --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/abi3623.rtf @@ -0,0 +1,7 @@ +{\rtf1 +{\stylesheet +{\s2\ls1\sbasedon0 heading 2;} +} +\s2 +foo\par +} diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/abi4817.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/abi4817.rtf new file mode 100644 index 000000000..58d88f5ff --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/abi4817.rtf @@ -0,0 +1,6 @@ +{\rtf1 +\super +{ +\par +\par } +} diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/fdo49666.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/fdo49666.rtf new file mode 100644 index 000000000..5a673ca04 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/fdo49666.rtf @@ -0,0 +1,13 @@ +{\rtf1 \ansi \ansicpg1252 \uc1 \deff1 \deflang1033 \deflangfe1033 +{\shp +{\*\shpinst \shpleft144 \shptop490 \shpright2049 \shpbottom1840 \shpfhdr1 \shpbxcolumn \shpbypara \shpwr4 \shpwrk2 \shpfblwtxt1 \shpz0 \shplid2053 +{\sp +{\sn shapeType} +{\sv 75} +} +{\shptxt foo +} +} +} +\par +} diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/fdo64656.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/fdo64656.rtf new file mode 100644 index 000000000..1c815c4e7 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/fdo64656.rtf @@ -0,0 +1,10 @@ +{\rtf +{\*\listtable +{\list \listtemplateid3794224 \listhybrid +{\listlevel \levelnfc0 \levelnfcn0 \leveljc0 \leveljcn0 \levelstartat1 \levelfollow0 \levelspace0 \levelindent0 \levellegal0 \levelnorestart0 +{\levelnumbers ;} +} +{\listname ;} +\listid258183 } +} +} diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/i74153.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/i74153.rtf new file mode 100644 index 000000000..7e81865ad --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/i74153.rtf @@ -0,0 +1,8 @@ +{\rtf1 +{\*\revtbl +{Unknown;} +{TAMUS HSC Mac User;} +} +{\revised\super\revauth1\revdttm-1501115711 hello} +\par +} diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/i84172.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/i84172.rtf new file mode 100644 index 000000000..ce6616e5e --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/i84172.rtf @@ -0,0 +1,11 @@ +{\rtf1 +{\*\revtbl +{Unknown;} +} +\par \pard\plain +{ +{\revised\revauth1\revdttm-1497631607 foo +{bar} +} +} +} diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/parser-state-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/parser-state-1.rtf Binary files differnew file mode 100644 index 000000000..3fe4b2876 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/parser-state-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/rhbz960019.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/rhbz960019.rtf new file mode 100644 index 000000000..869aa339b --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/rhbz960019.rtf @@ -0,0 +1,12 @@ +{\rtf1 +{\*\listtable +{\list\listtemplateid-723955400\listsimple{\listlevel\leveljc\levelfollow0\levelspace0\levelindent0\levelstartat1{\leveltext\'03\'00. ;}{\levelnumbers\'01;}\f0 }{\listname ;}\listid-1155484576} +} +{\*\listoverridetable +{\*\listoverride{\listid-1155484576\listoverridecount0\ls1}} +} +\pard\plain \pvpg\phpg\posx1143\posy4743\absw9615\absh-2922\dfrmtxtx72\dfrmtxty72\nowrap +Hello\par +\pard\plain\par +} + diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-101375-minimized.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-101375-minimized.rtf new file mode 100644 index 000000000..c3ffebc2b --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-101375-minimized.rtf @@ -0,0 +1,62 @@ +{\rtf1\ansi\deff0\adeflang1025
+{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset128 Times New Roman;}{\f4\froman\fprq2\fcharset128 Arial Narrow;}{\f5\froman\fprq0\fcharset128 Arial Narrow;}{\f6\froman\fprq2\fcharset128 Symbol;}{\f7\froman\fprq0\fcharset128 Symbol;}{\f8\froman\fprq2\fcharset128 Wingdings;}{\f9\froman\fprq0\fcharset128 Wingdings;}{\f10\froman\fprq0\fcharset128 Times New Roman;}{\f11\fnil\fprq2\fcharset0 Microsoft YaHei;}{\f12\fnil\fprq2\fcharset128 SimSun;}{\f13\fnil\fprq2\fcharset128 Times New Roman (Arabic);}{\f14\fnil\fprq0\fcharset128 Times New Roman (Arabic);}{\f15\fnil\fprq2\fcharset128 Times New Roman;}{\f16\fnil\fprq0\fcharset128 Times New Roman;}{\f17\fnil\fprq2\fcharset0 Mangal;}{\f18\fnil\fprq0\fcharset128 Mangal;}{\f19\fnil\fprq2\fcharset128 Mangal;}{\f20\fnil\fprq2\fcharset128 Cambria Math;}{\f21\fnil\fprq0\fcharset128 Cambria Math;}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red128\green128\blue128;}
+{\stylesheet{\s0\snext0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040 Predefinito;}
+{\s15\sbasedon0\snext16\sb240\sa120\keepn\hich\af11\dbch\af17\afs28\loch\f2\fs28 Intestazione;}
+{\s16\sbasedon0\snext16\sb0\sa120 Corpo testo;}
+{\s17\sbasedon16\snext17\sb0\sa120\dbch\af18 Elenco;}
+{\s18\sbasedon0\snext18\sb120\sa120\noline\i\dbch\af18\afs24\ai\fs24 Didascalia;}
+{\s19\sbasedon0\snext19\noline\dbch\af18 Indice;}
+}{\info{\creatim\yr2011\mo9\dy28\hr16\min28}{\revtim\yr2011\mo9\dy28\hr16\min29}{\printim\yr0\mo0\dy0\hr0\min0}{\comment LibreOffice}{\vern3500}}\deftab720
+
+{\*\pgdsctbl
+{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1417\margbsxn1134\pgdscnxt0 Predefinito;}}
+\formshade{\*\pgdscno0}\paperh15840\paperw12240\margl1134\margr1134\margt1417\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1417\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
+\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx9864\pgndec\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\keepn{\scaps\b\hich\af14\langfe1040\dbch\af14\afs26\alang1025\ab\rtlch \ltrch\loch\fs26\lang1040\loch\f5
+SSSSSSS SSSSSSS curriculum vitae}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\langfe1040\dbch\af14\afs16\alang1025\rtlch \ltrch\loch\fs16\lang1040\loch\f5
+}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\keepn{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+Informazioni personali}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Nome}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSS SSSSSSS}\cell\cell\row\pard\trowd\trql\trleft-108\ltrrow\trrh876\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvert`lt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\h{phmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Indirizzo}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSS S. SSSSSSSS SSSS}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40[\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSS SSSSS SSSSSS}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Telefono}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSSSS}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\langfe1040\dbch\af14\afs22\alang1025\rtlch \ltrch\loch\fs22\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+E-mail}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSSSSSSSSSSSSSSSS}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb120\sa0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Nazionalit\'e0}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSS}\cell\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Luogo e Data di nascita}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSS SSSSSSSSSS }\cell\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par }
\ No newline at end of file diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-108116-minimized.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-108116-minimized.rtf new file mode 100644 index 000000000..9576906da --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/sf_2063317381c4a46d642c79a4b1817dc0-108116-minimized.rtf @@ -0,0 +1,62 @@ +{\rtf1\ansi\deff0\adeflang1025
+{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset128 Times New Roman;}{\f4\froman\fprq2\fcharset128 Arial Narrow;}{\f5\froman\fprq0\fcharset128 Arial Narrow;}{\f6\froman\fprq2\fcharset128 Symbol;}{\f7\froman\fprq0\fcharset128 Symbol;}{\f8\froman\fprq2\fcharset128 Wingdings;}{\f9\froman\fprq0\fcharset128 Wingdings;}{\f10\froman\fprq0\fcharset128 Times New Roman;}{\f11\fnil\fprq2\fcharset0 Microsoft YaHei;}{\f12\fnil\fprq2\fcharset128 SimSun;}{\f13\fnil\fprq2\fcharset128 Times New Roman (Arabic);}{\f14\fnil\fprq0\fcharset128 Times New Roman (Arabic);}{\f15\fnil\fprq2\fcharset128 Times New Roman;}{\f16\fnil\fprq0\fcharset128 Times New Roman;}{\f17\fnil\fprq2\fcharset0 Mangal;}{\f18\fnil\fprq0\fcharset128 Mangal;}{\f19\fnil\fprq2\fcharset128 Mangal;}{\f20\fnil\fprq2\fcharset128 Cambria Math;}{\f21\fnil\fprq0\fcharset128 Cambria Math;}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red128\green128\blue128;}
+{\stylesheet{\s0\snext0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040 Predefinito;}
+{\s15\sbasedon0\snext16\sb240\sa120\keepn\hich\af11\dbch\af17\afs28\loch\f2\fs28 Intestazione;}
+{\s16\sbasedon0\snext16\sb0\sa120 Corpo testo;}
+{\s17\sbasedon16\snext17\sb0\sa120\dbch\af18 Elenco;}
+{\s18\sbasedon0\snext18\sb120\sa120\noline\i\dbch\af18\afs24\ai\fs24 Didascalia;}
+{\s19\sbasedon0\snext19\noline\dbch\af18 Indice;}
+}{\info{\creatim\yr2011\mo9\dy28\hr16\min28}{\revtim\yr2011\mo9\dy28\hr16\min29}{\printim\yr0\mo0\dy0\hr0\min0}{\comment LibreOffice}{\vern3500}}\deftab720
+
+{\*\pgdsctbl
+{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1417\margbsxn1134\pgdscnxt0 Predefinito;}}
+\formshade{\*\pgdscno0}\paperh15840\paperw12240\margl1134\margr1134\margt1417\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1417\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
+\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx9864\pgndec\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\keepn{\scaps\b\hich\af14\langfe1040\dbch\af14\afs26\alang1025\ab\rtlch \ltrch\loch\fs26\lang1040\loch\f5
+SSSSSSS SSSSSSS curriculum vitae}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\langfe1040\dbch\af14\afs16\alang1025\rtlch \ltrch\loch\fs16\lang1040\loch\f5
+}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\keepn{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+Informazioni personali}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Nome}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSS SSSSSSS}\cell\cell\row\pard\trowd\trql\trleft-108\ltrrow\trrh876\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Indirizzo}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSS S. SSSSSSSS SSSS}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\scaps\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSS SSSSS SSSSSS}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Telefono}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSSSS}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\langfe1040\dbch\af14\afs22\alang1025\rtlch \ltrch\loch\fs22\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+}\cell\row\pard\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2896\clvertalt\cellx9864\pard\plain \sp\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+E-mail}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSSSSSSSSSSSSSSSS}\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb120\sa0{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Nazionalit\'e0}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSSSS}\cell\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\rtlch \ltrch\loch
+}
+\par \trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\qr\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20\keepn{\hich\af14\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+Luogo e Data di nascita}\cell\trowd\trql\trleft-108\ltrrow\trpaddft3\trpaddt0\trpaddfl3\trpaddl0\trpaddfb3\trpaddb0\trpaddfr3\trpaddr0\clvertalt\cellx2623\clvertalt\cellx2895\clvertalt\cellx9864\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb20\sa20{\langfe1040\dbch\af14\afs20\alang1025\rtlch \ltrch\loch\fs20\lang1040\loch\f5
+}\cell\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\intbl\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0\sb40\sa40{\b\hich\af14\langfe1040\dbch\af14\afs24\alang1025\ab\rtlch \ltrch\loch\fs24\lang1040\loch\f5
+SSSSSS SSSSSSSSSS }\cell\cell\row\pard\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par \pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af22\langfe2052\dbch\af17\afs24\alang1081\loch\f0\fs24\lang1040\ql\nowidctlpar\faauto\li0\ri0\lin0\rin0\fi0{\rtlch \ltrch\loch
+}
+\par }
\ No newline at end of file diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/sf_edeb1eb341ad4c8608af9396952724a0-41170.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/sf_edeb1eb341ad4c8608af9396952724a0-41170.rtf Binary files differnew file mode 100644 index 000000000..0925203f8 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/sf_edeb1eb341ad4c8608af9396952724a0-41170.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-1.rtf Binary files differnew file mode 100644 index 000000000..5b34e7f61 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-2.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-2.rtf Binary files differnew file mode 100644 index 000000000..58328edc9 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-2.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-3.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-3.rtf Binary files differnew file mode 100644 index 000000000..9fd589214 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-3.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-4.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-4.rtf Binary files differnew file mode 100644 index 000000000..28093f25a --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/tablemanager-4.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/data/pass/valuelist-1.rtf b/writerfilter/qa/cppunittests/filters-test/data/pass/valuelist-1.rtf Binary files differnew file mode 100644 index 000000000..847e165c5 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/data/pass/valuelist-1.rtf diff --git a/writerfilter/qa/cppunittests/filters-test/filters-test.cxx b/writerfilter/qa/cppunittests/filters-test/filters-test.cxx new file mode 100644 index 000000000..cd1863259 --- /dev/null +++ b/writerfilter/qa/cppunittests/filters-test/filters-test.cxx @@ -0,0 +1,79 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <unotest/filters-test.hxx> +#include <test/bootstrapfixture.hxx> +#include <com/sun/star/document/XFilter.hpp> +#include <com/sun/star/io/WrongFormatException.hpp> +#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp> + +using namespace ::com::sun::star; + +/** + * Unit test invoking writerfilter/ only. + * + * This does only minimal testing, checking if the filter crashes and returns + * the expected bool value for given inputs. More fine-grained tests can be + * found under sw/qa/extras/rtfimport/. + */ +class RtfTest : public test::FiltersTest, public test::BootstrapFixture +{ +public: + virtual void setUp() override; + + virtual bool load(const OUString&, const OUString& rURL, const OUString&, SfxFilterFlags, + SotClipboardFormatId, unsigned int) override; + +private: + uno::Reference<document::XFilter> m_xFilter; +}; + +void RtfTest::setUp() +{ + test::BootstrapFixture::setUp(); + + m_xFilter.set(m_xSFactory->createInstance("com.sun.star.comp.Writer.RtfFilter"), + uno::UNO_QUERY_THROW); +} + +bool RtfTest::load(const OUString&, const OUString& rURL, const OUString&, SfxFilterFlags, + SotClipboardFormatId, unsigned int) +{ + uno::Sequence<beans::PropertyValue> aDescriptor = { beans::PropertyValue( + "URL", sal_Int32(0), uno::makeAny(rURL), beans::PropertyState_DIRECT_VALUE) }; + try + { + return m_xFilter->filter(aDescriptor); + } + catch (const lang::WrappedTargetRuntimeException& rWrapped) + { + io::WrongFormatException e; + if (rWrapped.TargetException >>= e) + { + return false; + } + throw; + } + catch (const std::exception&) + { + return false; + } +} + +CPPUNIT_TEST_FIXTURE(RtfTest, testFilter) +{ +#ifndef DISABLE_CVE_TESTS + testDir(OUString(), + m_directories.getURLFromSrc("/writerfilter/qa/cppunittests/filters-test/data/")); +#endif +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/misc/misc.cxx b/writerfilter/qa/cppunittests/misc/misc.cxx new file mode 100644 index 000000000..983e6fc87 --- /dev/null +++ b/writerfilter/qa/cppunittests/misc/misc.cxx @@ -0,0 +1,178 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <tuple> +#include <vector> + +#include <cppunit/TestAssert.h> +#include <cppunit/TestFixture.h> +#include <cppunit/extensions/HelperMacros.h> +#include <cppunit/plugin/TestPlugIn.h> + +#include <sal/types.h> + +#include <rtl/ustring.hxx> +#include <dmapper/ConversionHelper.hxx> +#include <dmapper/DomainMapperFactory.hxx> + +namespace { + +class WriterfilterMiscTest + : public ::CppUnit::TestFixture +{ +public: + void testTwipConversions(); + void testFieldParameters(); + + CPPUNIT_TEST_SUITE(WriterfilterMiscTest); + CPPUNIT_TEST(testTwipConversions); + CPPUNIT_TEST(testFieldParameters); + CPPUNIT_TEST_SUITE_END(); +}; + +void WriterfilterMiscTest::testTwipConversions() +{ + using writerfilter::dmapper::ConversionHelper::convertTwipToMM100; + using writerfilter::dmapper::ConversionHelper::convertTwipToMM100Unsigned; + + CPPUNIT_ASSERT_EQUAL(sal_Int32(-2), convertTwipToMM100(-1)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(-17639), convertTwipToMM100(-10000)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(-70556), convertTwipToMM100(-40000)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), convertTwipToMM100(1)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(17639), convertTwipToMM100(10000)); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), convertTwipToMM100(40000)); + + CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMM100Unsigned(-1)); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMM100Unsigned(-10000)); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMM100Unsigned(-40000)); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(2), convertTwipToMM100Unsigned(1)); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(17639), convertTwipToMM100Unsigned(10000)); + CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), convertTwipToMM100Unsigned(40000)); +} + +void WriterfilterMiscTest::testFieldParameters() +{ + using writerfilter::dmapper::splitFieldCommand; + std::tuple<OUString, std::vector<OUString>, std::vector<OUString> > result; + + result = splitFieldCommand("PAGEREF last_page"); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]); + CPPUNIT_ASSERT(std::get<2>(result).empty()); + + result = splitFieldCommand(" PAGEREF last_page "); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]); + + result = splitFieldCommand("pageref last_page"); + CPPUNIT_ASSERT(std::get<2>(result).empty()); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]); + CPPUNIT_ASSERT(std::get<2>(result).empty()); + + result = splitFieldCommand("pageref \"last_page\""); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]); + CPPUNIT_ASSERT(std::get<2>(result).empty()); + + result = splitFieldCommand("\"PAGEREF\" \"last_page\" \"\" "); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(2), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]); + CPPUNIT_ASSERT_EQUAL(OUString(), std::get<1>(result)[1]); + CPPUNIT_ASSERT(std::get<2>(result).empty()); + + result = splitFieldCommand("\"PAGEREF\"\"last_page\" "); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]); + CPPUNIT_ASSERT(std::get<2>(result).empty()); + + result = splitFieldCommand("PAGEREF\"last_page\" "); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]); + CPPUNIT_ASSERT(std::get<2>(result).empty()); + + result = splitFieldCommand("\"PAGEREF\"last_page \"\""); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(2), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]); + CPPUNIT_ASSERT_EQUAL(OUString(), std::get<1>(result)[1]); + CPPUNIT_ASSERT(std::get<2>(result).empty()); + + result = splitFieldCommand("\"PAGEREF\"last_page \"\""); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(2), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]); + CPPUNIT_ASSERT_EQUAL(OUString(), std::get<1>(result)[1]); + CPPUNIT_ASSERT(std::get<2>(result).empty()); + + result = splitFieldCommand("pageref \"last\\\\pa\\\"ge\""); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last\\pa\"ge"), std::get<1>(result)[0]); + CPPUNIT_ASSERT(std::get<2>(result).empty()); + + result = splitFieldCommand("PAGEREF\"last_page\"\\*"); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]); + CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<2>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("\\*"), std::get<2>(result)[0]); + + result = splitFieldCommand("PAGEREF last_page \\b foobar "); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(size_t(1), std::get<1>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("last_page"), std::get<1>(result)[0]); + CPPUNIT_ASSERT_EQUAL(size_t(2), std::get<2>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("\\B"), std::get<2>(result)[0]); + CPPUNIT_ASSERT_EQUAL(OUString("foobar"), std::get<2>(result)[1]); + + result = splitFieldCommand("PAGEREF\\bfoobar\\A\"\""); + CPPUNIT_ASSERT_EQUAL(OUString("PAGEREF"), std::get<0>(result)); + CPPUNIT_ASSERT(std::get<1>(result).empty()); + CPPUNIT_ASSERT_EQUAL(size_t(4), std::get<2>(result).size()); + CPPUNIT_ASSERT_EQUAL(OUString("\\B"), std::get<2>(result)[0]); + CPPUNIT_ASSERT_EQUAL(OUString("foobar"), std::get<2>(result)[1]); + CPPUNIT_ASSERT_EQUAL(OUString("\\A"), std::get<2>(result)[2]); + CPPUNIT_ASSERT_EQUAL(OUString(), std::get<2>(result)[3]); + + for (auto prefix : {"#", "$", "%", "&", "'", "(", ")", "*", "+", ",", + "-", ".", "/", ":", ";", "<", ">", "?", "@", "[", + "]", "^", "_", "`", "{", "|", "}", "~"}) + { + OUString test(OUString::createFromAscii(prefix) + "PAGE"); + result = splitFieldCommand(test + " "); + CPPUNIT_ASSERT_EQUAL(test, std::get<0>(result)); + } + result = splitFieldCommand("\\PAGE "); + CPPUNIT_ASSERT_EQUAL(OUString("PAGE"), std::get<0>(result)); + result = splitFieldCommand("\\ PAGE "); + CPPUNIT_ASSERT_EQUAL(OUString("\\ "), std::get<0>(result)); + CPPUNIT_ASSERT_EQUAL(OUString("PAGE"), std::get<1>(result)[0]); + result = splitFieldCommand("\\\\PAGE "); + CPPUNIT_ASSERT_EQUAL(OUString("\\PAGE"), std::get<0>(result)); + result = splitFieldCommand("\"PAGE\" "); + CPPUNIT_ASSERT_EQUAL(OUString("PAGE"), std::get<0>(result)); + result = splitFieldCommand("\"PAGE "); + CPPUNIT_ASSERT_EQUAL(OUString("PAGE "), std::get<0>(result)); +} + +CPPUNIT_TEST_SUITE_REGISTRATION(WriterfilterMiscTest); + +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/rtftok/data/left-margin-dedup.rtf b/writerfilter/qa/cppunittests/rtftok/data/left-margin-dedup.rtf new file mode 100644 index 000000000..8536694a2 --- /dev/null +++ b/writerfilter/qa/cppunittests/rtftok/data/left-margin-dedup.rtf @@ -0,0 +1,26 @@ +{\rtf1 +{\fonttbl +{\f0 Times New Roman;} +{\f3\froman\fcharset2\fprq2 Symbol;} +} +{\stylesheet +{\ql Normal;} +{\s44\ql\fi-288\li360 Table Text Bullet;} +{\s59\ql\li720 List Paragraph;} +} +{\*\listtable +{\list +{\listlevel\levelnfc23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0 +{\leveltext\'01\u-3913 ?;} +{\levelnumbers;} +\f3\fbias0 \fi-360\li1305 } +{\listname ;} +\listid845246918} +} +{\*\listoverridetable +{\listoverride\listid845246918\listoverridecount0\ls27} +} +\pard\plain\s44\ql\fi-360\li720\ls27 P1\par +\pard\plain\s59\ql\fi-360\li720\ls27 P2\par +} diff --git a/writerfilter/qa/cppunittests/rtftok/data/picture-in-textframe.rtf b/writerfilter/qa/cppunittests/rtftok/data/picture-in-textframe.rtf new file mode 100644 index 000000000..ec0a07690 --- /dev/null +++ b/writerfilter/qa/cppunittests/rtftok/data/picture-in-textframe.rtf @@ -0,0 +1,29 @@ +{\rtf1 +\paperw10080\paperh12960\margl1066\margr1066\margt1642\margb1066 +\pard\plain +{\shp +{\*\shpinst\shpleft31\shptop105\shpright4108\shpbottom3887\shpfhdr0\shpwr2\shpwrk3\shpfblwtxt0 +{\sp +{\sn shapeType} +{\sv 202} +} +{\shptxt \pard\plain +before +{\*\shppict +{\pict +{\*\picprop\shplid1025 +{\sp +{\sn shapeType} +{\sv 75} +} +} +\picscalex23\picscaley24\piccropl0\piccropr0\piccropt0\piccropb0\picw30372\pich22437\picwgoal17219\pichgoal12720\pngblip +47494638396110001000d5ff00000000ffffffc0c0c0555f00ffffaafcfcfcf6f6f6eaeaeae6e6e6e4e4e4e3e3e3c2c2c2c1c1c1bcbcbcb5b5b5b3b3b3b0b0b0adadada5a5a5a2a2a2a1a1a19f9f9f9494948a8a8a8888888686867b7b7b6c6c6c5c5c5c4e4e4e4b4b4b4747474646463d3d3d3c3c3c2e2e2e2525251b1b1b18181810101009090906060603030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90401000002002c0000000010001000000684408170482c0a06c8a4728924389f506833b281302a8e6b164b18103024c52111504cca67332102e0042e9a40d9319f8300a343c1200f54e47f7e2a00001e0b0a7d0d728a010d838400261a7c0d94947784252700127e9d159f6c8411140019080ea7a9a85f842122281612b1b3b25d6b1f29291d0fbbbdbc5d5e51c34e4cc64a46c94341003b +} +} +after\par +} +} +} +\par +} diff --git a/writerfilter/qa/cppunittests/rtftok/rtfsdrimport.cxx b/writerfilter/qa/cppunittests/rtftok/rtfsdrimport.cxx new file mode 100644 index 000000000..64c679f6e --- /dev/null +++ b/writerfilter/qa/cppunittests/rtftok/rtfsdrimport.cxx @@ -0,0 +1,71 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <test/bootstrapfixture.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/drawing/XDrawPageSupplier.hpp> +#include <com/sun/star/text/TextContentAnchorType.hpp> + +using namespace ::com::sun::star; + +namespace +{ +/// Tests for writerfilter/source/rtftok/rtfsdrimport.cxx. +class Test : public test::BootstrapFixture, public unotest::MacrosTest +{ +private: + uno::Reference<lang::XComponent> mxComponent; + +public: + void setUp() override; + void tearDown() override; + uno::Reference<lang::XComponent>& getComponent() { return mxComponent; } +}; + +void Test::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void Test::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); +} + +char const DATA_DIRECTORY[] = "/writerfilter/qa/cppunittests/rtftok/data/"; + +CPPUNIT_TEST_FIXTURE(Test, testPictureInTextframe) +{ + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "picture-in-textframe.rtf"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<drawing::XDrawPageSupplier> xTextDocument(getComponent(), uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xTextDocument->getDrawPage(); + uno::Reference<beans::XPropertySet> xInnerShape(xDrawPage->getByIndex(1), uno::UNO_QUERY); + text::TextContentAnchorType eAnchorType = text::TextContentAnchorType_AT_PARAGRAPH; + xInnerShape->getPropertyValue("AnchorType") >>= eAnchorType; + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 1 + // - Actual : 4 + // i.e. the properties of the inner shape (including its anchor type and bitmap fill) were lost + // on import. + CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AS_CHARACTER, eAnchorType); +} +} + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/cppunittests/rtftok/rtfsprm.cxx b/writerfilter/qa/cppunittests/rtftok/rtfsprm.cxx new file mode 100644 index 000000000..9f5ec63e8 --- /dev/null +++ b/writerfilter/qa/cppunittests/rtftok/rtfsprm.cxx @@ -0,0 +1,83 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <test/bootstrapfixture.hxx> +#include <unotest/macros_test.hxx> + +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/beans/XPropertyState.hpp> +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/text/XTextDocument.hpp> + +using namespace ::com::sun::star; + +namespace +{ +/// Tests for writerfilter/source/rtftok/rtfsprm.cxx. +class Test : public test::BootstrapFixture, public unotest::MacrosTest +{ +private: + uno::Reference<lang::XComponent> mxComponent; + +public: + void setUp() override; + void tearDown() override; + uno::Reference<lang::XComponent>& getComponent() { return mxComponent; } +}; + +void Test::setUp() +{ + test::BootstrapFixture::setUp(); + + mxDesktop.set(frame::Desktop::create(mxComponentContext)); +} + +void Test::tearDown() +{ + if (mxComponent.is()) + mxComponent->dispose(); + + test::BootstrapFixture::tearDown(); +} + +char const DATA_DIRECTORY[] = "/writerfilter/qa/cppunittests/rtftok/data/"; + +CPPUNIT_TEST_FIXTURE(Test, testLeftMarginDedup) +{ + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "left-margin-dedup.rtf"; + getComponent() = loadFromDesktop(aURL); + uno::Reference<text::XTextDocument> xTextDocument(getComponent(), uno::UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xText(xTextDocument->getText(), uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xParagraphs = xText->createEnumeration(); + uno::Reference<beans::XPropertySet> xParagraph(xParagraphs->nextElement(), uno::UNO_QUERY); + sal_Int32 nLeftMargin = 0; + xParagraph->getPropertyValue("ParaLeftMargin") >>= nLeftMargin; + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1270), nLeftMargin); + + uno::Reference<beans::XPropertyState> xParagraphState(xParagraph, uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DIRECT_VALUE, + xParagraphState->getPropertyState("ParaLeftMargin")); + + xParagraph.set(xParagraphs->nextElement(), uno::UNO_QUERY); + nLeftMargin = 0; + xParagraph->getPropertyValue("ParaLeftMargin") >>= nLeftMargin; + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1270), nLeftMargin); + + xParagraphState.set(xParagraph, uno::UNO_QUERY); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: 0 (DIRECT_VALUE) + // - Actual : 1 (DEFAULT_VALUE) + // i.e. the left margin was not a direct formatting, which means left margin from the numbering + // was used instead. + CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DIRECT_VALUE, + xParagraphState->getPropertyState("ParaLeftMargin")); +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/qa/documents/Bookmark1.doc b/writerfilter/qa/documents/Bookmark1.doc Binary files differnew file mode 100644 index 000000000..71565d979 --- /dev/null +++ b/writerfilter/qa/documents/Bookmark1.doc diff --git a/writerfilter/qa/documents/Bookmark1.docx b/writerfilter/qa/documents/Bookmark1.docx Binary files differnew file mode 100644 index 000000000..a00eab97a --- /dev/null +++ b/writerfilter/qa/documents/Bookmark1.docx diff --git a/writerfilter/qa/documents/CellAlignment.doc b/writerfilter/qa/documents/CellAlignment.doc Binary files differnew file mode 100644 index 000000000..57a6745b4 --- /dev/null +++ b/writerfilter/qa/documents/CellAlignment.doc diff --git a/writerfilter/qa/documents/Footnote.doc b/writerfilter/qa/documents/Footnote.doc Binary files differnew file mode 100644 index 000000000..9098c91a9 --- /dev/null +++ b/writerfilter/qa/documents/Footnote.doc diff --git a/writerfilter/qa/documents/Footnote.docx b/writerfilter/qa/documents/Footnote.docx Binary files differnew file mode 100644 index 000000000..a20d2747a --- /dev/null +++ b/writerfilter/qa/documents/Footnote.docx diff --git a/writerfilter/qa/documents/HeaderFooter.doc b/writerfilter/qa/documents/HeaderFooter.doc Binary files differnew file mode 100644 index 000000000..9b023b485 --- /dev/null +++ b/writerfilter/qa/documents/HeaderFooter.doc diff --git a/writerfilter/qa/documents/HeaderFooter.docx b/writerfilter/qa/documents/HeaderFooter.docx Binary files differnew file mode 100644 index 000000000..1c550b4d5 --- /dev/null +++ b/writerfilter/qa/documents/HeaderFooter.docx diff --git a/writerfilter/qa/documents/IndentedTable.doc b/writerfilter/qa/documents/IndentedTable.doc Binary files differnew file mode 100644 index 000000000..b96ca77b0 --- /dev/null +++ b/writerfilter/qa/documents/IndentedTable.doc diff --git a/writerfilter/qa/documents/IndentedTable1.docx b/writerfilter/qa/documents/IndentedTable1.docx Binary files differnew file mode 100644 index 000000000..2499549d3 --- /dev/null +++ b/writerfilter/qa/documents/IndentedTable1.docx diff --git a/writerfilter/qa/documents/MergedTable.doc b/writerfilter/qa/documents/MergedTable.doc Binary files differnew file mode 100644 index 000000000..0061045f6 --- /dev/null +++ b/writerfilter/qa/documents/MergedTable.doc diff --git a/writerfilter/qa/documents/MergedTable.docx b/writerfilter/qa/documents/MergedTable.docx Binary files differnew file mode 100644 index 000000000..f379c0704 --- /dev/null +++ b/writerfilter/qa/documents/MergedTable.docx diff --git a/writerfilter/qa/documents/MergedTable_3_3.doc b/writerfilter/qa/documents/MergedTable_3_3.doc Binary files differnew file mode 100644 index 000000000..13b727590 --- /dev/null +++ b/writerfilter/qa/documents/MergedTable_3_3.doc diff --git a/writerfilter/qa/documents/MergedTable_3_3.docx b/writerfilter/qa/documents/MergedTable_3_3.docx Binary files differnew file mode 100644 index 000000000..6fd7447bd --- /dev/null +++ b/writerfilter/qa/documents/MergedTable_3_3.docx diff --git a/writerfilter/qa/documents/MultiMergedTable.docx b/writerfilter/qa/documents/MultiMergedTable.docx Binary files differnew file mode 100644 index 000000000..34fcdac2d --- /dev/null +++ b/writerfilter/qa/documents/MultiMergedTable.docx diff --git a/writerfilter/qa/documents/MultiWrapping1.docx b/writerfilter/qa/documents/MultiWrapping1.docx Binary files differnew file mode 100644 index 000000000..ce58b09b8 --- /dev/null +++ b/writerfilter/qa/documents/MultiWrapping1.docx diff --git a/writerfilter/qa/documents/Paragraph with footnote.doc b/writerfilter/qa/documents/Paragraph with footnote.doc Binary files differnew file mode 100644 index 000000000..eaf22b5ef --- /dev/null +++ b/writerfilter/qa/documents/Paragraph with footnote.doc diff --git a/writerfilter/qa/documents/Paragraph with footnote.docx b/writerfilter/qa/documents/Paragraph with footnote.docx Binary files differnew file mode 100644 index 000000000..fbaac59dc --- /dev/null +++ b/writerfilter/qa/documents/Paragraph with footnote.docx diff --git a/writerfilter/qa/documents/Picture1.docx b/writerfilter/qa/documents/Picture1.docx Binary files differnew file mode 100644 index 000000000..0a55180a9 --- /dev/null +++ b/writerfilter/qa/documents/Picture1.docx diff --git a/writerfilter/qa/documents/RedlineTest.docx b/writerfilter/qa/documents/RedlineTest.docx Binary files differnew file mode 100644 index 000000000..dda53c63f --- /dev/null +++ b/writerfilter/qa/documents/RedlineTest.docx diff --git a/writerfilter/qa/documents/RowHeight.doc b/writerfilter/qa/documents/RowHeight.doc Binary files differnew file mode 100644 index 000000000..5db85a486 --- /dev/null +++ b/writerfilter/qa/documents/RowHeight.doc diff --git a/writerfilter/qa/documents/RowHeight.docx b/writerfilter/qa/documents/RowHeight.docx Binary files differnew file mode 100644 index 000000000..ffdb7808b --- /dev/null +++ b/writerfilter/qa/documents/RowHeight.docx diff --git a/writerfilter/qa/documents/StandardFontAlbertus.doc b/writerfilter/qa/documents/StandardFontAlbertus.doc Binary files differnew file mode 100644 index 000000000..f68d3d6cd --- /dev/null +++ b/writerfilter/qa/documents/StandardFontAlbertus.doc diff --git a/writerfilter/qa/documents/Table5CellBorders.doc b/writerfilter/qa/documents/Table5CellBorders.doc Binary files differnew file mode 100644 index 000000000..ab72e558b --- /dev/null +++ b/writerfilter/qa/documents/Table5CellBorders.doc diff --git a/writerfilter/qa/documents/Table5CellBorders.docx b/writerfilter/qa/documents/Table5CellBorders.docx Binary files differnew file mode 100644 index 000000000..6b2781756 --- /dev/null +++ b/writerfilter/qa/documents/Table5CellBorders.docx diff --git a/writerfilter/qa/documents/TableDifferentColumns.doc b/writerfilter/qa/documents/TableDifferentColumns.doc Binary files differnew file mode 100644 index 000000000..b1871cf3f --- /dev/null +++ b/writerfilter/qa/documents/TableDifferentColumns.doc diff --git a/writerfilter/qa/documents/TableDifferentColumns.docx b/writerfilter/qa/documents/TableDifferentColumns.docx Binary files differnew file mode 100644 index 000000000..0503327dd --- /dev/null +++ b/writerfilter/qa/documents/TableDifferentColumns.docx diff --git a/writerfilter/qa/documents/TablePreferredWidth.doc b/writerfilter/qa/documents/TablePreferredWidth.doc Binary files differnew file mode 100644 index 000000000..a436d441c --- /dev/null +++ b/writerfilter/qa/documents/TablePreferredWidth.doc diff --git a/writerfilter/qa/documents/TablePreferredWidth.docx b/writerfilter/qa/documents/TablePreferredWidth.docx Binary files differnew file mode 100644 index 000000000..719b3888a --- /dev/null +++ b/writerfilter/qa/documents/TablePreferredWidth.docx diff --git a/writerfilter/qa/documents/TableRowProperties.doc b/writerfilter/qa/documents/TableRowProperties.doc Binary files differnew file mode 100644 index 000000000..ee3e845ad --- /dev/null +++ b/writerfilter/qa/documents/TableRowProperties.doc diff --git a/writerfilter/qa/documents/TableRowProperties.docx b/writerfilter/qa/documents/TableRowProperties.docx Binary files differnew file mode 100644 index 000000000..775d63c97 --- /dev/null +++ b/writerfilter/qa/documents/TableRowProperties.docx diff --git a/writerfilter/qa/documents/VertAlign1.doc b/writerfilter/qa/documents/VertAlign1.doc Binary files differnew file mode 100644 index 000000000..57158b6f2 --- /dev/null +++ b/writerfilter/qa/documents/VertAlign1.doc diff --git a/writerfilter/qa/documents/WordOLE.docx b/writerfilter/qa/documents/WordOLE.docx Binary files differnew file mode 100644 index 000000000..4cf08d425 --- /dev/null +++ b/writerfilter/qa/documents/WordOLE.docx diff --git a/writerfilter/qa/documents/align1.doc b/writerfilter/qa/documents/align1.doc Binary files differnew file mode 100644 index 000000000..9317432b3 --- /dev/null +++ b/writerfilter/qa/documents/align1.doc diff --git a/writerfilter/qa/documents/bookmark2.doc b/writerfilter/qa/documents/bookmark2.doc Binary files differnew file mode 100644 index 000000000..83cdcadff --- /dev/null +++ b/writerfilter/qa/documents/bookmark2.doc diff --git a/writerfilter/qa/documents/docx/numbering/num-1.docx b/writerfilter/qa/documents/docx/numbering/num-1.docx Binary files differnew file mode 100644 index 000000000..b5e5ffb0b --- /dev/null +++ b/writerfilter/qa/documents/docx/numbering/num-1.docx diff --git a/writerfilter/qa/documents/docx/pictures/Word DocumentOffice 2007 Format Sample6.docx b/writerfilter/qa/documents/docx/pictures/Word DocumentOffice 2007 Format Sample6.docx Binary files differnew file mode 100644 index 000000000..eb0d4c256 --- /dev/null +++ b/writerfilter/qa/documents/docx/pictures/Word DocumentOffice 2007 Format Sample6.docx diff --git a/writerfilter/qa/documents/docx/pictures/i97645 New example.docx b/writerfilter/qa/documents/docx/pictures/i97645 New example.docx Binary files differnew file mode 100644 index 000000000..6cda8590a --- /dev/null +++ b/writerfilter/qa/documents/docx/pictures/i97645 New example.docx diff --git a/writerfilter/qa/documents/docx/pictures/test-image.docx b/writerfilter/qa/documents/docx/pictures/test-image.docx Binary files differnew file mode 100644 index 000000000..fff642451 --- /dev/null +++ b/writerfilter/qa/documents/docx/pictures/test-image.docx diff --git a/writerfilter/qa/documents/docx/pictures/test-image1.docx b/writerfilter/qa/documents/docx/pictures/test-image1.docx Binary files differnew file mode 100644 index 000000000..bdcc8e088 --- /dev/null +++ b/writerfilter/qa/documents/docx/pictures/test-image1.docx diff --git a/writerfilter/qa/documents/docx/pictures/test.docx b/writerfilter/qa/documents/docx/pictures/test.docx Binary files differnew file mode 100644 index 000000000..72e3c01f3 --- /dev/null +++ b/writerfilter/qa/documents/docx/pictures/test.docx diff --git a/writerfilter/qa/documents/docx/redlines/test-review-brk.docx b/writerfilter/qa/documents/docx/redlines/test-review-brk.docx Binary files differnew file mode 100644 index 000000000..7c884505f --- /dev/null +++ b/writerfilter/qa/documents/docx/redlines/test-review-brk.docx diff --git a/writerfilter/qa/documents/docx/redlines/test-review-para.docx b/writerfilter/qa/documents/docx/redlines/test-review-para.docx Binary files differnew file mode 100644 index 000000000..9bb87be94 --- /dev/null +++ b/writerfilter/qa/documents/docx/redlines/test-review-para.docx diff --git a/writerfilter/qa/documents/docx/redlines/test-review-stack.docx b/writerfilter/qa/documents/docx/redlines/test-review-stack.docx Binary files differnew file mode 100644 index 000000000..18b3e3063 --- /dev/null +++ b/writerfilter/qa/documents/docx/redlines/test-review-stack.docx diff --git a/writerfilter/qa/documents/docx/tables/Table in B2.docx b/writerfilter/qa/documents/docx/tables/Table in B2.docx Binary files differnew file mode 100644 index 000000000..4295cec35 --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/Table in B2.docx diff --git a/writerfilter/qa/documents/docx/tables/nested-tables.docx b/writerfilter/qa/documents/docx/tables/nested-tables.docx Binary files differnew file mode 100644 index 000000000..844b29de8 --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/nested-tables.docx diff --git a/writerfilter/qa/documents/docx/tables/nested-tables2.docx b/writerfilter/qa/documents/docx/tables/nested-tables2.docx Binary files differnew file mode 100644 index 000000000..0602ba4fa --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/nested-tables2.docx diff --git a/writerfilter/qa/documents/docx/tables/nested-tables3.docx b/writerfilter/qa/documents/docx/tables/nested-tables3.docx Binary files differnew file mode 100644 index 000000000..7b61d1472 --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/nested-tables3.docx diff --git a/writerfilter/qa/documents/docx/tables/nested-tables4.docx b/writerfilter/qa/documents/docx/tables/nested-tables4.docx Binary files differnew file mode 100644 index 000000000..6a17180a4 --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/nested-tables4.docx diff --git a/writerfilter/qa/documents/docx/tables/nested-tables5.docx b/writerfilter/qa/documents/docx/tables/nested-tables5.docx Binary files differnew file mode 100644 index 000000000..2247b64a7 --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/nested-tables5.docx diff --git a/writerfilter/qa/documents/docx/tables/parentinvguid.docx b/writerfilter/qa/documents/docx/tables/parentinvguid.docx Binary files differnew file mode 100644 index 000000000..8f859fe43 --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/parentinvguid.docx diff --git a/writerfilter/qa/documents/docx/tables/table in A1.docx b/writerfilter/qa/documents/docx/tables/table in A1.docx Binary files differnew file mode 100644 index 000000000..d4161eaaa --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/table in A1.docx diff --git a/writerfilter/qa/documents/docx/tables/table-styles.docx b/writerfilter/qa/documents/docx/tables/table-styles.docx Binary files differnew file mode 100644 index 000000000..2136f9d0f --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/table-styles.docx diff --git a/writerfilter/qa/documents/docx/tables/test-grid.docx b/writerfilter/qa/documents/docx/tables/test-grid.docx Binary files differnew file mode 100644 index 000000000..09f95d1a0 --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/test-grid.docx diff --git a/writerfilter/qa/documents/docx/tables/test-paras.docx b/writerfilter/qa/documents/docx/tables/test-paras.docx Binary files differnew file mode 100644 index 000000000..0cef4ae05 --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/test-paras.docx diff --git a/writerfilter/qa/documents/docx/tables/test-simple.docx b/writerfilter/qa/documents/docx/tables/test-simple.docx Binary files differnew file mode 100644 index 000000000..2c0c08427 --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/test-simple.docx diff --git a/writerfilter/qa/documents/docx/tables/two-tables.docx b/writerfilter/qa/documents/docx/tables/two-tables.docx Binary files differnew file mode 100644 index 000000000..d2e99d3ac --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/two-tables.docx diff --git a/writerfilter/qa/documents/docx/tables/updatejpegprocessing.docx b/writerfilter/qa/documents/docx/tables/updatejpegprocessing.docx Binary files differnew file mode 100644 index 000000000..f62eb61df --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/updatejpegprocessing.docx diff --git a/writerfilter/qa/documents/docx/tables/~$sted-tables3.docx b/writerfilter/qa/documents/docx/tables/~$sted-tables3.docx Binary files differnew file mode 100644 index 000000000..bfea337b7 --- /dev/null +++ b/writerfilter/qa/documents/docx/tables/~$sted-tables3.docx diff --git a/writerfilter/qa/documents/docx/test-page-format.docx b/writerfilter/qa/documents/docx/test-page-format.docx Binary files differnew file mode 100644 index 000000000..eba8dea3e --- /dev/null +++ b/writerfilter/qa/documents/docx/test-page-format.docx diff --git a/writerfilter/qa/documents/fields.doc b/writerfilter/qa/documents/fields.doc Binary files differnew file mode 100644 index 000000000..8ad1a3738 --- /dev/null +++ b/writerfilter/qa/documents/fields.doc diff --git a/writerfilter/qa/documents/fields.docx b/writerfilter/qa/documents/fields.docx new file mode 100644 index 000000000..4eaa60393 --- /dev/null +++ b/writerfilter/qa/documents/fields.docx @@ -0,0 +1 @@ +PK\"%كښl w%=^i7+%g&0A6l4
\ No newline at end of file diff --git a/writerfilter/qa/documents/multimerge2.docx b/writerfilter/qa/documents/multimerge2.docx new file mode 100644 index 000000000..8f594c137 --- /dev/null +++ b/writerfilter/qa/documents/multimerge2.docx @@ -0,0 +1,2 @@ +PKQ +8AO1~qk6<A%5}*`kI)_:%1ٜIs
` C]9N{#kVEWaI_raiN_UZB_%D[S+?#@[.z9>$N{9+P9Y vuGDoRwͳ
Iʊ~
\ No newline at end of file diff --git a/writerfilter/qa/documents/runProperties.doc b/writerfilter/qa/documents/runProperties.doc Binary files differnew file mode 100644 index 000000000..b8b5854df --- /dev/null +++ b/writerfilter/qa/documents/runProperties.doc diff --git a/writerfilter/qa/documents/runProperties.docx b/writerfilter/qa/documents/runProperties.docx Binary files differnew file mode 100644 index 000000000..8e14dc923 --- /dev/null +++ b/writerfilter/qa/documents/runProperties.docx diff --git a/writerfilter/qa/documents/table_4_4.doc b/writerfilter/qa/documents/table_4_4.doc Binary files differnew file mode 100644 index 000000000..ad8500dc2 --- /dev/null +++ b/writerfilter/qa/documents/table_4_4.doc diff --git a/writerfilter/qa/documents/table_4_4.docx b/writerfilter/qa/documents/table_4_4.docx Binary files differnew file mode 100644 index 000000000..484d7f150 --- /dev/null +++ b/writerfilter/qa/documents/table_4_4.docx diff --git a/writerfilter/qa/documents/table_style.docx b/writerfilter/qa/documents/table_style.docx Binary files differnew file mode 100644 index 000000000..3cf6e9fbd --- /dev/null +++ b/writerfilter/qa/documents/table_style.docx diff --git a/writerfilter/qa/ooxml/watch-generated-code.sh b/writerfilter/qa/ooxml/watch-generated-code.sh new file mode 100755 index 000000000..22dc44011 --- /dev/null +++ b/writerfilter/qa/ooxml/watch-generated-code.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +if [ ! -e bin/get_config_variables ]; then + cd ../../.. +fi + +. bin/get_config_variables SRCDIR + +if [ "$PWD" != "$SRCDIR" ]; then + echo "error: not in the expected SRCDIR" + exit 1 +fi + +cd writerfilter +echo 'include Makefile' > watch.mk +echo 'watch:' >> watch.mk +echo $'\techo $(writerfilter_ALL)' >> watch.mk +mydir=workdir/CustomTarget/writerfilter +writerfilter_ALL=$(make -sr -f watch.mk watch|sed "s|$SRCDIR/$mydir/||g") +rm watch.mk +cd - >/dev/null + +case $1 in +reference) + rm -rf $mydir-reference + mkdir -p $mydir-reference/source/ooxml + for i in $writerfilter_ALL + do + cp $mydir/"$i" $mydir-reference/"$i" + done + ;; +compare) + for i in $writerfilter_ALL + do + if [ "$(basename "$i")" == "model_preprocessed.xml" ]; then + continue + fi + diff -u $mydir-reference/"$i" $mydir/"$i" + done + ;; +*) + echo "usage: $0 [ reference | compare ]" + echo + echo "$0 first saves a reference output of all generated files by writerfilter, then" + echo "allows comparing against it. This helps seeing the effect of changes made on" + echo "the code generator scripts." + ;; +esac + +# vi:set shiftwidth=4 expandtab: |