oox/inc/drawingml/fontworkhelpers.hxx | 6 oox/qa/unit/data/tdf153296_VML_export_ArchUpCurve.odt |binary oox/qa/unit/data/tdf153296_VML_export_SlantUp.odt |binary oox/qa/unit/export.cxx | 51 + oox/source/drawingml/fontworkhelpers.cxx | 628 ++++++++++++++++++ oox/source/export/vmlexport.cxx | 24 6 files changed, 706 insertions(+), 3 deletions(-)
New commits: commit b1fda9b2c4986ad44245020b98ddcc2e81c299bf Author: Regina Henschel <[email protected]> AuthorDate: Mon Jan 30 01:26:23 2023 +0100 Commit: Regina Henschel <[email protected]> CommitDate: Wed Feb 1 17:17:51 2023 +0000 tdf#153296 improved markup for VML shapetype of Fontwork In the current version of 'vml-shape-types' file the markup for the Fontwork shapes is missing or is so, that Word does not accept it as WordArt markup. So Word treats it as custom geometry and saves it that way. But LO cannot import custom geometry for WordArt. The patch changes it so, that for Fontwork shapes a dedicated markup map is used with markup, that Word accepts as WordArt. Non-Fontwork shapes still use the 'vml-shape-types' file for VML export. I have added two unit tests. But a true test is not possible, because for that you would need to open and save the files with MS Word. This patch solves at the same time some of the handle problems for the special case of Fontwork shapes, see tdf#152913. Change-Id: Icc5afb88c58b644d25b3cf8d415e5aa2d6a7b19e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146311 Tested-by: Jenkins Reviewed-by: Regina Henschel <[email protected]> diff --git a/oox/inc/drawingml/fontworkhelpers.hxx b/oox/inc/drawingml/fontworkhelpers.hxx index 2a48f422abbf..f1861f266bde 100644 --- a/oox/inc/drawingml/fontworkhelpers.hxx +++ b/oox/inc/drawingml/fontworkhelpers.hxx @@ -21,6 +21,7 @@ #include <rtl/ustring.hxx> #include <sal/types.h> +#include <svx/msdffdef.hxx> #include "customshapeproperties.hxx" @@ -40,5 +41,10 @@ void putCustomShapeIntoTextPathMode( const css::uno::Reference<css::drawing::XShape>& xShape, const oox::drawingml::CustomShapePropertiesPtr& pCustomShapePropertiesPtr, const OUString& sMSPresetType, const bool bFromWordArt); + +/** Returns the markup for the v:shapetype element for export of a Fontwork shape to VML. + If eShapeType is not a Fontwork shape type or the special type is not yet implemented, + it returns an empty string.*/ +OString GetVMLFontworkShapetypeMarkup(const MSO_SPT eShapeType); } /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ \ No newline at end of file diff --git a/oox/qa/unit/data/tdf153296_VML_export_ArchUpCurve.odt b/oox/qa/unit/data/tdf153296_VML_export_ArchUpCurve.odt new file mode 100644 index 000000000000..37e0f779d02a Binary files /dev/null and b/oox/qa/unit/data/tdf153296_VML_export_ArchUpCurve.odt differ diff --git a/oox/qa/unit/data/tdf153296_VML_export_SlantUp.odt b/oox/qa/unit/data/tdf153296_VML_export_SlantUp.odt new file mode 100644 index 000000000000..223ec5d169b5 Binary files /dev/null and b/oox/qa/unit/data/tdf153296_VML_export_SlantUp.odt differ diff --git a/oox/qa/unit/export.cxx b/oox/qa/unit/export.cxx index f25bf4493b17..64c97b56a24d 100644 --- a/oox/qa/unit/export.cxx +++ b/oox/qa/unit/export.cxx @@ -832,6 +832,57 @@ CPPUNIT_TEST_FIXTURE(Test, testFontworkFontProperties) sStyle = getXPath(pXmlDoc, "(//v:shape)[5]/v:textpath", "style"); CPPUNIT_ASSERT(sStyle.indexOf("v-same-letter-heights:t") > -1); } + +CPPUNIT_TEST_FIXTURE(Test, testVMLFontworkSlantUp) +{ + // The document has a Fontwork shape type 'textSlantUp' (172). When exporting to docx, Word does + // not recognize its markup as preset WordArt, because the used markup differs from what Word + // expects for this type of shape. As a result Word saves the shape as having custom geometry + // and such is not understand by LibreOffice. + loadFromURL(u"tdf153296_VML_export_SlantUp.odt"); + + // FIXME: tdf#153183 validation error in OOXML export: Errors: 1 + // Attribute 'ID' is not allowed to appear in element 'v:shape'. + skipValidation(); + + // Save to DOCX: + save("Office Open XML Text"); + + // Examine the saved markup. I could identify the following two problems to hinder Word from + // accepting the markup. There might exist more problems. + xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); + + // Make sure a <v:path> element exists and has an o:connecttype attribute + assertXPath(pXmlDoc, "//v:shapetype/v:path", 1); + assertXPath(pXmlDoc, "//v:shapetype/v:path[@o:connecttype]", 1); + + // Make sure the handle position is written without reference to a formula + OUString sPosition = getXPath(pXmlDoc, "//v:h", "position"); + CPPUNIT_ASSERT_EQUAL(sal_Int32(-1), sPosition.indexOf("@")); + CPPUNIT_ASSERT_EQUAL(OUString("topLeft,#0"), sPosition); +} + +CPPUNIT_TEST_FIXTURE(Test, testVMLFontworkArchUp) +{ + // The document has a Fontwork shape type 'textArchUp' (172). When exporting to docx, the shape + // was not exported as VML Fontwork but as a rectangle. + loadFromURL(u"tdf153296_VML_export_ArchUpCurve.odt"); + + // FIXME: tdf#153183 validation error in OOXML export: Errors: 1 + // Attribute 'ID' is not allowed to appear in element 'v:shape'. + skipValidation(); + + // Save to DOCX: + save("Office Open XML Text"); + + // Examine the saved markup. + xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); + + // Make sure there is no <v:rect> element + assertXPath(pXmlDoc, "//v:rect", 0); + // ..., but a <v:shapetype> element with <v:textpath> subelement + assertXPath(pXmlDoc, "//v:shapetype/v:textpath", 1); +} } CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/oox/source/drawingml/fontworkhelpers.cxx b/oox/source/drawingml/fontworkhelpers.cxx index da430c33879f..84779dbe9290 100644 --- a/oox/source/drawingml/fontworkhelpers.cxx +++ b/oox/source/drawingml/fontworkhelpers.cxx @@ -24,6 +24,7 @@ #include <comphelper/sequence.hxx> #include <drawingml/customshapeproperties.hxx> #include <drawingml/presetgeometrynames.hxx> +#include <svx/msdffdef.hxx> #include <tools/helpers.hxx> #include <com/sun/star/beans/PropertyValue.hpp> @@ -33,6 +34,8 @@ #include <com/sun/star/drawing/XEnhancedCustomShapeDefaulter.hpp> #include <com/sun/star/drawing/XShape.hpp> +#include <map> + using namespace com::sun::star; void FontworkHelpers::resetPropertyValueInVec(std::vector<beans::PropertyValue>& rPropVec, @@ -169,4 +172,629 @@ void FontworkHelpers::putCustomShapeIntoTextPathMode( uno::Any(comphelper::containerToSequence(aGeomPropVec))); } +OString FontworkHelpers::GetVMLFontworkShapetypeMarkup(const MSO_SPT eShapeType) +{ + // The markup is taken from VML in DOCX documents. Using the generated 'vml-shape-types' file + // does not work. + + static const std::map<MSO_SPT, OString> aTypeToMarkupMap{ + { mso_sptTextSimple, + "<v:shapetype id=\"_x0000_t24\" coordsize=\"21600,21600\" o:spt=\"24\" adj=\"10800\" " + "path=\"m@7,l@8,m@5,21600l@6,21600e\"><v:formulas><v:f eqn=\"sum #0 0 10800\"/><v:f " + "eqn=\"prod #0 2 1\"/><v:f eqn=\"sum 21600 0 @1\"/><v:f eqn=\"sum 0 0 @2\"/><v:f " + "eqn=\"sum 21600 0 @3\"/><v:f eqn=\"if @0 @3 0\"/><v:f eqn=\"if @0 21600 @1\"/><v:f " + "eqn=\"if @0 0 @2\"/><v:f eqn=\"if @0 @4 21600\"/><v:f eqn=\"mid @5 @6\"/><v:f eqn=\"mid " + "@8 @5\"/><v:f eqn=\"mid @7 @8\"/><v:f eqn=\"mid @6 @7\"/><v:f eqn=\"sum @6 0 " + "@5\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"@9,0;@10,10800;@11,21600;@12,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"#0,bottomRight\" xrange=\"6629,14971\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextOctagon, + "<v:shapetype id=\"_x0000_t25\" coordsize=\"21600,21600\" o:spt=\"25\" adj=\"4800\" " + "path=\"m0@0l7200,r7200,l21600@0m0@1l7200,21600r7200,l21600@1e\"><v:formulas><v:f " + "eqn=\"val #0\"/><v:f eqn=\"sum 21600 0 @0\"/></v:formulas><v:path textpathok=\"t\" " + "o:connecttype=\"rect\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"topLeft,#0\" yrange=\"3086,10800\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextHexagon, + "<v:shapetype id=\"_x0000_t26\" coordsize=\"21600,21600\" o:spt=\"26\" adj=\"10800\" " + "path=\"m0@0l10800,,21600@0m,21600r10800,l21600,21600e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum @1 10800 0\"/><v:f eqn=\"sum 21600 0 " + "@1\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;5400,@1;10800,21600;16200,@1\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"topLeft,#0\" yrange=\"0,21600\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextCurve, + "<v:shapetype id=\"_x0000_t27\" coordsize=\"21600,21600\" o:spt=\"27\" adj=\"3086\" " + "path=\"m,qy10800@0,21600,m0@1qy10800,21600,21600@1e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"sum 21600 0 #0\"/><v:f eqn=\"prod @1 1 2\"/><v:f eqn=\"sum @2 10800 " + "0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@0;0,@2;10800,21600;21600,@2\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"center,#0\" yrange=\"0,7200\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextWave, + "<v:shapetype id=\"_x0000_t28\" coordsize=\"21600,21600\" o:spt=\"28\" " + "adj=\"2809,10800\" " + "path=\"m@25@0c@26@3@27@1@28@0m@21@4c@22@5@23@6@24@4e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"prod @0 41 9\"/><v:f eqn=\"prod @0 23 9\"/><v:f eqn=\"sum 0 0 " + "@2\"/><v:f eqn=\"sum 21600 0 #0\"/><v:f eqn=\"sum 21600 0 @1\"/><v:f eqn=\"sum 21600 0 " + "@3\"/><v:f eqn=\"sum #1 0 10800\"/><v:f eqn=\"sum 21600 0 #1\"/><v:f eqn=\"prod @8 2 " + "3\"/><v:f eqn=\"prod @8 4 3\"/><v:f eqn=\"prod @8 2 1\"/><v:f eqn=\"sum 21600 0 " + "@9\"/><v:f eqn=\"sum 21600 0 @10\"/><v:f eqn=\"sum 21600 0 @11\"/><v:f eqn=\"prod #1 2 " + "3\"/><v:f eqn=\"prod #1 4 3\"/><v:f eqn=\"prod #1 2 1\"/><v:f eqn=\"sum 21600 0 " + "@15\"/><v:f eqn=\"sum 21600 0 @16\"/><v:f eqn=\"sum 21600 0 @17\"/><v:f eqn=\"if @7 @14 " + "0\"/><v:f eqn=\"if @7 @13 @15\"/><v:f eqn=\"if @7 @12 @16\"/><v:f eqn=\"if @7 21600 " + "@17\"/><v:f eqn=\"if @7 0 @20\"/><v:f eqn=\"if @7 @9 @19\"/><v:f eqn=\"if @7 @10 " + "@18\"/><v:f eqn=\"if @7 @11 21600\"/><v:f eqn=\"sum @24 0 @21\"/><v:f eqn=\"sum @4 0 " + "@0\"/><v:f eqn=\"max @21 @25\"/><v:f eqn=\"min @24 @28\"/><v:f eqn=\"prod @0 2 " + "1\"/><v:f eqn=\"sum 21600 0 @33\"/><v:f eqn=\"mid @26 @27\"/><v:f eqn=\"mid @24 " + "@28\"/><v:f eqn=\"mid @22 @23\"/><v:f eqn=\"mid @21 @25\"/></v:formulas><v:path " + "textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"@35,@0;@38,10800;@37,@4;@36,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"topLeft,#0\" yrange=\"0,4459\"/><v:h " + "position=\"#1,bottomRight\" xrange=\"8640,12960\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextRing, + "<v:shapetype id=\"_x0000_t29\" coordsize=\"21600,21600\" o:spt=\"29\" " + "adj=\"11796480,5400\" " + "path=\"al10800,10800,10800,10800@2@14al10800,10800@0@0@2@14e\"><v:formulas><v:f " + "eqn=\"val #1\"/><v:f eqn=\"val #0\"/><v:f eqn=\"sum 0 0 #0\"/><v:f eqn=\"sumangle #0 0 " + "180\"/><v:f eqn=\"sumangle #0 0 90\"/><v:f eqn=\"prod @4 2 1\"/><v:f eqn=\"sumangle #0 " + "90 0\"/><v:f eqn=\"prod @6 2 1\"/><v:f eqn=\"abs #0\"/><v:f eqn=\"sumangle @8 0 " + "90\"/><v:f eqn=\"if @9 @7 @5\"/><v:f eqn=\"sumangle @10 0 360\"/><v:f eqn=\"if @10 @11 " + "@10\"/><v:f eqn=\"sumangle @12 0 360\"/><v:f eqn=\"if @12 @13 @12\"/><v:f eqn=\"sum 0 0 " + "@14\"/><v:f eqn=\"val 10800\"/><v:f eqn=\"sum 10800 0 #1\"/><v:f eqn=\"prod #1 1 " + "2\"/><v:f eqn=\"sum @18 5400 0\"/><v:f eqn=\"cos @19 #0\"/><v:f eqn=\"sin @19 " + "#0\"/><v:f eqn=\"sum @20 10800 0\"/><v:f eqn=\"sum @21 10800 0\"/><v:f eqn=\"sum 10800 " + "0 @20\"/><v:f eqn=\"sum #1 10800 0\"/><v:f eqn=\"if @9 @17 @25\"/><v:f eqn=\"if @9 0 " + "21600\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@27;@22,@23;10800,@26;@24,@23\"/><v:textpath on=\"t\" " + "fitshape=\"t\"/><v:handles><v:h position=\"#1,#0\" polar=\"10800,10800\" " + "radiusrange=\"0,10800\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextOnCurve, + "<v:shapetype id=\"_x0000_t30\" coordsize=\"21600,21600\" o:spt=\"30\" adj=\"3086\" " + "path=\"m,qy10800@0,21600,m0@1qy10800,21600,21600@1e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"sum 21600 0 #0\"/><v:f eqn=\"prod @1 1 2\"/><v:f eqn=\"sum @2 10800 " + "0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@0;0,@2;10800,21600;21600,@2\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"center,#0\" yrange=\"0,7200\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextOnRing, + "<v:shapetype id=\"_x0000_t31\" coordsize=\"21600,21600\" o:spt=\"31\" adj=\"11796480\" " + "path=\"al10800,10800,10800,10800@2@14e\"><v:formulas><v:f eqn=\"val #1\"/><v:f " + "eqn=\"val #0\"/><v:f eqn=\"sum 0 0 #0\"/><v:f eqn=\"sumangle #0 0 180\"/><v:f " + "eqn=\"sumangle #0 0 90\"/><v:f eqn=\"prod @4 2 1\"/><v:f eqn=\"sumangle #0 90 0\"/><v:f " + "eqn=\"prod @6 2 1\"/><v:f eqn=\"abs #0\"/><v:f eqn=\"sumangle @8 0 90\"/><v:f eqn=\"if " + "@9 @7 @5\"/><v:f eqn=\"sumangle @10 0 360\"/><v:f eqn=\"if @10 @11 @10\"/><v:f " + "eqn=\"sumangle @12 0 360\"/><v:f eqn=\"if @12 @13 @12\"/><v:f eqn=\"sum 0 0 @14\"/><v:f " + "eqn=\"val 10800\"/><v:f eqn=\"cos 10800 #0\"/><v:f eqn=\"sin 10800 #0\"/><v:f eqn=\"sum " + "@17 10800 0\"/><v:f eqn=\"sum @18 10800 0\"/><v:f eqn=\"sum 10800 0 @17\"/><v:f " + "eqn=\"if @9 0 21600\"/><v:f eqn=\"sum 10800 0 @18\"/></v:formulas><v:path " + "textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@22;@19,@20;@21,@20\"/><v:textpath on=\"t\" " + "style=\"v-text-kern:t\" fitpath=\"t\"/><v:handles><v:h position=\"@16,#0\" " + "polar=\"10800,10800\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextPlainText, + "<v:shapetype id=\"_x0000_t136\" coordsize=\"21600,21600\" o:spt=\"136\" adj=\"10800\" " + "path=\"m@7,l@8,m@5,21600l@6,21600e\"><v:formulas><v:f eqn=\"sum #0 0 10800\"/><v:f " + "eqn=\"prod #0 2 1\"/><v:f eqn=\"sum 21600 0 @1\"/><v:f eqn=\"sum 0 0 @2\"/><v:f " + "eqn=\"sum 21600 0 @3\"/><v:f eqn=\"if @0 @3 0\"/><v:f eqn=\"if @0 21600 @1\"/><v:f " + "eqn=\"if @0 0 @2\"/><v:f eqn=\"if @0 @4 21600\"/><v:f eqn=\"mid @5 @6\"/><v:f eqn=\"mid " + "@8 @5\"/><v:f eqn=\"mid @7 @8\"/><v:f eqn=\"mid @6 @7\"/><v:f eqn=\"sum @6 0 " + "@5\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"@9,0;@10,10800;@11,21600;@12,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"#0,bottomRight\" xrange=\"6629,14971\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextStop, + "<v:shapetype id=\"_x0000_t137\" coordsize=\"21600,21600\" o:spt=\"137\" adj=\"4800\" " + "path=\"m0@0l7200,r7200,l21600@0m0@1l7200,21600r7200,l21600@1e\"><v:formulas><v:f " + "eqn=\"val #0\"/><v:f eqn=\"sum 21600 0 @0\"/></v:formulas><v:path textpathok=\"t\" " + "o:connecttype=\"rect\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"topLeft,#0\" yrange=\"3086,10800\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextTriangle, + "<v:shapetype id=\"_x0000_t138\" coordsize=\"21600,21600\" o:spt=\"138\" adj=\"10800\" " + "path=\"m0@0l10800,,21600@0m,21600r10800,l21600,21600e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum @1 10800 0\"/><v:f eqn=\"sum 21600 0 " + "@1\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;5400,@1;10800,21600;16200,@1\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"topLeft,#0\" yrange=\"0,21600\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextTriangleInverted, + "<v:shapetype id=\"_x0000_t139\" coordsize=\"21600,21600\" o:spt=\"139\" adj=\"10800\" " + "path=\"m,l10800,,21600,m0@0l10800,21600,21600@0e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum @1 10800 0\"/><v:f eqn=\"sum 21600 0 " + "@1\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;5400,@2;10800,21600;16200,@2\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"topLeft,#0\" yrange=\"0,21600\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextChevron, + "<v:shapetype id=\"_x0000_t140\" coordsize=\"21600,21600\" o:spt=\"140\" adj=\"5400\" " + "path=\"m0@0l10800,,21600@0m,21600l10800@1,21600,21600e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"sum 21600 0 @0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum @2 10800 " + "0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;0,@3;10800,@1;21600,@3\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"topLeft,#0\" yrange=\"0,10800\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextChevronInverted, + "<v:shapetype id=\"_x0000_t141\" coordsize=\"21600,21600\" o:spt=\"141\" adj=\"16200\" " + "path=\"m,l10800@1,21600,m0@0l10800,21600,21600@0e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"sum 21600 0 @0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum @2 10800 " + "0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@1;0,@2;10800,21600;21600,@2\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"topLeft,#0\" yrange=\"10800,21600\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextRingInside, + "<v:shapetype id=\"_x0000_t142\" coordsize=\"21600,21600\" o:spt=\"142\" adj=\"13500\" " + "path=\"m0@1qy10800,,21600@1,10800@0,0@1m0@2qy10800@3,21600@2,10800,21600,0@2e\"><v:" + "formulas><v:f eqn=\"val #0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum height 0 " + "@1\"/><v:f eqn=\"sum height 0 #0\"/><v:f eqn=\"sum @2 0 @1\"/></v:formulas><v:path " + "textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;10800,@0;0,10800;10800,21600;10800,@3;21600,10800\" " + "o:connectangles=\"270,270,180,90,90,0\"/><v:textpath on=\"t\" " + "fitshape=\"t\"/><v:handles><v:h position=\"center,#0\" " + "yrange=\"10800,21600\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextRingOutside, + "<v:shapetype id=\"_x0000_t143\" coordsize=\"21600,21600\" o:spt=\"143\" adj=\"13500\" " + "path=\"m0@1qy10800@0,21600@1,10800,,0@1m0@2qy10800,21600,21600@2,10800@3,0@2e\"><v:" + "formulas><v:f eqn=\"val #0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum height 0 " + "@1\"/><v:f eqn=\"sum height 0 #0\"/><v:f eqn=\"sum @2 0 @1\"/></v:formulas><v:path " + "textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;10800,@0;0,10800;10800,21600;10800,@3;21600,10800\" " + "o:connectangles=\"270,270,180,90,90,0\"/><v:textpath on=\"t\" " + "fitshape=\"t\"/><v:handles><v:h position=\"center,#0\" " + "yrange=\"10800,21600\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextArchUpCurve, + "<v:shapetype id=\"_x0000_t144\" coordsize=\"21600,21600\" o:spt=\"144\" " + "adj=\"11796480\" path=\"al10800,10800,10800,10800@2@14e\"><v:formulas><v:f eqn=\"val " + "#1\"/><v:f eqn=\"val #0\"/><v:f eqn=\"sum 0 0 #0\"/><v:f eqn=\"sumangle #0 0 " + "180\"/><v:f eqn=\"sumangle #0 0 90\"/><v:f eqn=\"prod @4 2 1\"/><v:f eqn=\"sumangle #0 " + "90 0\"/><v:f eqn=\"prod @6 2 1\"/><v:f eqn=\"abs #0\"/><v:f eqn=\"sumangle @8 0 " + "90\"/><v:f eqn=\"if @9 @7 @5\"/><v:f eqn=\"sumangle @10 0 360\"/><v:f eqn=\"if @10 @11 " + "@10\"/><v:f eqn=\"sumangle @12 0 360\"/><v:f eqn=\"if @12 @13 @12\"/><v:f eqn=\"sum 0 0 " + "@14\"/><v:f eqn=\"val 10800\"/><v:f eqn=\"cos 10800 #0\"/><v:f eqn=\"sin 10800 " + "#0\"/><v:f eqn=\"sum @17 10800 0\"/><v:f eqn=\"sum @18 10800 0\"/><v:f eqn=\"sum 10800 " + "0 @17\"/><v:f eqn=\"if @9 0 21600\"/><v:f eqn=\"sum 10800 0 @18\"/></v:formulas><v:path " + "textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@22;@19,@20;@21,@20\"/><v:textpath on=\"t\" " + "style=\"v-text-kern:t\" fitpath=\"t\"/><v:handles><v:h position=\"@16,#0\" " + "polar=\"10800,10800\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextArchDownCurve, + "<v:shapetype id=\"_x0000_t145\" coordsize=\"21600,21600\" o:spt=\"145\" " + "path=\"al10800,10800,10800,10800@3@15e\"><v:formulas><v:f eqn=\"val #1\"/><v:f " + "eqn=\"val #0\"/><v:f eqn=\"sum 0 0 #0\"/><v:f eqn=\"sumangle #0 0 180\"/><v:f " + "eqn=\"sumangle #0 0 90\"/><v:f eqn=\"prod @4 2 1\"/><v:f eqn=\"sumangle #0 90 0\"/><v:f " + "eqn=\"prod @6 2 1\"/><v:f eqn=\"abs #0\"/><v:f eqn=\"sumangle @8 0 90\"/><v:f eqn=\"if " + "@9 @7 @5\"/><v:f eqn=\"sumangle @10 0 360\"/><v:f eqn=\"if @10 @11 @10\"/><v:f " + "eqn=\"sumangle @12 0 360\"/><v:f eqn=\"if @12 @13 @12\"/><v:f eqn=\"sum 0 0 @14\"/><v:f " + "eqn=\"val 10800\"/><v:f eqn=\"cos 10800 #0\"/><v:f eqn=\"sin 10800 #0\"/><v:f eqn=\"sum " + "@17 10800 0\"/><v:f eqn=\"sum @18 10800 0\"/><v:f eqn=\"sum 10800 0 @17\"/><v:f " + "eqn=\"if @9 0 21600\"/><v:f eqn=\"sum 10800 0 @18\"/></v:formulas><v:path " + "textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@22;@19,@20;@21,@20\"/><v:textpath on=\"t\" " + "style=\"v-text-kern:t\" fitpath=\"t\"/><v:handles><v:h position=\"@16,#0\" " + "polar=\"10800,10800\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextCircleCurve, + "<v:shapetype id=\"_x0000_t146\" coordsize=\"21600,21600\" o:spt=\"146\" " + "adj=\"-11730944\" path=\"al10800,10800,10800,10800@2@5e\"><v:formulas><v:f eqn=\"val " + "#1\"/><v:f eqn=\"val #0\"/><v:f eqn=\"sum 0 0 #0\"/><v:f eqn=\"prod #0 2 1\"/><v:f " + "eqn=\"sumangle @3 0 360\"/><v:f eqn=\"if @3 @4 @3\"/><v:f eqn=\"val 10800\"/><v:f " + "eqn=\"cos 10800 #0\"/><v:f eqn=\"sin 10800 #0\"/><v:f eqn=\"sum @7 10800 0\"/><v:f " + "eqn=\"sum @8 10800 0\"/><v:f eqn=\"sum 10800 0 @8\"/><v:f eqn=\"if #0 0 " + "21600\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"@12,10800;@9,@10;@9,@11\"/><v:textpath on=\"t\" style=\"v-text-kern:t\" " + "fitpath=\"t\"/><v:handles><v:h position=\"@6,#0\" " + "polar=\"10800,10800\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextButtonCurve, + "<v:shapetype id=\"_x0000_t147\" coordsize=\"21600,21600\" o:spt=\"147\" " + "adj=\"11796480\" " + "path=\"al10800,10800,10800,10800@2@14m,10800r21600,al10800,10800,10800,10800@1@15e\"><v:" + "formulas><v:f eqn=\"val #1\"/><v:f eqn=\"val #0\"/><v:f eqn=\"sum 0 0 #0\"/><v:f " + "eqn=\"sumangle #0 0 180\"/><v:f eqn=\"sumangle #0 0 90\"/><v:f eqn=\"prod @4 2 " + "1\"/><v:f eqn=\"sumangle #0 90 0\"/><v:f eqn=\"prod @6 2 1\"/><v:f eqn=\"abs #0\"/><v:f " + "eqn=\"sumangle @8 0 90\"/><v:f eqn=\"if @9 @7 @5\"/><v:f eqn=\"sumangle @10 0 " + "360\"/><v:f eqn=\"if @10 @11 @10\"/><v:f eqn=\"sumangle @12 0 360\"/><v:f eqn=\"if @12 " + "@13 @12\"/><v:f eqn=\"sum 0 0 @14\"/><v:f eqn=\"val 10800\"/><v:f eqn=\"cos 10800 " + "#0\"/><v:f eqn=\"sin 10800 #0\"/><v:f eqn=\"sum @17 10800 0\"/><v:f eqn=\"sum @18 10800 " + "0\"/><v:f eqn=\"sum 10800 0 @17\"/><v:f eqn=\"if @9 0 21600\"/><v:f eqn=\"sum 10800 0 " + "@18\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;@19,@20;@21,@20;10800,10800;0,10800;21600,10800;10800,21600;@19," + "@23;@21,@23\"/><v:textpath on=\"t\" style=\"v-text-kern:t\" " + "fitpath=\"t\"/><v:handles><v:h position=\"@16,#0\" " + "polar=\"10800,10800\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextArchUpPour, + "<v:shapetype id=\"_x0000_t148\" coordsize=\"21600,21600\" o:spt=\"148\" " + "adj=\"11796480,5400\" " + "path=\"al10800,10800,10800,10800@2@14al10800,10800@0@0@2@14e\"><v:formulas><v:f " + "eqn=\"val #1\"/><v:f eqn=\"val #0\"/><v:f eqn=\"sum 0 0 #0\"/><v:f eqn=\"sumangle #0 0 " + "180\"/><v:f eqn=\"sumangle #0 0 90\"/><v:f eqn=\"prod @4 2 1\"/><v:f eqn=\"sumangle #0 " + "90 0\"/><v:f eqn=\"prod @6 2 1\"/><v:f eqn=\"abs #0\"/><v:f eqn=\"sumangle @8 0 " + "90\"/><v:f eqn=\"if @9 @7 @5\"/><v:f eqn=\"sumangle @10 0 360\"/><v:f eqn=\"if @10 @11 " + "@10\"/><v:f eqn=\"sumangle @12 0 360\"/><v:f eqn=\"if @12 @13 @12\"/><v:f eqn=\"sum 0 0 " + "@14\"/><v:f eqn=\"val 10800\"/><v:f eqn=\"sum 10800 0 #1\"/><v:f eqn=\"prod #1 1 " + "2\"/><v:f eqn=\"sum @18 5400 0\"/><v:f eqn=\"cos @19 #0\"/><v:f eqn=\"sin @19 " + "#0\"/><v:f eqn=\"sum @20 10800 0\"/><v:f eqn=\"sum @21 10800 0\"/><v:f eqn=\"sum 10800 " + "0 @20\"/><v:f eqn=\"sum #1 10800 0\"/><v:f eqn=\"if @9 @17 @25\"/><v:f eqn=\"if @9 0 " + "21600\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@27;@22,@23;10800,@26;@24,@23\"/><v:textpath on=\"t\" " + "fitshape=\"t\"/><v:handles><v:h position=\"#1,#0\" polar=\"10800,10800\" " + "radiusrange=\"0,10800\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextArchDownPour, + "<v:shapetype id=\"_x0000_t149\" coordsize=\"21600,21600\" o:spt=\"149\" adj=\",5400\" " + "path=\"al10800,10800@0@0@3@15al10800,10800,10800,10800@3@15e\"><v:formulas><v:f " + "eqn=\"val #1\"/><v:f eqn=\"val #0\"/><v:f eqn=\"sum 0 0 #0\"/><v:f eqn=\"sumangle #0 0 " + "180\"/><v:f eqn=\"sumangle #0 0 90\"/><v:f eqn=\"prod @4 2 1\"/><v:f eqn=\"sumangle #0 " + "90 0\"/><v:f eqn=\"prod @6 2 1\"/><v:f eqn=\"abs #0\"/><v:f eqn=\"sumangle @8 0 " + "90\"/><v:f eqn=\"if @9 @7 @5\"/><v:f eqn=\"sumangle @10 0 360\"/><v:f eqn=\"if @10 @11 " + "@10\"/><v:f eqn=\"sumangle @12 0 360\"/><v:f eqn=\"if @12 @13 @12\"/><v:f eqn=\"sum 0 0 " + "@14\"/><v:f eqn=\"val 10800\"/><v:f eqn=\"sum 10800 0 #1\"/><v:f eqn=\"prod #1 1 " + "2\"/><v:f eqn=\"sum @18 5400 0\"/><v:f eqn=\"cos @19 #0\"/><v:f eqn=\"sin @19 " + "#0\"/><v:f eqn=\"sum @20 10800 0\"/><v:f eqn=\"sum @21 10800 0\"/><v:f eqn=\"sum 10800 " + "0 @20\"/><v:f eqn=\"sum #1 10800 0\"/><v:f eqn=\"if @9 @17 @25\"/><v:f eqn=\"if @9 0 " + "21600\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@27;@22,@23;10800,@26;@24,@23\"/><v:textpath on=\"t\" " + "fitshape=\"t\"/><v:handles><v:h position=\"#1,#0\" polar=\"10800,10800\" " + "radiusrange=\"0,10800\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextCirclePour, + "<v:shapetype id=\"_x0000_t150\" coordsize=\"21600,21600\" o:spt=\"150\" " + "adj=\"-11730944,5400\" " + "path=\"al10800,10800,10800,10800@2@5al10800,10800@0@0@2@5e\"><v:formulas><v:f eqn=\"val " + "#1\"/><v:f eqn=\"val #0\"/><v:f eqn=\"sum 0 0 #0\"/><v:f eqn=\"prod #0 2 1\"/><v:f " + "eqn=\"sumangle @3 0 360\"/><v:f eqn=\"if @3 @4 @3\"/><v:f eqn=\"val 10800\"/><v:f " + "eqn=\"sum 10800 0 #1\"/><v:f eqn=\"prod #1 1 2\"/><v:f eqn=\"sum @8 5400 0\"/><v:f " + "eqn=\"cos @9 #0\"/><v:f eqn=\"sin @9 #0\"/><v:f eqn=\"sum @10 10800 0\"/><v:f eqn=\"sum " + "@11 10800 0\"/><v:f eqn=\"sum 10800 0 @11\"/><v:f eqn=\"sum #1 10800 0\"/><v:f eqn=\"if " + "#0 @7 @15\"/><v:f eqn=\"if #0 0 21600\"/></v:formulas><v:path textpathok=\"t\" " + "o:connecttype=\"custom\" " + "o:connectlocs=\"@17,10800;@12,@13;@16,10800;@12,@14\"/><v:textpath on=\"t\" " + "fitshape=\"t\"/><v:handles><v:h position=\"#1,#0\" polar=\"10800,10800\" " + "radiusrange=\"0,10800\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextButtonPour, + "<v:shapetype id=\"_x0000_t151\" coordsize=\"21600,21600\" o:spt=\"151\" " + "adj=\"11796480,5400\" " + "path=\"al10800,10800,10800,10800@2@14al10800,10800@0@0@2@14m@25@17l@26@17m@25@18l@26@" + "18al10800,10800@0@0@1@15al10800,10800,10800,10800@1@15e\"><v:formulas><v:f eqn=\"val " + "#1\"/><v:f eqn=\"val #0\"/><v:f eqn=\"sum 0 0 #0\"/><v:f eqn=\"sumangle #0 0 " + "180\"/><v:f eqn=\"sumangle #0 0 90\"/><v:f eqn=\"prod @4 2 1\"/><v:f eqn=\"sumangle #0 " + "90 0\"/><v:f eqn=\"prod @6 2 1\"/><v:f eqn=\"abs #0\"/><v:f eqn=\"sumangle @8 0 " + "90\"/><v:f eqn=\"if @9 @7 @5\"/><v:f eqn=\"sumangle @10 0 360\"/><v:f eqn=\"if @10 @11 " + "@10\"/><v:f eqn=\"sumangle @12 0 360\"/><v:f eqn=\"if @12 @13 @12\"/><v:f eqn=\"sum 0 0 " + "@14\"/><v:f eqn=\"sum #1 10800 0\"/><v:f eqn=\"prod @16 1 2\"/><v:f eqn=\"sum 21600 0 " + "@17\"/><v:f eqn=\"sum 10800 0 #1\"/><v:f eqn=\"prod @19 1 2\"/><v:f eqn=\"prod @20 @20 " + "1\"/><v:f eqn=\"prod #1 #1 1\"/><v:f eqn=\"sum @22 0 @21\"/><v:f eqn=\"sqrt @23\"/><v:f " + "eqn=\"sum 10800 0 @24\"/><v:f eqn=\"sum @24 10800 0\"/><v:f eqn=\"val 10800\"/><v:f " + "eqn=\"cos @17 #0\"/><v:f eqn=\"sin @17 #0\"/><v:f eqn=\"sum @28 10800 0\"/><v:f " + "eqn=\"sum @29 10800 0\"/><v:f eqn=\"sum 10800 0 @28\"/><v:f eqn=\"sum 10800 0 " + "@29\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;@30,@31;10800,@19;@32,@31;10800,@17;@25,10800;10800,@18;@26," + "10800;10800,@16;@30,@33;10800,21600;@32,@33\"/><v:textpath on=\"t\" " + "fitshape=\"t\"/><v:handles><v:h position=\"#1,#0\" polar=\"10800,10800\" " + "radiusrange=\"4320,10800\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextCurveUp, + "<v:shapetype id=\"_x0000_t152\" coordsize=\"21600,21600\" o:spt=\"152\" adj=\"9931\" " + "path=\"m0@0c7200@2,14400@1,21600,m0@5c7200@6,14400@6,21600@5e\"><v:formulas><v:f " + "eqn=\"val #0\"/><v:f eqn=\"prod #0 3 4\"/><v:f eqn=\"prod #0 5 4\"/><v:f eqn=\"prod #0 " + "3 8\"/><v:f eqn=\"prod #0 1 8\"/><v:f eqn=\"sum 21600 0 @3\"/><v:f eqn=\"sum @4 21600 " + "0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"prod @5 1 2\"/><v:f eqn=\"sum @7 @8 0\"/><v:f " + "eqn=\"prod #0 7 8\"/><v:f eqn=\"prod @5 1 3\"/><v:f eqn=\"sum @1 @2 0\"/><v:f eqn=\"sum " + "@12 @0 0\"/><v:f eqn=\"prod @13 1 4\"/><v:f eqn=\"sum @11 14400 " + "@14\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@10;0,@9;10800,21600;21600,@8\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"topLeft,#0\" " + "yrange=\"0,12169\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextCurveDown, + "<v:shapetype id=\"_x0000_t153\" coordsize=\"21600,21600\" o:spt=\"153\" adj=\"9391\" " + "path=\"m,c7200@1,14400@2,21600@0m0@5c7200@6,14400@6,21600@5e\"><v:formulas><v:f " + "eqn=\"val #0\"/><v:f eqn=\"prod #0 3 4\"/><v:f eqn=\"prod #0 5 4\"/><v:f eqn=\"prod #0 " + "3 8\"/><v:f eqn=\"prod #0 1 8\"/><v:f eqn=\"sum 21600 0 @3\"/><v:f eqn=\"sum @4 21600 " + "0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"prod @5 1 2\"/><v:f eqn=\"sum @7 @8 0\"/><v:f " + "eqn=\"prod #0 7 8\"/><v:f eqn=\"prod @5 1 3\"/><v:f eqn=\"sum @1 @2 0\"/><v:f eqn=\"sum " + "@12 @0 0\"/><v:f eqn=\"prod @13 1 4\"/><v:f eqn=\"sum @11 14400 " + "@14\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@10;0,@8;10800,21600;21600,@9\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"bottomRight,#0\" " + "yrange=\"0,11368\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextCascadeUp, + "<v:shapetype id=\"_x0000_t154\" coordsize=\"21600,21600\" o:spt=\"154\" adj=\"9600\" " + "path=\"m0@2l21600,m,21600l21600@0e\"><v:formulas><v:f eqn=\"val #0\"/><v:f eqn=\"sum " + "21600 0 #0\"/><v:f eqn=\"prod @1 1 4\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"prod @2 1 " + "2\"/><v:f eqn=\"sum @3 10800 0\"/><v:f eqn=\"sum @4 10800 0\"/><v:f eqn=\"sum @0 21600 " + "@2\"/><v:f eqn=\"prod @7 1 2\"/></v:formulas><v:path textpathok=\"t\" " + "o:connecttype=\"custom\" o:connectlocs=\"10800,@4;0,@6;10800,@5;21600,@3\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"bottomRight,#0\" yrange=\"6171,21600\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextCascadeDown, + "<v:shapetype id=\"_x0000_t155\" coordsize=\"21600,21600\" o:spt=\"155\" adj=\"9600\" " + "path=\"m,l21600@2m0@0l21600,21600e\"><v:formulas><v:f eqn=\"val #0\"/><v:f eqn=\"sum " + "21600 0 #0\"/><v:f eqn=\"prod @1 1 4\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"prod @2 1 " + "2\"/><v:f eqn=\"sum @3 10800 0\"/><v:f eqn=\"sum @4 10800 0\"/><v:f eqn=\"sum @0 21600 " + "@2\"/><v:f eqn=\"prod @7 1 2\"/></v:formulas><v:path textpathok=\"t\" " + "o:connecttype=\"custom\" o:connectlocs=\"10800,@4;0,@3;10800,@5;21600,@6\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"topLeft,#0\" yrange=\"6171,21600\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextWave1, + "<v:shapetype id=\"_x0000_t156\" coordsize=\"21600,21600\" o:spt=\"156\" " + "adj=\"2809,10800\" " + "path=\"m@25@0c@26@3@27@1@28@0m@21@4c@22@5@23@6@24@4e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"prod @0 41 9\"/><v:f eqn=\"prod @0 23 9\"/><v:f eqn=\"sum 0 0 " + "@2\"/><v:f eqn=\"sum 21600 0 #0\"/><v:f eqn=\"sum 21600 0 @1\"/><v:f eqn=\"sum 21600 0 " + "@3\"/><v:f eqn=\"sum #1 0 10800\"/><v:f eqn=\"sum 21600 0 #1\"/><v:f eqn=\"prod @8 2 " + "3\"/><v:f eqn=\"prod @8 4 3\"/><v:f eqn=\"prod @8 2 1\"/><v:f eqn=\"sum 21600 0 " + "@9\"/><v:f eqn=\"sum 21600 0 @10\"/><v:f eqn=\"sum 21600 0 @11\"/><v:f eqn=\"prod #1 2 " + "3\"/><v:f eqn=\"prod #1 4 3\"/><v:f eqn=\"prod #1 2 1\"/><v:f eqn=\"sum 21600 0 " + "@15\"/><v:f eqn=\"sum 21600 0 @16\"/><v:f eqn=\"sum 21600 0 @17\"/><v:f eqn=\"if @7 @14 " + "0\"/><v:f eqn=\"if @7 @13 @15\"/><v:f eqn=\"if @7 @12 @16\"/><v:f eqn=\"if @7 21600 " + "@17\"/><v:f eqn=\"if @7 0 @20\"/><v:f eqn=\"if @7 @9 @19\"/><v:f eqn=\"if @7 @10 " + "@18\"/><v:f eqn=\"if @7 @11 21600\"/><v:f eqn=\"sum @24 0 @21\"/><v:f eqn=\"sum @4 0 " + "@0\"/><v:f eqn=\"max @21 @25\"/><v:f eqn=\"min @24 @28\"/><v:f eqn=\"prod @0 2 " + "1\"/><v:f eqn=\"sum 21600 0 @33\"/><v:f eqn=\"mid @26 @27\"/><v:f eqn=\"mid @24 " + "@28\"/><v:f eqn=\"mid @22 @23\"/><v:f eqn=\"mid @21 @25\"/></v:formulas><v:path " + "textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"@35,@0;@38,10800;@37,@4;@36,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"topLeft,#0\" yrange=\"0,4459\"/><v:h " + "position=\"#1,bottomRight\" xrange=\"8640,12960\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextWave2, + "<v:shapetype id=\"_x0000_t157\" coordsize=\"21600,21600\" o:spt=\"157\" " + "adj=\"2809,10800\" " + "path=\"m@25@0c@26@1@27@3@28@0m@21@4c@22@6@23@5@24@4e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"prod @0 41 9\"/><v:f eqn=\"prod @0 23 9\"/><v:f eqn=\"sum 0 0 " + "@2\"/><v:f eqn=\"sum 21600 0 #0\"/><v:f eqn=\"sum 21600 0 @1\"/><v:f eqn=\"sum 21600 0 " + "@3\"/><v:f eqn=\"sum #1 0 10800\"/><v:f eqn=\"sum 21600 0 #1\"/><v:f eqn=\"prod @8 2 " + "3\"/><v:f eqn=\"prod @8 4 3\"/><v:f eqn=\"prod @8 2 1\"/><v:f eqn=\"sum 21600 0 " + "@9\"/><v:f eqn=\"sum 21600 0 @10\"/><v:f eqn=\"sum 21600 0 @11\"/><v:f eqn=\"prod #1 2 " + "3\"/><v:f eqn=\"prod #1 4 3\"/><v:f eqn=\"prod #1 2 1\"/><v:f eqn=\"sum 21600 0 " + "@15\"/><v:f eqn=\"sum 21600 0 @16\"/><v:f eqn=\"sum 21600 0 @17\"/><v:f eqn=\"if @7 @14 " + "0\"/><v:f eqn=\"if @7 @13 @15\"/><v:f eqn=\"if @7 @12 @16\"/><v:f eqn=\"if @7 21600 " + "@17\"/><v:f eqn=\"if @7 0 @20\"/><v:f eqn=\"if @7 @9 @19\"/><v:f eqn=\"if @7 @10 " + "@18\"/><v:f eqn=\"if @7 @11 21600\"/><v:f eqn=\"sum @24 0 @21\"/><v:f eqn=\"sum @4 0 " + "@0\"/><v:f eqn=\"max @21 @25\"/><v:f eqn=\"min @24 @28\"/><v:f eqn=\"prod @0 2 " + "1\"/><v:f eqn=\"sum 21600 0 @33\"/><v:f eqn=\"mid @26 @27\"/><v:f eqn=\"mid @24 " + "@28\"/><v:f eqn=\"mid @22 @23\"/><v:f eqn=\"mid @21 @25\"/></v:formulas><v:path " + "textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"@35,@0;@38,10800;@37,@4;@36,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"topLeft,#0\" yrange=\"0,4459\"/><v:h " + "position=\"#1,bottomRight\" xrange=\"8640,12960\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextWave3, + "<v:shapetype id=\"_x0000_t158\" coordsize=\"21600,21600\" o:spt=\"158\" " + "adj=\"1404,10800\" " + "path=\"m@37@0c@38@3@39@1@40@0@41@3@42@1@43@0m@30@4c@31@5@32@6@33@4@34@5@35@6@36@4e\"><v:" + "formulas><v:f eqn=\"val #0\"/><v:f eqn=\"prod @0 41 9\"/><v:f eqn=\"prod @0 23 " + "9\"/><v:f eqn=\"sum 0 0 @2\"/><v:f eqn=\"sum 21600 0 #0\"/><v:f eqn=\"sum 21600 0 " + "@1\"/><v:f eqn=\"sum 21600 0 @3\"/><v:f eqn=\"sum #1 0 10800\"/><v:f eqn=\"sum 21600 0 " + "#1\"/><v:f eqn=\"prod @8 1 3\"/><v:f eqn=\"prod @8 2 3\"/><v:f eqn=\"prod @8 4 " + "3\"/><v:f eqn=\"prod @8 5 3\"/><v:f eqn=\"prod @8 2 1\"/><v:f eqn=\"sum 21600 0 " + "@9\"/><v:f eqn=\"sum 21600 0 @10\"/><v:f eqn=\"sum 21600 0 @8\"/><v:f eqn=\"sum 21600 0 " + "@11\"/><v:f eqn=\"sum 21600 0 @12\"/><v:f eqn=\"sum 21600 0 @13\"/><v:f eqn=\"prod #1 1 " + "3\"/><v:f eqn=\"prod #1 2 3\"/><v:f eqn=\"prod #1 4 3\"/><v:f eqn=\"prod #1 5 3\"/><v:f " + "eqn=\"prod #1 2 1\"/><v:f eqn=\"sum 21600 0 @20\"/><v:f eqn=\"sum 21600 0 @21\"/><v:f " + "eqn=\"sum 21600 0 @22\"/><v:f eqn=\"sum 21600 0 @23\"/><v:f eqn=\"sum 21600 0 " + "@24\"/><v:f eqn=\"if @7 @19 0\"/><v:f eqn=\"if @7 @18 @20\"/><v:f eqn=\"if @7 @17 " + "@21\"/><v:f eqn=\"if @7 @16 #1\"/><v:f eqn=\"if @7 @15 @22\"/><v:f eqn=\"if @7 @14 " + "@23\"/><v:f eqn=\"if @7 21600 @24\"/><v:f eqn=\"if @7 0 @29\"/><v:f eqn=\"if @7 @9 " + "@28\"/><v:f eqn=\"if @7 @10 @27\"/><v:f eqn=\"if @7 @8 @8\"/><v:f eqn=\"if @7 @11 " + "@26\"/><v:f eqn=\"if @7 @12 @25\"/><v:f eqn=\"if @7 @13 21600\"/><v:f eqn=\"sum @36 0 " + "@30\"/><v:f eqn=\"sum @4 0 @0\"/><v:f eqn=\"max @30 @37\"/><v:f eqn=\"min @36 " + "@43\"/><v:f eqn=\"prod @0 2 1\"/><v:f eqn=\"sum 21600 0 @48\"/><v:f eqn=\"mid @36 " + "@43\"/><v:f eqn=\"mid @30 @37\"/></v:formulas><v:path textpathok=\"t\" " + "o:connecttype=\"custom\" o:connectlocs=\"@40,@0;@51,10800;@33,@4;@50,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"topLeft,#0\" yrange=\"0,2229\"/><v:h " + "position=\"#1,bottomRight\" xrange=\"8640,12960\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextWave4, + "<v:shapetype id=\"_x0000_t159\" coordsize=\"21600,21600\" o:spt=\"159\" " + "adj=\"1404,10800\" " + "path=\"m@37@0c@38@1@39@3@40@0@41@1@42@3@43@0m@30@4c@31@6@32@5@33@4@34@6@35@5@36@4e\"><v:" + "formulas><v:f eqn=\"val #0\"/><v:f eqn=\"prod @0 41 9\"/><v:f eqn=\"prod @0 23 " + "9\"/><v:f eqn=\"sum 0 0 @2\"/><v:f eqn=\"sum 21600 0 #0\"/><v:f eqn=\"sum 21600 0 " + "@1\"/><v:f eqn=\"sum 21600 0 @3\"/><v:f eqn=\"sum #1 0 10800\"/><v:f eqn=\"sum 21600 0 " + "#1\"/><v:f eqn=\"prod @8 1 3\"/><v:f eqn=\"prod @8 2 3\"/><v:f eqn=\"prod @8 4 " + "3\"/><v:f eqn=\"prod @8 5 3\"/><v:f eqn=\"prod @8 2 1\"/><v:f eqn=\"sum 21600 0 " + "@9\"/><v:f eqn=\"sum 21600 0 @10\"/><v:f eqn=\"sum 21600 0 @8\"/><v:f eqn=\"sum 21600 0 " + "@11\"/><v:f eqn=\"sum 21600 0 @12\"/><v:f eqn=\"sum 21600 0 @13\"/><v:f eqn=\"prod #1 1 " + "3\"/><v:f eqn=\"prod #1 2 3\"/><v:f eqn=\"prod #1 4 3\"/><v:f eqn=\"prod #1 5 3\"/><v:f " + "eqn=\"prod #1 2 1\"/><v:f eqn=\"sum 21600 0 @20\"/><v:f eqn=\"sum 21600 0 @21\"/><v:f " + "eqn=\"sum 21600 0 @22\"/><v:f eqn=\"sum 21600 0 @23\"/><v:f eqn=\"sum 21600 0 " + "@24\"/><v:f eqn=\"if @7 @19 0\"/><v:f eqn=\"if @7 @18 @20\"/><v:f eqn=\"if @7 @17 " + "@21\"/><v:f eqn=\"if @7 @16 #1\"/><v:f eqn=\"if @7 @15 @22\"/><v:f eqn=\"if @7 @14 " + "@23\"/><v:f eqn=\"if @7 21600 @24\"/><v:f eqn=\"if @7 0 @29\"/><v:f eqn=\"if @7 @9 " + "@28\"/><v:f eqn=\"if @7 @10 @27\"/><v:f eqn=\"if @7 @8 @8\"/><v:f eqn=\"if @7 @11 " + "@26\"/><v:f eqn=\"if @7 @12 @25\"/><v:f eqn=\"if @7 @13 21600\"/><v:f eqn=\"sum @36 0 " + "@30\"/><v:f eqn=\"sum @4 0 @0\"/><v:f eqn=\"max @30 @37\"/><v:f eqn=\"min @36 " + "@43\"/><v:f eqn=\"prod @0 2 1\"/><v:f eqn=\"sum 21600 0 @48\"/><v:f eqn=\"mid @36 " + "@43\"/><v:f eqn=\"mid @30 @37\"/></v:formulas><v:path textpathok=\"t\" " + "o:connecttype=\"custom\" o:connectlocs=\"@40,@0;@51,10800;@33,@4;@50,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"topLeft,#0\" yrange=\"0,2229\"/><v:h " + "position=\"#1,bottomRight\" xrange=\"8640,12960\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextInflate, + "<v:shapetype id=\"_x0000_t160\" coordsize=\"21600,21600\" o:spt=\"160\" adj=\"2945\" " + "path=\"m0@0c7200@2,14400@2,21600@0m0@3c7200@4,14400@4,21600@3e\"><v:formulas><v:f " + "eqn=\"val #0\"/><v:f eqn=\"prod #0 1 3\"/><v:f eqn=\"sum 0 0 @1\"/><v:f eqn=\"sum 21600 " + "0 #0\"/><v:f eqn=\"sum 21600 0 @2\"/><v:f eqn=\"prod #0 2 3\"/><v:f eqn=\"sum 21600 0 " + "@5\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"rect\"/><v:textpath " + "on=\"t\" fitshape=\"t\" xscale=\"t\"/><v:handles><v:h position=\"topLeft,#0\" " + "yrange=\"0,4629\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextDeflate, + "<v:shapetype id=\"_x0000_t161\" coordsize=\"21600,21600\" o:spt=\"161\" adj=\"4050\" " + "path=\"m,c7200@0,14400@0,21600,m,21600c7200@1,14400@1,21600,21600e\"><v:formulas><v:f " + "eqn=\"prod #0 4 3\"/><v:f eqn=\"sum 21600 0 @0\"/><v:f eqn=\"val #0\"/><v:f eqn=\"sum " + "21600 0 #0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@2;0,10800;10800,@3;21600,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"center,#0\" " + "yrange=\"0,8100\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextInflateBottom, + "<v:shapetype id=\"_x0000_t162\" coordsize=\"21600,21600\" o:spt=\"162\" adj=\"14706\" " + "path=\"m,l21600,m0@0c7200@2,14400@2,21600@0e\"><v:formulas><v:f eqn=\"val #0\"/><v:f " + "eqn=\"prod #0 1 3\"/><v:f eqn=\"sum 28800 0 @1\"/><v:f eqn=\"prod #0 1 2\"/><v:f " + "eqn=\"sum @1 7200 0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;0,@3;10800,21600;21600,@3\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"topLeft,#0\" " + "yrange=\"11148,21600\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextDeflateBottom, + "<v:shapetype id=\"_x0000_t163\" coordsize=\"21600,21600\" o:spt=\"163\" adj=\"11475\" " + "path=\"m,l21600,m,21600c7200@1,14400@1,21600,21600e\"><v:formulas><v:f eqn=\"prod #0 4 " + "3\"/><v:f eqn=\"sum @0 0 7200\"/><v:f eqn=\"val #0\"/><v:f eqn=\"prod #0 2 3\"/><v:f " + "eqn=\"sum @3 7200 0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;0,10800;10800,@2;21600,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"center,#0\" " + "yrange=\"1350,21600\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextInflateTop, + "<v:shapetype id=\"_x0000_t164\" coordsize=\"21600,21600\" o:spt=\"164\" adj=\"6894\" " + "path=\"m0@0c7200@2,14400@2,21600@0m,21600r21600,e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"prod #0 1 3\"/><v:f eqn=\"sum 0 0 @1\"/><v:f eqn=\"prod #0 1 2\"/><v:f " + "eqn=\"sum @3 10800 0\"/><v:f eqn=\"sum 21600 0 @1\"/></v:formulas><v:path " + "textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;0,@4;10800,21600;21600,@4\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"topLeft,#0\" " + "yrange=\"0,10452\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextDeflateTop, + "<v:shapetype id=\"_x0000_t165\" coordsize=\"21600,21600\" o:spt=\"165\" adj=\"10125\" " + "path=\"m,c7200@0,14400@0,21600,m,21600r21600,e\"><v:formulas><v:f eqn=\"prod #0 4 " + "3\"/><v:f eqn=\"val #0\"/><v:f eqn=\"prod #0 2 3\"/><v:f eqn=\"sum 21600 0 " + "@2\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@1;0,10800;10800,21600;21600,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"center,#0\" " + "yrange=\"0,20250\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextDeflateInflate, + "<v:shapetype id=\"_x0000_t166\" coordsize=\"21600,21600\" o:spt=\"166\" adj=\"6054\" " + "path=\"m,l21600,m,10125c7200@1,14400@1,21600,10125m,11475c7200@2,14400@2,21600,11475m," + "21600r21600,e\"><v:formulas><v:f eqn=\"prod #0 4 3\"/><v:f eqn=\"sum @0 0 4275\"/><v:f " + "eqn=\"sum @0 0 2925\"/></v:formulas><v:path textpathok=\"t\" " + "o:connecttype=\"rect\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"center,#0\" " + "yrange=\"1308,20292\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextDeflateInflateDeflate, + "<v:shapetype id=\"_x0000_t167\" coordsize=\"21600,21600\" o:spt=\"167\" adj=\"6054\" " + "path=\"m,l21600,m,6609c7200@1,14400@1,21600,6609m,7491c7200@2,14400@2,21600,7491m," + "14109c7200@4,14400@4,21600,14109m,14991c7200@3,14400@3,21600,14991m,21600r21600,e\"><v:" + "formulas><v:f eqn=\"prod #0 4 3\"/><v:f eqn=\"sum @0 0 2791\"/><v:f eqn=\"sum @0 0 " + "1909\"/><v:f eqn=\"sum 21600 0 @1\"/><v:f eqn=\"sum 21600 0 @2\"/></v:formulas><v:path " + "textpathok=\"t\" o:connecttype=\"rect\"/><v:textpath on=\"t\" fitshape=\"t\" " + "xscale=\"t\"/><v:handles><v:h position=\"center,#0\" " + "yrange=\"854,9525\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextFadeRight, + "<v:shapetype id=\"_x0000_t168\" coordsize=\"21600,21600\" o:spt=\"168\" adj=\"7200\" " + "path=\"m,l21600@0m,21600l21600@1e\"><v:formulas><v:f eqn=\"val #0\"/><v:f eqn=\"sum " + "21600 0 @0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum 21600 0 @2\"/><v:f eqn=\"sum @1 " + "21600 @0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@2;0,10800;10800,@3;21600,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"bottomRight,#0\" yrange=\"0,10800\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextFadeLeft, + "<v:shapetype id=\"_x0000_t169\" coordsize=\"21600,21600\" o:spt=\"169\" adj=\"7200\" " + "path=\"m0@0l21600,m0@1l21600,21600e\"><v:formulas><v:f eqn=\"val #0\"/><v:f eqn=\"sum " + "21600 0 @0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum 21600 0 @2\"/><v:f eqn=\"sum @1 " + "21600 @0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@2;0,10800;10800,@3;21600,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"topLeft,#0\" yrange=\"0,10800\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextFadeUp, + "<v:shapetype id=\"_x0000_t170\" coordsize=\"21600,21600\" o:spt=\"170\" adj=\"7200\" " + "path=\"m@0,l@1,m,21600r21600,e\"><v:formulas><v:f eqn=\"val #0\"/><v:f eqn=\"sum 21600 " + "0 @0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum 21600 0 @2\"/><v:f eqn=\"sum @1 21600 " + "@0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;@2,10800;10800,21600;@3,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"#0,topLeft\" xrange=\"0,10792\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextFadeDown, + "<v:shapetype id=\"_x0000_t171\" coordsize=\"21600,21600\" o:spt=\"171\" adj=\"7200\" " + "path=\"m,l21600,m@0,21600l@1,21600e\"><v:formulas><v:f eqn=\"val #0\"/><v:f eqn=\"sum " + "21600 0 @0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum 21600 0 @2\"/><v:f eqn=\"sum @1 " + "21600 @0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;@2,10800;10800,21600;@3,10800\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"#0,bottomRight\" xrange=\"0,10792\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextSlantUp, + "<v:shapetype id=\"_x0000_t172\" coordsize=\"21600,21600\" o:spt=\"172\" adj=\"12000\" " + "path=\"m0@0l21600,m,21600l21600@1e\"><v:formulas><v:f eqn=\"val #0\"/><v:f eqn=\"sum " + "21600 0 @0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum @2 10800 0\"/><v:f eqn=\"prod @1 " + "1 2\"/><v:f eqn=\"sum @4 10800 0\"/></v:formulas><v:path textpathok=\"t\" " + "o:connecttype=\"custom\" o:connectlocs=\"10800,@2;0,@3;10800,@5;21600,@4\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"topLeft,#0\" yrange=\"0,15429\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextSlantDown, + "<v:shapetype id=\"_x0000_t173\" coordsize=\"21600,21600\" o:spt=\"173\" adj=\"9600\" " + "path=\"m,l21600@1m0@0l21600,21600e\"><v:formulas><v:f eqn=\"val #0\"/><v:f eqn=\"sum " + "21600 0 @0\"/><v:f eqn=\"prod #0 1 2\"/><v:f eqn=\"sum @2 10800 0\"/><v:f eqn=\"prod @1 " + "1 2\"/><v:f eqn=\"sum @4 10800 0\"/></v:formulas><v:path textpathok=\"t\" " + "o:connecttype=\"custom\" o:connectlocs=\"10800,@4;0,@2;10800,@3;21600,@5\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"topLeft,#0\" yrange=\"6171,21600\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextCanUp, + "<v:shapetype id=\"_x0000_t174\" coordsize=\"21600,21600\" o:spt=\"174\" adj=\"18514\" " + "path=\"m0@1qy10800,,21600@1m,21600qy10800@0,21600,21600e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"sum 21600 0 #0\"/><v:f eqn=\"prod @1 1 2\"/><v:f eqn=\"sum @2 10800 " + "0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,0;0,@3;10800,@0;21600,@3\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"center,#0\" yrange=\"14400,21600\"/></v:handles><o:lock v:ext=\"edit\" " + "text=\"t\" shapetype=\"t\"/></v:shapetype>" }, + { mso_sptTextCanDown, + "<v:shapetype id=\"_x0000_t175\" coordsize=\"21600,21600\" o:spt=\"175\" adj=\"3086\" " + "path=\"m,qy10800@0,21600,m0@1qy10800,21600,21600@1e\"><v:formulas><v:f eqn=\"val " + "#0\"/><v:f eqn=\"sum 21600 0 #0\"/><v:f eqn=\"prod @1 1 2\"/><v:f eqn=\"sum @2 10800 " + "0\"/></v:formulas><v:path textpathok=\"t\" o:connecttype=\"custom\" " + "o:connectlocs=\"10800,@0;0,@2;10800,21600;21600,@2\" " + "o:connectangles=\"270,180,90,0\"/><v:textpath on=\"t\" fitshape=\"t\"/><v:handles><v:h " + "position=\"center,#0\" yrange=\"0,7200\"/></v:handles><o:lock v:ext=\"edit\" text=\"t\" " + "shapetype=\"t\"/></v:shapetype>" } + }; + + auto i(aTypeToMarkupMap.find(eShapeType)); + return i == aTypeToMarkupMap.end() ? OString() : i->second; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ \ No newline at end of file diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx index ebe30bce0223..82d92536b226 100644 --- a/oox/source/export/vmlexport.cxx +++ b/oox/source/export/vmlexport.cxx @@ -42,6 +42,7 @@ #include <filter/msfilter/util.hxx> #include <filter/msfilter/escherex.hxx> #include <o3tl/string_view.hxx> +#include <drawingml/fontworkhelpers.hxx> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/XPropertySetInfo.hpp> @@ -1305,10 +1306,27 @@ sal_Int32 VMLExport::StartShape() break; } default: - if ( m_nShapeType < ESCHER_ShpInst_COUNT ) + nShapeElement = XML_shape; + if (m_pSdrObject->IsTextPath()) + { + bReferToShapeType = m_aShapeTypeWritten[m_nShapeType]; + if (!bReferToShapeType) + { + // Does a predefined markup exist at all? + OString sMarkup = FontworkHelpers::GetVMLFontworkShapetypeMarkup( + static_cast<MSO_SPT>(m_nShapeType)); + if (!sMarkup.isEmpty()) + { + m_pSerializer->write(sMarkup); + m_aShapeTypeWritten[m_nShapeType] = true; + bReferToShapeType = true; + } + } + // ToDo: The case bReferToShapeType==false happens for 'non-primitive' shapes for + // example. We need to get the geometry from CustomShapeGeometry in these cases. + } + else if ( m_nShapeType < ESCHER_ShpInst_COUNT ) { - nShapeElement = XML_shape; - // a predefined shape? static std::vector<OString> aShapeTypes = lcl_getShapeTypes(); SAL_WARN_IF(m_nShapeType >= aShapeTypes.size(), "oox.vml", "Unknown shape type!");
