/* * (c) Copyright Ascensio System SIA 2010-2023 * * This program is a free software product. You can redistribute it and/or * modify it under the terms of the GNU Affero General Public License (AGPL) * version 3 as published by the Free Software Foundation. In accordance with * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect * that Ascensio System SIA expressly excludes the warranty of non-infringement * of any third-party rights. * * This program is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html * * You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish * street, Riga, Latvia, EU, LV-1050. * * The interactive user interfaces in modified source and object code versions * of the Program must display Appropriate Legal Notices, as required under * Section 5 of the GNU AGPL version 3. * * Pursuant to Section 7(b) of the License you must retain the original Product * logo when distributing the program. Pursuant to Section 7(e) we decline to * grant you any rights under trademark law for use of our trademarks. * * All the Product's GUI elements, including illustrations and icon sets, as * well as technical writing content are licensed under the terms of the * Creative Commons Attribution-ShareAlike 4.0 International. See the License * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ #include "GraphicFrame.h" #include "SpTree.h" #include "../Slide.h" #include "../SlideLayout.h" #include "../SlideMaster.h" #include "../DrawingConverter/ASCOfficeDrawingConverter.h" #include "../../../OfficeUtils/src/OfficeUtils.h" #include "../../XlsxFormat/Slicer/SlicerCacheExt.h" #include "../../XlsxFormat/Timelines/Timeline.h" #include "../../XlsxFormat/Chart/Chart.h" #include "../../DocxFormat/VmlDrawing.h" #include "../../DocxFormat/Drawing/DrawingExt.h" #include "../../../DesktopEditor/common/Directory.h" namespace PPTX { BYTE binImageWmfChartReplacement[2274] = { 0xd7,0xcd,0xc6,0x9a,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x12,0x88,0x05,0xb0,0x04,0x00,0x00,0x00,0x00,0x5a,0x44,0x01,0x00,0x09,0x00,0x00,0x03,0x71,0x04,0x00,0x00,0x04,0x00,0x8c,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x0c,0x02,0x88,0x05,0x73,0x12,0x05,0x00,0x00,0x00,0x0b,0x02,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x01,0x08,0x00,0x05,0x00,0x00,0x00,0x02,0x01,0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x06,0x01,0x02,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x2e,0x01,0x18,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x09,0x02,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x04,0x01,0x0d,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x26,0x06,0x17,0x00,0x04,0x00,0x05,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xfa,0x02,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xfa,0x02,0x05,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x1e,0x00,0x00,0x00,0x24,0x03,0x0d,0x00,0xe4,0x00,0x64,0x01,0xca,0x01,0x64,0x01,0xca,0x01,0x8e,0x01,0x15,0x01,0x8e,0x01,0x15,0x01,0xfa,0x01,0xc3,0x01,0xfa,0x01,0xc3,0x01,0x23,0x02,0x15,0x01,0x23,0x02,0x15,0x01,0xa7,0x02,0xcf,0x01,0xa7,0x02,0xcf,0x01,0xd1,0x02,0xe4,0x00,0xd1,0x02,0xe4,0x00,0x64,0x01,0x04,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x1e,0x00,0x00,0x00,0x24,0x03,0x0d,0x00,0x01,0x03,0xbf,0x01,0x9f,0x02,0x45,0x02,0x07,0x03,0xd1,0x02,0xd2,0x02,0xd1,0x02,0x82,0x02,0x65,0x02,0x32,0x02,0xd1,0x02,0xfd,0x01,0xd1,0x02,0x68,0x02,0x42,0x02,0x06,0x02,0xbf,0x01,0x3b,0x02,0xbf,0x01,0x84,0x02,0x21,0x02,0xcc,0x02,0xbf,0x01,0x01,0x03,0xbf,0x01,0x04,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x6a,0x00,0x00,0x00,0x24,0x03,0x33,0x00,0x02,0x04,0xca,0x01,0x02,0x04,0xf4,0x01,0xef,0x03,0xea,0x01,0xdc,0x03,0xe4,0x01,0xc9,0x03,0xe0,0x01,0xb5,0x03,0xdf,0x01,0xa0,0x03,0xe0,0x01,0x7e,0x03,0xee,0x01,0x71,0x03,0xfb,0x01,0x66,0x03,0x0a,0x02,0x5a,0x03,0x30,0x02,0x59,0x03,0x48,0x02,0x5a,0x03,0x61,0x02,0x66,0x03,0x87,0x02,0x71,0x03,0x96,0x02,0x7e,0x03,0xa3,0x02,0xa0,0x03,0xb1,0x02,0xb5,0x03,0xb2,0x02,0xc9,0x03,0xb1,0x02,0xdc,0x03,0xad,0x02,0xef,0x03,0xa7,0x02,0x02,0x04,0x9d,0x02,0x02,0x04,0xc6,0x02,0xef,0x03,0xce,0x02,0xdb,0x03,0xd4,0x02,0xc6,0x03,0xd7,0x02,0xb0,0x03,0xd8,0x02,0xa1,0x03,0xd8,0x02,0x85,0x03,0xd3,0x02,0x6d,0x03,0xc9,0x02,0x57,0x03,0xba,0x02,0x4e,0x03,0xb1,0x02,0x45,0x03,0xa7,0x02,0x38,0x03,0x90,0x02,0x2f,0x03,0x76,0x02,0x2a,0x03,0x59,0x02,0x2a,0x03,0x48,0x02,0x2a,0x03,0x38,0x02,0x2f,0x03,0x1a,0x02,0x38,0x03,0x00,0x02,0x46,0x03,0xe9,0x01,0x4e,0x03,0xdf,0x01,0x58,0x03,0xd6,0x01,0x6e,0x03,0xc8,0x01,0x87,0x03,0xbe,0x01,0xa3,0x03,0xb9,0x01,0xb3,0x03,0xb9,0x01,0xc8,0x03,0xba,0x01,0xdc,0x03,0xbd,0x01,0xef,0x03,0xc2,0x01,0x02,0x04,0xca,0x01,0x04,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x7c,0x00,0x00,0x00,0x38,0x05,0x02,0x00,0x2e,0x00,0x0d,0x00,0x3a,0x05,0x3d,0x02,0x3a,0x05,0x53,0x02,0x6c,0x04,0x53,0x02,0x6e,0x04,0x69,0x02,0x7c,0x04,0x8d,0x02,0x88,0x04,0x9a,0x02,0x95,0x04,0xa5,0x02,0xb8,0x04,0xb1,0x02,0xce,0x04,0xb2,0x02,0xe7,0x04,0xb1,0x02,0x00,0x05,0xac,0x02,0x18,0x05,0xa4,0x02,0x30,0x05,0x98,0x02,0x30,0x05,0xc3,0x02,0x18,0x05,0xcc,0x02,0xfe,0x04,0xd3,0x02,0xe5,0x04,0xd7,0x02,0xcb,0x04,0xd8,0x02,0xbb,0x04,0xd8,0x02,0x9e,0x04,0xd3,0x02,0x84,0x04,0xc9,0x02,0x6d,0x04,0xbb,0x02,0x63,0x04,0xb2,0x02,0x5a,0x04,0xa8,0x02,0x4c,0x04,0x92,0x02,0x42,0x04,0x78,0x02,0x3d,0x04,0x5b,0x02,0x3d,0x04,0x4b,0x02,0x3d,0x04,0x3a,0x02,0x42,0x04,0x1c,0x02,0x4b,0x04,0x02,0x02,0x59,0x04,0xeb,0x01,0x61,0x04,0xe0,0x01,0x6b,0x04,0xd7,0x01,0x80,0x04,0xc8,0x01,0x98,0x04,0xbe,0x01,0xb4,0x04,0xb9,0x01,0xc3,0x04,0xb9,0x01,0xd1,0x04,0xb9,0x01,0xe9,0x04,0xbe,0x01,0xff,0x04,0xc7,0x01,0x12,0x05,0xd4,0x01,0x1a,0x05,0xdd,0x01,0x22,0x05,0xe6,0x01,0x2e,0x05,0xfb,0x01,0x39,0x05,0x1f,0x02,0x0e,0x05,0x30,0x02,0x0c,0x05,0x1e,0x02,0x02,0x05,0x01,0x02,0xf9,0x04,0xf5,0x01,0xee,0x04,0xeb,0x01,0xd4,0x04,0xe0,0x01,0xc4,0x04,0xdf,0x01,0xb1,0x04,0xe0,0x01,0x93,0x04,0xea,0x01,0x87,0x04,0xf4,0x01,0x7d,0x04,0x00,0x02,0x70,0x04,0x1d,0x02,0x6d,0x04,0x30,0x02,0x04,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x0e,0x00,0x00,0x00,0x24,0x03,0x05,0x00,0x84,0x05,0x55,0x01,0xb1,0x05,0x55,0x01,0xb1,0x05,0xd1,0x02,0x84,0x05,0xd1,0x02,0x84,0x05,0x55,0x01,0x04,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x0e,0x00,0x00,0x00,0x24,0x03,0x05,0x00,0x15,0x06,0x93,0x02,0x49,0x06,0x93,0x02,0x49,0x06,0xd1,0x02,0x15,0x06,0xd1,0x02,0x15,0x06,0x93,0x02,0x04,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x80,0x00,0x00,0x00,0x24,0x03,0x3e,0x00,0xc1,0x07,0x80,0x01,0xc1,0x07,0xb4,0x01,0xb4,0x07,0xa9,0x01,0x9a,0x07,0x98,0x01,0x8c,0x07,0x92,0x01,0x7e,0x07,0x8d,0x01,0x60,0x07,0x87,0x01,0x50,0x07,0x86,0x01,0x41,0x07,0x87,0x01,0x25,0x07,0x8c,0x01,0x0d,0x07,0x95,0x01,0xf9,0x06,0xa3,0x01,0xf0,0x06,0xad,0x01,0xe8,0x06,0xb7,0x01,0xdc,0x06,0xce,0x01,0xd0,0x06,0xf8,0x01,0xcf,0x06,0x1b,0x02,0xd0,0x06,0x3e,0x02,0xdc,0x06,0x68,0x02,0xe8,0x06,0x7f,0x02,0xf0,0x06,0x89,0x02,0xf9,0x06,0x92,0x02,0x0d,0x07,0xa1,0x02,0x25,0x07,0xaa,0x02,0x41,0x07,0xaf,0x02,0x50,0x07,0xaf,0x02,0x60,0x07,0xaf,0x02,0x7e,0x07,0xa9,0x02,0x8c,0x07,0xa4,0x02,0x9a,0x07,0x9e,0x02,0xb4,0x07,0x8c,0x02,0xc1,0x07,0x81,0x02,0xc1,0x07,0xb5,0x02,0xa7,0x07,0xc5,0x02,0x8a,0x07,0xcf,0x02,0x6d,0x07,0xd7,0x02,0x4d,0x07,0xd8,0x02,0x39,0x07,0xd7,0x02,0x14,0x07,0xd1,0x02,0xf3,0x06,0xc4,0x02,0xd7,0x06,0xb2,0x02,0xcb,0x06,0xa5,0x02,0xbf,0x06,0x98,0x02,0xad,0x06,0x7a,0x02,0xa1,0x06,0x58,0x02,0x9c,0x06,0x31,0x02,0x9b,0x06,0x1b,0x02,0x9c,0x06,0x05,0x02,0xa1,0x06,0xde,0x01,0xad,0x06,0xbc,0x01,0xbf,0x06,0x9e,0x01,0xcb,0x06,0x91,0x01,0xd7,0x06,0x84,0x01,0xf3,0x06,0x71,0x01,0x14,0x07,0x65,0x01,0x39,0x07,0x5e,0x01,0x4d,0x07,0x5e,0x01,0x6d,0x07,0x5f,0x01,0x8b,0x07,0x67,0x01,0x99,0x07,0x6b,0x01,0xb4,0x07,0x78,0x01,0xc1,0x07,0x80,0x01,0x04,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x46,0x00,0x00,0x00,0x24,0x03,0x21,0x00,0xef,0x08,0x2c,0x02,0xef,0x08,0xd1,0x02,0xc2,0x08,0xd1,0x02,0xc2,0x08,0x2d,0x02,0xc1,0x08,0x1b,0x02,0xba,0x08,0xfe,0x01,0xb3,0x08,0xf3,0x01,0xab,0x08,0xea,0x01,0x94,0x08,0xe1,0x01,0x86,0x08,0xe0,0x01,0x74,0x08,0xe1,0x01,0x57,0x08,0xec,0x01,0x4c,0x08,0xf7,0x01,0x43,0x08,0x03,0x02,0x38,0x08,0x23,0x02,0x37,0x08,0x36,0x02,0x37,0x08,0xd1,0x02,0x0a,0x08,0xd1,0x02,0x0a,0x08,0x55,0x01,0x37,0x08,0x55,0x01,0x37,0x08,0xea,0x01,0x3f,0x08,0xde,0x01,0x52,0x08,0xcc,0x01,0x5d,0x08,0xc5,0x01,0x68,0x08,0xbf,0x01,0x82,0x08,0xb9,0x01,0x90,0x08,0xb9,0x01,0xa6,0x08,0xba,0x01,0xca,0x08,0xc9,0x01,0xd7,0x08,0xd6,0x01,0xe2,0x08,0xe6,0x01,0xee,0x08,0x11,0x02,0xef,0x08,0x2c,0x02,0x04,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x8c,0x00,0x00,0x00,0x38,0x05,0x02,0x00,0x14,0x00,0x2f,0x00,0xc5,0x09,0x47,0x02,0xab,0x09,0x48,0x02,0x86,0x09,0x4e,0x02,0x7a,0x09,0x54,0x02,0x70,0x09,0x5b,0x02,0x66,0x09,0x70,0x02,0x65,0x09,0x7e,0x02,0x66,0x09,0x8a,0x02,0x6d,0x09,0x9d,0x02,0x75,0x09,0xa4,0x02,0x7d,0x09,0xab,0x02,0x92,0x09,0xb2,0x02,0x9f,0x09,0xb2,0x02,0xb2,0x09,0xb1,0x02,0xcf,0x09,0xa4,0x02,0xdb,0x09,0x98,0x02,0xe6,0x09,0x8a,0x02,0xf1,0x09,0x67,0x02,0xf2,0x09,0x51,0x02,0xf2,0x09,0x47,0x02,0x1f,0x0a,0x35,0x02,0x1f,0x0a,0xd1,0x02,0xf2,0x09,0xd1,0x02,0xf2,0x09,0xa7,0x02,0xea,0x09,0xb3,0x02,0xd7,0x09,0xc6,0x02,0xcc,0x09,0xcc,0x02,0xc0,0x09,0xd2,0x02,0xa4,0x09,0xd7,0x02,0x94,0x09,0xd8,0x02,0x7f,0x09,0xd7,0x02,0x5e,0x09,0xcb,0x02,0x51,0x09,0xc1,0x02,0x45,0x09,0xb4,0x02,0x39,0x09,0x94,0x02,0x38,0x09,0x81,0x02,0x39,0x09,0x6b,0x02,0x44,0x09,0x50,0x02,0x4f,0x09,0x42,0x02,0x57,0x09,0x3c,0x02,0x67,0x09,0x31,0x02,0x96,0x09,0x25,0x02,0xb3,0x09,0x24,0x02,0xf2,0x09,0x24,0x02,0xf2,0x09,0x20,0x02,0xf1,0x09,0x11,0x02,0xe7,0x09,0xf9,0x01,0xdd,0x09,0xf0,0x01,0xd3,0x09,0xe8,0x01,0xb6,0x09,0xe0,0x01,0xa4,0x09,0xdf,0x01,0x8d,0x09,0xe0,0x01,0x77,0x09,0xe5,0x01,0x61,0x09,0xeb,0x01,0x4c,0x09,0xf5,0x01,0x4c,0x09,0xcc,0x01,0x64,0x09,0xc3,0x01,0x7c,0x09,0xbe,0x01,0x93,0x09,0xba,0x01,0xa9,0x09,0xb9,0x01,0xc5,0x09,0xba,0x01,0xe8,0x09,0xc5,0x01,0xfa,0x09,0xd0,0x01,0x02,0x0a,0xd8,0x01,0x09,0x0a,0xe0,0x01,0x14,0x0a,0xf3,0x01,0x1e,0x0a,0x17,0x02,0x04,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x3a,0x00,0x00,0x00,0x24,0x03,0x1b,0x00,0x1a,0x0b,0xe9,0x01,0x12,0x0b,0xe5,0x01,0x0a,0x0b,0xe3,0x01,0x00,0x0b,0xe1,0x01,0xf6,0x0a,0xe1,0x01,0xe4,0x0a,0xe2,0x01,0xc6,0x0a,0xee,0x01,0xbb,0x0a,0xfa,0x01,0xb2,0x0a,0x07,0x02,0xa8,0x0a,0x2b,0x02,0xa7,0x0a,0x41,0x02,0xa7,0x0a,0xd1,0x02,0x7a,0x0a,0xd1,0x02,0x7a,0x0a,0xbf,0x01,0xa7,0x0a,0xbf,0x01,0xa7,0x0a,0xea,0x01,0xaf,0x0a,0xde,0x01,0xc1,0x0a,0xcc,0x01,0xcc,0x0a,0xc5,0x01,0xd8,0x0a,0xbf,0x01,0xf3,0x0a,0xb9,0x01,0x03,0x0b,0xb9,0x01,0x08,0x0b,0xb9,0x01,0x0d,0x0b,0xba,0x01,0x13,0x0b,0xba,0x01,0x1a,0x0b,0xbb,0x01,0x1a,0x0b,0xe9,0x01,0x04,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x07,0x00,0x00,0x00,0xfc,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x01,0x00,0x3a,0x00,0x00,0x00,0x24,0x03,0x1b,0x00,0x76,0x0b,0x72,0x01,0x76,0x0b,0xbf,0x01,0xd3,0x0b,0xbf,0x01,0xd3,0x0b,0xe2,0x01,0x76,0x0b,0xe2,0x01,0x76,0x0b,0x77,0x02,0x77,0x0b,0x87,0x02,0x7b,0x0b,0x9c,0x02,0x7f,0x0b,0xa2,0x02,0x85,0x0b,0xa6,0x02,0x97,0x0b,0xab,0x02,0xa5,0x0b,0xab,0x02,0xd3,0x0b,0xab,0x02,0xd3,0x0b,0xd1,0x02,0xa5,0x0b,0xd1,0x02,0x8c,0x0b,0xd0,0x02,0x68,0x0b,0xc6,0x02,0x5d,0x0b,0xbe,0x02,0x54,0x0b,0xb3,0x02,0x4a,0x0b,0x8f,0x02,0x49,0x0b,0x77,0x02,0x49,0x0b,0xe2,0x01,0x28,0x0b,0xe2,0x01,0x28,0x0b,0xbf,0x01,0x49,0x0b,0xbf,0x01,0x49,0x0b,0x72,0x01,0x76,0x0b,0x72,0x01,0x04,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x04,0x00,0x00,0x00,0x2d,0x01,0x02,0x00,0x04,0x00,0x00,0x00,0xf0,0x01,0x02,0x00,0x04,0x00,0x00,0x00,0xf0,0x01,0x01,0x00,0x04,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00 }; BYTE binImagePngChartReplacement[6171] = { 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,0x00,0x00,0x04,0x80,0x00,0x00,0x01,0x59,0x08,0x06,0x00,0x00,0x00,0xe0,0xa1,0x54,0x1a,0x00,0x00,0x00,0x01,0x73,0x52,0x47,0x42,0x00,0xae,0xce,0x1c,0xe9,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00,0x00,0xb1,0x8f,0x0b,0xfc,0x61,0x05,0x00,0x00,0x00,0x09,0x70,0x48,0x59,0x73,0x00,0x00,0xb8,0x8c,0x00,0x00,0xb8,0x8c,0x01,0xcc,0xf6,0xbb,0x2f,0x00,0x00,0x17,0xb0,0x49,0x44,0x41,0x54,0x78,0x5e,0xed,0xd7,0xd1,0xae,0xdc,0xb6,0xb2,0x45,0xd1,0xfc,0xff,0x4f,0xdf,0x0b,0x23,0x30,0xec,0xec,0xb3,0x8a,0x94,0xba,0x49,0x8a,0x92,0xc6,0x00,0xe6,0x8b,0xdd,0x5b,0x55,0x64,0xdc,0x96,0xf3,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xf6,0x7f,0x27,0x82,0x51,0xd2,0x9f,0xaf,0x2a,0x00,0x00,0x00,0xe0,0x4b,0xe9,0x7f,0xb8,0xab,0x60,0x94,0xf4,0xe7,0xab,0x0a,0x00,0x00,0x00,0xf8,0x52,0xfa,0x1f,0xee,0x2a,0xae,0xf5,0xa4,0xff,0x26,0xe9,0x2c,0x55,0x00,0x00,0x00,0xc0,0x97,0xd2,0xff,0x70,0x57,0xb1,0x56,0xfa,0x6f,0x70,0xb6,0x5d,0xa5,0x5d,0xab,0x00,0x00,0xe0,0x31,0xd2,0x3f,0x78,0x9f,0x14,0xb0,0xaf,0xf4,0x9d,0xad,0x62,0x9e,0x74,0xdf,0xb3,0xbb,0x52,0xda,0xa7,0x0a,0x00,0x00,0x1e,0x23,0xfd,0x83,0xf7,0x49,0x01,0xfb,0x4a,0xdf,0xd9,0x2a,0xc6,0x4b,0xf7,0x7c,0x45,0xab,0xa5,0x1d,0xaa,0x00,0x00,0xe0,0x31,0xd2,0x3f,0x78,0x9f,0x14,0xb0,0xaf,0xf4,0x9d,0xad,0x62,0x8c,0x74,0xb7,0xbb,0xb4,0x4a,0x9a,0x5d,0x05,0x00,0x00,0x8f,0x91,0xfe,0xc1,0xfb,0xa4,0x80,0x7d,0xa5,0xef,0x6c,0x15,0x9f,0x4b,0xf7,0xb9,0x73,0xb3,0xa5,0x99,0x55,0xf0,0x66,0xe9,0x3b,0x51,0x05,0x00,0xdc,0x40,0x7a,0x89,0x3f,0x29,0x60,0x5f,0xe9,0x3b,0x5b,0xc5,0x67,0xd2,0x5d,0xde,0xa5,0x59,0xd2,0xac,0x2a,0x78,0xb3,0xf4,0x9d,0xa8,0x02,0x00,0x6e,0x20,0xbd,0xc4,0x9f,0x14,0xb0,0xaf,0xf4,0x9d,0xad,0xe2,0xbc,0x74,0x8f,0x77,0x6b,0x86,0x34,0xa7,0x0a,0xde,0x2c,0x7d,0x27,0xaa,0x00,0x80,0x1b,0x48,0x2f,0xf1,0x27,0x05,0xec,0x2b,0x7d,0x67,0xab,0x38,0x2e,0xdd,0xdf,0xdd,0x1b,0x29,0x3d,0xbf,0x0a,0xde,0x2c,0x7d,0x27,0xaa,0x00,0x80,0x1b,0x48,0x2f,0xf1,0x27,0x05,0xec,0x2b,0x7d,0x67,0xab,0x38,0x26,0xdd,0xdd,0x53,0x1a,0x25,0x3d,0xbb,0x0a,0xde,0x2c,0x7d,0x27,0xaa,0x00,0x80,0x1b,0x48,0x2f,0xf1,0x27,0x05,0xec,0x2b,0x7d,0x67,0xab,0x68,0x4b,0x77,0x36,0xa3,0x9e,0xf4,0x33,0xa3,0x1a,0x25,0x3d,0xbb,0x0a,0xde,0x2c,0x7d,0x27,0xaa,0x00,0x80,0x1b,0x48,0x2f,0xf1,0x27,0x05,0xec,0x2b,0x7d,0x67,0xab,0xa8,0xa5,0xfb,0x1a,0xd9,0x37,0xd2,0xf3,0x3e,0x6d,0x94,0xf4,0xec,0x2a,0x78,0xb3,0xf4,0x9d,0xa8,0x02,0x00,0x6e,0x20,0xbd,0xc4,0x5b,0x01,0x8c,0x92,0xfe,0x8e,0xa9,0x22,0x4b,0x77,0xf5,0x6d,0xb3,0xa4,0x59,0x67,0x1a,0x25,0x3d,0xbb,0x0a,0xde,0x2c,0x7d,0x27,0xaa,0x00,0x80,0x1b,0x48,0x2f,0xf1,0x56,0x00,0xa3,0xa4,0xbf,0x63,0xaa,0xf8,0x5f,0xe9,0x9e,0x3e,0x6d,0xb5,0xb4,0x43,0xaf,0x51,0xd2,0xb3,0xab,0xe0,0xcd,0xd2,0x77,0xa2,0x0a,0x00,0xb8,0x81,0xf4,0x12,0x6f,0x05,0x30,0x4a,0xfa,0x3b,0xa6,0x8a,0xff,0x4a,0x77,0x74,0xb6,0x9d,0xa4,0xfd,0x7e,0x36,0x4a,0x7a,0x76,0x15,0xbc,0x59,0xfa,0x4e,0x54,0x01,0x00,0x37,0x90,0x5e,0xe2,0xad,0x00,0x46,0x49,0x7f,0xc7,0x54,0xf1,0x47,0xba,0x9f,0xb3,0xed,0x2a,0xed,0xfa,0xbb,0x51,0xd2,0xb3,0xab,0xe0,0xcd,0xd2,0x77,0xa2,0x0a,0x00,0xb8,0x81,0xf4,0x12,0x6f,0x05,0x30,0x4a,0xfa,0x3b,0xa6,0x8a,0x7f,0xa5,0xbb,0x39,0xd3,0x1d,0xa4,0xbd,0x7f,0x35,0x4a,0x7a,0x76,0x15,0xbc,0x59,0xfa,0x4e,0x54,0x01,0x00,0x37,0x90,0x5e,0xe2,0xad,0x00,0x46,0x49,0x7f,0xc7,0x54,0xf1,0xaf,0x74,0x37,0x47,0xba,0x9b,0x99,0x67,0x48,0xcf,0xae,0x82,0x37,0x4b,0xdf,0x89,0x2a,0x00,0xe0,0x06,0xd2,0x4b,0xbc,0x15,0xc0,0x28,0xe9,0xef,0x98,0x2a,0xf2,0xbd,0x1c,0xed,0x8e,0x66,0x9d,0xe1,0xe7,0x73,0x5b,0xc1,0x9b,0xa5,0xef,0x44,0x15,0x00,0x70,0x03,0xe9,0x25,0xde,0x0a,0x60,0x94,0xf4,0x77,0x4c,0x15,0xf9,0x5e,0x8e,0x74,0x67,0x33,0xce,0xf1,0xf7,0x33,0x7b,0xc1,0x9b,0xa5,0xef,0x44,0x15,0x00,0x70,0x03,0xe9,0x25,0xde,0x0a,0x60,0x94,0xf4,0x77,0x4c,0xd5,0xdb,0xa5,0x3b,0x39,0xd2,0x53,0x8c,0x3c,0xcb,0xcf,0x3b,0x6a,0x05,0x6f,0x96,0xbe,0x13,0x55,0x00,0xc0,0x0d,0xa4,0x97,0x78,0x2b,0x80,0x51,0xd2,0xdf,0x31,0x55,0x6f,0x97,0xee,0xa4,0x17,0x59,0xba,0xab,0x2a,0x78,0xb3,0xf4,0x9d,0xa8,0x02,0x00,0x6e,0x20,0xbd,0xc4,0x5b,0xc1,0x55,0xfc,0x59,0xfc,0xe3,0xe7,0x5d,0xfc,0xdd,0x9d,0xa4,0xfd,0xab,0xde,0x2c,0xdd,0x47,0x2f,0x6a,0xe9,0xbe,0xaa,0x46,0x99,0xf5,0x5c,0xf8,0xed,0xe7,0x9f,0xb1,0x11,0x7f,0xce,0xd2,0x33,0xab,0x00,0x80,0x1b,0x48,0x2f,0xf1,0x56,0xb0,0x52,0xfa,0x33,0x78,0xb6,0xa7,0x48,0x67,0xeb,0xb5,0xbb,0xb4,0x73,0xd5,0x5b,0xa5,0xbb,0x38,0x12,0xb5,0x74,0x5f,0x55,0xdf,0x48,0xcf,0x6b,0xf5,0x16,0xe9,0xec,0xad,0xa8,0xa5,0xfb,0x6a,0x75,0x56,0x7a,0x46,0x15,0x00,0x70,0x03,0xe9,0x25,0xde,0xea,0x2d,0xd2,0xd9,0x7b,0xed,0x26,0xed,0xd8,0xeb,0x6a,0x69,0xa7,0x91,0xdd,0x49,0xda,0xff,0x9b,0x76,0x94,0xf6,0xac,0x7a,0xab,0x74,0x17,0xbd,0x68,0x4b,0x77,0x56,0x75,0x56,0x7a,0xc6,0x27,0x3d,0x41,0x3a,0xd7,0xa8,0x76,0x96,0xf6,0xad,0x3a,0x2b,0x3d,0xe3,0x4c,0x3f,0xa5,0xcf,0xec,0x16,0x00,0x30,0x50,0x7a,0xd9,0xb6,0x7a,0x93,0x74,0xfe,0x5e,0x3b,0x49,0xfb,0xf5,0xba,0x42,0xda,0x63,0x76,0xbb,0x4a,0xbb,0xce,0x68,0x17,0x69,0xb7,0xaa,0xb7,0x4a,0x77,0xd1,0x8b,0xb6,0x74,0x67,0x55,0x47,0xa4,0x9f,0x1b,0xd9,0xee,0xd2,0xce,0xab,0xdb,0x49,0xda,0xaf,0xea,0x88,0xf4,0x73,0x9f,0xf6,0x53,0xfa,0xcc,0x6e,0x01,0x00,0x03,0xa5,0x97,0x6d,0xab,0xb7,0x49,0x77,0xd0,0x6b,0x07,0x69,0xaf,0x5e,0x2b,0xa5,0xf9,0x57,0xb4,0x83,0xb4,0xd7,0xaa,0xae,0x96,0x76,0xaa,0x7a,0xa3,0x74,0x0f,0xbd,0xe8,0x4b,0xf7,0x56,0xd5,0x93,0x7e,0x66,0x66,0x3b,0x49,0xfb,0x5d,0xdd,0x0e,0xd2,0x5e,0x55,0x3d,0xe9,0x67,0xbe,0xe9,0xa7,0xf4,0x99,0xdd,0x02,0x00,0x06,0x4a,0x2f,0xdb,0x56,0x6f,0x94,0xee,0xa1,0xd7,0x95,0xd2,0x3e,0xbd,0x56,0x4a,0xf3,0xaf,0xee,0x2a,0x69,0x97,0x2b,0xba,0x4a,0xda,0xa5,0xea,0x8d,0xd2,0x3d,0xf4,0xa2,0x2f,0xdd,0x5b,0x55,0x4b,0xfa,0xfc,0x8a,0xae,0x94,0xf6,0xd9,0xad,0xab,0xa5,0x9d,0xaa,0x5a,0xd2,0xe7,0xbf,0xed,0xa7,0xf4,0x99,0xdd,0x02,0x00,0x06,0x4a,0x2f,0xdb,0x56,0x6f,0x94,0xee,0xa1,0xd7,0x55,0xd2,0x2e,0x47,0x5a,0x25,0xcd,0xde,0xa1,0x2b,0xa4,0x3d,0xae,0x6e,0xb5,0xb4,0x43,0xd5,0x1b,0xa5,0x7b,0x68,0xc5,0x31,0xe9,0xee,0xaa,0x2a,0xe9,0xb3,0x2b,0xbb,0x4a,0xda,0x65,0xc7,0xae,0x94,0xf6,0xa9,0xaa,0xa4,0xcf,0x8e,0xe8,0xa7,0xf4,0x99,0xdd,0x02,0x00,0x06,0x4a,0x2f,0xdb,0x56,0x6f,0x95,0xee,0xa2,0xd7,0x15,0xd2,0x1e,0xbd,0x56,0x49,0xb3,0x77,0x69,0xb5,0xb4,0xc3,0x2e,0xad,0x94,0xe6,0x57,0xbd,0x4d,0xba,0x83,0x5e,0x1c,0x93,0xee,0xae,0x2a,0x49,0x9f,0xbb,0xa2,0x2b,0xa4,0x3d,0x76,0xed,0x2a,0x69,0x97,0xaa,0x24,0x7d,0x6e,0x54,0x3f,0xa5,0xcf,0xec,0x16,0x00,0x30,0x50,0x7a,0xd9,0xb6,0x7a,0xb3,0x74,0x1f,0xbd,0x56,0x4a,0xf3,0x7b,0xad,0x90,0xe6,0xee,0xd6,0x2a,0x69,0xf6,0x8e,0xad,0x92,0x66,0x57,0xbd,0x4d,0xba,0x83,0x5e,0x1c,0x93,0xee,0xae,0xea,0xa7,0xf4,0x99,0xab,0xba,0x42,0xda,0x63,0xe7,0xae,0x90,0xf6,0xa8,0xfa,0x29,0x7d,0x66,0x64,0x3f,0xa5,0xcf,0xec,0x16,0x00,0x30,0x50,0x7a,0xd9,0xb6,0x7a,0xbb,0x74,0x27,0xbd,0x56,0x48,0x73,0x7b,0xad,0x90,0xe6,0xee,0xd8,0x0a,0x69,0xee,0xce,0xad,0x90,0xe6,0x56,0xbd,0x49,0x3a,0xff,0x91,0x38,0x26,0xdd,0x5d,0xd5,0x6f,0xe9,0xf7,0x76,0x68,0xb5,0xb4,0xc3,0xee,0xad,0x96,0x76,0xa8,0xfa,0x2d,0xfd,0xde,0x8c,0x7e,0x4a,0x9f,0xd9,0x2d,0x00,0x60,0xa0,0xf4,0xb2,0x6d,0xf5,0x76,0xe9,0x4e,0x7a,0xcd,0x96,0x66,0x1e,0x69,0xa6,0x34,0xef,0x9b,0x8e,0x4a,0x3f,0x7b,0xa4,0x99,0xd2,0xbc,0x6f,0x3a,0x22,0xfd,0xdc,0x27,0xcd,0x96,0x66,0x56,0xbd,0x49,0x3a,0x7f,0x2f,0x8e,0x4b,0xf7,0x57,0xf5,0x5b,0xfa,0xbd,0x5e,0x3d,0xe9,0x67,0x3e,0x69,0xa5,0x34,0xff,0x68,0x47,0xa5,0x9f,0xfd,0xb6,0x95,0xd2,0xfc,0xaa,0xdf,0xd2,0xef,0xf5,0x6a,0x49,0x9f,0xff,0xd5,0x59,0xe9,0x19,0x55,0x00,0xc0,0x0d,0xa4,0x97,0x78,0x2b,0xf2,0xbd,0xf4,0x9a,0x29,0xcd,0xeb,0x35,0x53,0x9a,0xf7,0x69,0x23,0xa4,0xe7,0xfe,0x6c,0xa6,0x34,0xef,0x6c,0x9f,0x4a,0xcf,0x3a,0xdb,0x4c,0x69,0x5e,0xd5,0x9b,0xa4,0xf3,0xf7,0xe2,0xb8,0x74,0x7f,0x55,0xbf,0xa4,0x5f,0x6f,0xf5,0x89,0xf4,0x9c,0x33,0xad,0x92,0x66,0xa7,0x46,0x4a,0xcf,0xff,0xa4,0x55,0xd2,0xec,0xaa,0x5f,0xd2,0xaf,0xb7,0xfa,0xc4,0xa7,0x3f,0xfb,0xf7,0xdc,0x5e,0x00,0xc0,0x0d,0xa4,0x97,0x78,0x2b,0xfe,0x95,0xee,0xa6,0xd7,0x0c,0x69,0x4e,0xaf,0x99,0xd2,0xbc,0xb3,0xad,0xb0,0x72,0xe6,0xcf,0x59,0x47,0x1a,0x2d,0xcd,0x38,0xd3,0x2c,0x69,0x56,0xd5,0x9b,0xa4,0xf3,0xf7,0xe2,0xb8,0x74,0x7f,0x23,0x1a,0x21,0x3d,0xf7,0x68,0x2b,0xa4,0xb9,0x7f,0x37,0x5b,0x9a,0x79,0xb4,0x55,0xd2,0xec,0x11,0x5d,0x21,0xed,0x51,0x05,0x00,0xdc,0x40,0x7a,0x89,0xb7,0xe2,0x8f,0x74,0x3f,0xbd,0x46,0x4a,0xcf,0xef,0x35,0x5b,0x9a,0x79,0xa4,0xab,0xcc,0x9e,0xff,0xf7,0x19,0x8f,0x36,0x53,0x9a,0x77,0xa4,0x59,0xd2,0xac,0xaa,0x37,0x49,0xe7,0x6f,0xc5,0x39,0xe9,0x0e,0x3f,0x6d,0x86,0x34,0xe7,0x48,0x2b,0x5c,0x35,0xf7,0xa7,0xb4,0xc7,0x91,0x56,0x48,0x73,0x3f,0xed,0x6a,0x69,0xa7,0x2a,0x00,0xe0,0x06,0xd2,0x4b,0xbc,0x15,0x7f,0xa4,0xfb,0xe9,0x35,0x4a,0x7a,0xf6,0x91,0x66,0x4a,0xf3,0x8e,0x76,0xa5,0x99,0xf3,0x7f,0x9e,0xb3,0xd7,0x2a,0x69,0x76,0xab,0x59,0xd2,0xac,0xaa,0x37,0x49,0xe7,0x6f,0xc5,0x39,0xe9,0x0e,0x3f,0x69,0xa6,0x34,0xaf,0xd7,0x0a,0xab,0xe7,0xb5,0xfc,0xbd,0xcb,0xd1,0x56,0x48,0x73,0x3f,0x69,0x07,0x69,0xaf,0x2a,0x00,0xe0,0x06,0xd2,0x4b,0xbc,0x15,0xff,0x95,0xee,0xa8,0xd7,0x08,0xe9,0xb9,0xbd,0x66,0x4b,0x33,0x8f,0xf4,0x54,0xe9,0xac,0xad,0x56,0x4b,0x3b,0xb4,0x9a,0x21,0xcd,0xa9,0x7a,0x93,0x74,0xfe,0x56,0x9c,0x93,0xee,0xf0,0x6c,0xb3,0xa5,0x99,0x47,0x7a,0x9b,0x74,0x07,0xad,0x56,0x48,0x73,0xcf,0xb6,0x8b,0xb4,0x5b,0x15,0x00,0x70,0x03,0xe9,0x25,0xfe,0x84,0x56,0x4a,0xf3,0x7b,0x7d,0x23,0x3d,0xaf,0xd7,0x6c,0x69,0xe6,0x91,0x9e,0x2a,0x9d,0xb5,0xd5,0x55,0xd2,0x2e,0x55,0x33,0xa4,0x39,0x55,0x6f,0x92,0xce,0x5f,0xc5,0x79,0xe9,0x1e,0xcf,0xb4,0x4a,0x9a,0xdd,0xeb,0x8d,0xd2,0x3d,0xb4,0x9a,0x2d,0xcd,0x3c,0xd3,0x4e,0xd2,0x7e,0x55,0x00,0xc0,0x0d,0xa4,0x97,0xf8,0x13,0x5a,0x2d,0xed,0xd0,0xeb,0x13,0xe9,0x39,0x47,0x9a,0x2d,0xcd,0xec,0xf5,0x54,0xe9,0xac,0xad,0xae,0x96,0x76,0x4a,0xcd,0x90,0xe6,0x54,0xbd,0x49,0x3a,0x7f,0x15,0xe7,0xa5,0x7b,0x3c,0xd3,0x4a,0x69,0x7e,0xab,0xb7,0x4a,0x77,0x51,0x35,0x5b,0x9a,0x79,0xa6,0x9d,0xa4,0xfd,0xaa,0x00,0x80,0x1b,0x48,0x2f,0xf1,0x27,0xb4,0x5a,0xda,0xa1,0xd7,0x59,0xe9,0x19,0x47,0x9a,0x2d,0xcd,0xec,0xf5,0x54,0xe9,0xac,0xad,0x76,0x90,0xf6,0xaa,0x1a,0x2d,0xcd,0xa8,0x7a,0x93,0x74,0xfe,0x2a,0xce,0x4b,0xf7,0x78,0xb4,0x2b,0xa4,0x3d,0xaa,0xde,0x2a,0xdd,0x45,0xab,0x99,0xd2,0xbc,0xa3,0xed,0x26,0xed,0x58,0x05,0x00,0xdc,0x40,0x7a,0x89,0x3f,0xa1,0x2b,0xa4,0x3d,0x7a,0x9d,0x91,0x7e,0xbe,0xd7,0x0a,0x69,0x6e,0xab,0x27,0x4b,0xe7,0x6d,0xb5,0x8b,0xb4,0x5b,0x6a,0xb4,0x34,0xa3,0xea,0x2d,0xd2,0xd9,0x5b,0x71,0x5e,0xba,0xc7,0x23,0x5d,0x25,0xed,0xd2,0xea,0xad,0xd2,0x5d,0x54,0xcd,0x94,0xe6,0x1d,0x69,0x47,0x69,0xcf,0x2a,0x00,0xe0,0x06,0xd2,0x4b,0xfc,0x09,0x5d,0x25,0xed,0xd2,0xeb,0x88,0xf4,0x73,0xbd,0x56,0x49,0xb3,0xab,0x9e,0x2e,0x9d,0xb9,0xd5,0x2e,0xd2,0x6e,0x55,0x23,0xa5,0xe7,0x57,0xbd,0x45,0x3a,0x7b,0x2b,0xce,0x4b,0xf7,0x78,0xa4,0xab,0xa4,0x5d,0x5a,0xbd,0x55,0xba,0x8b,0xaa,0x99,0xd2,0xbc,0x23,0xed,0x28,0xed,0x59,0x05,0x00,0xdc,0x40,0x7a,0x89,0x3f,0xa1,0x2b,0xa5,0x7d,0x7a,0xb5,0xa4,0xcf,0x1f,0x69,0x85,0x34,0xb7,0xd5,0xd3,0xa5,0x33,0x57,0xed,0x24,0xed,0x57,0x35,0x52,0x7a,0x7e,0xd5,0x5b,0xa4,0xb3,0xb7,0xe2,0xbc,0x74,0x8f,0x47,0xba,0x52,0xda,0xa7,0xea,0xcd,0xd2,0x7d,0x54,0xcd,0x92,0x66,0x1d,0x69,0x47,0x69,0xcf,0x2a,0x00,0xe0,0x06,0xd2,0x4b,0xfc,0x09,0x5d,0x29,0xed,0xd3,0xab,0x92,0x3e,0x7b,0xa4,0x55,0xd2,0xec,0x56,0x4f,0x96,0xce,0xdb,0x6a,0x37,0x69,0xc7,0xd4,0x48,0xe9,0xf9,0x55,0x6f,0x91,0xce,0xde,0x8a,0xf3,0xd2,0x3d,0xf6,0xba,0x5a,0xda,0xa9,0xea,0xcd,0xd2,0x7d,0x54,0xcd,0x92,0x66,0xf5,0xda,0x55,0xda,0xb5,0x0a,0x00,0xb8,0x81,0xf4,0x12,0x7f,0x42,0x57,0x4b,0x3b,0xf5,0x4a,0xd2,0xe7,0x7a,0xad,0x94,0xe6,0x57,0x3d,0x5d,0x3a,0x73,0xd5,0x8e,0xd2,0x9e,0x55,0xa3,0xa4,0x67,0x57,0xbd,0x45,0x3a,0x7b,0x2b,0xce,0x4b,0xf7,0xd8,0xeb,0x6a,0x69,0xa7,0xaa,0x37,0x4b,0xf7,0x51,0x35,0x4b,0x9a,0xd5,0x6b,0x57,0x69,0xd7,0x2a,0x00,0xe0,0x06,0xd2,0x4b,0xfc,0x09,0xed,0x20,0xed,0xd5,0xeb,0x6f,0xe9,0xf7,0x7b,0xad,0x94,0xe6,0xb7,0x7a,0xba,0x74,0xe6,0xaa,0x1d,0xa5,0x3d,0xab,0x46,0x49,0xcf,0xae,0x7a,0x83,0x74,0xee,0x5e,0x9c,0x97,0xee,0xb1,0xd5,0x0e,0xd2,0x5e,0x55,0x6f,0x96,0xee,0xa3,0x6a,0x96,0x34,0xab,0xd7,0xae,0xd2,0xae,0x55,0x00,0xc0,0x0d,0xa4,0x97,0xf8,0x13,0xda,0x45,0xda,0xad,0xd7,0x2f,0xe9,0xd7,0x8f,0xb4,0x52,0x9a,0xdf,0xea,0xc9,0xd2,0x79,0xab,0x76,0x95,0x76,0xad,0x1a,0x25,0x3d,0xbb,0xea,0x2d,0xd2,0xd9,0x5b,0x71,0x5e,0xba,0xc7,0x56,0x3b,0x48,0x7b,0x55,0xbd,0x59,0xba,0x8f,0xaa,0x59,0xd2,0xac,0x56,0x3b,0x4b,0xfb,0x56,0x01,0x00,0x37,0x90,0x5e,0xe2,0xad,0x38,0x27,0xdd,0xe1,0xac,0x56,0x4b,0x3b,0x54,0x3d,0x5d,0x3a,0x73,0xd5,0xce,0xd2,0xbe,0xa9,0x51,0xd2,0xb3,0xab,0xde,0x22,0x9d,0xbd,0x15,0xe7,0xa5,0x7b,0xac,0xda,0x45,0xda,0xad,0xea,0xcd,0xd2,0x7d,0x54,0xcd,0x92,0x66,0xb5,0xda,0x59,0xda,0xb7,0x0a,0x00,0xb8,0x81,0xf4,0x12,0x6f,0xc5,0x79,0xe9,0x1e,0x47,0x77,0x85,0xb4,0x47,0xd5,0xd3,0xa5,0x33,0x57,0xed,0x2c,0xed,0x9b,0x1a,0x25,0x3d,0xbb,0xea,0x2d,0xd2,0xd9,0x5b,0x71,0x5e,0xba,0xc7,0xaa,0x5d,0xa4,0xdd,0xaa,0xee,0x20,0xed,0xbd,0xba,0x59,0xd2,0xac,0x56,0x3b,0x4b,0xfb,0x56,0x01,0x00,0x37,0x90,0x5e,0xe2,0xad,0xf8,0x4c,0xba,0xcb,0x91,0x5d,0x21,0xed,0x51,0xf5,0x74,0xe9,0xcc,0x55,0x3b,0x4b,0xfb,0xa6,0x46,0x49,0xcf,0xae,0x7a,0x8b,0x74,0xf6,0x56,0x9c,0x97,0xee,0xb1,0x6a,0x17,0x69,0xb7,0xaa,0x1d,0xa5,0x3d,0xaf,0x6e,0x96,0x34,0xab,0x6a,0x77,0x69,0xe7,0x2a,0x00,0xe0,0x06,0xd2,0x4b,0xbc,0x15,0x9f,0x4b,0xf7,0x39,0xa2,0xab,0xa4,0x5d,0x52,0x6f,0x90,0xce,0xfd,0xe4,0x46,0x49,0xcf,0xae,0x7a,0x8b,0x74,0xf6,0x56,0x9c,0x97,0xee,0xb1,0x6a,0x17,0x69,0xb7,0xaa,0x1d,0xa4,0xbd,0x76,0x6b,0x96,0x34,0xab,0x6a,0x77,0x69,0xe7,0x2a,0x00,0xe0,0x06,0xd2,0x4b,0xbc,0x15,0x9f,0x4b,0xf7,0xf9,0x6d,0x57,0x4a,0xfb,0xa4,0xde,0x20,0x9d,0xfb,0xc9,0x8d,0x92,0x9e,0x5d,0xf5,0x16,0xe9,0xec,0xad,0x38,0x2f,0xdd,0x63,0xd5,0x2e,0xd2,0x6e,0x55,0x57,0x48,0x7b,0xec,0xde,0x2c,0x69,0x56,0xd5,0xee,0xd2,0xce,0x55,0x00,0xc0,0x0d,0xa4,0x97,0x78,0x2b,0xbe,0x93,0xee,0xf4,0xd3,0xae,0x94,0xf6,0xa9,0x7a,0x83,0x74,0xee,0x27,0x37,0x4a,0x7a,0x76,0xd5,0x9b,0xa4,0xf3,0x57,0x71,0x5e,0xba,0xc7,0xaa,0x5d,0xa4,0xdd,0xaa,0x56,0x4a,0xf3,0xef,0xd2,0x2c,0x69,0x56,0xd5,0xee,0xd2,0xce,0x55,0x00,0xc0,0x0d,0xa4,0x97,0x78,0x2b,0xbe,0x97,0xee,0xf5,0x93,0xae,0x94,0xf6,0xa9,0x7a,0xba,0x74,0xe6,0xa7,0x37,0x4a,0x7a,0x76,0xd5,0x9b,0xa4,0xf3,0x57,0x71,0x5e,0xba,0xc7,0xaa,0x5d,0xa4,0xdd,0xaa,0x56,0x48,0x73,0xef,0xd6,0x2c,0x69,0x56,0xd5,0xee,0xd2,0xce,0x55,0x00,0xc0,0x0d,0xa4,0x97,0x78,0x2b,0xc6,0x48,0x77,0x7b,0xa6,0xab,0xa5,0x9d,0xaa,0x9e,0x2e,0x9d,0xf9,0xe9,0x8d,0x92,0x9e,0x5d,0xf5,0x26,0xe9,0xfc,0x55,0x9c,0x97,0xee,0xb1,0x6a,0x17,0x69,0xb7,0xaa,0xd9,0xd2,0xcc,0x3b,0x36,0x4b,0x9a,0x55,0xb5,0xbb,0xb4,0x73,0x15,0x00,0x70,0x03,0xe9,0x25,0xde,0x8a,0x31,0xd2,0xdd,0x1e,0x6d,0x07,0x69,0xaf,0xaa,0xa7,0x4b,0x67,0x7e,0x7a,0xa3,0xa4,0x67,0x57,0xbd,0x49,0x3a,0x7f,0x2b,0xce,0x49,0x77,0x58,0xb5,0x8b,0xb4,0x5b,0xd5,0x4c,0x69,0xde,0x5d,0x9b,0x25,0xcd,0xaa,0xda,0x5d,0xda,0xb9,0x0a,0x00,0xb8,0x81,0xf4,0x12,0x6f,0xc5,0x18,0xe9,0x6e,0x8f,0xb4,0x8b,0xb4,0x5b,0xd5,0xd3,0xa5,0x33,0x3f,0xbd,0x51,0xd2,0xb3,0xab,0xde,0x24,0x9d,0xbf,0x15,0xe7,0xa4,0x3b,0xac,0xda,0x45,0xda,0xad,0x6a,0xa6,0x34,0x6f,0x54,0x23,0xa4,0xe7,0x56,0xcd,0x92,0x66,0x55,0xed,0x2e,0xed,0x5c,0x05,0x00,0xdc,0x40,0x7a,0x89,0xb7,0xe2,0x7b,0xe9,0x5e,0xcf,0xb4,0x83,0xb4,0x57,0xd5,0xd3,0xa5,0x33,0x3f,0xbd,0x51,0xd2,0xb3,0xab,0xde,0x24,0x9d,0xbf,0x15,0xe7,0xa4,0x3b,0xac,0xda,0x45,0xda,0xad,0x6a,0x96,0x34,0xeb,0x9b,0x66,0x48,0x73,0xaa,0x66,0x49,0xb3,0xaa,0x76,0x97,0x76,0xae,0x02,0x00,0x6e,0x20,0xbd,0xc4,0x5b,0xf1,0x9d,0x74,0xa7,0x9f,0x74,0xb5,0xb4,0x53,0xd5,0xd3,0xa5,0x33,0x3f,0xbd,0x51,0xd2,0xb3,0xab,0xde,0x24,0x9d,0xbf,0x17,0xc7,0xa5,0xfb,0xab,0xda,0x45,0xda,0xad,0x6a,0x86,0x34,0xe7,0x4c,0xab,0xa4,0xd9,0x55,0xb3,0xa4,0x59,0x55,0xbb,0x4b,0x3b,0x57,0x01,0x00,0x37,0x90,0x5e,0xe2,0xad,0xf8,0x4e,0xba,0xd3,0x4f,0xbb,0x52,0xda,0xa7,0xea,0xe9,0xd2,0x99,0xab,0xf8,0xaf,0x74,0x47,0x55,0x6f,0x92,0xce,0xdf,0x8b,0xe3,0xd2,0xfd,0x55,0xed,0x22,0xed,0x56,0x35,0x43,0x9a,0xd3,0xeb,0x0a,0x69,0x8f,0xaa,0x59,0xd2,0xac,0xaa,0xdd,0xa5,0x9d,0xab,0x00,0x80,0x1b,0x48,0x2f,0xf1,0x56,0x7c,0x2e,0xdd,0xe7,0x37,0x5d,0x29,0xed,0x53,0xf5,0x74,0xe9,0xcc,0xad,0xf8,0x23,0xdd,0x4f,0xd5,0x9b,0xa4,0xf3,0xf7,0xe2,0xb8,0x74,0x7f,0x55,0xbb,0x48,0xbb,0x55,0xcd,0x90,0xe6,0xb4,0xba,0x4a,0xda,0xa5,0x6a,0x96,0x34,0xab,0x6a,0x77,0x69,0xe7,0x2a,0x00,0xe0,0x06,0xd2,0x4b,0xbc,0x15,0x9f,0x49,0x77,0x39,0xa2,0x2b,0xa5,0x7d,0x52,0x4f,0x97,0xce,0xdc,0x8a,0x3f,0xd2,0xfd,0x54,0xbd,0x4d,0xba,0x83,0x5e,0x1c,0x93,0xee,0xae,0x6a,0x17,0x69,0xb7,0xaa,0xd1,0xd2,0x8c,0xaa,0xab,0xa5,0x9d,0xaa,0x66,0x49,0xb3,0xaa,0x76,0x97,0x76,0xae,0x02,0x00,0x6e,0x20,0xbd,0xc4,0x5b,0x71,0x5e,0xba,0xc7,0x91,0x5d,0x25,0xed,0x92,0x7a,0x83,0x74,0xee,0x2a,0xfe,0x48,0xf7,0x53,0xf5,0x36,0xe9,0x0e,0x7a,0x71,0x4c,0xba,0xbb,0xaa,0x5d,0xa4,0xdd,0xaa,0x46,0x4b,0x33,0xaa,0xae,0x96,0x76,0xaa,0x9a,0x25,0xcd,0xaa,0xda,0x5d,0xda,0xb9,0x0a,0x00,0xb8,0x81,0xf4,0x12,0x6f,0xc5,0x79,0xe9,0x1e,0x47,0x77,0x85,0xb4,0x47,0xd5,0xd3,0xa5,0x33,0x57,0xf1,0x47,0xba,0x9f,0xaa,0xb7,0x49,0x77,0xd0,0x8b,0x63,0xd2,0xdd,0x55,0xed,0x22,0xed,0x56,0x35,0x52,0x7a,0x7e,0xab,0xab,0xa5,0x9d,0xaa,0x66,0x49,0xb3,0xaa,0x76,0x97,0x76,0xae,0x02,0x00,0x6e,0x20,0xbd,0xc4,0x5b,0x71,0x4e,0xba,0xc3,0x5e,0xbf,0xa4,0x5f,0x6f,0x75,0x85,0xb4,0x47,0xd5,0xd3,0xa5,0x33,0x57,0xf1,0x47,0xba,0x9f,0xaa,0x37,0x4a,0xf7,0xd0,0x8a,0x63,0xd2,0xdd,0x55,0xed,0x22,0xed,0x56,0x35,0x52,0x7a,0x7e,0xd5,0x0e,0xd2,0x5e,0x55,0xb3,0xa4,0x59,0x55,0xbb,0x4b,0x3b,0x57,0x01,0x00,0x37,0x90,0x5e,0xe2,0xad,0x38,0x2e,0xdd,0x5f,0xaf,0xbf,0xa5,0xdf,0x6f,0xb5,0x5a,0xda,0xa1,0xea,0xe9,0xd2,0x99,0x5b,0xf1,0xaf,0x74,0x37,0x55,0x6f,0x94,0xee,0xa1,0x17,0x7d,0xe9,0xde,0xaa,0x76,0x91,0x76,0xab,0x1a,0x25,0x3d,0xbb,0xd5,0x0e,0xd2,0x5e,0x55,0xb3,0xa4,0x59,0x55,0xbb,0x4b,0x3b,0x57,0x01,0x00,0x37,0x90,0x5e,0xe2,0xad,0x38,0x26,0xdd,0x5d,0xaf,0x24,0x7d,0xae,0xd5,0x4a,0x69,0x7e,0xab,0x27,0x4b,0xe7,0x6d,0xc5,0xbf,0xd2,0xdd,0x54,0xbd,0x51,0xba,0x87,0x5e,0xf4,0xa5,0x7b,0xab,0xda,0x45,0xda,0xad,0x6a,0x94,0xf4,0xec,0xaa,0x5d,0xa4,0xdd,0xaa,0x66,0x49,0xb3,0xaa,0x76,0x97,0x76,0xae,0x02,0x00,0x6e,0x20,0xbd,0xc4,0x5b,0x71,0x4c,0xba,0xbb,0x5e,0x49,0xfa,0x5c,0xaf,0x55,0xd2,0xec,0x56,0x4f,0x96,0xce,0xdb,0x8a,0x7f,0xa5,0xbb,0xa9,0x7a,0xab,0x74,0x17,0xbd,0x68,0x4b,0x77,0x56,0xb5,0x8b,0xb4,0x5b,0xd5,0x28,0xe9,0xd9,0x55,0x3b,0x48,0x7b,0xb5,0x9a,0x25,0xcd,0xaa,0xda,0x5d,0xda,0xb9,0x0a,0x00,0xb8,0x81,0xf4,0x12,0x6f,0x45,0x5f,0xba,0xb7,0x5e,0x2d,0xe9,0xf3,0xad,0x56,0x49,0xb3,0x5b,0x3d,0x59,0x3a,0x6f,0x2f,0xf2,0xbd,0x54,0xbd,0x55,0xba,0x8b,0x5e,0xb4,0xa5,0x3b,0xab,0xda,0x45,0xda,0xad,0x6a,0x94,0xf4,0xec,0xaa,0x1d,0xa4,0xbd,0x5a,0xcd,0x92,0x66,0x55,0xed,0x2e,0xed,0x5c,0x05,0x00,0xdc,0x40,0x7a,0x89,0xb7,0xa2,0x2d,0xdd,0x59,0xaf,0x23,0xd2,0xcf,0xb5,0x5a,0x25,0xcd,0x6e,0xf5,0x64,0xe9,0xbc,0xad,0xc8,0xf7,0x52,0xf5,0x56,0xe9,0x2e,0x8e,0x44,0x2d,0xdd,0x57,0xd5,0x2e,0xd2,0x6e,0x55,0xa3,0xa4,0x67,0x57,0xed,0x20,0xed,0xd5,0x6a,0x96,0x34,0xab,0x6a,0x77,0x69,0xe7,0x2a,0x00,0xe0,0x06,0xd2,0x4b,0xbc,0x15,0xb5,0x74,0x5f,0xbd,0x8e,0x4a,0x3f,0xdb,0x6b,0x85,0x34,0xb7,0xd5,0x93,0xa5,0xf3,0xb6,0x22,0xdf,0x4b,0xd5,0x9b,0xa5,0xfb,0xe8,0x45,0x2d,0xdd,0x57,0xd5,0x2e,0xd2,0x6e,0x55,0xa3,0xa4,0x67,0x57,0x5d,0x2d,0xed,0xd4,0x6b,0x96,0x34,0xab,0x6a,0x77,0x69,0xe7,0x2a,0x00,0xe0,0x06,0xd2,0x4b,0xbc,0x15,0xb5,0x74,0x5f,0xbd,0xce,0x48,0x3f,0xdf,0x6b,0xb6,0x34,0xb3,0xd5,0x93,0xa5,0xf3,0xf6,0x7a,0xbb,0x74,0x27,0x55,0x6f,0x97,0xee,0xa4,0xd7,0x93,0x8c,0x3c,0xcf,0xcf,0x7b,0x6a,0xb5,0x8b,0xb4,0x5b,0xd5,0x28,0xe9,0xd9,0x55,0x57,0x4b,0x3b,0xf5,0x9a,0x25,0xcd,0xaa,0xda,0x5d,0xda,0xb9,0x0a,0x00,0xb8,0x81,0xf4,0x12,0x6f,0x45,0x96,0xee,0xaa,0xd7,0x27,0xd2,0x73,0x5a,0xad,0x90,0xe6,0x56,0x3d,0x5d,0x3a,0x73,0xab,0xb7,0x4b,0x77,0x52,0xf5,0x76,0xe9,0x4e,0x8e,0xf4,0x04,0xa3,0xcf,0xf2,0xf7,0xfd,0xf4,0xda,0x45,0xda,0xad,0x6a,0x94,0xf4,0xec,0xaa,0x2b,0xa5,0x7d,0x8e,0x34,0x4b,0x9a,0x55,0xb5,0xbb,0xb4,0x73,0x15,0x00,0x70,0x03,0xe9,0x25,0xde,0x8a,0xff,0x95,0xee,0xa9,0xd7,0x37,0xd2,0xf3,0x5a,0xcd,0x96,0x66,0xb6,0x7a,0xb2,0x74,0xde,0x56,0x6f,0x97,0xee,0xa4,0x8a,0x7c,0x2f,0x47,0xba,0xb3,0x19,0xe7,0xf8,0xfb,0x99,0xbd,0x76,0x91,0x76,0xab,0x1a,0x25,0x3d,0xbb,0xd5,0x55,0xd2,0x2e,0x47,0x9a,0x25,0xcd,0xaa,0xda,0x5d,0xda,0xb9,0x15,0x00,0xb0,0xb9,0xf4,0x02,0x6f,0xc5,0x7f,0xa5,0x3b,0xea,0xf5,0xad,0xf4,0xcc,0x5e,0x33,0xa5,0x79,0xbd,0x9e,0x2a,0x9d,0xb5,0xd7,0x9b,0xa5,0xfb,0xa8,0x22,0xdf,0xcb,0xd1,0xee,0x68,0xd6,0x19,0x7e,0x3e,0xb7,0xd5,0x2e,0xd2,0x6e,0x55,0xa3,0xa4,0x67,0xb7,0xba,0x42,0xda,0xe3,0x68,0xb3,0xa4,0x59,0x55,0xbb,0x4b,0x3b,0xb7,0x02,0x00,0x36,0x97,0x5e,0xe0,0xad,0xf8,0xaf,0x74,0x47,0xbd,0x46,0x48,0xcf,0x6d,0x35,0x5b,0x9a,0xd9,0xeb,0xa9,0xd2,0x59,0x7b,0xbd,0x55,0xba,0x8b,0xaa,0x15,0xd2,0xdc,0x56,0x57,0x48,0x7b,0x9c,0xe9,0x0e,0xd2,0xde,0xbf,0x1a,0x25,0x3d,0xbb,0x6a,0x17,0x69,0xb7,0xaa,0x51,0xd2,0xb3,0x7b,0xad,0x94,0xe6,0x9f,0x69,0x96,0x34,0xab,0xea,0x0e,0xd2,0xde,0x55,0x00,0xc0,0xe6,0xd2,0x0b,0xbc,0x15,0x7f,0xa4,0xfb,0xe9,0x35,0x52,0x7a,0x7e,0xab,0xd9,0xd2,0xcc,0x5e,0x4f,0x95,0xce,0xda,0xeb,0x8d,0xd2,0x3d,0x54,0xad,0x90,0xe6,0xb6,0xba,0x42,0xda,0xe3,0x6c,0x3b,0x4b,0xfb,0xfe,0x6e,0x94,0xf4,0xec,0xaa,0x5d,0xa4,0xdd,0xaa,0x46,0x4a,0xcf,0x6f,0xb5,0x4a,0x9a,0x7d,0xb6,0x59,0xd2,0xac,0xaa,0x3b,0x48,0x7b,0x57,0x01,0x00,0x9b,0x4b,0x2f,0xf0,0x56,0xfc,0x2b,0xdd,0x4d,0xaf,0xd1,0xd2,0x8c,0x5e,0x33,0xa5,0x79,0x47,0x7a,0xa2,0x74,0xce,0x23,0xed,0x6a,0xd6,0x7e,0x7f,0x9f,0xbd,0xd7,0x0a,0x69,0x6e,0xab,0xab,0xa4,0x5d,0xce,0xb6,0x9b,0xb4,0xe3,0xcf,0x46,0x49,0xcf,0xae,0xda,0x45,0xda,0xad,0x6a,0xa4,0xf4,0xfc,0x56,0x2b,0xa4,0xb9,0x9f,0x34,0x4b,0x9a,0x55,0x75,0x07,0x69,0xef,0x2a,0x00,0x60,0x73,0xe9,0x05,0xde,0x8a,0x7c,0x2f,0xbd,0x66,0x49,0xb3,0x7a,0xcd,0x94,0xe6,0x1d,0xe9,0x2a,0x33,0xe7,0xff,0x7d,0xbe,0x33,0xed,0x64,0xf6,0x6e,0x3f,0x9f,0xdf,0x6a,0x85,0x34,0xb7,0xd5,0x95,0xd2,0x3e,0x67,0xdb,0x41,0xda,0xab,0x6a,0x94,0xf4,0xec,0xaa,0x5d,0xa4,0xdd,0xaa,0x46,0x4b,0x33,0x5a,0xcd,0x94,0xe6,0x7d,0xda,0x2c,0x69,0x56,0xd5,0x1d,0xa4,0xbd,0x5b,0x01,0x00,0x1b,0x4b,0x2f,0xef,0xa7,0x35,0x5a,0x9a,0xd1,0x6b,0xa6,0x34,0xaf,0xd5,0x4c,0x69,0xde,0x99,0x56,0x59,0x35,0xf7,0xe7,0x9c,0xa3,0x5d,0x2d,0xed,0xf4,0xab,0xd1,0xd2,0x8c,0xaa,0x15,0xd2,0xdc,0x56,0x57,0x4b,0x3b,0x7d,0xda,0x6a,0x69,0x87,0x5e,0xa3,0xa4,0x67,0x57,0xed,0x22,0xed,0x56,0x35,0x5a,0x9a,0xd1,0x6b,0x86,0x34,0xe7,0x9b,0x66,0x49,0xb3,0xaa,0xee,0x22,0xed,0xde,0x0a,0x00,0xd8,0x54,0x7a,0x71,0x3f,0xad,0x91,0xd2,0xf3,0x7b,0xcd,0x96,0x66,0xf6,0x9a,0x29,0xcd,0x3b,0xdb,0x2c,0x69,0xd6,0xaf,0x66,0x49,0xb3,0xce,0xb6,0x4a,0x9a,0xfd,0xb3,0xd1,0xd2,0x8c,0xaa,0x15,0xd2,0xdc,0x56,0x3b,0x48,0x7b,0x7d,0xdb,0x2c,0x69,0xd6,0x99,0x46,0x49,0xcf,0xae,0xda,0x45,0xda,0xad,0x6a,0xb4,0x34,0xe3,0x48,0xa3,0xa4,0x67,0x8f,0x68,0x96,0x34,0xab,0xea,0x2e,0xd2,0xee,0xab,0x02,0x00,0x06,0x4a,0x2f,0xdb,0xa7,0x35,0x4a,0x7a,0x76,0xaf,0x55,0xd2,0xec,0x5e,0x33,0xa5,0x79,0x9f,0x34,0x42,0x7a,0xee,0xcf,0x66,0x4a,0xf3,0x3e,0x6d,0xb4,0x34,0xa3,0xd5,0x68,0x69,0x46,0xd5,0x0a,0x69,0x6e,0xab,0x5d,0xa4,0xdd,0x9e,0xd8,0x28,0xe9,0xd9,0x55,0xbb,0x48,0xbb,0x55,0xcd,0x90,0xe6,0x9c,0xe9,0x13,0xe9,0x39,0xad,0x7e,0x49,0xbf,0x5e,0x35,0x4b,0x9a,0x55,0x75,0x17,0x69,0xf7,0x55,0x01,0x00,0x03,0xa5,0x97,0xed,0xd3,0x1a,0x21,0x3d,0xb7,0xd7,0x6a,0x69,0x87,0x5e,0xb3,0xa4,0x59,0x3b,0x37,0x5b,0x9a,0x79,0xc7,0x46,0x4b,0x33,0xaa,0x56,0x48,0x73,0x5b,0xed,0x24,0xed,0xf7,0xb4,0x46,0x49,0xcf,0xae,0xda,0x45,0xda,0xad,0x6a,0x86,0x34,0x67,0xa7,0x7e,0x4b,0xbf,0x57,0x35,0x4b,0x9a,0x55,0x75,0x17,0x69,0xf7,0x55,0x01,0x00,0x03,0xa5,0x97,0xed,0xd3,0x1a,0x21,0x3d,0xb7,0xd7,0x15,0xd2,0x1e,0xad,0x66,0x4b,0x33,0x77,0x6c,0x85,0x34,0xf7,0x6e,0x8d,0x96,0x66,0x54,0xad,0x90,0xe6,0xb6,0xda,0x51,0xda,0xf3,0x29,0x8d,0x92,0x9e,0x5d,0xb5,0x8b,0xb4,0x5b,0xd5,0x0c,0x69,0xce,0x2e,0xfd,0x2d,0xfd,0x7e,0xd5,0x2c,0x69,0x56,0xd5,0x9d,0xa4,0xfd,0x57,0x04,0x00,0x0c,0x94,0x5e,0xb6,0x4f,0xeb,0x5b,0xe9,0x99,0xbd,0xae,0x92,0x76,0xe9,0x35,0x5b,0x9a,0xb9,0x5b,0xab,0xa4,0xd9,0x77,0x6a,0xb4,0x34,0xa3,0x6a,0x85,0x34,0xb7,0xd5,0xae,0xd2,0xae,0x77,0x6f,0xa4,0xf4,0xfc,0xaa,0x5d,0xa4,0xdd,0xaa,0x66,0x49,0xb3,0xae,0xee,0xa7,0xf4,0x99,0xaa,0x59,0xd2,0xac,0xaa,0xbb,0x49,0x67,0x98,0x1d,0x00,0x30,0x50,0x7a,0xd9,0x3e,0xad,0x6f,0xa4,0xe7,0xf5,0xba,0x5a,0xda,0xa9,0xd7,0x0a,0x69,0xee,0x2e,0xad,0x96,0x76,0xb8,0x43,0xa3,0xa5,0x19,0x55,0x2b,0xa4,0xb9,0xad,0x76,0x97,0x76,0xbe,0x5b,0x33,0xa4,0x39,0x55,0xbb,0x48,0xbb,0x55,0xcd,0x94,0xe6,0x5d,0x55,0x92,0x3e,0x57,0x35,0x4b,0x9a,0x55,0x75,0x47,0xe9,0x1c,0x33,0x03,0x00,0x06,0x4a,0x2f,0xdb,0xa7,0xf5,0xa9,0xf4,0xac,0x5e,0xbb,0x48,0xbb,0xf5,0x5a,0x21,0xcd,0xdd,0xa1,0x2b,0xa4,0x3d,0x76,0x6f,0xb4,0x34,0xa3,0x6a,0x85,0x34,0xb7,0xd5,0x1d,0xa4,0xbd,0xef,0xd2,0x2c,0x69,0x56,0xd5,0x2e,0xd2,0x6e,0x55,0xb3,0xa5,0x99,0xab,0xab,0xa4,0xcf,0x56,0xcd,0x92,0x66,0x55,0xdd,0x55,0x3a,0xcb,0xac,0x00,0x80,0x81,0xd2,0xcb,0xf6,0x69,0x7d,0x2a,0x3d,0xab,0xd7,0x2e,0xd2,0x6e,0xbd,0x56,0x49,0xb3,0xaf,0xee,0x4a,0x69,0x9f,0x9d,0x9a,0x29,0xcd,0xab,0x5a,0x21,0xcd,0x6d,0x75,0x17,0x69,0xf7,0x9d,0x9b,0x2d,0xcd,0xac,0xda,0x45,0xda,0xad,0x6a,0x95,0x34,0x7b,0x45,0x2d,0xe9,0xf3,0x55,0xb3,0xa4,0x59,0x55,0x77,0x96,0xce,0x33,0x23,0x00,0x60,0xa0,0xf4,0xb2,0x7d,0x5a,0x9f,0x48,0xcf,0xe9,0xb5,0x9b,0xb4,0x63,0xaf,0x55,0xd2,0xec,0x2b,0xda,0x45,0xda,0xed,0xca,0x56,0x49,0xb3,0xab,0x56,0x48,0x73,0x5b,0xdd,0x51,0x3a,0xc7,0x0e,0xad,0x94,0xe6,0x57,0xed,0x22,0xed,0x56,0xb5,0x52,0x9a,0x3f,0xab,0x23,0xd2,0xcf,0x55,0xcd,0x92,0x66,0x55,0x3d,0x4d,0x3a,0xe3,0xb7,0x01,0x00,0x03,0xa5,0x97,0xed,0xd3,0x3a,0x2b,0x3d,0xa3,0xd7,0xae,0xd2,0xae,0xbd,0x56,0x4b,0x3b,0xcc,0x6e,0x67,0x69,0xdf,0x15,0x5d,0x21,0xed,0x51,0xb5,0x42,0x9a,0xdb,0xea,0xee,0xd2,0x99,0x56,0x75,0xa5,0xb4,0x4f,0xd5,0x2e,0xd2,0x6e,0x55,0x57,0x49,0xbb,0x8c,0xea,0xa8,0xf4,0xb3,0x55,0xb3,0xa4,0x59,0x55,0x4f,0x97,0xce,0x7c,0x36,0x00,0x00,0x1e,0x2a,0xfd,0xe3,0xef,0xdb,0xee,0x2c,0x9d,0x67,0x64,0xf0,0x4b,0xfa,0xb3,0x31,0x23,0xde,0x23,0xfd,0xf7,0xff,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb6,0xf6,0xcf,0x3f,0xff,0x0f,0xbb,0x2b,0x27,0x79,0x57,0xc9,0xc6,0x55,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; namespace Logic { GraphicFrame::GraphicFrame(std::wstring ns) { m_namespace = ns; } GraphicFrame::~GraphicFrame() { } GraphicFrame::GraphicFrame(XmlUtils::CXmlNode& node) { fromXML(node); } const GraphicFrame& GraphicFrame::operator =(XmlUtils::CXmlNode& node) { fromXML(node); return *this; } GraphicFrame::GraphicFrame(XmlUtils::CXmlLiteReader& oReader) { fromXML(oReader); } const GraphicFrame& GraphicFrame::operator =(XmlUtils::CXmlLiteReader& oReader) { fromXML(oReader); return *this; } void GraphicFrame::fromXML(XmlUtils::CXmlLiteReader& oReader) { m_namespace = XmlUtils::GetNamespace(oReader.GetName()); ReadAttributes(oReader); if ( oReader.IsEmptyNode() ) return; int nCurDepth = oReader.GetDepth(); while( oReader.ReadNextSiblingNode( nCurDepth ) ) { fromXML2(oReader); } FillParentPointersForChilds(); } void GraphicFrame::ReadAttributes2(XmlUtils::CXmlLiteReader& oReader) { //todooo нормальный объект сделать!! if (!olePic.IsInit()) olePic.Init(); if (!olePic->oleObject.IsInit()) olePic->oleObject.Init(); WritingElement_ReadAttributes_Start(oReader) WritingElement_ReadAttributes_Read_if(oReader, L"progId", olePic->oleObject->m_sProgId) WritingElement_ReadAttributes_Read_else_if(oReader, L"r:id", olePic->oleObject->m_oId) WritingElement_ReadAttributes_Read_else_if(oReader, L"relationships:id", olePic->oleObject->m_oId) WritingElement_ReadAttributes_Read_else_if(oReader, L"imgW", olePic->oleObject->m_oDxaOrig) WritingElement_ReadAttributes_Read_else_if(oReader, L"imgH", olePic->oleObject->m_oDyaOrig) WritingElement_ReadAttributes_Read_else_if(oReader, L"showAsIcon", olePic->oleObject->m_oShowAsIcon) WritingElement_ReadAttributes_Read_else_if(oReader, L"name", olePic->oleObject->m_oName); WritingElement_ReadAttributes_End(oReader) if(olePic->oleObject->m_oDxaOrig.IsInit()) { olePic->oleObject->m_oDxaOrig = (int)Emu_To_Twips(olePic->oleObject->m_oDxaOrig.get()); } if(olePic->oleObject->m_oDyaOrig.IsInit()) { olePic->oleObject->m_oDyaOrig = (int)Emu_To_Twips(olePic->oleObject->m_oDyaOrig.get()); } if ((olePic->oleObject->m_oShowAsIcon.IsInit()) && (*olePic->oleObject->m_oShowAsIcon)) { olePic->oleObject->m_oDrawAspect = (BYTE)1; } } void GraphicFrame::ReadAttributes3(XmlUtils::CXmlLiteReader& oReader) { WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_ReadSingle ( oReader, (L"spid"), vmlSpid ) WritingElement_ReadAttributes_End( oReader ) } void GraphicFrame::fromXML2(XmlUtils::CXmlLiteReader& oReader) { std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName()); std::wstring strNamespace = XmlUtils::GetNamespace(oReader.GetName()); if (L"xfrm" == strName) xfrm = oReader; else if (L"cNvFrPr" == strName) { } else if (L"cNvPr" == strName) { if (!nvGraphicFramePr.IsInit()) nvGraphicFramePr.Init(); nvGraphicFramePr->cNvPr.fromXML(oReader); } else if (L"cNvGraphicFramePr" == strName) { if (!nvGraphicFramePr.IsInit()) nvGraphicFramePr.Init(); nvGraphicFramePr->cNvGraphicFramePr.fromXML(oReader); } else if (L"nvGraphicFramePr" == strName) { nvGraphicFramePr = oReader; } else if (L"graphic" == strName) { int nCurDepth = oReader.GetDepth(); while( oReader.ReadNextSiblingNode( nCurDepth ) ) { std::wstring strName1 = oReader.GetName(); if (strName1 == L"a:graphicData") { fromXML3(oReader); } } } } bool GraphicFrame::fromXML3(XmlUtils::CXmlLiteReader& oReader) { bool result = false; if ( oReader.IsEmptyNode() ) return result; int nCurDepth = oReader.GetDepth(); while( oReader.ReadNextSiblingNode( nCurDepth ) ) { std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName()); if (strName == L"tbl") { table = oReader; result = true; } else if (strName == L"oleObj") { ReadAttributes2(oReader); if ( oReader.IsEmptyNode() ) continue; int nCurDepth1 = oReader.GetDepth(); while( oReader.ReadNextSiblingNode( nCurDepth1 ) ) { std::wstring strName1 = XmlUtils::GetNameNoNS(oReader.GetName()); if (strName1 == L"pic") { result = true; if (!olePic.IsInit()) //создается уровнем выше olePic.Init(); olePic->fromXML(oReader); if (xfrm.IsInit()) xfrm->Merge(olePic->spPr.xfrm); } } } else if (strName == L"relIds") { smartArt = oReader; result = true; } else if (strName == L"chart") { chartRec = oReader; result = true; } else if (strName == L"legacyDrawing") { ReadAttributes3(oReader); result = true; } else if (strName == L"slicer") { if(L"a14" == m_sRequires) { slicer = oReader; } else { slicerExt = oReader; } result = true; } else if (strName == L"timeslicer") { timeslicer = oReader; } else if (strName == L"contentPart") { contentPart = oReader; result = true; } else if (strName == L"AlternateContent") { if ( oReader.IsEmptyNode() ) continue; int nCurDepth1 = oReader.GetDepth(); while( oReader.ReadNextSiblingNode( nCurDepth1 ) ) { std::wstring strName1 = oReader.GetName(); if (strName1 == L"mc:Choice") { result = fromXML3(oReader); if (result) break; } else if (strName1 == L"mc:Fallback") { result = fromXML3(oReader); if (result) break; } } } else { element.fromXML( oReader ); if (element.is_init()) result = true; } } return result; } bool GraphicFrame::fromXML3(XmlUtils::CXmlNode& node) { bool result = false; std::vector oNodes; if (node.GetNodes((L"*"), oNodes)) { size_t count = oNodes.size(); for (size_t i = 0; i < count; ++i) { XmlUtils::CXmlNode& oNode = oNodes[i]; std::wstring strName = XmlUtils::GetNameNoNS(oNode.GetName()); if (L"tbl" == strName) { table = oNode; if (table.IsInit()) result = true; } else if (L"oleObj" == strName) { olePic = oNode.ReadNode(L"p:pic"); //нормальный вариант объекта if (olePic.IsInit()) { olePic->fromXMLOle(oNode); result = true; } else { olePic.Init(); //старый вариант описания объекта через spid в VmlDrawing Logic::PrstGeom* geom = new Logic::PrstGeom(); geom->prst = L"rect"; olePic->spPr.Geometry.m_geometry.reset(geom); olePic->fromXMLOle(oNode); result = true; } if (olePic->spPr.xfrm.IsInit() == false) olePic->spPr.xfrm = xfrm; } else if (L"AlternateContent" == strName) { XmlUtils::CXmlNode oNodeChoice; if (!result && oNode.GetNode(L"mc:Choice", oNodeChoice)) result = fromXML3(oNodeChoice); if (result) { if ((olePic->blipFill.blip.IsInit()) && (false == olePic->blipFill.blip->embed.IsInit()) && (olePic->oleObject.IsInit()) && (false == olePic->oleObject->m_sShapeId.IsInit())) { result = false; } } XmlUtils::CXmlNode oNodeFallback; if (!result && oNode.GetNode(L"mc:Fallback", oNodeFallback)) result = fromXML3(oNodeFallback); } else if (L"relIds" == strName) { smartArt = oNode; result = true; } else if (L"chart" == strName) { chartRec = oNode; result = chartRec.IsInit(); } else if (L"slicer" == strName) { if(L"a14" == m_sRequires) { slicer = oNode; } else { slicerExt = oNode; } result = true; } else if (L"legacyDrawing" == strName) { XmlMacroReadAttributeBase(oNode, L"spid", vmlSpid); result = true; } else { element.fromXML( oNode ); if (element.is_init()) result = true; } } } return result; } void GraphicFrame::fromXML(XmlUtils::CXmlNode& node) { m_namespace = XmlUtils::GetNamespace(node.GetName()); XmlMacroReadAttributeBase(node, L"macro",macro); std::vector oNodes; if (node.GetNodes(L"*", oNodes)) { size_t count = oNodes.size(); for (size_t i = 0; i < count; ++i) { XmlUtils::CXmlNode& oNode = oNodes[i]; std::wstring strName = XmlUtils::GetNameNoNS(oNode.GetName()); std::wstring strNamespace = XmlUtils::GetNamespace(oNode.GetName()); if (L"xfrm" == strName) xfrm = oNode; else if (L"nvGraphicFramePr" == strName) nvGraphicFramePr = oNode; if (L"graphic" == strName) { XmlUtils::CXmlNode oNodeData; if (oNode.GetNode(L"a:graphicData", oNodeData)) { fromXML3(oNodeData); } } } } FillParentPointersForChilds(); } void GraphicFrame::toXmlWriter2(NSBinPptxRW::CXmlWriter* pWriter) const { if (nvGraphicFramePr.IsInit()) nvGraphicFramePr->toXmlWriter(pWriter); if (xfrm.IsInit() && (!(pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX || pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX_GLOSSARY) || pWriter->m_lGroupIndex >= 0)) { if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX && pWriter->m_lGroupIndex >= 0) xfrm->node_name = L"xdr:xfrm"; else if ((pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX || pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX_GLOSSARY) && pWriter->m_lGroupIndex >= 0) xfrm->node_name = L"wpg:xfrm"; else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_GRAPHICS) xfrm->node_name = L"a:xfrm"; else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_CHART_DRAWING) xfrm->node_name = L"cdr:xfrm"; else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DIAGRAM) xfrm->node_name = L"dgm:xfrm"; else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DSP_DRAWING) xfrm->node_name = L"dsp:xfrm"; xfrm->toXmlWriter(pWriter); } if (table.is_init()) { pWriter->WriteString (L""); table->toXmlWriter (pWriter); pWriter->WriteString (L""); } else if (chartRec.is_init()) { std::wstring sUri = chartRec->m_bChartEx ? L"http://schemas.microsoft.com/office/drawing/2014/chartex" : L"http://schemas.openxmlformats.org/drawingml/2006/chart"; pWriter->WriteString(L""); chartRec->toXmlWriter(pWriter); pWriter->WriteString(L""); } else if (slicer.is_init()) { pWriter->WriteString(L""); slicer->toXML(*pWriter, L"sle:slicer"); pWriter->WriteString(L""); } else if (slicerExt.is_init()) { pWriter->WriteString(L""); slicerExt->toXML(*pWriter, L"sle:slicer"); pWriter->WriteString(L""); } else if (timeslicer.is_init()) { pWriter->WriteString(L""); timeslicer->toXmlWriter(pWriter); pWriter->WriteString(L""); } else if (smartArt.is_init()) { pWriter->WriteString(L""); smartArt->toXmlWriter(pWriter); pWriter->WriteString(L""); } } void GraphicFrame::toXmlWriter(NSBinPptxRW::CXmlWriter* pWriter) const { if (smartArt.is_init() && ( pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX || pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX_GLOSSARY) && pWriter->m_lGroupIndex == 0) { pWriter->WriteString(L""); smartArt->toXmlWriter(pWriter); pWriter->WriteString(L""); } else { std::wstring namespace_ = m_namespace; if ((pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX || pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DOCX_GLOSSARY) && pWriter->m_lGroupIndex >= 0) namespace_ = L"wpg"; else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_XLSX && pWriter->m_lGroupIndex >= 0) namespace_ = L"xdr"; else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_GRAPHICS) namespace_ = L"a"; else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_CHART_DRAWING) namespace_ = L"cdr"; else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DIAGRAM) namespace_ = L"dgm"; else if (pWriter->m_lDocType == XMLWRITER_DOC_TYPE_DSP_DRAWING) namespace_ = L"dsp"; pWriter->StartNode(namespace_ + L":graphicFrame"); pWriter->WriteAttribute2(L"macro", macro); pWriter->EndAttributes(); toXmlWriter2(pWriter); pWriter->EndNode(namespace_ + L":graphicFrame"); } } bool GraphicFrame::IsEmpty() const { return !olePic.is_init() && !smartArt.is_init() && !table.is_init() && !chartRec.is_init() && !vmlSpid.is_init() && !slicer.is_init() && !slicerExt.is_init() && !timeslicer.is_init() && !element.is_init(); } void GraphicFrame::toPPTY(NSBinPptxRW::CBinaryFileWriter* pWriter) const { if (IsEmpty()) return; if (olePic.is_init()) { if (nvGraphicFramePr.IsInit()) { if (olePic->nvPicPr.cNvPr.id < 1) olePic->nvPicPr.cNvPr.id = nvGraphicFramePr->cNvPr.id; if (olePic->nvPicPr.cNvPr.name.empty()) olePic->nvPicPr.cNvPr.name = nvGraphicFramePr->cNvPr.name; } olePic->toPPTY(pWriter); return; } std::wstring xml_object_vml; smart_ptr xml_object_rels; if (vmlSpid.is_init()) { xml_object_vml = GetVmlXmlBySpid(xml_object_rels); } if (false == xml_object_vml.empty() && !table.IsInit() && !chartRec.IsInit() && !slicer.IsInit() && !slicerExt.IsInit() && !smartArt.IsInit()) { std::wstring temp = L""; temp += xml_object_vml; temp += L""; NSBinPptxRW::CDrawingConverter oDrawingConverter; RELEASEOBJECT(oDrawingConverter.m_pBinaryWriter->m_pCommon->m_pMediaManager); oDrawingConverter.m_pBinaryWriter->m_pCommon->m_pMediaManager = pWriter->m_pCommon->m_pMediaManager; oDrawingConverter.SetRels(xml_object_rels); oDrawingConverter.SetAdditionalParam(L"xfrm_override", (BYTE*)xfrm.GetPointer(), sizeof(xfrm)); std::vector> elements; nullable anchor; oDrawingConverter.ConvertVml(temp, elements, anchor); oDrawingConverter.m_pBinaryWriter->m_pCommon->m_pMediaManager = NULL; smart_ptr rels_old = pWriter->GetRels(); pWriter->SetRels(xml_object_rels); for (size_t i = 0; i < elements.size(); ++i) { elements[i]->toPPTY(pWriter); } pWriter->SetRels(rels_old); return; } pWriter->StartRecord(SPTREE_TYPE_GRFRAME); pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeStart); pWriter->WriteString2(0, vmlSpid); pWriter->WriteBYTE(NSBinPptxRW::g_nodeAttributeEnd); pWriter->WriteRecord2(0, nvGraphicFramePr); pWriter->WriteRecord2(1, xfrm); if (table.is_init()) { pWriter->WriteRecord2(2, table); } else if (smartArt.is_init()) { pWriter->WriteRecord2(8, smartArt); } else if (chartRec.is_init()) { if (chartRec->m_bChartEx) { pWriter->WriteRecord2(7, chartRec); } else { pWriter->WriteRecord2(3, chartRec); } } else if (slicer.is_init()) { pWriter->WriteRecord2(5, slicer); } else if (slicerExt.is_init()) { pWriter->WriteRecord2(6, slicerExt); } else if (timeslicer.is_init()) { pWriter->WriteRecord2(9, timeslicer); } else if (element.is_init()) { pWriter->WriteRecord1(4, element); } else { //???? } if (macro.IsInit()) { pWriter->StartRecord(SPTREE_TYPE_MACRO); pWriter->WriteString1(0, *macro); pWriter->EndRecord(); } pWriter->EndRecord(); } void GraphicFrame::fromPPTY(NSBinPptxRW::CBinaryFileReader* pReader) { LONG _end_rec = pReader->GetPos() + pReader->GetRecordSize() + 4; pReader->Skip(1); // start attributes while (true) { BYTE _at = pReader->GetUChar_TypeNode(); if (_at == NSBinPptxRW::g_nodeAttributeEnd) break; switch (_at) { case 0: { vmlSpid = pReader->GetString2(); }break; default: break; } } while (pReader->GetPos() < _end_rec) { BYTE _at = pReader->GetUChar(); switch (_at) { case 0: { nvGraphicFramePr.Init(); nvGraphicFramePr->fromPPTY(pReader); }break; case 1: { xfrm = new Logic::Xfrm(); xfrm->node_name = L"p:xfrm"; xfrm->fromPPTY(pReader); }break; case 2: { table = new Logic::Table(); table->fromPPTY(pReader); }break; case 3: { chartRec = new Logic::ChartRec(); chartRec->fromPPTY(pReader); }break; case 4: { element.fromPPTY(pReader); }break; case 5: { slicer = new OOX::Spreadsheet::CDrawingSlicer(); slicer->fromPPTY(pReader); }break; case 6: { slicerExt = new OOX::Spreadsheet::CDrawingSlicer(); slicerExt->fromPPTY(pReader); }break; case 7: { chartRec = new Logic::ChartRec(); chartRec->m_bChartEx = true; chartRec->fromPPTY(pReader); }break; case 8: { smartArt = new Logic::SmartArt(); smartArt->fromPPTY(pReader); }break; case 9: { timeslicer = new OOX::Spreadsheet::CDrawingTimeslicer(); timeslicer->fromPPTY(pReader); }break; case SPTREE_TYPE_MACRO: { pReader->Skip(5); // type + size macro = pReader->GetString2(); }break; default: pReader->SkipRecord(); break; } } pReader->Seek(_end_rec); if (!xfrm.IsInit()) xfrm = new Logic::Xfrm(); } void GraphicFrame::GetRect(Aggplus::RECT& pRect)const { if (xfrm.IsInit() == false) return; pRect.left = xfrm->offX.get(); pRect.top = xfrm->offY.get(); pRect.right = pRect.left + xfrm->extX.get(); pRect.bottom = pRect.top + xfrm->extY.get(); if(parentIs()) parentAs().NormalizeRect(pRect); } std::wstring GraphicFrame::toXML2() const { std::wstring sXml; if (nvGraphicFramePr.IsInit()) sXml += nvGraphicFramePr->toXML(); if (xfrm.IsInit() && m_namespace != L"wp") { sXml += xfrm->toXML(); } if (table.IsInit()) { sXml += L"\ "; sXml += table->toXML(); sXml += L""; } else if (chartRec.IsInit()) { std::wstring sUri = chartRec->m_bChartEx ? L"http://schemas.microsoft.com/office/drawing/2014/chartex" : L"http://schemas.openxmlformats.org/drawingml/2006/chart"; sXml += L""; sXml += chartRec->toXML(); sXml += L""; } else if (slicer.IsInit()) { sXml += L"\ "; sXml += slicer->toXML(); sXml += L""; } else if (slicerExt.IsInit()) { sXml += L"\ "; sXml += slicerExt->toXML(); sXml += L""; } else if (smartArt.IsInit()) { sXml += L"\ "; sXml += smartArt->toXML(); sXml += L""; } return sXml; } std::wstring GraphicFrame::toXML() const { std::wstring sXml; sXml += L"<" + m_namespace + L":graphicFrame"; sXml += L" macro=\"" + (macro.IsInit() ? XmlUtils::EncodeXmlString(*macro) : L"") + L"\">"; sXml += toXML2(); sXml += L""; sXml += L"<" + m_namespace + L":clientData/>"; return sXml; } void GraphicFrame::FillParentPointersForChilds() { if (nvGraphicFramePr.is_init()) nvGraphicFramePr->SetParentPointer(this); if (xfrm.IsInit()) xfrm->SetParentPointer(this); if (table.IsInit()) table->SetParentPointer(this); if (smartArt.is_init()) smartArt->SetParentPointer(this); if (chartRec.is_init()) chartRec->SetParentPointer(this); if (olePic.is_init()) olePic->SetParentPointer(this); } std::wstring GraphicFrame::GetVmlXmlBySpid(smart_ptr & rels)const { std::wstring xml; if(parentFileIs() && parentFileAs().Vml.IsInit()) { xml = parentFileAs().GetVmlXmlBySpid(vmlSpid.get_value_or(L"")); rels = parentFileAs().Vml.smart_dynamic_cast(); } else if(parentFileIs() && parentFileAs().Vml.IsInit()) { xml = parentFileAs().GetVmlXmlBySpid(vmlSpid.get_value_or(L"")); rels = parentFileAs().Vml.smart_dynamic_cast(); } else if(parentFileIs() && parentFileAs().Vml.IsInit()) { xml = parentFileAs().GetVmlXmlBySpid(vmlSpid.get_value_or(L"")); rels = parentFileAs().Vml.smart_dynamic_cast(); } return xml; } void GraphicFrame::ChartToOlePackageInStorage(OOX::IFileContainer* pRels, const std::wstring &sTempDirectory, int nCurrentGenerateId) { // AVS_OFFICESTUDIO_FILE_OTHER_PACKAGE_IN_OLE if (!chartRec.IsInit()) return; if (olePic.IsInit()) return; std::wstring sXlsxFile = ChartToXlsx(pRels, sTempDirectory); if (sXlsxFile.empty()) return; DWORD nativeDataSize = 0; BYTE* nativeData = NULL; if (!NSFile::CFileBinary::ReadAllBytes(sXlsxFile, &nativeData, nativeDataSize)) return; std::string sUserType = "Chart"; std::string sClipboardFormat = "ExcelML12"; std::string sProgram = "Excel.Sheet.12"; std::wstring sOleFile = sTempDirectory + FILE_SEPARATOR_STR + L"OleObject" + std::to_wstring(1024 + nCurrentGenerateId) + L".bin"; POLE::Storage * storageOut = new POLE::Storage(sOleFile.c_str()); if ( (storageOut) && (storageOut->open(true, true))) { _UINT32 zero = 0, str_size = 0; //Ole BYTE dataOleInfo[] = {0x01,0x00,0x00,0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; POLE::Stream oStream3(storageOut, L"\001Ole", true, 20); oStream3.write(dataOleInfo, 20); oStream3.flush(); //CompObj BYTE dataCompObjHeader[28] = {0x01,0x00,0xfe,0xff,0x03,0x0a,0x00,0x00,0xff,0xff,0xff,0xff ,0x30,0x08,0x02 //,0x0a,0x00,0x03 ,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}; POLE::Stream oStream1(storageOut, L"\001CompObj", true, 28 + (sUserType.length() + 5) + (sClipboardFormat.length() + 5) + (sProgram.length() + 5) + 4 * 4); oStream1.write(dataCompObjHeader, 28); str_size = sUserType.length() + 1; oStream1.write((BYTE*)&str_size, 4); oStream1.write((BYTE*)sUserType.c_str(), sUserType.length()); oStream1.write((BYTE*)&zero, 1); str_size = sClipboardFormat.length() + 1; oStream1.write((BYTE*)&str_size, 4); oStream1.write((BYTE*)sClipboardFormat.c_str(), sClipboardFormat.length()); oStream1.write((BYTE*)&zero, 1); str_size = sProgram.length() + 1; oStream1.write((BYTE*)&str_size, 4); oStream1.write((BYTE*)sProgram.c_str(), sProgram.length()); oStream1.write((BYTE*)&zero, 1); _UINT32 nUnicodeMarker = 0x71B239F4; oStream1.write((BYTE*)&nUnicodeMarker, 4); oStream1.write((BYTE*)&zero, 4); // UnicodeUserType oStream1.write((BYTE*)&zero, 4); // UnicodeClipboardFormat oStream1.write((BYTE*)&zero, 4); // oStream1.flush(); //ObjInfo BYTE dataObjInfo[] = {0x00,0x00,0x03,0x00,0x01,0x00};//{0x00,0x00,0x03,0x00,0x0D,0x00}; POLE::Stream oStream2(storageOut, L"\003ObjInfo", true, 6); oStream2.write(dataObjInfo, 6); oStream2.flush(); //Package POLE::Stream streamData(storageOut, L"Package", true, nativeDataSize); streamData.write(nativeData, nativeDataSize); streamData.flush(); storageOut->close(); delete storageOut; } delete []nativeData; NSFile::CFileBinary::Remove(sXlsxFile); olePic.Init(); olePic->blipFill.blip.Init(); olePic->blipFill.stretch.Init(); olePic->blipFill.stretch->fillRect.Init(); olePic->blipFill.srcRect.Init(); olePic->blipFill.blip->oleFilepathImage = NSDirectory::CreateTempFileWithUniqueName(sTempDirectory, L"img"); NSFile::CFileBinary file; if (file.CreateFileW(olePic->blipFill.blip->oleFilepathImage)) { file.WriteFile(binImagePngChartReplacement, 6171); //file.WriteFile(binImageWmfChartReplacement, 2274); file.CloseFile(); } olePic->oleObject.Init(); olePic->oleObject->m_OleObjectFile = new OOX::OleObject(NULL, false, true); olePic->oleObject->m_OleObjectFile->set_filename(sOleFile, false); olePic->oleObject->m_sObjectId = std::wstring(L"_3617162112") + std::to_wstring(nCurrentGenerateId); olePic->oleObject->m_sProgId = std::wstring(sProgram.begin(), sProgram.end()); //olePic->oleObject->m_sShapeId; olePic->oleObject->m_oType = new Limit::OLEType(); olePic->oleObject->m_oUpdateMode = new Limit::OLEUpdateMode(); if (xfrm.IsInit()) { olePic->oleObject->m_oDxaOrig = xfrm->chExtX; olePic->oleObject->m_oDyaOrig = xfrm->chExtY; } } std::wstring GraphicFrame::ChartToXlsx(OOX::IFileContainer* pRels, const std::wstring &sTempDirectory) { if (!chartRec.IsInit()) return L""; smart_ptr file; if(chartRec->id_data.IsInit()) { if(parentFileIs()) file = parentFileAs().Find(*chartRec->id_data); else if (pRels != NULL) file = pRels->Find(*chartRec->id_data); } smart_ptr pChart = file.smart_dynamic_cast(); if (pChart.IsInit() == false) return L""; if (!pChart->m_oChartSpace.m_externalData) return L""; if (!pChart->m_oChartSpace.m_externalData->m_id.IsInit()) return L""; file = pChart->Find(*pChart->m_oChartSpace.m_externalData->m_id); smart_ptr pExternalXslxPackage = file.smart_dynamic_cast(); if (!pExternalXslxPackage.IsInit()) return L""; std::wstring sUnpackedXlsx = sTempDirectory + FILE_SEPARATOR_STR + (L"xslx_unpacked"); if (false == NSDirectory::CreateDirectory(sUnpackedXlsx)) return L""; COfficeUtils oCOfficeUtils(NULL); if (S_OK != oCOfficeUtils.ExtractToDirectory(pExternalXslxPackage->filename().GetPath(), sUnpackedXlsx, NULL, 0)) return L""; //------------------------------------------------------- std::wstring sXlPath = sUnpackedXlsx + FILE_SEPARATOR_STR + L"xl"; std::wstring sChartPath = sXlPath + FILE_SEPARATOR_STR + L"charts"; std::wstring sDrawingsPath = sXlPath + FILE_SEPARATOR_STR + L"drawings"; std::wstring sChartSheetsPath = sXlPath + FILE_SEPARATOR_STR + L"chartsheets"; NSDirectory::CreateDirectory(sChartPath); NSDirectory::CreateDirectory(sDrawingsPath); NSDirectory::CreateDirectory(sDrawingsPath + FILE_SEPARATOR_STR + L"_rels"); NSDirectory::CreateDirectory(sChartSheetsPath); NSDirectory::CreateDirectory(sChartSheetsPath + FILE_SEPARATOR_STR + L"_rels"); OOX::Spreadsheet::CT_ExternalData* keepExternalData = pChart->m_oChartSpace.m_externalData; pChart->m_oChartSpace.m_externalData = NULL; pChart->write2(sChartPath + FILE_SEPARATOR_STR + L"chart1.xml"); //---------------- NSStringUtils::CStringBuilder sXmlDrawing; sXmlDrawing.WriteString(L"\r\n"); sXmlDrawing.WriteString(L""); sXmlDrawing.WriteString(L""); this->xfrm.Init(); this->xfrm->offX = 0; this->xfrm->offY = 0; this->xfrm->extX = 0; this->xfrm->extY = 0; NSBinPptxRW::CXmlWriter oXlsxWriter(XMLWRITER_DOC_TYPE_XLSX); this->toXmlWriter(&oXlsxWriter); sXmlDrawing.WriteString(oXlsxWriter.GetXmlString()); sXmlDrawing.WriteString(L""); NSFile::CFileBinary::SaveToFile(sDrawingsPath + FILE_SEPARATOR_STR + L"drawing1.xml", sXmlDrawing.GetData()); std::wstring sDrawingRels = L"\r\n\ \ id_data->ToString() + L"\"/>"; NSFile::CFileBinary::SaveToFile(sDrawingsPath + FILE_SEPARATOR_STR + L"drawing1.xml", sXmlDrawing.GetData()); NSFile::CFileBinary::SaveToFile(sDrawingsPath + FILE_SEPARATOR_STR + L"_rels" + FILE_SEPARATOR_STR + L"drawing1.xml.rels", sDrawingRels); //----------------- std::wstring sChartSheet = L"\r\n\ \ "; std::wstring sChartSheetRels = L"\r\n\ \ \ "; NSFile::CFileBinary::SaveToFile(sChartSheetsPath + FILE_SEPARATOR_STR + L"sheet1.xml", sChartSheet); NSFile::CFileBinary::SaveToFile(sChartSheetsPath + FILE_SEPARATOR_STR + L"_rels" + FILE_SEPARATOR_STR + L"sheet1.xml.rels", sChartSheetRels); //----------------- std::wstring sWorkbookData; NSFile::CFileBinary::ReadAllTextUtf8(sXlPath + FILE_SEPARATOR_STR + L"workbook.xml", sWorkbookData); int pos = (int)sWorkbookData.find(L""); if (pos > 0) { pos += 8;// std::wstring sNewWorkbookData = sWorkbookData.substr(0, pos) + L"" + sWorkbookData.substr(pos); NSFile::CFileBinary::SaveToFile(sXlPath + FILE_SEPARATOR_STR + L"workbook.xml", sNewWorkbookData); } std::wstring sWorkbookRelsData; NSFile::CFileBinary::ReadAllTextUtf8(sXlPath + FILE_SEPARATOR_STR + L"_rels" + FILE_SEPARATOR_STR + L"workbook.xml.rels", sWorkbookRelsData); pos = (int)sWorkbookRelsData.find(L""); if (pos > 0) { std::wstring sNewWorkbookRelsData = sWorkbookRelsData.substr(0, pos) + L"" + sWorkbookRelsData.substr(pos); NSFile::CFileBinary::SaveToFile(sXlPath + FILE_SEPARATOR_STR + L"_rels" + FILE_SEPARATOR_STR + L"workbook.xml.rels", sNewWorkbookRelsData); } //----------------- std::wstring sContentTypesData; NSFile::CFileBinary::ReadAllTextUtf8(sUnpackedXlsx + FILE_SEPARATOR_STR + L"[Content_Types].xml", sContentTypesData); pos = (int)sContentTypesData.find(L""); if (pos > 0) { std::wstring sNewContentTypesData = sContentTypesData.substr(0, pos) + L"\ \ " + sContentTypesData.substr(pos); NSFile::CFileBinary::SaveToFile(sUnpackedXlsx + FILE_SEPARATOR_STR + L"[Content_Types].xml", sNewContentTypesData); } pChart->m_oChartSpace.m_externalData = keepExternalData; //------------------------------------------------------- std::wstring sPackedXlsx = sTempDirectory + FILE_SEPARATOR_STR + (L"xlsx_package.xlsx"); if (S_OK != oCOfficeUtils.CompressFileOrDirectory(sUnpackedXlsx, sPackedXlsx, true)) return L""; NSDirectory::DeleteDirectory(sUnpackedXlsx); return sPackedXlsx; } } // namespace Logic } // namespace PPTX