From 99ed321d24ae81e07d16eac6456dcc935b4dd598 Mon Sep 17 00:00:00 2001 From: cloud Date: Wed, 5 Aug 2026 16:47:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD:=20=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=AB=AF=E7=94=9F=E6=88=90=E5=AE=8C=E6=95=B4=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E5=B9=B6=E4=BF=9D=E6=8A=A4=E5=8D=95=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用 libxlsxwriter 常量内存导出 Excel\n- 增加全局任务占用提示与原始数据持久化\n- 保留运行时任务数据并更新接口文档 --- backend/CMakeLists.txt | 8 + .../src/controllers/WindPowerController.cpp | 478 +- backend/src/controllers/WindPowerController.h | 4 + deploy.sh | 4 +- docs/接口文档.md | 26 +- frontend/web_app/src/App.css | 45 + frontend/web_app/src/pages/HomePage.jsx | 393 +- frontend/web_app/src/utils/api.js | 21 + package.sh | 7 +- .../libxlsxwriter_repo/.github/FUNDING.yml | 1 + .../.github/ISSUE_TEMPLATE.md | 85 + .../.github/PULL_REQUEST_TEMPLATE.md | 130 + .../.github/workflows/cmake_actions.yml | 46 + .../.github/workflows/code_style.yml | 23 + .../.github/workflows/coverity.yml | 22 + .../.github/workflows/make_actions.yml | 50 + .../.github/workflows/valgrind.yml | 22 + .../.github/workflows/windows_build.yml | 52 + third_party/libxlsxwriter_repo/.gitignore | 62 + third_party/libxlsxwriter_repo/.indent.pro | 157 + third_party/libxlsxwriter_repo/CMakeLists.txt | 424 + .../libxlsxwriter_repo/CONTRIBUTING.md | 226 + third_party/libxlsxwriter_repo/Changes.txt | 1061 ++ third_party/libxlsxwriter_repo/License.txt | 208 + third_party/libxlsxwriter_repo/Makefile | 275 + third_party/libxlsxwriter_repo/Readme.md | 82 + .../cocoapods/libxlsxwriter-umbrella.h | 37 + .../cocoapods/libxlsxwriter.modulemap | 7 + .../libxlsxwriter_repo/dev/release/Readme.txt | 4 + .../libxlsxwriter_repo/dev/release/fix_dox.sh | 7 + .../dev/release/fix_example_docs.pl | 127 + .../dev/release/fix_example_links.pl | 78 + .../dev/release/gen_error_strings.pl | 49 + .../dev/release/gen_umbrella_file.pl | 36 + .../dev/release/gen_windows_def_file.pl | 50 + .../dev/release/pkg-config.txt | 10 + .../dev/release/release_check.sh | 332 + .../dev/release/update_revison.pl | 42 + third_party/libxlsxwriter_repo/docs/Doxyfile | 2554 ++++ .../libxlsxwriter_repo/docs/DoxygenLayout.xml | 180 + third_party/libxlsxwriter_repo/docs/Makefile | 28 + .../libxlsxwriter_repo/docs/customdoxygen.css | 1502 ++ .../libxlsxwriter_repo/docs/footer.html | 18 + .../docs/images/anatomy.png | Bin 0 -> 71332 bytes .../docs/images/array_formula.png | Bin 0 -> 73370 bytes .../docs/images/autofilter1.png | Bin 0 -> 98877 bytes .../docs/images/autofilter2.png | Bin 0 -> 64320 bytes .../docs/images/autofilter3.png | Bin 0 -> 86704 bytes .../docs/images/autofilter4.png | Bin 0 -> 113996 bytes .../docs/images/autofilter5.png | Bin 0 -> 112655 bytes .../docs/images/background.png | Bin 0 -> 106414 bytes .../docs/images/chart_area1.png | Bin 0 -> 74823 bytes .../docs/images/chart_area2.png | Bin 0 -> 72112 bytes .../docs/images/chart_area3.png | Bin 0 -> 67410 bytes .../docs/images/chart_axes01.png | Bin 0 -> 65448 bytes .../docs/images/chart_axes02.png | Bin 0 -> 75429 bytes .../docs/images/chart_axes03.png | Bin 0 -> 74706 bytes .../docs/images/chart_axes04.png | Bin 0 -> 62388 bytes .../docs/images/chart_axes05.png | Bin 0 -> 68348 bytes .../images/chart_axis_label_alignment1.png | Bin 0 -> 8114 bytes .../docs/images/chart_axis_num_format.png | Bin 0 -> 66032 bytes .../docs/images/chart_axis_off.png | Bin 0 -> 52624 bytes .../docs/images/chart_axis_set_fill.png | Bin 0 -> 55150 bytes .../docs/images/chart_axis_set_line.png | Bin 0 -> 54530 bytes .../docs/images/chart_axis_set_name.png | Bin 0 -> 60286 bytes .../docs/images/chart_axis_set_name_font.png | Bin 0 -> 55129 bytes .../docs/images/chart_axis_set_num_font.png | Bin 0 -> 53385 bytes .../docs/images/chart_axis_set_position.png | Bin 0 -> 54471 bytes .../docs/images/chart_bar1.png | Bin 0 -> 68715 bytes .../docs/images/chart_bar2.png | Bin 0 -> 66812 bytes .../docs/images/chart_bar3.png | Bin 0 -> 67926 bytes .../docs/images/chart_chartarea.png | Bin 0 -> 48747 bytes .../docs/images/chart_clustered.png | Bin 0 -> 61877 bytes .../docs/images/chart_column1.png | Bin 0 -> 68758 bytes .../docs/images/chart_column2.png | Bin 0 -> 68167 bytes .../docs/images/chart_column3.png | Bin 0 -> 68439 bytes .../docs/images/chart_crossing1.png | Bin 0 -> 54704 bytes .../docs/images/chart_crossing2.png | Bin 0 -> 55273 bytes .../docs/images/chart_data_labels1.png | Bin 0 -> 36128 bytes .../docs/images/chart_data_labels11.png | Bin 0 -> 59964 bytes .../docs/images/chart_data_labels12.png | Bin 0 -> 62960 bytes .../docs/images/chart_data_labels13.png | Bin 0 -> 62661 bytes .../docs/images/chart_data_labels14.png | Bin 0 -> 63185 bytes .../docs/images/chart_data_labels15.png | Bin 0 -> 63135 bytes .../docs/images/chart_data_labels16.png | Bin 0 -> 62275 bytes .../docs/images/chart_data_labels17.png | Bin 0 -> 58572 bytes .../docs/images/chart_data_labels18.png | Bin 0 -> 68492 bytes .../docs/images/chart_data_labels19.png | Bin 0 -> 67265 bytes .../docs/images/chart_data_labels2.png | Bin 0 -> 63806 bytes .../docs/images/chart_data_labels20.png | Bin 0 -> 69433 bytes .../docs/images/chart_data_labels21.png | Bin 0 -> 64949 bytes .../docs/images/chart_data_labels22.png | Bin 0 -> 61458 bytes .../docs/images/chart_data_labels23.png | Bin 0 -> 63678 bytes .../docs/images/chart_data_labels24.png | Bin 0 -> 68137 bytes .../docs/images/chart_data_labels25.png | Bin 0 -> 69647 bytes .../docs/images/chart_data_labels3.png | Bin 0 -> 75468 bytes .../docs/images/chart_data_labels4.png | Bin 0 -> 78178 bytes .../docs/images/chart_data_labels5.png | Bin 0 -> 68520 bytes .../docs/images/chart_data_labels6.png | Bin 0 -> 70165 bytes .../docs/images/chart_data_labels7.png | Bin 0 -> 62266 bytes .../docs/images/chart_data_labels8.png | Bin 0 -> 70722 bytes .../docs/images/chart_data_labels9.png | Bin 0 -> 69081 bytes .../docs/images/chart_data_table1.png | Bin 0 -> 71684 bytes .../docs/images/chart_data_table2.png | Bin 0 -> 71565 bytes .../docs/images/chart_data_table3.png | Bin 0 -> 51396 bytes .../docs/images/chart_data_tools3.png | Bin 0 -> 79812 bytes .../docs/images/chart_data_tools4.png | Bin 0 -> 75653 bytes .../docs/images/chart_data_tools5.png | Bin 0 -> 80959 bytes .../docs/images/chart_data_tools6.png | Bin 0 -> 80323 bytes .../docs/images/chart_data_tools7.png | Bin 0 -> 76002 bytes .../docs/images/chart_data_tools8.png | Bin 0 -> 84559 bytes .../docs/images/chart_data_tools9.png | Bin 0 -> 85175 bytes .../docs/images/chart_display_units.png | Bin 0 -> 61897 bytes .../docs/images/chart_doughnut1.png | Bin 0 -> 76800 bytes .../docs/images/chart_doughnut2.png | Bin 0 -> 99808 bytes .../docs/images/chart_error_bars0.png | Bin 0 -> 61816 bytes .../docs/images/chart_error_bars1.png | Bin 0 -> 64716 bytes .../docs/images/chart_error_bars2.png | Bin 0 -> 64497 bytes .../docs/images/chart_error_bars3.png | Bin 0 -> 64449 bytes .../docs/images/chart_error_bars4.png | Bin 0 -> 67372 bytes .../docs/images/chart_fill1.png | Bin 0 -> 50839 bytes .../docs/images/chart_fill2.png | Bin 0 -> 50643 bytes .../docs/images/chart_fill3.png | Bin 0 -> 50089 bytes .../docs/images/chart_fill4.png | Bin 0 -> 50352 bytes .../docs/images/chart_fonts.png | Bin 0 -> 68460 bytes .../docs/images/chart_formatting2.png | Bin 0 -> 62735 bytes .../docs/images/chart_formatting3.png | Bin 0 -> 52119 bytes .../docs/images/chart_formatting4.png | Bin 0 -> 63705 bytes .../docs/images/chart_formatting5.png | Bin 0 -> 59369 bytes .../docs/images/chart_formatting_multiple.png | Bin 0 -> 60944 bytes .../docs/images/chart_formatting_width.png | Bin 0 -> 65077 bytes .../docs/images/chart_gap.png | Bin 0 -> 54900 bytes .../docs/images/chart_gridline1.png | Bin 0 -> 53590 bytes .../docs/images/chart_gridline2.png | Bin 0 -> 64333 bytes .../docs/images/chart_gridline3.png | Bin 0 -> 77589 bytes .../docs/images/chart_label_position1.png | Bin 0 -> 63803 bytes .../docs/images/chart_label_position2.png | Bin 0 -> 54760 bytes .../docs/images/chart_legend_bottom.png | Bin 0 -> 50946 bytes .../docs/images/chart_legend_delete.png | Bin 0 -> 49418 bytes .../docs/images/chart_legend_none.png | Bin 0 -> 47487 bytes .../docs/images/chart_legend_set_font.png | Bin 0 -> 52983 bytes .../docs/images/chart_line1.png | Bin 0 -> 82245 bytes .../docs/images/chart_line2.png | Bin 0 -> 78937 bytes .../docs/images/chart_line3.png | Bin 0 -> 71560 bytes .../docs/images/chart_line_opt.png | Bin 0 -> 62890 bytes .../docs/images/chart_log_base.png | Bin 0 -> 50500 bytes .../docs/images/chart_marker1.png | Bin 0 -> 65743 bytes .../docs/images/chart_marker2.png | Bin 0 -> 64424 bytes .../docs/images/chart_max_min.png | Bin 0 -> 51821 bytes .../docs/images/chart_overlap.png | Bin 0 -> 55097 bytes .../docs/images/chart_pattern.png | Bin 0 -> 74690 bytes .../docs/images/chart_pie1.png | Bin 0 -> 70432 bytes .../docs/images/chart_pie2.png | Bin 0 -> 63156 bytes .../docs/images/chart_pie3.png | Bin 0 -> 62570 bytes .../docs/images/chart_plotarea.png | Bin 0 -> 57144 bytes .../docs/images/chart_points1.png | Bin 0 -> 55032 bytes .../docs/images/chart_points2.png | Bin 0 -> 63597 bytes .../docs/images/chart_points3.png | Bin 0 -> 55054 bytes .../docs/images/chart_radar1.png | Bin 0 -> 80368 bytes .../docs/images/chart_radar2.png | Bin 0 -> 84498 bytes .../docs/images/chart_radar3.png | Bin 0 -> 77420 bytes .../docs/images/chart_reverse.png | Bin 0 -> 53203 bytes .../docs/images/chart_scatter1.png | Bin 0 -> 72426 bytes .../docs/images/chart_scatter2.png | Bin 0 -> 85666 bytes .../docs/images/chart_scatter3.png | Bin 0 -> 78145 bytes .../docs/images/chart_scatter4.png | Bin 0 -> 85168 bytes .../docs/images/chart_scatter5.png | Bin 0 -> 78915 bytes .../docs/images/chart_series_set_fill.png | Bin 0 -> 22780 bytes .../docs/images/chart_series_set_line.png | Bin 0 -> 55395 bytes .../images/chart_series_set_marker_none.png | Bin 0 -> 64757 bytes .../images/chart_series_set_marker_size.png | Bin 0 -> 66383 bytes .../docs/images/chart_set_interval1.png | Bin 0 -> 54246 bytes .../docs/images/chart_set_interval2.png | Bin 0 -> 54732 bytes .../docs/images/chart_set_major_units.png | Bin 0 -> 52990 bytes .../docs/images/chart_simple.png | Bin 0 -> 52957 bytes .../docs/images/chart_smooth.png | Bin 0 -> 79077 bytes .../docs/images/chart_style.png | Bin 0 -> 54304 bytes .../docs/images/chart_styles.png | Bin 0 -> 81961 bytes .../docs/images/chart_tick_marks.png | Bin 0 -> 50884 bytes .../docs/images/chart_title_set_name.png | Bin 0 -> 57415 bytes .../docs/images/chart_title_set_name_font.png | Bin 0 -> 57855 bytes .../images/chart_title_set_name_font2.png | Bin 0 -> 57675 bytes .../docs/images/chart_trendline0.png | Bin 0 -> 55602 bytes .../docs/images/chart_trendline1.png | Bin 0 -> 59796 bytes .../docs/images/chart_trendline10.png | Bin 0 -> 64794 bytes .../docs/images/chart_trendline2.png | Bin 0 -> 68949 bytes .../docs/images/chart_trendline3.png | Bin 0 -> 72046 bytes .../docs/images/chart_trendline4.png | Bin 0 -> 69399 bytes .../docs/images/chart_trendline5.png | Bin 0 -> 71009 bytes .../docs/images/chart_trendline6.png | Bin 0 -> 70663 bytes .../docs/images/chart_trendline7.png | Bin 0 -> 74409 bytes .../docs/images/chart_trendline8.png | Bin 0 -> 68183 bytes .../docs/images/chart_trendline9.png | Bin 0 -> 67170 bytes .../docs/images/chart_up_down_bars.png | Bin 0 -> 71895 bytes .../docs/images/chart_working.png | Bin 0 -> 73073 bytes .../docs/images/chartsheet.png | Bin 0 -> 60366 bytes .../docs/images/chartsheet2.png | Bin 0 -> 61601 bytes .../docs/images/chartsheet_activate.png | Bin 0 -> 53165 bytes .../docs/images/comments1.png | Bin 0 -> 67678 bytes .../docs/images/comments2.png | Bin 0 -> 73745 bytes .../docs/images/conditional_format1.png | Bin 0 -> 90297 bytes .../docs/images/conditional_format11.png | Bin 0 -> 60064 bytes .../docs/images/conditional_format12.png | Bin 0 -> 88570 bytes .../docs/images/conditional_format2.png | Bin 0 -> 88166 bytes .../docs/images/conditional_format3.png | Bin 0 -> 64923 bytes .../docs/images/conditional_format4.png | Bin 0 -> 66172 bytes .../docs/images/conditional_format5.png | Bin 0 -> 70119 bytes .../docs/images/conditional_format6.png | Bin 0 -> 76623 bytes .../docs/images/conditional_format7.png | Bin 0 -> 77586 bytes .../docs/images/constant_memory.png | Bin 0 -> 74029 bytes .../docs/images/currency_format1.png | Bin 0 -> 121386 bytes .../docs/images/currency_format2.png | Bin 0 -> 107252 bytes .../docs/images/currency_format3.png | Bin 0 -> 102967 bytes .../docs/images/currency_format4.png | Bin 0 -> 104618 bytes .../docs/images/currency_format5.png | Bin 0 -> 63280 bytes .../docs/images/currency_format6.png | Bin 0 -> 62983 bytes .../docs/images/currency_format7.png | Bin 0 -> 63161 bytes .../docs/images/custom_properties.png | Bin 0 -> 75381 bytes .../docs/images/data_validate1.png | Bin 0 -> 85482 bytes .../docs/images/data_validate2.png | Bin 0 -> 33886 bytes .../docs/images/data_validate3.png | Bin 0 -> 64084 bytes .../docs/images/data_validate4.png | Bin 0 -> 84397 bytes .../docs/images/date_example01.png | Bin 0 -> 69188 bytes .../docs/images/date_example02.png | Bin 0 -> 69202 bytes .../docs/images/date_example03.png | Bin 0 -> 89963 bytes .../docs/images/date_example04.png | Bin 0 -> 105818 bytes .../docs/images/defined_name.png | Bin 0 -> 69426 bytes .../libxlsxwriter_repo/docs/images/demo.png | Bin 0 -> 68368 bytes .../docs/images/diagonal_border.png | Bin 0 -> 90019 bytes .../docs/images/doc_properties.png | Bin 0 -> 71130 bytes .../docs/images/dynamic_arrays01.png | Bin 0 -> 117760 bytes .../docs/images/dynamic_arrays02.png | Bin 0 -> 120263 bytes .../docs/images/format_font.png | Bin 0 -> 68477 bytes .../docs/images/format_font_align.png | Bin 0 -> 54811 bytes .../docs/images/format_font_bold.png | Bin 0 -> 49361 bytes .../docs/images/format_font_color.png | Bin 0 -> 49996 bytes .../docs/images/format_font_italic.png | Bin 0 -> 50080 bytes .../docs/images/format_font_name.png | Bin 0 -> 50617 bytes .../docs/images/format_font_script.png | Bin 0 -> 50257 bytes .../docs/images/format_font_size.png | Bin 0 -> 50530 bytes .../docs/images/format_font_strikeout.png | Bin 0 -> 49724 bytes .../docs/images/format_font_text_rotated.png | Bin 0 -> 57599 bytes .../docs/images/format_font_text_wrap.png | Bin 0 -> 59063 bytes .../docs/images/format_font_underlined.png | Bin 0 -> 49823 bytes .../docs/images/format_set_font_name.png | Bin 0 -> 56727 bytes .../docs/images/format_set_num_format.png | Bin 0 -> 79278 bytes .../docs/images/formats_intro.png | Bin 0 -> 71948 bytes .../docs/images/formats_set_bg_color.png | Bin 0 -> 55707 bytes .../docs/images/headers_footers.png | Bin 0 -> 94574 bytes .../docs/images/hello01.png | Bin 0 -> 56079 bytes .../docs/images/hide_row_col.png | Bin 0 -> 64080 bytes .../docs/images/hide_row_col2.png | Bin 0 -> 66186 bytes .../docs/images/hide_row_col3.png | Bin 0 -> 67554 bytes .../docs/images/hide_sheet.png | Bin 0 -> 65071 bytes .../docs/images/hyperlinks.png | Bin 0 -> 66880 bytes .../docs/images/hyperlinks_short.png | Bin 0 -> 49589 bytes .../docs/images/hyperlinks_short2.png | Bin 0 -> 49216 bytes .../docs/images/ignore_errors1.png | Bin 0 -> 100254 bytes .../docs/images/ignore_errors2.png | Bin 0 -> 91529 bytes .../docs/images/image_buffer.png | Bin 0 -> 55510 bytes .../docs/images/image_buffer2.png | Bin 0 -> 55582 bytes .../docs/images/image_buffer_opt.png | Bin 0 -> 55446 bytes .../libxlsxwriter_repo/docs/images/images.png | Bin 0 -> 101500 bytes .../docs/images/insert_image.png | Bin 0 -> 76092 bytes .../docs/images/insert_image_opt.png | Bin 0 -> 67234 bytes .../docs/images/intersection01.png | Bin 0 -> 68875 bytes .../docs/images/intersection02.png | Bin 0 -> 76595 bytes .../docs/images/intersection03.png | Bin 0 -> 79767 bytes .../docs/images/lambda01.png | Bin 0 -> 81497 bytes .../libxlsxwriter_repo/docs/images/logo.png | Bin 0 -> 6802 bytes .../libxlsxwriter_repo/docs/images/macros.png | Bin 0 -> 97214 bytes .../libxlsxwriter_repo/docs/images/merge.png | Bin 0 -> 61872 bytes .../docs/images/merge_range.png | Bin 0 -> 57958 bytes .../docs/images/merge_rich.png | Bin 0 -> 65797 bytes .../docs/images/object_position1.png | Bin 0 -> 102322 bytes .../docs/images/object_position2.png | Bin 0 -> 110928 bytes .../docs/images/object_position3.png | Bin 0 -> 114689 bytes .../docs/images/object_position4.png | Bin 0 -> 94715 bytes .../docs/images/outline1.png | Bin 0 -> 85343 bytes .../docs/images/outline2.png | Bin 0 -> 77771 bytes .../docs/images/outline3.png | Bin 0 -> 71986 bytes .../docs/images/outline4.png | Bin 0 -> 78798 bytes .../docs/images/outline5.png | Bin 0 -> 76165 bytes .../docs/images/outline6.png | Bin 0 -> 70981 bytes .../docs/images/outline7.png | Bin 0 -> 59405 bytes .../docs/images/outline8.png | Bin 0 -> 71598 bytes .../libxlsxwriter_repo/docs/images/panes.png | Bin 0 -> 71852 bytes .../docs/images/read_only.png | Bin 0 -> 48884 bytes .../docs/images/rich_strings.png | Bin 0 -> 75466 bytes .../docs/images/rich_strings_small.png | Bin 0 -> 59203 bytes .../docs/images/set_column_pixels.png | Bin 0 -> 36570 bytes .../docs/images/spill01.png | Bin 0 -> 101569 bytes .../docs/images/tab_colors.png | Bin 0 -> 66341 bytes .../docs/images/tables1.png | Bin 0 -> 71723 bytes .../docs/images/tables10.png | Bin 0 -> 89186 bytes .../docs/images/tables11.png | Bin 0 -> 88077 bytes .../docs/images/tables12.png | Bin 0 -> 90433 bytes .../docs/images/tables13.png | Bin 0 -> 103488 bytes .../docs/images/tables14.png | Bin 0 -> 102546 bytes .../docs/images/tables2.png | Bin 0 -> 80817 bytes .../docs/images/tables3.png | Bin 0 -> 80766 bytes .../docs/images/tables4.png | Bin 0 -> 78824 bytes .../docs/images/tables5.png | Bin 0 -> 84010 bytes .../docs/images/tables6.png | Bin 0 -> 84200 bytes .../docs/images/tables7.png | Bin 0 -> 82502 bytes .../docs/images/tables8.png | Bin 0 -> 89454 bytes .../docs/images/tables9.png | Bin 0 -> 85174 bytes .../docs/images/text_indent.png | Bin 0 -> 66311 bytes .../docs/images/top_left_cell.png | Bin 0 -> 87856 bytes .../docs/images/tutorial01.png | Bin 0 -> 70503 bytes .../docs/images/tutorial02.png | Bin 0 -> 73535 bytes .../docs/images/tutorial03.png | Bin 0 -> 80720 bytes .../libxlsxwriter_repo/docs/images/utf8.png | Bin 0 -> 65275 bytes .../docs/images/workbook01.png | Bin 0 -> 64480 bytes .../docs/images/workbook02.png | Bin 0 -> 59917 bytes .../docs/images/working_with_formulas1.png | Bin 0 -> 49271 bytes .../docs/images/working_with_formulas2.png | Bin 0 -> 52063 bytes .../docs/images/worksheet02.png | Bin 0 -> 58156 bytes .../docs/images/worksheet_activate.png | Bin 0 -> 55570 bytes .../docs/images/worksheet_protection.png | Bin 0 -> 64368 bytes .../docs/images/worksheet_watermark.png | Bin 0 -> 104440 bytes .../docs/images/write_formula01.png | Bin 0 -> 69439 bytes .../docs/images/write_number01.png | Bin 0 -> 57882 bytes .../docs/images/write_number02.png | Bin 0 -> 57451 bytes .../docs/images/write_string01.png | Bin 0 -> 56663 bytes .../docs/images/write_string02.png | Bin 0 -> 57030 bytes .../docs/images/write_string03.png | Bin 0 -> 57373 bytes .../libxlsxwriter_repo/docs/menudata.js | 29 + .../libxlsxwriter_repo/docs/src/author.dox | 27 + .../libxlsxwriter_repo/docs/src/bugs.dox | 153 + .../libxlsxwriter_repo/docs/src/examples.dox | 1201 ++ .../libxlsxwriter_repo/docs/src/examples.txt | 620 + .../libxlsxwriter_repo/docs/src/faq.dox | 85 + .../docs/src/getting_started.dox | 778 ++ .../docs/src/introduction.dox | 30 + .../libxlsxwriter_repo/docs/src/mainpage.dox | 78 + .../docs/src/running_the_tests.dox | 111 + .../docs/src/tutorial01.dox | 113 + .../docs/src/tutorial02.dox | 55 + .../docs/src/tutorial03.dox | 90 + .../docs/src/working_with_autofilters.dox | 217 + .../docs/src/working_with_charts.dox | 1252 ++ .../docs/src/working_with_colors.dox | 46 + .../docs/src/working_with_comments.dox | 283 + .../working_with_conditional_formatting.dox | 1280 ++ .../docs/src/working_with_data_validation.dox | 503 + .../docs/src/working_with_dates.dox | 111 + .../docs/src/working_with_formats.dox | 274 + .../docs/src/working_with_formulas.dox | 528 + .../docs/src/working_with_macros.dox | 180 + .../docs/src/working_with_memory.dox | 97 + .../docs/src/working_with_object_position.dox | 176 + .../docs/src/working_with_outlines.dox | 130 + .../docs/src/working_with_tables.dox | 453 + .../libxlsxwriter_repo/examples/Makefile | 57 + .../libxlsxwriter_repo/examples/anatomy.c | 63 + .../examples/array_formula.c | 42 + .../libxlsxwriter_repo/examples/autofilter.c | 362 + .../libxlsxwriter_repo/examples/background.c | 20 + .../libxlsxwriter_repo/examples/chart.c | 57 + .../libxlsxwriter_repo/examples/chart_area.c | 143 + .../libxlsxwriter_repo/examples/chart_bar.c | 143 + .../examples/chart_clustered.c | 94 + .../examples/chart_column.c | 143 + .../examples/chart_data_labels.c | 386 + .../examples/chart_data_table.c | 120 + .../examples/chart_data_tools.c | 203 + .../examples/chart_doughnut.c | 162 + .../libxlsxwriter_repo/examples/chart_fonts.c | 65 + .../libxlsxwriter_repo/examples/chart_line.c | 142 + .../examples/chart_pattern.c | 77 + .../libxlsxwriter_repo/examples/chart_pie.c | 132 + .../examples/chart_pie_colors.c | 62 + .../libxlsxwriter_repo/examples/chart_radar.c | 143 + .../examples/chart_scatter.c | 205 + .../examples/chart_styles.c | 62 + .../examples/chart_working_with_example.c | 40 + .../libxlsxwriter_repo/examples/chartsheet.c | 85 + .../libxlsxwriter_repo/examples/comments1.c | 20 + .../libxlsxwriter_repo/examples/comments2.c | 281 + .../examples/conditional_format1.c | 55 + .../examples/conditional_format2.c | 400 + .../examples/constant_memory.c | 36 + .../examples/data_validate.c | 310 + .../examples/dates_and_times01.c | 41 + .../examples/dates_and_times02.c | 34 + .../examples/dates_and_times03.c | 36 + .../examples/dates_and_times04.c | 70 + .../examples/defined_name.c | 47 + .../libxlsxwriter_repo/examples/demo.c | 41 + .../examples/diagonal_border.c | 40 + .../examples/doc_custom_properties.c | 34 + .../examples/doc_properties.c | 40 + .../examples/dynamic_arrays.c | 303 + .../libxlsxwriter_repo/examples/format_font.c | 46 + .../examples/format_num_format.c | 68 + .../examples/headers_footers.c | 132 + .../libxlsxwriter_repo/examples/hello.c | 21 + .../examples/hide_row_col.c | 42 + .../libxlsxwriter_repo/examples/hide_sheet.c | 32 + .../libxlsxwriter_repo/examples/hyperlinks.c | 53 + .../examples/ignore_errors.c | 38 + .../examples/image_buffer.c | 54 + .../libxlsxwriter_repo/examples/images.c | 46 + .../libxlsxwriter_repo/examples/lambda.c | 35 + .../libxlsxwriter_repo/examples/logo.png | Bin 0 -> 12935 bytes .../examples/logo_small.png | Bin 0 -> 8759 bytes .../libxlsxwriter_repo/examples/macro.c | 38 + .../libxlsxwriter_repo/examples/merge_range.c | 38 + .../examples/merge_rich_string.c | 49 + .../libxlsxwriter_repo/examples/outline.c | 255 + .../examples/outline_collapsed.c | 271 + .../examples/output_buffer.c | 42 + .../libxlsxwriter_repo/examples/panes.c | 133 + .../examples/rich_strings.c | 91 + .../libxlsxwriter_repo/examples/tab_colors.c | 32 + .../libxlsxwriter_repo/examples/tables.c | 454 + .../libxlsxwriter_repo/examples/tutorial1.c | 50 + .../libxlsxwriter_repo/examples/tutorial2.c | 63 + .../libxlsxwriter_repo/examples/tutorial3.c | 72 + .../libxlsxwriter_repo/examples/utf8.c | 20 + .../examples/vbaProject.bin | Bin 0 -> 15872 bytes .../libxlsxwriter_repo/examples/watermark.c | 26 + .../libxlsxwriter_repo/examples/watermark.png | Bin 0 -> 328777 bytes .../examples/worksheet_protection.c | 41 + .../libxlsxwriter_repo/include/xlsxwriter.h | 25 + .../include/xlsxwriter/app.h | 80 + .../include/xlsxwriter/chart.h | 3831 ++++++ .../include/xlsxwriter/chartsheet.h | 544 + .../include/xlsxwriter/comment.h | 76 + .../include/xlsxwriter/common.h | 462 + .../include/xlsxwriter/content_types.h | 84 + .../include/xlsxwriter/core.h | 51 + .../include/xlsxwriter/custom.h | 52 + .../include/xlsxwriter/drawing.h | 103 + .../include/xlsxwriter/format.h | 1305 ++ .../include/xlsxwriter/hash_table.h | 76 + .../include/xlsxwriter/metadata.h | 49 + .../include/xlsxwriter/packager.h | 99 + .../include/xlsxwriter/relationships.h | 77 + .../include/xlsxwriter/shared_strings.h | 85 + .../include/xlsxwriter/styles.h | 88 + .../include/xlsxwriter/table.h | 51 + .../include/xlsxwriter/theme.h | 47 + .../xlsxwriter/third_party/emyg_dtoa.h | 26 + .../include/xlsxwriter/third_party/ioapi.h | 218 + .../include/xlsxwriter/third_party/md5.h | 45 + .../include/xlsxwriter/third_party/queue.h | 694 + .../xlsxwriter/third_party/tmpfileplus.h | 53 + .../include/xlsxwriter/third_party/tree.h | 801 ++ .../include/xlsxwriter/third_party/zip.h | 375 + .../include/xlsxwriter/utility.h | 258 + .../include/xlsxwriter/vml.h | 55 + .../include/xlsxwriter/workbook.h | 1069 ++ .../include/xlsxwriter/worksheet.h | 5859 ++++++++ .../include/xlsxwriter/xmlwriter.h | 184 + third_party/libxlsxwriter_repo/lib/.gitignore | 0 .../libxlsxwriter_repo/libxlsxwriter.podspec | 52 + third_party/libxlsxwriter_repo/src/Makefile | 192 + third_party/libxlsxwriter_repo/src/app.c | 446 + third_party/libxlsxwriter_repo/src/chart.c | 6749 +++++++++ .../libxlsxwriter_repo/src/chartsheet.c | 508 + third_party/libxlsxwriter_repo/src/comment.c | 443 + .../libxlsxwriter_repo/src/content_types.c | 392 + third_party/libxlsxwriter_repo/src/core.c | 293 + third_party/libxlsxwriter_repo/src/custom.c | 224 + third_party/libxlsxwriter_repo/src/drawing.c | 963 ++ third_party/libxlsxwriter_repo/src/format.c | 801 ++ .../libxlsxwriter_repo/src/hash_table.c | 223 + third_party/libxlsxwriter_repo/src/metadata.c | 283 + third_party/libxlsxwriter_repo/src/packager.c | 1881 +++ .../libxlsxwriter_repo/src/relationships.c | 245 + .../libxlsxwriter_repo/src/shared_strings.c | 278 + third_party/libxlsxwriter_repo/src/styles.c | 1427 ++ third_party/libxlsxwriter_repo/src/table.c | 304 + third_party/libxlsxwriter_repo/src/theme.c | 348 + third_party/libxlsxwriter_repo/src/utility.c | 707 + third_party/libxlsxwriter_repo/src/vml.c | 1062 ++ third_party/libxlsxwriter_repo/src/workbook.c | 2683 ++++ .../libxlsxwriter_repo/src/worksheet.c | 11294 ++++++++++++++++ .../libxlsxwriter_repo/src/xmlwriter.c | 448 + .../libxlsxwriter_repo/test/cpp/Makefile | 45 + .../test/cpp/test_compilation.cpp | 22 + .../test/functional/base_test_class.py | 67 + .../test/functional/helper_functions.py | 225 + .../test/functional/src/Makefile | 67 + .../test/functional/src/images/black_150.jpg | Bin 0 -> 566 bytes .../test/functional/src/images/black_150.png | Bin 0 -> 131 bytes .../test/functional/src/images/black_150e.png | Bin 0 -> 127 bytes .../test/functional/src/images/black_300.jpg | Bin 0 -> 566 bytes .../test/functional/src/images/black_300.png | Bin 0 -> 131 bytes .../test/functional/src/images/black_300e.png | Bin 0 -> 127 bytes .../test/functional/src/images/black_72.jpg | Bin 0 -> 566 bytes .../test/functional/src/images/black_72.png | Bin 0 -> 155 bytes .../test/functional/src/images/black_72e.png | Bin 0 -> 151 bytes .../test/functional/src/images/black_96.jpg | Bin 0 -> 566 bytes .../test/functional/src/images/black_96.png | Bin 0 -> 131 bytes .../test/functional/src/images/blue.jpg | Bin 0 -> 701 bytes .../test/functional/src/images/blue.png | Bin 0 -> 178 bytes .../test/functional/src/images/grey.jpg | Bin 0 -> 823 bytes .../test/functional/src/images/grey.png | Bin 0 -> 359 bytes .../test/functional/src/images/happy.jpg | Bin 0 -> 20262 bytes .../test/functional/src/images/issue32.png | Bin 0 -> 24769 bytes .../test/functional/src/images/logo.gif | Bin 0 -> 5413 bytes .../test/functional/src/images/logo.jpg | Bin 0 -> 4096 bytes .../test/functional/src/images/logo.png | Bin 0 -> 8560 bytes .../test/functional/src/images/mylogo.png | Bin 0 -> 5807 bytes .../test/functional/src/images/red.bmp | Bin 0 -> 3126 bytes .../test/functional/src/images/red.gif | Bin 0 -> 856 bytes .../test/functional/src/images/red.jpg | Bin 0 -> 701 bytes .../test/functional/src/images/red.png | Bin 0 -> 200 bytes .../test/functional/src/images/red2.png | Bin 0 -> 200 bytes .../test/functional/src/images/red_208.png | Bin 0 -> 439 bytes .../test/functional/src/images/red_64x20.png | Bin 0 -> 108 bytes .../functional/src/images/red_readonly.png | Bin 0 -> 200 bytes .../test/functional/src/images/train.jpg | Bin 0 -> 57105 bytes .../functional/src/images/vbaProject01.bin | Bin 0 -> 13312 bytes .../functional/src/images/vbaProject02.bin | Bin 0 -> 12800 bytes .../functional/src/images/vbaProject03.bin | Bin 0 -> 13312 bytes .../functional/src/images/vbaProject04.bin | Bin 0 -> 13312 bytes .../test/functional/src/images/watermark.png | Bin 0 -> 328777 bytes .../test/functional/src/images/yellow.jpg | Bin 0 -> 785 bytes .../test/functional/src/images/yellow.png | Bin 0 -> 316 bytes .../test/functional/src/images/zero_dpi.jpg | Bin 0 -> 634 bytes .../functional/src/test_array_formula01.c | 27 + .../functional/src/test_array_formula02.c | 30 + .../functional/src/test_array_formula03.c | 27 + .../functional/src/test_array_formula04.c | 20 + .../test/functional/src/test_autofilter00.c | 95 + .../test/functional/src/test_autofilter01.c | 99 + .../test/functional/src/test_autofilter02.c | 114 + .../test/functional/src/test_autofilter03.c | 117 + .../test/functional/src/test_autofilter04.c | 122 + .../test/functional/src/test_autofilter05.c | 113 + .../test/functional/src/test_autofilter06.c | 113 + .../test/functional/src/test_autofilter07.c | 114 + .../test/functional/src/test_autofilter08.c | 117 + .../test/functional/src/test_autofilter09.c | 115 + .../test/functional/src/test_autofilter10.c | 116 + .../test/functional/src/test_autofilter11.c | 116 + .../test/functional/src/test_background01.c | 20 + .../test/functional/src/test_background02.c | 20 + .../test/functional/src/test_background03.c | 21 + .../test/functional/src/test_background04.c | 22 + .../test/functional/src/test_background05.c | 22 + .../test/functional/src/test_background06.c | 24 + .../test/functional/src/test_background07.c | 28 + .../test/functional/src/test_background52.c | 368 + .../test/functional/src/test_button01.c | 20 + .../test/functional/src/test_button02.c | 22 + .../test/functional/src/test_button03.c | 21 + .../test/functional/src/test_button04.c | 22 + .../test/functional/src/test_button05.c | 22 + .../test/functional/src/test_button06.c | 22 + .../test/functional/src/test_button07.c | 24 + .../test/functional/src/test_button08.c | 25 + .../test/functional/src/test_button09.c | 25 + .../test/functional/src/test_button10.c | 29 + .../test/functional/src/test_button11.c | 29 + .../test/functional/src/test_button12.c | 28 + .../test/functional/src/test_button13.c | 27 + .../test/functional/src/test_button14.c | 28 + .../test/functional/src/test_button15.c | 22 + .../test/functional/src/test_chart_area01.c | 48 + .../test/functional/src/test_chart_area02.c | 48 + .../test/functional/src/test_chart_area03.c | 48 + .../test/functional/src/test_chart_area05.c | 49 + .../test/functional/src/test_chart_area06.c | 49 + .../test/functional/src/test_chart_axis01.c | 45 + .../test/functional/src/test_chart_axis02.c | 45 + .../test/functional/src/test_chart_axis04.c | 51 + .../test/functional/src/test_chart_axis05.c | 45 + .../test/functional/src/test_chart_axis06.c | 43 + .../test/functional/src/test_chart_axis07.c | 51 + .../test/functional/src/test_chart_axis08.c | 50 + .../test/functional/src/test_chart_axis09.c | 44 + .../test/functional/src/test_chart_axis10.c | 51 + .../test/functional/src/test_chart_axis11.c | 45 + .../test/functional/src/test_chart_axis12.c | 45 + .../test/functional/src/test_chart_axis13.c | 53 + .../test/functional/src/test_chart_axis15.c | 45 + .../test/functional/src/test_chart_axis17.c | 44 + .../test/functional/src/test_chart_axis18.c | 44 + .../test/functional/src/test_chart_axis19.c | 45 + .../test/functional/src/test_chart_axis20.c | 45 + .../test/functional/src/test_chart_axis21.c | 50 + .../test/functional/src/test_chart_axis22.c | 44 + .../test/functional/src/test_chart_axis23.c | 45 + .../test/functional/src/test_chart_axis24.c | 47 + .../test/functional/src/test_chart_axis25.c | 45 + .../test/functional/src/test_chart_axis26.c | 45 + .../test/functional/src/test_chart_axis27.c | 45 + .../test/functional/src/test_chart_axis28.c | 45 + .../test/functional/src/test_chart_axis29.c | 45 + .../test/functional/src/test_chart_axis30.c | 44 + .../test/functional/src/test_chart_axis31.c | 44 + .../test/functional/src/test_chart_axis32.c | 44 + .../test/functional/src/test_chart_axis33.c | 50 + .../test/functional/src/test_chart_axis34.c | 44 + .../test/functional/src/test_chart_axis35.c | 46 + .../test/functional/src/test_chart_axis36.c | 46 + .../test/functional/src/test_chart_axis37.c | 48 + .../test/functional/src/test_chart_axis38.c | 48 + .../test/functional/src/test_chart_axis39.c | 53 + .../test/functional/src/test_chart_axis40.c | 45 + .../test/functional/src/test_chart_axis41.c | 46 + .../test/functional/src/test_chart_axis42.c | 44 + .../test/functional/src/test_chart_axis43.c | 44 + .../test/functional/src/test_chart_axis44.c | 52 + .../test/functional/src/test_chart_axis45.c | 52 + .../test/functional/src/test_chart_axis46.c | 52 + .../test/functional/src/test_chart_axis47.c | 50 + .../test/functional/src/test_chart_axis48.c | 52 + .../test/functional/src/test_chart_bar01.c | 41 + .../test/functional/src/test_chart_bar02.c | 45 + .../test/functional/src/test_chart_bar03.c | 65 + .../test/functional/src/test_chart_bar04.c | 69 + .../test/functional/src/test_chart_bar05.c | 42 + .../test/functional/src/test_chart_bar06.c | 46 + .../test/functional/src/test_chart_bar08.c | 46 + .../test/functional/src/test_chart_bar09.c | 42 + .../test/functional/src/test_chart_bar10.c | 42 + .../test/functional/src/test_chart_bar11.c | 62 + .../test/functional/src/test_chart_bar12.c | 43 + .../test/functional/src/test_chart_bar13.c | 60 + .../test/functional/src/test_chart_bar14.c | 67 + .../test/functional/src/test_chart_bar15.c | 54 + .../test/functional/src/test_chart_bar16.c | 48 + .../test/functional/src/test_chart_bar17.c | 45 + .../test/functional/src/test_chart_bar18.c | 62 + .../test/functional/src/test_chart_bar19.c | 50 + .../test/functional/src/test_chart_bar20.c | 47 + .../test/functional/src/test_chart_bar21.c | 48 + .../test/functional/src/test_chart_bar22.c | 67 + .../test/functional/src/test_chart_bar51.c | 44 + .../test/functional/src/test_chart_bar52.c | 50 + .../test/functional/src/test_chart_bar53.c | 75 + .../test/functional/src/test_chart_bar54.c | 81 + .../test/functional/src/test_chart_bar55.c | 47 + .../test/functional/src/test_chart_bar61.c | 49 + .../test/functional/src/test_chart_bar65.c | 46 + .../test/functional/src/test_chart_bar69.c | 51 + .../test/functional/src/test_chart_bar70.c | 47 + .../test/functional/src/test_chart_blank01.c | 44 + .../test/functional/src/test_chart_blank02.c | 44 + .../test/functional/src/test_chart_blank03.c | 44 + .../test/functional/src/test_chart_blank04.c | 53 + .../test/functional/src/test_chart_blank05.c | 45 + .../test/functional/src/test_chart_blank06.c | 44 + .../functional/src/test_chart_chartarea01.c | 55 + .../functional/src/test_chart_chartarea03.c | 62 + .../functional/src/test_chart_chartarea05.c | 51 + .../functional/src/test_chart_chartarea06.c | 51 + .../test/functional/src/test_chart_column01.c | 42 + .../test/functional/src/test_chart_column02.c | 42 + .../test/functional/src/test_chart_column03.c | 42 + .../test/functional/src/test_chart_column05.c | 42 + .../test/functional/src/test_chart_column06.c | 43 + .../test/functional/src/test_chart_column07.c | 52 + .../test/functional/src/test_chart_column08.c | 55 + .../test/functional/src/test_chart_column09.c | 42 + .../test/functional/src/test_chart_column10.c | 39 + .../test/functional/src/test_chart_column11.c | 44 + .../test/functional/src/test_chart_column12.c | 44 + .../test/functional/src/test_chart_column13.c | 32 + .../functional/src/test_chart_crossing01.c | 44 + .../functional/src/test_chart_crossing02.c | 45 + .../functional/src/test_chart_crossing03.c | 51 + .../functional/src/test_chart_crossing04.c | 51 + .../functional/src/test_chart_crossing05.c | 44 + .../functional/src/test_chart_crossing06.c | 44 + .../functional/src/test_chart_data_labels01.c | 46 + .../functional/src/test_chart_data_labels02.c | 47 + .../functional/src/test_chart_data_labels03.c | 47 + .../functional/src/test_chart_data_labels04.c | 47 + .../functional/src/test_chart_data_labels05.c | 49 + .../functional/src/test_chart_data_labels06.c | 49 + .../functional/src/test_chart_data_labels07.c | 43 + .../functional/src/test_chart_data_labels08.c | 51 + .../functional/src/test_chart_data_labels09.c | 53 + .../functional/src/test_chart_data_labels10.c | 53 + .../functional/src/test_chart_data_labels11.c | 40 + .../functional/src/test_chart_data_labels12.c | 40 + .../functional/src/test_chart_data_labels13.c | 40 + .../functional/src/test_chart_data_labels14.c | 40 + .../functional/src/test_chart_data_labels15.c | 40 + .../functional/src/test_chart_data_labels16.c | 43 + .../functional/src/test_chart_data_labels18.c | 53 + .../functional/src/test_chart_data_labels19.c | 54 + .../functional/src/test_chart_data_labels20.c | 45 + .../functional/src/test_chart_data_labels21.c | 49 + .../functional/src/test_chart_data_labels22.c | 48 + .../functional/src/test_chart_data_labels23.c | 49 + .../functional/src/test_chart_data_labels24.c | 50 + .../functional/src/test_chart_data_labels25.c | 52 + .../functional/src/test_chart_data_labels26.c | 48 + .../functional/src/test_chart_data_labels27.c | 48 + .../functional/src/test_chart_data_labels28.c | 64 + .../functional/src/test_chart_data_labels29.c | 49 + .../functional/src/test_chart_data_labels30.c | 49 + .../functional/src/test_chart_data_labels31.c | 49 + .../functional/src/test_chart_data_labels32.c | 49 + .../functional/src/test_chart_data_labels33.c | 49 + .../functional/src/test_chart_data_labels34.c | 49 + .../functional/src/test_chart_data_labels35.c | 47 + .../functional/src/test_chart_data_labels36.c | 51 + .../functional/src/test_chart_data_labels37.c | 52 + .../functional/src/test_chart_data_labels38.c | 56 + .../functional/src/test_chart_data_labels40.c | 50 + .../functional/src/test_chart_data_labels41.c | 50 + .../functional/src/test_chart_data_labels42.c | 51 + .../functional/src/test_chart_data_labels43.c | 51 + .../functional/src/test_chart_data_labels44.c | 51 + .../functional/src/test_chart_data_labels45.c | 50 + .../functional/src/test_chart_data_labels46.c | 52 + .../functional/src/test_chart_data_labels47.c | 52 + .../functional/src/test_chart_data_labels48.c | 53 + .../functional/src/test_chart_data_labels49.c | 53 + .../functional/src/test_chart_data_labels50.c | 53 + .../src/test_chart_display_units01.c | 33 + .../src/test_chart_display_units02.c | 36 + .../src/test_chart_display_units03.c | 36 + .../src/test_chart_display_units04.c | 36 + .../src/test_chart_display_units05.c | 36 + .../src/test_chart_display_units06.c | 36 + .../src/test_chart_display_units07.c | 36 + .../src/test_chart_display_units08.c | 36 + .../src/test_chart_display_units09.c | 36 + .../src/test_chart_display_units10.c | 36 + .../src/test_chart_display_units11.c | 36 + .../src/test_chart_display_units12.c | 48 + .../functional/src/test_chart_doughnut01.c | 37 + .../functional/src/test_chart_doughnut02.c | 39 + .../functional/src/test_chart_doughnut03.c | 39 + .../functional/src/test_chart_doughnut04.c | 39 + .../functional/src/test_chart_doughnut05.c | 39 + .../functional/src/test_chart_doughnut06.c | 35 + .../functional/src/test_chart_drop_lines01.c | 50 + .../functional/src/test_chart_drop_lines02.c | 53 + .../functional/src/test_chart_drop_lines03.c | 50 + .../functional/src/test_chart_errorbars01.c | 52 + .../functional/src/test_chart_errorbars02.c | 67 + .../functional/src/test_chart_errorbars03.c | 57 + .../functional/src/test_chart_errorbars04.c | 61 + .../functional/src/test_chart_errorbars05.c | 52 + .../functional/src/test_chart_errorbars06.c | 52 + .../test/functional/src/test_chart_font01.c | 57 + .../test/functional/src/test_chart_font02.c | 58 + .../test/functional/src/test_chart_font03.c | 59 + .../test/functional/src/test_chart_font04.c | 54 + .../test/functional/src/test_chart_font05.c | 53 + .../test/functional/src/test_chart_font06.c | 61 + .../test/functional/src/test_chart_font07.c | 45 + .../test/functional/src/test_chart_font08.c | 45 + .../test/functional/src/test_chart_font09.c | 47 + .../test/functional/src/test_chart_format01.c | 48 + .../test/functional/src/test_chart_format02.c | 53 + .../test/functional/src/test_chart_format03.c | 58 + .../test/functional/src/test_chart_format04.c | 54 + .../test/functional/src/test_chart_format05.c | 51 + .../test/functional/src/test_chart_format06.c | 53 + .../test/functional/src/test_chart_format07.c | 58 + .../test/functional/src/test_chart_format08.c | 50 + .../test/functional/src/test_chart_format09.c | 54 + .../test/functional/src/test_chart_format10.c | 55 + .../test/functional/src/test_chart_format11.c | 57 + .../test/functional/src/test_chart_format12.c | 55 + .../test/functional/src/test_chart_format13.c | 50 + .../test/functional/src/test_chart_format14.c | 51 + .../test/functional/src/test_chart_format15.c | 53 + .../test/functional/src/test_chart_format16.c | 52 + .../test/functional/src/test_chart_format17.c | 45 + .../test/functional/src/test_chart_format18.c | 48 + .../test/functional/src/test_chart_format19.c | 45 + .../test/functional/src/test_chart_format20.c | 59 + .../test/functional/src/test_chart_format21.c | 54 + .../test/functional/src/test_chart_format22.c | 54 + .../test/functional/src/test_chart_format23.c | 54 + .../test/functional/src/test_chart_format24.c | 56 + .../test/functional/src/test_chart_format25.c | 52 + .../test/functional/src/test_chart_format26.c | 54 + .../test/functional/src/test_chart_format27.c | 58 + .../test/functional/src/test_chart_format28.c | 55 + .../test/functional/src/test_chart_format29.c | 59 + .../test/functional/src/test_chart_format30.c | 56 + .../test/functional/src/test_chart_format31.c | 60 + .../test/functional/src/test_chart_gap01.c | 51 + .../test/functional/src/test_chart_gap02.c | 51 + .../test/functional/src/test_chart_gap03.c | 51 + .../functional/src/test_chart_gridlines01.c | 48 + .../functional/src/test_chart_gridlines02.c | 51 + .../functional/src/test_chart_gridlines04.c | 44 + .../functional/src/test_chart_gridlines05.c | 49 + .../functional/src/test_chart_gridlines06.c | 53 + .../functional/src/test_chart_gridlines08.c | 45 + .../functional/src/test_chart_gridlines09.c | 60 + .../src/test_chart_high_low_lines01.c | 50 + .../src/test_chart_high_low_lines02.c | 53 + .../test/functional/src/test_chart_legend01.c | 44 + .../test/functional/src/test_chart_legend03.c | 44 + .../test/functional/src/test_chart_legend04.c | 44 + .../test/functional/src/test_chart_line01.c | 42 + .../test/functional/src/test_chart_line03.c | 44 + .../test/functional/src/test_chart_line04.c | 45 + .../test/functional/src/test_chart_line05.c | 42 + .../test/functional/src/test_chart_line06.c | 42 + .../test/functional/src/test_chart_order01.c | 63 + .../test/functional/src/test_chart_order02.c | 63 + .../functional/src/test_chart_pattern01.c | 45 + .../functional/src/test_chart_pattern02.c | 79 + .../functional/src/test_chart_pattern03.c | 79 + .../functional/src/test_chart_pattern04.c | 79 + .../functional/src/test_chart_pattern05.c | 79 + .../functional/src/test_chart_pattern06.c | 79 + .../functional/src/test_chart_pattern07.c | 79 + .../functional/src/test_chart_pattern08.c | 79 + .../functional/src/test_chart_pattern10.c | 51 + .../test/functional/src/test_chart_pie01.c | 37 + .../test/functional/src/test_chart_pie02.c | 40 + .../test/functional/src/test_chart_pie03.c | 40 + .../test/functional/src/test_chart_pie04.c | 39 + .../test/functional/src/test_chart_pie05.c | 39 + .../test/functional/src/test_chart_points01.c | 38 + .../test/functional/src/test_chart_points02.c | 47 + .../test/functional/src/test_chart_points03.c | 41 + .../test/functional/src/test_chart_points04.c | 67 + .../test/functional/src/test_chart_points05.c | 57 + .../test/functional/src/test_chart_points06.c | 57 + .../test/functional/src/test_chart_radar01.c | 42 + .../test/functional/src/test_chart_radar02.c | 42 + .../test/functional/src/test_chart_radar03.c | 42 + .../functional/src/test_chart_scatter01.c | 47 + .../functional/src/test_chart_scatter02.c | 48 + .../functional/src/test_chart_scatter03.c | 48 + .../functional/src/test_chart_scatter04.c | 48 + .../functional/src/test_chart_scatter05.c | 48 + .../functional/src/test_chart_scatter06.c | 55 + .../functional/src/test_chart_scatter09.c | 50 + .../functional/src/test_chart_scatter10.c | 50 + .../functional/src/test_chart_scatter11.c | 50 + .../functional/src/test_chart_scatter12.c | 51 + .../functional/src/test_chart_scatter13.c | 51 + .../functional/src/test_chart_scatter14.c | 56 + .../functional/src/test_chart_scatter15.c | 41 + .../test/functional/src/test_chart_size01.c | 43 + .../test/functional/src/test_chart_size04.c | 43 + .../test/functional/src/test_chart_sparse01.c | 54 + .../test/functional/src/test_chart_str01.c | 49 + .../test/functional/src/test_chart_str02.c | 52 + .../test/functional/src/test_chart_table01.c | 44 + .../test/functional/src/test_chart_table02.c | 44 + .../test/functional/src/test_chart_table03.c | 51 + .../test/functional/src/test_chart_title01.c | 45 + .../test/functional/src/test_chart_title02.c | 42 + .../test/functional/src/test_chart_title03.c | 45 + .../src/test_chart_up_down_bars01.c | 50 + .../src/test_chart_up_down_bars02.c | 56 + .../test/functional/src/test_chartsheet01.c | 44 + .../test/functional/src/test_chartsheet02.c | 46 + .../test/functional/src/test_chartsheet03.c | 44 + .../test/functional/src/test_chartsheet04.c | 44 + .../test/functional/src/test_chartsheet05.c | 44 + .../test/functional/src/test_chartsheet06.c | 44 + .../test/functional/src/test_chartsheet07.c | 49 + .../test/functional/src/test_chartsheet08.c | 61 + .../test/functional/src/test_chartsheet09.c | 51 + .../test/functional/src/test_comment01.c | 23 + .../test/functional/src/test_comment02.c | 24 + .../test/functional/src/test_comment03.c | 24 + .../test/functional/src/test_comment04.c | 31 + .../test/functional/src/test_comment05.c | 33 + .../test/functional/src/test_comment06.c | 31 + .../test/functional/src/test_comment07.c | 28 + .../test/functional/src/test_comment08.c | 31 + .../test/functional/src/test_comment09.c | 28 + .../test/functional/src/test_comment10.c | 25 + .../test/functional/src/test_comment11.c | 26 + .../test/functional/src/test_comment12.c | 26 + .../test/functional/src/test_comment13.c | 26 + .../test/functional/src/test_comment14.c | 25 + .../test/functional/src/test_comment15.c | 25 + .../test/functional/src/test_comment16.c | 30 + .../test/functional/src/test_comment56.c | 41 + .../test/functional/src/test_cond_format01.c | 38 + .../test/functional/src/test_cond_format02.c | 32 + .../test/functional/src/test_cond_format03.c | 49 + .../test/functional/src/test_cond_format04.c | 48 + .../test/functional/src/test_cond_format05.c | 35 + .../test/functional/src/test_cond_format06.c | 38 + .../test/functional/src/test_cond_format07.c | 61 + .../test/functional/src/test_cond_format08.c | 38 + .../test/functional/src/test_cond_format09.c | 38 + .../test/functional/src/test_cond_format10.c | 38 + .../test/functional/src/test_cond_format11.c | 39 + .../test/functional/src/test_cond_format12.c | 39 + .../test/functional/src/test_cond_format13.c | 48 + .../test/functional/src/test_cond_format14.c | 36 + .../test/functional/src/test_cond_format15.c | 46 + .../test/functional/src/test_cond_format16.c | 46 + .../test/functional/src/test_cond_format17.c | 30 + .../test/functional/src/test_data01.c | 20 + .../test/functional/src/test_data02.c | 26 + .../test/functional/src/test_data03.c | 21 + .../test/functional/src/test_data04.c | 24 + .../test/functional/src/test_data05.c | 23 + .../test/functional/src/test_data06.c | 33 + .../test/functional/src/test_data07.c | 20 + .../test/functional/src/test_data08.c | 37 + .../test/functional/src/test_data09.c | 20 + .../functional/src/test_data_validation01.c | 27 + .../functional/src/test_data_validation02.c | 29 + .../functional/src/test_data_validation03.c | 42 + .../functional/src/test_data_validation04.c | 43 + .../functional/src/test_data_validation05.c | 43 + .../functional/src/test_data_validation06.c | 43 + .../functional/src/test_data_validation07.c | 27 + .../functional/src/test_data_validation08.c | 27 + .../test/functional/src/test_default_row01.c | 23 + .../test/functional/src/test_default_row02.c | 27 + .../test/functional/src/test_default_row03.c | 27 + .../test/functional/src/test_default_row05.c | 31 + .../test/functional/src/test_defined_name01.c | 41 + .../test/functional/src/test_defined_name02.c | 22 + .../test/functional/src/test_defined_name03.c | 22 + .../test/functional/src/test_defined_name04.c | 27 + .../functional/src/test_dynamic_array01.c | 22 + .../functional/src/test_dynamic_array02.c | 21 + .../functional/src/test_dynamic_array03.c | 20 + .../functional/src/test_dynamic_array51.c | 22 + .../functional/src/test_dynamic_array52.c | 22 + .../functional/src/test_dynamic_array53.c | 22 + .../test/functional/src/test_escapes03.c | 34 + .../test/functional/src/test_escapes04.c | 22 + .../test/functional/src/test_escapes05.c | 25 + .../test/functional/src/test_escapes06.c | 25 + .../test/functional/src/test_escapes07.c | 22 + .../test/functional/src/test_escapes08.c | 23 + .../test/functional/src/test_firstsheet01.c | 60 + .../test/functional/src/test_fit_to_pages01.c | 24 + .../test/functional/src/test_fit_to_pages02.c | 24 + .../test/functional/src/test_fit_to_pages03.c | 24 + .../test/functional/src/test_fit_to_pages04.c | 24 + .../test/functional/src/test_fit_to_pages05.c | 24 + .../test/functional/src/test_format01.c | 50 + .../test/functional/src/test_format02.c | 38 + .../test/functional/src/test_format06.c | 31 + .../test/functional/src/test_format07.c | 34 + .../test/functional/src/test_format08.c | 46 + .../test/functional/src/test_format09.c | 41 + .../test/functional/src/test_format10.c | 36 + .../test/functional/src/test_format12.c | 38 + .../test/functional/src/test_format15.c | 28 + .../test/functional/src/test_format16.c | 23 + .../test/functional/src/test_format17.c | 24 + .../test/functional/src/test_format50.c | 31 + .../test/functional/src/test_format51.c | 40 + .../test/functional/src/test_format52.c | 60 + .../test/functional/src/test_gh42_01.c | 25 + .../test/functional/src/test_gh42_02.c | 25 + .../test/functional/src/test_gridlines01.c | 25 + .../test/functional/src/test_header04.c | 24 + .../test/functional/src/test_header_image01.c | 53 + .../test/functional/src/test_header_image02.c | 23 + .../test/functional/src/test_header_image03.c | 24 + .../test/functional/src/test_header_image04.c | 24 + .../test/functional/src/test_header_image05.c | 24 + .../test/functional/src/test_header_image06.c | 25 + .../test/functional/src/test_header_image07.c | 24 + .../test/functional/src/test_header_image08.c | 27 + .../test/functional/src/test_header_image09.c | 28 + .../test/functional/src/test_header_image10.c | 28 + .../test/functional/src/test_header_image11.c | 22 + .../test/functional/src/test_header_image12.c | 22 + .../test/functional/src/test_header_image13.c | 24 + .../test/functional/src/test_header_image14.c | 24 + .../test/functional/src/test_header_image15.c | 24 + .../test/functional/src/test_header_image16.c | 28 + .../test/functional/src/test_header_image17.c | 29 + .../test/functional/src/test_header_image18.c | 31 + .../test/functional/src/test_header_image19.c | 24 + .../test/functional/src/test_header_image20.c | 22 + .../test/functional/src/test_header_image51.c | 25 + .../test/functional/src/test_header_image52.c | 23 + .../test/functional/src/test_header_image53.c | 24 + .../test/functional/src/test_header_image55.c | 26 + .../test/functional/src/test_hide01.c | 26 + .../test/functional/src/test_hyperlink01.c | 22 + .../test/functional/src/test_hyperlink02.c | 26 + .../test/functional/src/test_hyperlink03.c | 31 + .../test/functional/src/test_hyperlink04.c | 33 + .../test/functional/src/test_hyperlink05.c | 25 + .../test/functional/src/test_hyperlink06.c | 24 + .../test/functional/src/test_hyperlink07.c | 23 + .../test/functional/src/test_hyperlink08.c | 24 + .../test/functional/src/test_hyperlink09.c | 24 + .../test/functional/src/test_hyperlink10.c | 24 + .../test/functional/src/test_hyperlink11.c | 24 + .../test/functional/src/test_hyperlink12.c | 25 + .../test/functional/src/test_hyperlink13.c | 24 + .../test/functional/src/test_hyperlink14.c | 27 + .../test/functional/src/test_hyperlink15.c | 22 + .../test/functional/src/test_hyperlink16.c | 22 + .../test/functional/src/test_hyperlink17.c | 23 + .../test/functional/src/test_hyperlink18.c | 31 + .../test/functional/src/test_hyperlink19.c | 27 + .../test/functional/src/test_hyperlink20.c | 31 + .../test/functional/src/test_hyperlink21.c | 22 + .../test/functional/src/test_hyperlink22.c | 22 + .../test/functional/src/test_hyperlink23.c | 22 + .../test/functional/src/test_hyperlink24.c | 22 + .../test/functional/src/test_hyperlink25.c | 22 + .../test/functional/src/test_hyperlink26.c | 22 + .../test/functional/src/test_hyperlink27.c | 22 + .../test/functional/src/test_hyperlink28.c | 20 + .../test/functional/src/test_hyperlink29.c | 28 + .../test/functional/src/test_hyperlink30.c | 36 + .../test/functional/src/test_hyperlink31.c | 24 + .../test/functional/src/test_hyperlink32.c | 22 + .../test/functional/src/test_hyperlink33.c | 23 + .../test/functional/src/test_hyperlink34.c | 26 + .../test/functional/src/test_hyperlink35.c | 28 + .../test/functional/src/test_hyperlink36.c | 30 + .../test/functional/src/test_hyperlink38.c | 22 + .../test/functional/src/test_hyperlink39.c | 22 + .../test/functional/src/test_hyperlink40.c | 22 + .../test/functional/src/test_hyperlink41.c | 22 + .../test/functional/src/test_hyperlink42.c | 22 + .../test/functional/src/test_hyperlink43.c | 22 + .../test/functional/src/test_hyperlink44.c | 22 + .../test/functional/src/test_hyperlink45.c | 22 + .../test/functional/src/test_hyperlink46.c | 28 + .../test/functional/src/test_hyperlink47.c | 20 + .../test/functional/src/test_hyperlink48.c | 23 + .../test/functional/src/test_hyperlink49.c | 24 + .../test/functional/src/test_hyperlink50.c | 22 + .../test/functional/src/test_hyperlink51.c | 22 + .../test/functional/src/test_hyperlink78.c | 22 + .../test/functional/src/test_hyperlink81.c | 47 + .../test/functional/src/test_hyperlink82.c | 46 + .../test/functional/src/test_ignore_error01.c | 20 + .../test/functional/src/test_ignore_error02.c | 22 + .../test/functional/src/test_ignore_error03.c | 24 + .../test/functional/src/test_ignore_error04.c | 24 + .../test/functional/src/test_ignore_error05.c | 27 + .../test/functional/src/test_ignore_error06.c | 24 + .../test/functional/src/test_image01.c | 20 + .../test/functional/src/test_image02.c | 22 + .../test/functional/src/test_image03.c | 20 + .../test/functional/src/test_image04.c | 20 + .../test/functional/src/test_image05.c | 23 + .../test/functional/src/test_image07.c | 22 + .../test/functional/src/test_image08.c | 22 + .../test/functional/src/test_image09.c | 20 + .../test/functional/src/test_image10.c | 20 + .../test/functional/src/test_image11.c | 22 + .../test/functional/src/test_image12.c | 23 + .../test/functional/src/test_image13.c | 25 + .../test/functional/src/test_image14.c | 25 + .../test/functional/src/test_image15.c | 27 + .../test/functional/src/test_image16.c | 20 + .../test/functional/src/test_image17.c | 23 + .../test/functional/src/test_image18.c | 25 + .../test/functional/src/test_image19.c | 20 + .../test/functional/src/test_image22.c | 20 + .../test/functional/src/test_image23.c | 23 + .../test/functional/src/test_image24.c | 20 + .../test/functional/src/test_image25.c | 20 + .../test/functional/src/test_image26.c | 23 + .../test/functional/src/test_image27.c | 20 + .../test/functional/src/test_image28.c | 22 + .../test/functional/src/test_image29.c | 22 + .../test/functional/src/test_image30.c | 22 + .../test/functional/src/test_image31.c | 25 + .../test/functional/src/test_image32.c | 22 + .../test/functional/src/test_image33.c | 27 + .../test/functional/src/test_image34.c | 20 + .../test/functional/src/test_image35.c | 20 + .../test/functional/src/test_image36.c | 20 + .../test/functional/src/test_image44.c | 22 + .../test/functional/src/test_image45.c | 24 + .../test/functional/src/test_image46.c | 24 + .../test/functional/src/test_image47.c | 23 + .../test/functional/src/test_image48.c | 22 + .../test/functional/src/test_image49.c | 35 + .../test/functional/src/test_image50.c | 21 + .../test/functional/src/test_image51.c | 24 + .../test/functional/src/test_image52.c | 22 + .../test/functional/src/test_image53.c | 22 + .../test/functional/src/test_image54.c | 23 + .../test/functional/src/test_image55.c | 22 + .../test/functional/src/test_image56.c | 20 + .../test/functional/src/test_image57.c | 20 + .../test/functional/src/test_image81.c | 45 + .../test/functional/src/test_image82.c | 43 + .../test/functional/src/test_image83.c | 56 + .../test/functional/src/test_image84.c | 22 + .../test/functional/src/test_image85.c | 22 + .../test/functional/src/test_image86.c | 47 + .../test/functional/src/test_image87.c | 46 + .../test/functional/src/test_image88.c | 45 + .../test/functional/src/test_image89.c | 87 + .../test/functional/src/test_landscape01.c | 23 + .../test/functional/src/test_macro01.c | 22 + .../test/functional/src/test_macro02.c | 24 + .../test/functional/src/test_macro03.c | 22 + .../test/functional/src/test_merge_range01.c | 23 + .../test/functional/src/test_merge_range02.c | 23 + .../test/functional/src/test_merge_range03.c | 25 + .../test/functional/src/test_merge_range04.c | 24 + .../test/functional/src/test_merge_range05.c | 24 + .../functional/src/test_object_position01.c | 21 + .../functional/src/test_object_position02.c | 21 + .../functional/src/test_object_position03.c | 21 + .../functional/src/test_object_position04.c | 43 + .../functional/src/test_object_position06.c | 24 + .../functional/src/test_object_position07.c | 24 + .../functional/src/test_object_position08.c | 58 + .../functional/src/test_object_position09.c | 58 + .../functional/src/test_object_position10.c | 24 + .../functional/src/test_object_position12.c | 22 + .../functional/src/test_object_position13.c | 23 + .../functional/src/test_object_position14.c | 23 + .../functional/src/test_object_position15.c | 23 + .../functional/src/test_object_position16.c | 24 + .../functional/src/test_object_position17.c | 24 + .../functional/src/test_object_position18.c | 23 + .../functional/src/test_object_position19.c | 24 + .../functional/src/test_object_position20.c | 24 + .../functional/src/test_object_position51.c | 44 + .../test/functional/src/test_optimize01.c | 26 + .../test/functional/src/test_optimize02.c | 26 + .../test/functional/src/test_optimize04.c | 36 + .../test/functional/src/test_optimize05.c | 57 + .../test/functional/src/test_optimize06.c | 34 + .../test/functional/src/test_optimize08.c | 36 + .../test/functional/src/test_optimize13.c | 25 + .../test/functional/src/test_optimize14.c | 32 + .../test/functional/src/test_optimize21.c | 25 + .../test/functional/src/test_optimize22.c | 25 + .../test/functional/src/test_optimize23.c | 25 + .../test/functional/src/test_optimize24.c | 26 + .../test/functional/src/test_optimize25.c | 26 + .../test/functional/src/test_optimize26.c | 23 + .../test/functional/src/test_outline01.c | 67 + .../test/functional/src/test_outline02.c | 70 + .../test/functional/src/test_outline03.c | 77 + .../test/functional/src/test_outline04.c | 54 + .../test/functional/src/test_outline05.c | 71 + .../test/functional/src/test_outline06.c | 70 + .../functional/src/test_output_buffer01.c | 37 + .../test/functional/src/test_page_breaks01.c | 26 + .../test/functional/src/test_page_breaks02.c | 26 + .../test/functional/src/test_page_breaks03.c | 30 + .../test/functional/src/test_page_breaks04.c | 26 + .../test/functional/src/test_page_breaks05.c | 26 + .../test/functional/src/test_page_breaks06.c | 28 + .../test/functional/src/test_page_view01.c | 25 + .../test/functional/src/test_panes01.c | 58 + .../test/functional/src/test_print_across01.c | 24 + .../test/functional/src/test_print_area01.c | 25 + .../test/functional/src/test_print_area02.c | 25 + .../test/functional/src/test_print_area03.c | 25 + .../test/functional/src/test_print_area04.c | 25 + .../test/functional/src/test_print_area05.c | 25 + .../test/functional/src/test_print_area06.c | 25 + .../test/functional/src/test_print_area07.c | 22 + .../functional/src/test_print_options01.c | 25 + .../functional/src/test_print_options02.c | 25 + .../functional/src/test_print_options03.c | 25 + .../functional/src/test_print_options04.c | 25 + .../functional/src/test_print_options05.c | 28 + .../functional/src/test_print_options06.c | 26 + .../functional/src/test_print_options07.c | 25 + .../test/functional/src/test_print_scale01.c | 24 + .../test/functional/src/test_print_scale02.c | 24 + .../test/functional/src/test_properties01.c | 48 + .../test/functional/src/test_properties02.c | 28 + .../test/functional/src/test_properties03.c | 23 + .../test/functional/src/test_properties04.c | 31 + .../test/functional/src/test_properties05.c | 23 + .../test/functional/src/test_protect01.c | 29 + .../test/functional/src/test_protect02.c | 31 + .../test/functional/src/test_protect03.c | 31 + .../test/functional/src/test_protect07.c | 20 + .../test/functional/src/test_repeat01.c | 25 + .../test/functional/src/test_repeat02.c | 25 + .../test/functional/src/test_repeat03.c | 26 + .../test/functional/src/test_repeat04.c | 25 + .../test/functional/src/test_repeat05.c | 34 + .../test/functional/src/test_repeat06.c | 26 + .../test/functional/src/test_rich_string01.c | 34 + .../test/functional/src/test_rich_string02.c | 34 + .../test/functional/src/test_rich_string03.c | 33 + .../test/functional/src/test_rich_string04.c | 33 + .../test/functional/src/test_rich_string05.c | 37 + .../test/functional/src/test_rich_string06.c | 32 + .../test/functional/src/test_rich_string07.c | 55 + .../test/functional/src/test_rich_string08.c | 37 + .../test/functional/src/test_rich_string09.c | 62 + .../test/functional/src/test_rich_string10.c | 34 + .../test/functional/src/test_rich_string11.c | 34 + .../test/functional/src/test_rich_string12.c | 40 + .../functional/src/test_row_col_format01.c | 23 + .../functional/src/test_row_col_format02.c | 25 + .../functional/src/test_row_col_format03.c | 23 + .../functional/src/test_row_col_format04.c | 25 + .../functional/src/test_row_col_format05.c | 27 + .../functional/src/test_row_col_format06.c | 31 + .../functional/src/test_row_col_format07.c | 23 + .../functional/src/test_row_col_format08.c | 40 + .../functional/src/test_row_col_format09.c | 38 + .../functional/src/test_row_col_format10.c | 23 + .../functional/src/test_row_col_format11.c | 20 + .../functional/src/test_row_col_format12.c | 21 + .../functional/src/test_row_col_format13.c | 28 + .../functional/src/test_row_col_format14.c | 28 + .../functional/src/test_row_col_format15.c | 23 + .../functional/src/test_row_col_format16.c | 25 + .../functional/src/test_row_col_format17.c | 23 + .../functional/src/test_row_col_format18.c | 25 + .../test/functional/src/test_set_column01.c | 51 + .../test/functional/src/test_set_column02.c | 51 + .../test/functional/src/test_set_column03.c | 42 + .../test/functional/src/test_set_column04.c | 49 + .../test/functional/src/test_set_column05.c | 60 + .../test/functional/src/test_set_column06.c | 56 + .../test/functional/src/test_set_column07.c | 51 + .../test/functional/src/test_set_column08.c | 47 + .../test/functional/src/test_set_column09.c | 25 + .../test/functional/src/test_set_column10.c | 51 + .../test/functional/src/test_set_column11.c | 56 + .../test/functional/src/test_set_row01.c | 32 + .../test/functional/src/test_set_row02.c | 32 + .../test/functional/src/test_set_row03.c | 34 + .../test/functional/src/test_set_row04.c | 34 + .../functional/src/test_set_selection01.c | 20 + .../functional/src/test_set_selection02.c | 30 + .../functional/src/test_set_start_page01.c | 24 + .../functional/src/test_set_start_page02.c | 24 + .../functional/src/test_set_start_page03.c | 24 + .../functional/src/test_shared_strings01.c | 30 + .../test/functional/src/test_simple01.c | 21 + .../test/functional/src/test_simple02.c | 33 + .../test/functional/src/test_simple03.c | 37 + .../test/functional/src/test_simple04.c | 32 + .../test/functional/src/test_tab_color01.c | 21 + .../test/functional/src/test_table01.c | 22 + .../test/functional/src/test_table02.c | 29 + .../test/functional/src/test_table03.c | 26 + .../test/functional/src/test_table04.c | 30 + .../test/functional/src/test_table05.c | 32 + .../test/functional/src/test_table06.c | 35 + .../test/functional/src/test_table07.c | 25 + .../test/functional/src/test_table08.c | 36 + .../test/functional/src/test_table09.c | 69 + .../test/functional/src/test_table10.c | 74 + .../test/functional/src/test_table11.c | 42 + .../test/functional/src/test_table12.c | 34 + .../test/functional/src/test_table14.c | 63 + .../test/functional/src/test_table15.c | 42 + .../test/functional/src/test_table16.c | 31 + .../test/functional/src/test_table17.c | 69 + .../test/functional/src/test_table18.c | 37 + .../test/functional/src/test_table19.c | 31 + .../test/functional/src/test_table21.c | 29 + .../test/functional/src/test_table22.c | 32 + .../test/functional/src/test_table23.c | 38 + .../test/functional/src/test_table24.c | 25 + .../test/functional/src/test_table25.c | 25 + .../test/functional/src/test_table26.c | 56 + .../test/functional/src/test_tmpdir01.c | 23 + .../test/functional/src/test_tmpdir02.c | 23 + .../functional/src/test_top_left_cell01.c | 20 + .../functional/src/test_top_left_cell02.c | 20 + .../functional/src/test_top_left_cell03.c | 20 + .../test/functional/src/test_types02.c | 21 + .../test/functional/src/test_types08.c | 27 + .../test/functional/src/test_types11.c | 34 + .../test/functional/test_array_formula.py | 39 + .../test/functional/test_autofilter.py | 50 + .../test/functional/test_background.py | 44 + .../test/functional/test_button.py | 59 + .../test/functional/test_chart_area.py | 29 + .../test/functional/test_chart_axis.py | 153 + .../test/functional/test_chart_bar.py | 109 + .../test/functional/test_chart_blank.py | 33 + .../test/functional/test_chart_chartarea.py | 30 + .../test/functional/test_chart_column.py | 50 + .../test/functional/test_chart_crossing.py | 32 + .../test/functional/test_chart_data_labels.py | 160 + .../functional/test_chart_display_units.py | 50 + .../test/functional/test_chart_doughnut.py | 32 + .../test/functional/test_chart_drop_lines.py | 23 + .../test/functional/test_chart_errorbars.py | 32 + .../test/functional/test_chart_font.py | 41 + .../test/functional/test_chart_format.py | 110 + .../test/functional/test_chart_gap.py | 23 + .../test/functional/test_chart_gridlines.py | 39 + .../functional/test_chart_high_low_lines.py | 20 + .../test/functional/test_chart_legend.py | 29 + .../test/functional/test_chart_line.py | 29 + .../test/functional/test_chart_order.py | 20 + .../test/functional/test_chart_pattern.py | 41 + .../test/functional/test_chart_pie.py | 29 + .../test/functional/test_chart_points.py | 34 + .../test/functional/test_chart_radar.py | 24 + .../test/functional/test_chart_scatter.py | 53 + .../test/functional/test_chart_size.py | 20 + .../test/functional/test_chart_sparse.py | 17 + .../test/functional/test_chart_str.py | 20 + .../test/functional/test_chart_table.py | 24 + .../test/functional/test_chart_title.py | 23 + .../functional/test_chart_up_down_bars.py | 20 + .../test/functional/test_chartsheet.py | 42 + .../test/functional/test_comment.py | 67 + .../functional/test_conditional_format.py | 65 + .../test/functional/test_data_validation.py | 38 + .../test/functional/test_default_row.py | 26 + .../test/functional/test_defined_name.py | 30 + .../test/functional/test_dynamic_array.py | 33 + .../test/functional/test_escapes.py | 38 + .../test/functional/test_fit_to_pages.py | 34 + .../test/functional/test_formatting.py | 56 + .../test/functional/test_gridlines.py | 20 + .../test/functional/test_header_image.py | 122 + .../test/functional/test_hyperlink.py | 198 + .../test/functional/test_ignore_errors.py | 41 + .../test/functional/test_image.py | 193 + .../test/functional/test_merge_range.py | 29 + .../test/functional/test_misc.py | 43 + .../test/functional/test_object_position.py | 74 + .../test/functional/test_optimize.py | 58 + .../test/functional/test_outline.py | 50 + .../test/functional/test_output_buffer.py | 17 + .../test/functional/test_page_breaks.py | 40 + .../test/functional/test_page_setup.py | 26 + .../test/functional/test_panes.py | 19 + .../test/functional/test_print_area.py | 42 + .../test/functional/test_print_options.py | 42 + .../test/functional/test_print_scale.py | 22 + .../test/functional/test_properties.py | 30 + .../test/functional/test_protect.py | 26 + .../test/functional/test_repeat.py | 40 + .../test/functional/test_rich_string.py | 50 + .../test/functional/test_row_col_format.py | 68 + .../test/functional/test_set_column.py | 53 + .../test/functional/test_set_row.py | 28 + .../test/functional/test_set_selection.py | 20 + .../test/functional/test_set_start_page.py | 26 + .../test/functional/test_simple.py | 28 + .../test/functional/test_table.py | 106 + .../test/functional/test_tmpdir.py | 20 + .../test/functional/test_top_left_cell.py | 24 + .../test/functional/test_types.py | 23 + .../test/functional/test_vba.py | 23 + .../test/functional/test_write_data.py | 47 + .../xlsx_files/array_formula01.xlsx | Bin 0 -> 7382 bytes .../xlsx_files/array_formula02.xlsx | Bin 0 -> 7427 bytes .../xlsx_files/array_formula03.xlsx | Bin 0 -> 7368 bytes .../xlsx_files/array_formula04.xlsx | Bin 0 -> 7360 bytes .../functional/xlsx_files/autofilter00.xlsx | Bin 0 -> 8625 bytes .../functional/xlsx_files/autofilter01.xlsx | Bin 0 -> 8701 bytes .../functional/xlsx_files/autofilter02.xlsx | Bin 0 -> 8835 bytes .../functional/xlsx_files/autofilter03.xlsx | Bin 0 -> 8842 bytes .../functional/xlsx_files/autofilter04.xlsx | Bin 0 -> 8893 bytes .../functional/xlsx_files/autofilter05.xlsx | Bin 0 -> 8796 bytes .../functional/xlsx_files/autofilter06.xlsx | Bin 0 -> 8793 bytes .../functional/xlsx_files/autofilter07.xlsx | Bin 0 -> 8850 bytes .../functional/xlsx_files/autofilter08.xlsx | Bin 0 -> 8855 bytes .../functional/xlsx_files/autofilter09.xlsx | Bin 0 -> 8830 bytes .../functional/xlsx_files/autofilter10.xlsx | Bin 0 -> 8837 bytes .../functional/xlsx_files/autofilter11.xlsx | Bin 0 -> 8848 bytes .../functional/xlsx_files/background01.xlsx | Bin 0 -> 12518 bytes .../functional/xlsx_files/background02.xlsx | Bin 0 -> 11550 bytes .../functional/xlsx_files/background03.xlsx | Bin 0 -> 16768 bytes .../functional/xlsx_files/background04.xlsx | Bin 0 -> 12331 bytes .../functional/xlsx_files/background05.xlsx | Bin 0 -> 13152 bytes .../functional/xlsx_files/background06.xlsx | Bin 0 -> 18733 bytes .../functional/xlsx_files/background07.xlsx | Bin 0 -> 20233 bytes .../test/functional/xlsx_files/button01.xlsx | Bin 0 -> 8162 bytes .../test/functional/xlsx_files/button02.xlsx | Bin 0 -> 8173 bytes .../test/functional/xlsx_files/button03.xlsx | Bin 0 -> 8217 bytes .../test/functional/xlsx_files/button04.xlsx | Bin 0 -> 9770 bytes .../test/functional/xlsx_files/button05.xlsx | Bin 0 -> 8164 bytes .../test/functional/xlsx_files/button07.xlsm | Bin 0 -> 12335 bytes .../test/functional/xlsx_files/button08.xlsx | Bin 0 -> 10097 bytes .../test/functional/xlsx_files/button09.xlsx | Bin 0 -> 10097 bytes .../test/functional/xlsx_files/button10.xlsx | Bin 0 -> 12010 bytes .../test/functional/xlsx_files/button11.xlsx | Bin 0 -> 12018 bytes .../test/functional/xlsx_files/button12.xlsx | Bin 0 -> 11163 bytes .../test/functional/xlsx_files/button15.xlsx | Bin 0 -> 6656 bytes .../functional/xlsx_files/chart_area01.xlsx | Bin 0 -> 9267 bytes .../functional/xlsx_files/chart_area02.xlsx | Bin 0 -> 9275 bytes .../functional/xlsx_files/chart_area03.xlsx | Bin 0 -> 9286 bytes .../functional/xlsx_files/chart_area05.xlsx | Bin 0 -> 9309 bytes .../functional/xlsx_files/chart_area06.xlsx | Bin 0 -> 7942 bytes .../functional/xlsx_files/chart_axis01.xlsx | Bin 0 -> 9403 bytes .../functional/xlsx_files/chart_axis02.xlsx | Bin 0 -> 9377 bytes .../functional/xlsx_files/chart_axis04.xlsx | Bin 0 -> 9411 bytes .../functional/xlsx_files/chart_axis05.xlsx | Bin 0 -> 9419 bytes .../functional/xlsx_files/chart_axis06.xlsx | Bin 0 -> 9054 bytes .../functional/xlsx_files/chart_axis07.xlsx | Bin 0 -> 9404 bytes .../functional/xlsx_files/chart_axis08.xlsx | Bin 0 -> 9304 bytes .../functional/xlsx_files/chart_axis09.xlsx | Bin 0 -> 9286 bytes .../functional/xlsx_files/chart_axis10.xlsx | Bin 0 -> 9297 bytes .../functional/xlsx_files/chart_axis11.xlsx | Bin 0 -> 9287 bytes .../functional/xlsx_files/chart_axis12.xlsx | Bin 0 -> 9286 bytes .../functional/xlsx_files/chart_axis13.xlsx | Bin 0 -> 9299 bytes .../functional/xlsx_files/chart_axis15.xlsx | Bin 0 -> 9285 bytes .../functional/xlsx_files/chart_axis17.xlsx | Bin 0 -> 9277 bytes .../functional/xlsx_files/chart_axis18.xlsx | Bin 0 -> 9301 bytes .../functional/xlsx_files/chart_axis19.xlsx | Bin 0 -> 9289 bytes .../functional/xlsx_files/chart_axis20.xlsx | Bin 0 -> 9290 bytes .../functional/xlsx_files/chart_axis21.xlsx | Bin 0 -> 9296 bytes .../functional/xlsx_files/chart_axis22.xlsx | Bin 0 -> 9299 bytes .../functional/xlsx_files/chart_axis23.xlsx | Bin 0 -> 9284 bytes .../functional/xlsx_files/chart_axis24.xlsx | Bin 0 -> 9301 bytes .../functional/xlsx_files/chart_axis25.xlsx | Bin 0 -> 9310 bytes .../functional/xlsx_files/chart_axis26.xlsx | Bin 0 -> 9374 bytes .../functional/xlsx_files/chart_axis27.xlsx | Bin 0 -> 9374 bytes .../functional/xlsx_files/chart_axis28.xlsx | Bin 0 -> 9376 bytes .../functional/xlsx_files/chart_axis29.xlsx | Bin 0 -> 9373 bytes .../functional/xlsx_files/chart_axis30.xlsx | Bin 0 -> 9281 bytes .../functional/xlsx_files/chart_axis31.xlsx | Bin 0 -> 9266 bytes .../functional/xlsx_files/chart_axis32.xlsx | Bin 0 -> 9251 bytes .../functional/xlsx_files/chart_axis33.xlsx | Bin 0 -> 9416 bytes .../functional/xlsx_files/chart_axis34.xlsx | Bin 0 -> 9286 bytes .../functional/xlsx_files/chart_axis35.xlsx | Bin 0 -> 9291 bytes .../functional/xlsx_files/chart_axis36.xlsx | Bin 0 -> 9293 bytes .../functional/xlsx_files/chart_axis37.xlsx | Bin 0 -> 9339 bytes .../functional/xlsx_files/chart_axis38.xlsx | Bin 0 -> 9336 bytes .../functional/xlsx_files/chart_axis39.xlsx | Bin 0 -> 9290 bytes .../functional/xlsx_files/chart_axis40.xlsx | Bin 0 -> 9301 bytes .../functional/xlsx_files/chart_axis41.xlsx | Bin 0 -> 9310 bytes .../functional/xlsx_files/chart_axis42.xlsx | Bin 0 -> 9279 bytes .../functional/xlsx_files/chart_axis43.xlsx | Bin 0 -> 9279 bytes .../functional/xlsx_files/chart_axis44.xlsx | Bin 0 -> 9430 bytes .../functional/xlsx_files/chart_axis45.xlsx | Bin 0 -> 9425 bytes .../functional/xlsx_files/chart_axis46.xlsx | Bin 0 -> 7903 bytes .../functional/xlsx_files/chart_axis47.xlsx | Bin 0 -> 9408 bytes .../functional/xlsx_files/chart_axis48.xlsx | Bin 0 -> 9778 bytes .../functional/xlsx_files/chart_bar01.xlsx | Bin 0 -> 9278 bytes .../functional/xlsx_files/chart_bar02.xlsx | Bin 0 -> 10063 bytes .../functional/xlsx_files/chart_bar03.xlsx | Bin 0 -> 10279 bytes .../functional/xlsx_files/chart_bar04.xlsx | Bin 0 -> 12037 bytes .../functional/xlsx_files/chart_bar05.xlsx | Bin 0 -> 9269 bytes .../functional/xlsx_files/chart_bar06.xlsx | Bin 0 -> 9420 bytes .../functional/xlsx_files/chart_bar08.xlsx | Bin 0 -> 9656 bytes .../functional/xlsx_files/chart_bar09.xlsx | Bin 0 -> 9281 bytes .../functional/xlsx_files/chart_bar10.xlsx | Bin 0 -> 9286 bytes .../functional/xlsx_files/chart_bar11.xlsx | Bin 0 -> 11560 bytes .../functional/xlsx_files/chart_bar12.xlsx | Bin 0 -> 9593 bytes .../functional/xlsx_files/chart_bar13.xlsx | Bin 0 -> 13356 bytes .../functional/xlsx_files/chart_bar14.xlsx | Bin 0 -> 13879 bytes .../functional/xlsx_files/chart_bar15.xlsx | Bin 0 -> 12536 bytes .../functional/xlsx_files/chart_bar16.xlsx | Bin 0 -> 9733 bytes .../functional/xlsx_files/chart_bar17.xlsx | Bin 0 -> 9605 bytes .../functional/xlsx_files/chart_bar18.xlsx | Bin 0 -> 8277 bytes .../functional/xlsx_files/chart_bar19.xlsx | Bin 0 -> 9459 bytes .../functional/xlsx_files/chart_bar20.xlsx | Bin 0 -> 9649 bytes .../functional/xlsx_files/chart_bar21.xlsx | Bin 0 -> 9278 bytes .../functional/xlsx_files/chart_bar22.xlsx | Bin 0 -> 9768 bytes .../functional/xlsx_files/chart_bar51.xlsx | Bin 0 -> 7013 bytes .../functional/xlsx_files/chart_blank01.xlsx | Bin 0 -> 9285 bytes .../functional/xlsx_files/chart_blank02.xlsx | Bin 0 -> 9301 bytes .../functional/xlsx_files/chart_blank03.xlsx | Bin 0 -> 9300 bytes .../functional/xlsx_files/chart_blank04.xlsx | Bin 0 -> 9262 bytes .../functional/xlsx_files/chart_blank05.xlsx | Bin 0 -> 9630 bytes .../functional/xlsx_files/chart_blank06.xlsx | Bin 0 -> 9273 bytes .../xlsx_files/chart_chartarea01.xlsx | Bin 0 -> 9372 bytes .../xlsx_files/chart_chartarea03.xlsx | Bin 0 -> 9351 bytes .../xlsx_files/chart_chartarea05.xlsx | Bin 0 -> 9085 bytes .../xlsx_files/chart_chartarea06.xlsx | Bin 0 -> 9101 bytes .../functional/xlsx_files/chart_column01.xlsx | Bin 0 -> 9263 bytes .../functional/xlsx_files/chart_column02.xlsx | Bin 0 -> 9287 bytes .../functional/xlsx_files/chart_column03.xlsx | Bin 0 -> 9290 bytes .../functional/xlsx_files/chart_column05.xlsx | Bin 0 -> 9260 bytes .../functional/xlsx_files/chart_column06.xlsx | Bin 0 -> 9723 bytes .../functional/xlsx_files/chart_column07.xlsx | Bin 0 -> 9178 bytes .../functional/xlsx_files/chart_column08.xlsx | Bin 0 -> 9230 bytes .../functional/xlsx_files/chart_column09.xlsx | Bin 0 -> 9162 bytes .../functional/xlsx_files/chart_column10.xlsx | Bin 0 -> 9509 bytes .../functional/xlsx_files/chart_column11.xlsx | Bin 0 -> 9293 bytes .../functional/xlsx_files/chart_column12.xlsx | Bin 0 -> 9294 bytes .../functional/xlsx_files/chart_column13.xlsx | Bin 0 -> 9445 bytes .../xlsx_files/chart_crossing01.xlsx | Bin 0 -> 9269 bytes .../xlsx_files/chart_crossing02.xlsx | Bin 0 -> 9263 bytes .../xlsx_files/chart_crossing03.xlsx | Bin 0 -> 9275 bytes .../xlsx_files/chart_crossing04.xlsx | Bin 0 -> 9284 bytes .../xlsx_files/chart_crossing05.xlsx | Bin 0 -> 7783 bytes .../xlsx_files/chart_crossing06.xlsx | Bin 0 -> 7781 bytes .../xlsx_files/chart_data_labels01.xlsx | Bin 0 -> 9312 bytes .../xlsx_files/chart_data_labels02.xlsx | Bin 0 -> 9303 bytes .../xlsx_files/chart_data_labels03.xlsx | Bin 0 -> 9314 bytes .../xlsx_files/chart_data_labels04.xlsx | Bin 0 -> 9315 bytes .../xlsx_files/chart_data_labels05.xlsx | Bin 0 -> 9316 bytes .../xlsx_files/chart_data_labels06.xlsx | Bin 0 -> 9314 bytes .../xlsx_files/chart_data_labels07.xlsx | Bin 0 -> 9186 bytes .../xlsx_files/chart_data_labels08.xlsx | Bin 0 -> 9301 bytes .../xlsx_files/chart_data_labels09.xlsx | Bin 0 -> 9315 bytes .../xlsx_files/chart_data_labels10.xlsx | Bin 0 -> 9313 bytes .../xlsx_files/chart_data_labels11.xlsx | Bin 0 -> 9056 bytes .../xlsx_files/chart_data_labels12.xlsx | Bin 0 -> 9063 bytes .../xlsx_files/chart_data_labels13.xlsx | Bin 0 -> 9063 bytes .../xlsx_files/chart_data_labels14.xlsx | Bin 0 -> 9061 bytes .../xlsx_files/chart_data_labels15.xlsx | Bin 0 -> 9069 bytes .../xlsx_files/chart_data_labels16.xlsx | Bin 0 -> 9210 bytes .../xlsx_files/chart_data_labels18.xlsx | Bin 0 -> 9329 bytes .../xlsx_files/chart_data_labels19.xlsx | Bin 0 -> 9329 bytes .../xlsx_files/chart_data_labels20.xlsx | Bin 0 -> 9297 bytes .../xlsx_files/chart_data_labels21.xlsx | Bin 0 -> 9206 bytes .../xlsx_files/chart_data_labels22.xlsx | Bin 0 -> 9334 bytes .../xlsx_files/chart_data_labels23.xlsx | Bin 0 -> 9414 bytes .../xlsx_files/chart_data_labels24.xlsx | Bin 0 -> 9425 bytes .../xlsx_files/chart_data_labels25.xlsx | Bin 0 -> 9399 bytes .../xlsx_files/chart_data_labels26.xlsx | Bin 0 -> 9396 bytes .../xlsx_files/chart_data_labels27.xlsx | Bin 0 -> 9372 bytes .../xlsx_files/chart_data_labels28.xlsx | Bin 0 -> 9776 bytes .../xlsx_files/chart_data_labels29.xlsx | Bin 0 -> 9319 bytes .../xlsx_files/chart_data_labels30.xlsx | Bin 0 -> 9336 bytes .../xlsx_files/chart_data_labels31.xlsx | Bin 0 -> 9414 bytes .../xlsx_files/chart_data_labels32.xlsx | Bin 0 -> 9437 bytes .../xlsx_files/chart_data_labels33.xlsx | Bin 0 -> 9404 bytes .../xlsx_files/chart_data_labels34.xlsx | Bin 0 -> 9470 bytes .../xlsx_files/chart_data_labels35.xlsx | Bin 0 -> 9345 bytes .../xlsx_files/chart_data_labels36.xlsx | Bin 0 -> 9240 bytes .../xlsx_files/chart_data_labels37.xlsx | Bin 0 -> 9379 bytes .../xlsx_files/chart_data_labels38.xlsx | Bin 0 -> 9415 bytes .../xlsx_files/chart_data_labels40.xlsx | Bin 0 -> 9423 bytes .../xlsx_files/chart_data_labels41.xlsx | Bin 0 -> 9465 bytes .../xlsx_files/chart_data_labels42.xlsx | Bin 0 -> 9468 bytes .../xlsx_files/chart_data_labels43.xlsx | Bin 0 -> 9417 bytes .../xlsx_files/chart_data_labels44.xlsx | Bin 0 -> 9438 bytes .../xlsx_files/chart_data_labels45.xlsx | Bin 0 -> 9476 bytes .../xlsx_files/chart_data_labels46.xlsx | Bin 0 -> 9483 bytes .../xlsx_files/chart_data_labels47.xlsx | Bin 0 -> 9427 bytes .../xlsx_files/chart_data_labels48.xlsx | Bin 0 -> 9400 bytes .../xlsx_files/chart_data_labels49.xlsx | Bin 0 -> 9391 bytes .../xlsx_files/chart_data_labels50.xlsx | Bin 0 -> 9426 bytes .../xlsx_files/chart_display_units01.xlsx | Bin 0 -> 9125 bytes .../xlsx_files/chart_display_units02.xlsx | Bin 0 -> 9135 bytes .../xlsx_files/chart_display_units03.xlsx | Bin 0 -> 9155 bytes .../xlsx_files/chart_display_units04.xlsx | Bin 0 -> 9157 bytes .../xlsx_files/chart_display_units05.xlsx | Bin 0 -> 9162 bytes .../xlsx_files/chart_display_units06.xlsx | Bin 0 -> 9153 bytes .../xlsx_files/chart_display_units07.xlsx | Bin 0 -> 9156 bytes .../xlsx_files/chart_display_units08.xlsx | Bin 0 -> 9159 bytes .../xlsx_files/chart_display_units09.xlsx | Bin 0 -> 9153 bytes .../xlsx_files/chart_display_units10.xlsx | Bin 0 -> 9154 bytes .../xlsx_files/chart_display_units11.xlsx | Bin 0 -> 9166 bytes .../xlsx_files/chart_display_units12.xlsx | Bin 0 -> 9184 bytes .../xlsx_files/chart_doughnut01.xlsx | Bin 0 -> 9005 bytes .../xlsx_files/chart_doughnut02.xlsx | Bin 0 -> 9016 bytes .../xlsx_files/chart_doughnut03.xlsx | Bin 0 -> 9020 bytes .../xlsx_files/chart_doughnut04.xlsx | Bin 0 -> 9021 bytes .../xlsx_files/chart_doughnut05.xlsx | Bin 0 -> 9023 bytes .../xlsx_files/chart_doughnut06.xlsx | Bin 0 -> 9010 bytes .../xlsx_files/chart_drop_lines01.xlsx | Bin 0 -> 9324 bytes .../xlsx_files/chart_drop_lines02.xlsx | Bin 0 -> 9385 bytes .../xlsx_files/chart_drop_lines03.xlsx | Bin 0 -> 9278 bytes .../xlsx_files/chart_errorbars01.xlsx | Bin 0 -> 9357 bytes .../xlsx_files/chart_errorbars02.xlsx | Bin 0 -> 9395 bytes .../xlsx_files/chart_errorbars03.xlsx | Bin 0 -> 9411 bytes .../xlsx_files/chart_errorbars04.xlsx | Bin 0 -> 9364 bytes .../xlsx_files/chart_errorbars05.xlsx | Bin 0 -> 9316 bytes .../xlsx_files/chart_errorbars06.xlsx | Bin 0 -> 9317 bytes .../functional/xlsx_files/chart_font01.xlsx | Bin 0 -> 9488 bytes .../functional/xlsx_files/chart_font02.xlsx | Bin 0 -> 9512 bytes .../functional/xlsx_files/chart_font03.xlsx | Bin 0 -> 9502 bytes .../functional/xlsx_files/chart_font04.xlsx | Bin 0 -> 9491 bytes .../functional/xlsx_files/chart_font05.xlsx | Bin 0 -> 9522 bytes .../functional/xlsx_files/chart_font06.xlsx | Bin 0 -> 9647 bytes .../functional/xlsx_files/chart_font07.xlsx | Bin 0 -> 9331 bytes .../functional/xlsx_files/chart_font08.xlsx | Bin 0 -> 9349 bytes .../functional/xlsx_files/chart_font09.xlsx | Bin 0 -> 9379 bytes .../functional/xlsx_files/chart_format01.xlsx | Bin 0 -> 9301 bytes .../functional/xlsx_files/chart_format02.xlsx | Bin 0 -> 9337 bytes .../functional/xlsx_files/chart_format03.xlsx | Bin 0 -> 9327 bytes .../functional/xlsx_files/chart_format04.xlsx | Bin 0 -> 9314 bytes .../functional/xlsx_files/chart_format05.xlsx | Bin 0 -> 9295 bytes .../functional/xlsx_files/chart_format06.xlsx | Bin 0 -> 9326 bytes .../functional/xlsx_files/chart_format07.xlsx | Bin 0 -> 9374 bytes .../functional/xlsx_files/chart_format08.xlsx | Bin 0 -> 9337 bytes .../functional/xlsx_files/chart_format09.xlsx | Bin 0 -> 9373 bytes .../functional/xlsx_files/chart_format10.xlsx | Bin 0 -> 9398 bytes .../functional/xlsx_files/chart_format11.xlsx | Bin 0 -> 9431 bytes .../functional/xlsx_files/chart_format12.xlsx | Bin 0 -> 9411 bytes .../functional/xlsx_files/chart_format13.xlsx | Bin 0 -> 9331 bytes .../functional/xlsx_files/chart_format14.xlsx | Bin 0 -> 9347 bytes .../functional/xlsx_files/chart_format15.xlsx | Bin 0 -> 9370 bytes .../functional/xlsx_files/chart_format16.xlsx | Bin 0 -> 9356 bytes .../functional/xlsx_files/chart_format17.xlsx | Bin 0 -> 9286 bytes .../functional/xlsx_files/chart_format18.xlsx | Bin 0 -> 9294 bytes .../functional/xlsx_files/chart_format19.xlsx | Bin 0 -> 9322 bytes .../functional/xlsx_files/chart_format20.xlsx | Bin 0 -> 10337 bytes .../functional/xlsx_files/chart_format21.xlsx | Bin 0 -> 9364 bytes .../functional/xlsx_files/chart_format22.xlsx | Bin 0 -> 9360 bytes .../functional/xlsx_files/chart_format23.xlsx | Bin 0 -> 9357 bytes .../functional/xlsx_files/chart_format24.xlsx | Bin 0 -> 9347 bytes .../functional/xlsx_files/chart_format25.xlsx | Bin 0 -> 9351 bytes .../functional/xlsx_files/chart_format26.xlsx | Bin 0 -> 9392 bytes .../functional/xlsx_files/chart_format27.xlsx | Bin 0 -> 9461 bytes .../functional/xlsx_files/chart_format28.xlsx | Bin 0 -> 9397 bytes .../functional/xlsx_files/chart_format29.xlsx | Bin 0 -> 9472 bytes .../functional/xlsx_files/chart_format30.xlsx | Bin 0 -> 9408 bytes .../functional/xlsx_files/chart_format31.xlsx | Bin 0 -> 9478 bytes .../functional/xlsx_files/chart_gap01.xlsx | Bin 0 -> 9318 bytes .../functional/xlsx_files/chart_gap02.xlsx | Bin 0 -> 9316 bytes .../functional/xlsx_files/chart_gap03.xlsx | Bin 0 -> 9316 bytes .../xlsx_files/chart_gridlines01.xlsx | Bin 0 -> 9272 bytes .../xlsx_files/chart_gridlines02.xlsx | Bin 0 -> 9285 bytes .../xlsx_files/chart_gridlines04.xlsx | Bin 0 -> 9290 bytes .../xlsx_files/chart_gridlines05.xlsx | Bin 0 -> 9277 bytes .../xlsx_files/chart_gridlines06.xlsx | Bin 0 -> 9303 bytes .../xlsx_files/chart_gridlines08.xlsx | Bin 0 -> 9312 bytes .../xlsx_files/chart_gridlines09.xlsx | Bin 0 -> 9407 bytes .../xlsx_files/chart_high_low_lines01.xlsx | Bin 0 -> 9326 bytes .../xlsx_files/chart_high_low_lines02.xlsx | Bin 0 -> 9386 bytes .../functional/xlsx_files/chart_legend01.xlsx | Bin 0 -> 9246 bytes .../functional/xlsx_files/chart_legend03.xlsx | Bin 0 -> 9298 bytes .../functional/xlsx_files/chart_legend04.xlsx | Bin 0 -> 9302 bytes .../functional/xlsx_files/chart_line01.xlsx | Bin 0 -> 9280 bytes .../functional/xlsx_files/chart_line03.xlsx | Bin 0 -> 9287 bytes .../functional/xlsx_files/chart_line04.xlsx | Bin 0 -> 9305 bytes .../functional/xlsx_files/chart_line05.xlsx | Bin 0 -> 9303 bytes .../functional/xlsx_files/chart_line06.xlsx | Bin 0 -> 9307 bytes .../functional/xlsx_files/chart_order01.xlsx | Bin 0 -> 15149 bytes .../xlsx_files/chart_pattern01.xlsx | Bin 0 -> 9242 bytes .../xlsx_files/chart_pattern02.xlsx | Bin 0 -> 9407 bytes .../xlsx_files/chart_pattern03.xlsx | Bin 0 -> 9423 bytes .../xlsx_files/chart_pattern04.xlsx | Bin 0 -> 9433 bytes .../xlsx_files/chart_pattern05.xlsx | Bin 0 -> 9436 bytes .../xlsx_files/chart_pattern06.xlsx | Bin 0 -> 9437 bytes .../xlsx_files/chart_pattern07.xlsx | Bin 0 -> 9433 bytes .../xlsx_files/chart_pattern08.xlsx | Bin 0 -> 9435 bytes .../xlsx_files/chart_pattern10.xlsx | Bin 0 -> 9325 bytes .../functional/xlsx_files/chart_pie01.xlsx | Bin 0 -> 8986 bytes .../functional/xlsx_files/chart_pie02.xlsx | Bin 0 -> 9015 bytes .../functional/xlsx_files/chart_pie03.xlsx | Bin 0 -> 9027 bytes .../functional/xlsx_files/chart_pie04.xlsx | Bin 0 -> 9014 bytes .../functional/xlsx_files/chart_pie05.xlsx | Bin 0 -> 9012 bytes .../functional/xlsx_files/chart_points01.xlsx | Bin 0 -> 8998 bytes .../functional/xlsx_files/chart_points02.xlsx | Bin 0 -> 9054 bytes .../functional/xlsx_files/chart_points03.xlsx | Bin 0 -> 9022 bytes .../functional/xlsx_files/chart_points04.xlsx | Bin 0 -> 9356 bytes .../functional/xlsx_files/chart_points05.xlsx | Bin 0 -> 9326 bytes .../functional/xlsx_files/chart_points06.xlsx | Bin 0 -> 9321 bytes .../functional/xlsx_files/chart_radar01.xlsx | Bin 0 -> 9291 bytes .../functional/xlsx_files/chart_radar02.xlsx | Bin 0 -> 9271 bytes .../functional/xlsx_files/chart_radar03.xlsx | Bin 0 -> 9271 bytes .../xlsx_files/chart_scatter01.xlsx | Bin 0 -> 9278 bytes .../xlsx_files/chart_scatter02.xlsx | Bin 0 -> 9246 bytes .../xlsx_files/chart_scatter03.xlsx | Bin 0 -> 9269 bytes .../xlsx_files/chart_scatter04.xlsx | Bin 0 -> 9257 bytes .../xlsx_files/chart_scatter05.xlsx | Bin 0 -> 9278 bytes .../xlsx_files/chart_scatter06.xlsx | Bin 0 -> 9312 bytes .../xlsx_files/chart_scatter09.xlsx | Bin 0 -> 9269 bytes .../xlsx_files/chart_scatter10.xlsx | Bin 0 -> 9296 bytes .../xlsx_files/chart_scatter11.xlsx | Bin 0 -> 9275 bytes .../xlsx_files/chart_scatter12.xlsx | Bin 0 -> 9262 bytes .../xlsx_files/chart_scatter14.xlsx | Bin 0 -> 9275 bytes .../xlsx_files/chart_scatter15.xlsx | Bin 0 -> 9584 bytes .../functional/xlsx_files/chart_size01.xlsx | Bin 0 -> 9258 bytes .../functional/xlsx_files/chart_size04.xlsx | Bin 0 -> 9276 bytes .../functional/xlsx_files/chart_sparse01.xlsx | Bin 0 -> 9289 bytes .../functional/xlsx_files/chart_str01.xlsx | Bin 0 -> 9601 bytes .../functional/xlsx_files/chart_str02.xlsx | Bin 0 -> 9608 bytes .../functional/xlsx_files/chart_table01.xlsx | Bin 0 -> 9304 bytes .../functional/xlsx_files/chart_table02.xlsx | Bin 0 -> 9301 bytes .../functional/xlsx_files/chart_table03.xlsx | Bin 0 -> 9399 bytes .../functional/xlsx_files/chart_title01.xlsx | Bin 0 -> 9197 bytes .../functional/xlsx_files/chart_title02.xlsx | Bin 0 -> 9245 bytes .../functional/xlsx_files/chart_title03.xlsx | Bin 0 -> 9275 bytes .../xlsx_files/chart_up_down_bars01.xlsx | Bin 0 -> 9349 bytes .../xlsx_files/chart_up_down_bars02.xlsx | Bin 0 -> 9435 bytes .../functional/xlsx_files/chartsheet01.xlsx | Bin 0 -> 9606 bytes .../functional/xlsx_files/chartsheet02.xlsx | Bin 0 -> 10067 bytes .../functional/xlsx_files/chartsheet03.xlsx | Bin 0 -> 9603 bytes .../functional/xlsx_files/chartsheet04.xlsx | Bin 0 -> 9626 bytes .../functional/xlsx_files/chartsheet05.xlsx | Bin 0 -> 9609 bytes .../functional/xlsx_files/chartsheet06.xlsx | Bin 0 -> 9619 bytes .../functional/xlsx_files/chartsheet07.xlsx | Bin 0 -> 9656 bytes .../functional/xlsx_files/chartsheet08.xlsx | Bin 0 -> 8273 bytes .../functional/xlsx_files/chartsheet09.xlsx | Bin 0 -> 9650 bytes .../test/functional/xlsx_files/comment01.xlsx | Bin 0 -> 8828 bytes .../test/functional/xlsx_files/comment02.xlsx | Bin 0 -> 8916 bytes .../test/functional/xlsx_files/comment03.xlsx | Bin 0 -> 8955 bytes .../test/functional/xlsx_files/comment04.xlsx | Bin 0 -> 11207 bytes .../test/functional/xlsx_files/comment05.xlsx | Bin 0 -> 72801 bytes .../test/functional/xlsx_files/comment06.xlsx | Bin 0 -> 8693 bytes .../test/functional/xlsx_files/comment07.xlsx | Bin 0 -> 8663 bytes .../test/functional/xlsx_files/comment08.xlsx | Bin 0 -> 8693 bytes .../test/functional/xlsx_files/comment09.xlsx | Bin 0 -> 8602 bytes .../test/functional/xlsx_files/comment10.xlsx | Bin 0 -> 7379 bytes .../test/functional/xlsx_files/comment11.xlsx | Bin 0 -> 9258 bytes .../test/functional/xlsx_files/comment12.xlsx | Bin 0 -> 8877 bytes .../test/functional/xlsx_files/comment13.xlsx | Bin 0 -> 8835 bytes .../test/functional/xlsx_files/comment14.xlsx | Bin 0 -> 8886 bytes .../test/functional/xlsx_files/comment15.xlsx | Bin 0 -> 8870 bytes .../test/functional/xlsx_files/comment16.xlsx | Bin 0 -> 9085 bytes .../functional/xlsx_files/cond_format01.xlsx | Bin 0 -> 7184 bytes .../functional/xlsx_files/cond_format02.xlsx | Bin 0 -> 7116 bytes .../functional/xlsx_files/cond_format03.xlsx | Bin 0 -> 7170 bytes .../functional/xlsx_files/cond_format04.xlsx | Bin 0 -> 7190 bytes .../functional/xlsx_files/cond_format05.xlsx | Bin 0 -> 7183 bytes .../functional/xlsx_files/cond_format06.xlsx | Bin 0 -> 7166 bytes .../functional/xlsx_files/cond_format07.xlsx | Bin 0 -> 7630 bytes .../functional/xlsx_files/cond_format08.xlsx | Bin 0 -> 7189 bytes .../functional/xlsx_files/cond_format10.xlsx | Bin 0 -> 7498 bytes .../functional/xlsx_files/cond_format11.xlsx | Bin 0 -> 7521 bytes .../functional/xlsx_files/cond_format12.xlsx | Bin 0 -> 7517 bytes .../functional/xlsx_files/cond_format13.xlsx | Bin 0 -> 7221 bytes .../functional/xlsx_files/cond_format14.xlsx | Bin 0 -> 7167 bytes .../functional/xlsx_files/cond_format15.xlsx | Bin 0 -> 7197 bytes .../functional/xlsx_files/cond_format16.xlsx | Bin 0 -> 7197 bytes .../functional/xlsx_files/cond_format17.xlsx | Bin 0 -> 7140 bytes .../test/functional/xlsx_files/data01.xlsx | Bin 0 -> 7311 bytes .../test/functional/xlsx_files/data02.xlsx | Bin 0 -> 7032 bytes .../test/functional/xlsx_files/data03.xlsx | Bin 0 -> 7039 bytes .../test/functional/xlsx_files/data04.xlsx | Bin 0 -> 7390 bytes .../test/functional/xlsx_files/data05.xlsx | Bin 0 -> 7352 bytes .../test/functional/xlsx_files/data06.xlsx | Bin 0 -> 7419 bytes .../test/functional/xlsx_files/data07.xlsx | Bin 0 -> 7297 bytes .../test/functional/xlsx_files/data09.xlsx | Bin 0 -> 7314 bytes .../xlsx_files/data_validation01.xlsx | Bin 0 -> 7064 bytes .../xlsx_files/data_validation02.xlsx | Bin 0 -> 7096 bytes .../xlsx_files/data_validation03.xlsx | Bin 0 -> 7216 bytes .../xlsx_files/data_validation07.xlsx | Bin 0 -> 7075 bytes .../xlsx_files/data_validation08.xlsx | Bin 0 -> 7074 bytes .../functional/xlsx_files/default_row01.xlsx | Bin 0 -> 7353 bytes .../functional/xlsx_files/default_row02.xlsx | Bin 0 -> 7379 bytes .../functional/xlsx_files/default_row03.xlsx | Bin 0 -> 7400 bytes .../functional/xlsx_files/default_row05.xlsx | Bin 0 -> 7453 bytes .../functional/xlsx_files/defined_name01.xlsx | Bin 0 -> 8574 bytes .../functional/xlsx_files/defined_name02.xlsx | Bin 0 -> 7049 bytes .../functional/xlsx_files/defined_name03.xlsx | Bin 0 -> 7044 bytes .../functional/xlsx_files/defined_name04.xlsx | Bin 0 -> 7140 bytes .../xlsx_files/dynamic_array01.xlsx | Bin 0 -> 6446 bytes .../xlsx_files/dynamic_array02.xlsx | Bin 0 -> 5541 bytes .../xlsx_files/dynamic_array03.xlsx | Bin 0 -> 4971 bytes .../test/functional/xlsx_files/escapes03.xlsx | Bin 0 -> 7497 bytes .../test/functional/xlsx_files/escapes04.xlsx | Bin 0 -> 7728 bytes .../test/functional/xlsx_files/escapes05.xlsx | Bin 0 -> 7824 bytes .../test/functional/xlsx_files/escapes06.xlsx | Bin 0 -> 7122 bytes .../test/functional/xlsx_files/escapes07.xlsx | Bin 0 -> 7912 bytes .../test/functional/xlsx_files/escapes08.xlsx | Bin 0 -> 7707 bytes .../functional/xlsx_files/firstsheet01.xlsx | Bin 0 -> 15093 bytes .../functional/xlsx_files/fit_to_pages01.xlsx | Bin 0 -> 7433 bytes .../functional/xlsx_files/fit_to_pages02.xlsx | Bin 0 -> 7443 bytes .../functional/xlsx_files/fit_to_pages03.xlsx | Bin 0 -> 7440 bytes .../functional/xlsx_files/fit_to_pages04.xlsx | Bin 0 -> 7449 bytes .../functional/xlsx_files/fit_to_pages05.xlsx | Bin 0 -> 7440 bytes .../test/functional/xlsx_files/format01.xlsx | Bin 0 -> 8313 bytes .../test/functional/xlsx_files/format02.xlsx | Bin 0 -> 7450 bytes .../test/functional/xlsx_files/format06.xlsx | Bin 0 -> 7078 bytes .../test/functional/xlsx_files/format07.xlsx | Bin 0 -> 7138 bytes .../test/functional/xlsx_files/format08.xlsx | Bin 0 -> 7164 bytes .../test/functional/xlsx_files/format09.xlsx | Bin 0 -> 7169 bytes .../test/functional/xlsx_files/format10.xlsx | Bin 0 -> 7123 bytes .../test/functional/xlsx_files/format12.xlsx | Bin 0 -> 7429 bytes .../test/functional/xlsx_files/format15.xlsx | Bin 0 -> 7083 bytes .../test/functional/xlsx_files/format16.xlsx | Bin 0 -> 7030 bytes .../test/functional/xlsx_files/format17.xlsx | Bin 0 -> 7048 bytes .../test/functional/xlsx_files/format50.xlsx | Bin 0 -> 7150 bytes .../test/functional/xlsx_files/format51.xlsx | Bin 0 -> 7195 bytes .../test/functional/xlsx_files/format52.xlsx | Bin 0 -> 7275 bytes .../test/functional/xlsx_files/gh42_01.xlsx | Bin 0 -> 7325 bytes .../test/functional/xlsx_files/gh42_02.xlsx | Bin 0 -> 7321 bytes .../functional/xlsx_files/gridlines01.xlsx | Bin 0 -> 7423 bytes .../test/functional/xlsx_files/header04.xlsx | Bin 0 -> 7057 bytes .../functional/xlsx_files/header_image01.xlsx | Bin 0 -> 9318 bytes .../functional/xlsx_files/header_image02.xlsx | Bin 0 -> 10191 bytes .../functional/xlsx_files/header_image03.xlsx | Bin 0 -> 11128 bytes .../functional/xlsx_files/header_image04.xlsx | Bin 0 -> 11128 bytes .../functional/xlsx_files/header_image05.xlsx | Bin 0 -> 10190 bytes .../functional/xlsx_files/header_image06.xlsx | Bin 0 -> 12071 bytes .../functional/xlsx_files/header_image07.xlsx | Bin 0 -> 11126 bytes .../functional/xlsx_files/header_image08.xlsx | Bin 0 -> 10817 bytes .../functional/xlsx_files/header_image09.xlsx | Bin 0 -> 11643 bytes .../functional/xlsx_files/header_image10.xlsx | Bin 0 -> 11643 bytes .../functional/xlsx_files/header_image11.xlsx | Bin 0 -> 9187 bytes .../functional/xlsx_files/header_image12.xlsx | Bin 0 -> 8743 bytes .../functional/xlsx_files/header_image13.xlsx | Bin 0 -> 10648 bytes .../functional/xlsx_files/header_image14.xlsx | Bin 0 -> 9339 bytes .../functional/xlsx_files/header_image15.xlsx | Bin 0 -> 11258 bytes .../functional/xlsx_files/header_image16.xlsx | Bin 0 -> 11328 bytes .../functional/xlsx_files/header_image17.xlsx | Bin 0 -> 10286 bytes .../functional/xlsx_files/header_image18.xlsx | Bin 0 -> 11594 bytes .../functional/xlsx_files/header_image19.xlsx | Bin 0 -> 11119 bytes .../functional/xlsx_files/header_image20.xlsx | Bin 0 -> 337364 bytes .../functional/xlsx_files/header_image55.xlsx | Bin 0 -> 8310 bytes .../test/functional/xlsx_files/hide01.xlsx | Bin 0 -> 7843 bytes .../functional/xlsx_files/hyperlink01.xlsx | Bin 0 -> 7700 bytes .../functional/xlsx_files/hyperlink02.xlsx | Bin 0 -> 7824 bytes .../functional/xlsx_files/hyperlink03.xlsx | Bin 0 -> 8740 bytes .../functional/xlsx_files/hyperlink04.xlsx | Bin 0 -> 8434 bytes .../functional/xlsx_files/hyperlink05.xlsx | Bin 0 -> 7819 bytes .../functional/xlsx_files/hyperlink06.xlsx | Bin 0 -> 7813 bytes .../functional/xlsx_files/hyperlink07.xlsx | Bin 0 -> 7753 bytes .../functional/xlsx_files/hyperlink08.xlsx | Bin 0 -> 7753 bytes .../functional/xlsx_files/hyperlink09.xlsx | Bin 0 -> 7819 bytes .../functional/xlsx_files/hyperlink10.xlsx | Bin 0 -> 7753 bytes .../functional/xlsx_files/hyperlink11.xlsx | Bin 0 -> 7751 bytes .../functional/xlsx_files/hyperlink12.xlsx | Bin 0 -> 7809 bytes .../functional/xlsx_files/hyperlink13.xlsx | Bin 0 -> 7794 bytes .../functional/xlsx_files/hyperlink14.xlsx | Bin 0 -> 7817 bytes .../functional/xlsx_files/hyperlink15.xlsx | Bin 0 -> 7706 bytes .../functional/xlsx_files/hyperlink16.xlsx | Bin 0 -> 7709 bytes .../functional/xlsx_files/hyperlink17.xlsx | Bin 0 -> 7706 bytes .../functional/xlsx_files/hyperlink18.xlsx | Bin 0 -> 7796 bytes .../functional/xlsx_files/hyperlink19.xlsx | Bin 0 -> 7689 bytes .../functional/xlsx_files/hyperlink20.xlsx | Bin 0 -> 7836 bytes .../functional/xlsx_files/hyperlink21.xlsx | Bin 0 -> 7707 bytes .../functional/xlsx_files/hyperlink22.xlsx | Bin 0 -> 7732 bytes .../functional/xlsx_files/hyperlink23.xlsx | Bin 0 -> 7739 bytes .../functional/xlsx_files/hyperlink24.xlsx | Bin 0 -> 7860 bytes .../functional/xlsx_files/hyperlink25.xlsx | Bin 0 -> 7719 bytes .../functional/xlsx_files/hyperlink26.xlsx | Bin 0 -> 7726 bytes .../functional/xlsx_files/hyperlink27.xlsx | Bin 0 -> 7777 bytes .../functional/xlsx_files/hyperlink28.xlsx | Bin 0 -> 7843 bytes .../functional/xlsx_files/hyperlink29.xlsx | Bin 0 -> 7922 bytes .../functional/xlsx_files/hyperlink30.xlsx | Bin 0 -> 7995 bytes .../functional/xlsx_files/hyperlink31.xlsx | Bin 0 -> 7891 bytes .../functional/xlsx_files/hyperlink32.xlsx | Bin 0 -> 8676 bytes .../functional/xlsx_files/hyperlink33.xlsx | Bin 0 -> 8689 bytes .../functional/xlsx_files/hyperlink34.xlsx | Bin 0 -> 11190 bytes .../functional/xlsx_files/hyperlink35.xlsx | Bin 0 -> 11197 bytes .../functional/xlsx_files/hyperlink36.xlsx | Bin 0 -> 9560 bytes .../functional/xlsx_files/hyperlink38.xlsx | Bin 0 -> 8655 bytes .../functional/xlsx_files/hyperlink39.xlsx | Bin 0 -> 8680 bytes .../functional/xlsx_files/hyperlink40.xlsx | Bin 0 -> 8683 bytes .../functional/xlsx_files/hyperlink41.xlsx | Bin 0 -> 8688 bytes .../functional/xlsx_files/hyperlink42.xlsx | Bin 0 -> 8678 bytes .../functional/xlsx_files/hyperlink43.xlsx | Bin 0 -> 8683 bytes .../functional/xlsx_files/hyperlink44.xlsx | Bin 0 -> 8663 bytes .../functional/xlsx_files/hyperlink45.xlsx | Bin 0 -> 8712 bytes .../functional/xlsx_files/hyperlink46.xlsx | Bin 0 -> 7337 bytes .../functional/xlsx_files/hyperlink47.xlsx | Bin 0 -> 7924 bytes .../functional/xlsx_files/hyperlink48.xlsx | Bin 0 -> 8735 bytes .../functional/xlsx_files/hyperlink49.xlsx | Bin 0 -> 9254 bytes .../functional/xlsx_files/hyperlink50.xlsx | Bin 0 -> 8673 bytes .../functional/xlsx_files/hyperlink51.xlsx | Bin 0 -> 8687 bytes .../functional/xlsx_files/ignore_error01.xlsx | Bin 0 -> 7313 bytes .../functional/xlsx_files/ignore_error02.xlsx | Bin 0 -> 7352 bytes .../functional/xlsx_files/ignore_error03.xlsx | Bin 0 -> 7431 bytes .../functional/xlsx_files/ignore_error04.xlsx | Bin 0 -> 7382 bytes .../functional/xlsx_files/ignore_error05.xlsx | Bin 0 -> 7683 bytes .../functional/xlsx_files/ignore_error06.xlsx | Bin 0 -> 7356 bytes .../test/functional/xlsx_files/image01.xlsx | Bin 0 -> 8607 bytes .../test/functional/xlsx_files/image02.xlsx | Bin 0 -> 8741 bytes .../test/functional/xlsx_files/image03.xlsx | Bin 0 -> 9117 bytes .../test/functional/xlsx_files/image04.xlsx | Bin 0 -> 7046 bytes .../test/functional/xlsx_files/image05.xlsx | Bin 0 -> 11075 bytes .../test/functional/xlsx_files/image07.xlsx | Bin 0 -> 10786 bytes .../test/functional/xlsx_files/image08.xlsx | Bin 0 -> 8772 bytes .../test/functional/xlsx_files/image09.xlsx | Bin 0 -> 8522 bytes .../test/functional/xlsx_files/image10.xlsx | Bin 0 -> 16969 bytes .../test/functional/xlsx_files/image11.xlsx | Bin 0 -> 16977 bytes .../test/functional/xlsx_files/image12.xlsx | Bin 0 -> 17023 bytes .../test/functional/xlsx_files/image13.xlsx | Bin 0 -> 17035 bytes .../test/functional/xlsx_files/image14.xlsx | Bin 0 -> 17075 bytes .../test/functional/xlsx_files/image15.xlsx | Bin 0 -> 17088 bytes .../test/functional/xlsx_files/image16.xlsx | Bin 0 -> 33191 bytes .../test/functional/xlsx_files/image17.xlsx | Bin 0 -> 33235 bytes .../test/functional/xlsx_files/image18.xlsx | Bin 0 -> 33243 bytes .../test/functional/xlsx_files/image19.xlsx | Bin 0 -> 65520 bytes .../test/functional/xlsx_files/image22.xlsx | Bin 0 -> 8991 bytes .../test/functional/xlsx_files/image23.xlsx | Bin 0 -> 11271 bytes .../test/functional/xlsx_files/image24.xlsx | Bin 0 -> 8546 bytes .../test/functional/xlsx_files/image25.xlsx | Bin 0 -> 8544 bytes .../test/functional/xlsx_files/image26.xlsx | Bin 0 -> 9547 bytes .../test/functional/xlsx_files/image27.xlsx | Bin 0 -> 14234 bytes .../test/functional/xlsx_files/image28.xlsx | Bin 0 -> 8871 bytes .../test/functional/xlsx_files/image29.xlsx | Bin 0 -> 8871 bytes .../test/functional/xlsx_files/image30.xlsx | Bin 0 -> 8634 bytes .../test/functional/xlsx_files/image31.xlsx | Bin 0 -> 8688 bytes .../test/functional/xlsx_files/image32.xlsx | Bin 0 -> 8601 bytes .../test/functional/xlsx_files/image33.xlsx | Bin 0 -> 8731 bytes .../test/functional/xlsx_files/image34.xlsx | Bin 0 -> 8615 bytes .../test/functional/xlsx_files/image35.xlsx | Bin 0 -> 9053 bytes .../test/functional/xlsx_files/image36.xlsx | Bin 0 -> 28693 bytes .../test/functional/xlsx_files/image44.xlsx | Bin 0 -> 8623 bytes .../test/functional/xlsx_files/image45.xlsx | Bin 0 -> 8621 bytes .../test/functional/xlsx_files/image46.xlsx | Bin 0 -> 8634 bytes .../test/functional/xlsx_files/image47.xlsx | Bin 0 -> 8634 bytes .../test/functional/xlsx_files/image48.xlsx | Bin 0 -> 10341 bytes .../test/functional/xlsx_files/image49.xlsx | Bin 0 -> 15124 bytes .../test/functional/xlsx_files/image50.xlsx | Bin 0 -> 8669 bytes .../test/functional/xlsx_files/image51.xlsx | Bin 0 -> 8750 bytes .../test/functional/xlsx_files/image52.xlsx | Bin 0 -> 8631 bytes .../test/functional/xlsx_files/image53.xlsx | Bin 0 -> 8607 bytes .../test/functional/xlsx_files/image54.xlsx | Bin 0 -> 7333 bytes .../test/functional/xlsx_files/image55.xlsx | Bin 0 -> 7404 bytes .../test/functional/xlsx_files/image56.xlsx | Bin 0 -> 9269 bytes .../test/functional/xlsx_files/image57.xlsx | Bin 0 -> 13829 bytes .../test/functional/xlsx_files/image82.xlsx | Bin 0 -> 8607 bytes .../test/functional/xlsx_files/image84.xlsx | Bin 0 -> 8606 bytes .../test/functional/xlsx_files/image85.xlsx | Bin 0 -> 8618 bytes .../functional/xlsx_files/landscape01.xlsx | Bin 0 -> 7366 bytes .../test/functional/xlsx_files/macro01.xlsm | Bin 0 -> 11463 bytes .../test/functional/xlsx_files/macro02.xlsm | Bin 0 -> 11443 bytes .../test/functional/xlsx_files/macro03.xlsm | Bin 0 -> 11449 bytes .../functional/xlsx_files/merge_range01.xlsx | Bin 0 -> 7394 bytes .../functional/xlsx_files/merge_range02.xlsx | Bin 0 -> 7454 bytes .../functional/xlsx_files/merge_range03.xlsx | Bin 0 -> 7427 bytes .../functional/xlsx_files/merge_range04.xlsx | Bin 0 -> 7417 bytes .../functional/xlsx_files/merge_range05.xlsx | Bin 0 -> 7087 bytes .../xlsx_files/object_position01.xlsx | Bin 0 -> 8608 bytes .../xlsx_files/object_position02.xlsx | Bin 0 -> 8615 bytes .../xlsx_files/object_position03.xlsx | Bin 0 -> 8618 bytes .../xlsx_files/object_position04.xlsx | Bin 0 -> 9295 bytes .../xlsx_files/object_position06.xlsx | Bin 0 -> 8619 bytes .../xlsx_files/object_position07.xlsx | Bin 0 -> 8622 bytes .../xlsx_files/object_position08.xlsx | Bin 0 -> 9754 bytes .../xlsx_files/object_position09.xlsx | Bin 0 -> 9751 bytes .../xlsx_files/object_position10.xlsx | Bin 0 -> 8648 bytes .../xlsx_files/object_position12.xlsx | Bin 0 -> 8651 bytes .../xlsx_files/object_position13.xlsx | Bin 0 -> 8648 bytes .../xlsx_files/object_position14.xlsx | Bin 0 -> 8659 bytes .../xlsx_files/object_position15.xlsx | Bin 0 -> 8651 bytes .../xlsx_files/object_position16.xlsx | Bin 0 -> 8648 bytes .../xlsx_files/object_position17.xlsx | Bin 0 -> 8659 bytes .../xlsx_files/object_position18.xlsx | Bin 0 -> 8651 bytes .../xlsx_files/object_position19.xlsx | Bin 0 -> 8648 bytes .../xlsx_files/object_position20.xlsx | Bin 0 -> 8659 bytes .../functional/xlsx_files/optimize01.xlsx | Bin 0 -> 4962 bytes .../functional/xlsx_files/optimize02.xlsx | Bin 0 -> 4962 bytes .../functional/xlsx_files/optimize04.xlsx | Bin 0 -> 5089 bytes .../functional/xlsx_files/optimize05.xlsx | Bin 0 -> 5174 bytes .../functional/xlsx_files/optimize06.xlsx | Bin 0 -> 5952 bytes .../functional/xlsx_files/optimize08.xlsx | Bin 0 -> 5110 bytes .../functional/xlsx_files/optimize13.xlsx | Bin 0 -> 6375 bytes .../functional/xlsx_files/optimize14.xlsx | Bin 0 -> 6412 bytes .../functional/xlsx_files/optimize21.xlsx | Bin 0 -> 5010 bytes .../functional/xlsx_files/optimize22.xlsx | Bin 0 -> 4990 bytes .../functional/xlsx_files/optimize23.xlsx | Bin 0 -> 4971 bytes .../functional/xlsx_files/optimize24.xlsx | Bin 0 -> 5002 bytes .../functional/xlsx_files/optimize25.xlsx | Bin 0 -> 5008 bytes .../functional/xlsx_files/optimize26.xlsx | Bin 0 -> 4962 bytes .../test/functional/xlsx_files/outline01.xlsx | Bin 0 -> 8015 bytes .../test/functional/xlsx_files/outline02.xlsx | Bin 0 -> 8061 bytes .../test/functional/xlsx_files/outline03.xlsx | Bin 0 -> 8130 bytes .../test/functional/xlsx_files/outline04.xlsx | Bin 0 -> 7525 bytes .../test/functional/xlsx_files/outline05.xlsx | Bin 0 -> 8065 bytes .../test/functional/xlsx_files/outline06.xlsx | Bin 0 -> 8076 bytes .../functional/xlsx_files/page_breaks01.xlsx | Bin 0 -> 7419 bytes .../functional/xlsx_files/page_breaks02.xlsx | Bin 0 -> 7433 bytes .../functional/xlsx_files/page_breaks03.xlsx | Bin 0 -> 10058 bytes .../functional/xlsx_files/page_breaks04.xlsx | Bin 0 -> 7420 bytes .../functional/xlsx_files/page_breaks05.xlsx | Bin 0 -> 7435 bytes .../functional/xlsx_files/page_breaks06.xlsx | Bin 0 -> 7481 bytes .../functional/xlsx_files/page_view01.xlsx | Bin 0 -> 7384 bytes .../test/functional/xlsx_files/panes01.xlsx | Bin 0 -> 13870 bytes .../functional/xlsx_files/print_across01.xlsx | Bin 0 -> 7423 bytes .../functional/xlsx_files/print_area01.xlsx | Bin 0 -> 7495 bytes .../functional/xlsx_files/print_area02.xlsx | Bin 0 -> 7500 bytes .../functional/xlsx_files/print_area03.xlsx | Bin 0 -> 7496 bytes .../functional/xlsx_files/print_area04.xlsx | Bin 0 -> 7499 bytes .../functional/xlsx_files/print_area05.xlsx | Bin 0 -> 7496 bytes .../functional/xlsx_files/print_area06.xlsx | Bin 0 -> 7500 bytes .../functional/xlsx_files/print_area07.xlsx | Bin 0 -> 7320 bytes .../xlsx_files/print_options01.xlsx | Bin 0 -> 7426 bytes .../xlsx_files/print_options02.xlsx | Bin 0 -> 7429 bytes .../xlsx_files/print_options03.xlsx | Bin 0 -> 7426 bytes .../xlsx_files/print_options04.xlsx | Bin 0 -> 7424 bytes .../xlsx_files/print_options05.xlsx | Bin 0 -> 7449 bytes .../xlsx_files/print_options06.xlsx | Bin 0 -> 7522 bytes .../xlsx_files/print_options07.xlsx | Bin 0 -> 7415 bytes .../functional/xlsx_files/print_scale01.xlsx | Bin 0 -> 7417 bytes .../functional/xlsx_files/print_scale02.xlsx | Bin 0 -> 7416 bytes .../functional/xlsx_files/properties01.xlsx | Bin 0 -> 7594 bytes .../functional/xlsx_files/properties02.xlsx | Bin 0 -> 6989 bytes .../functional/xlsx_files/properties03.xlsx | Bin 0 -> 8028 bytes .../functional/xlsx_files/properties04.xlsx | Bin 0 -> 8205 bytes .../functional/xlsx_files/properties05.xlsx | Bin 0 -> 8031 bytes .../test/functional/xlsx_files/protect01.xlsx | Bin 0 -> 7083 bytes .../test/functional/xlsx_files/protect02.xlsx | Bin 0 -> 7110 bytes .../test/functional/xlsx_files/protect03.xlsx | Bin 0 -> 7123 bytes .../test/functional/xlsx_files/protect07.xlsx | Bin 0 -> 6993 bytes .../test/functional/xlsx_files/repeat01.xlsx | Bin 0 -> 7498 bytes .../test/functional/xlsx_files/repeat02.xlsx | Bin 0 -> 7497 bytes .../test/functional/xlsx_files/repeat03.xlsx | Bin 0 -> 7504 bytes .../test/functional/xlsx_files/repeat04.xlsx | Bin 0 -> 7507 bytes .../test/functional/xlsx_files/repeat05.xlsx | Bin 0 -> 8468 bytes .../test/functional/xlsx_files/repeat06.xlsx | Bin 0 -> 7513 bytes .../functional/xlsx_files/rich_string01.xlsx | Bin 0 -> 7488 bytes .../functional/xlsx_files/rich_string02.xlsx | Bin 0 -> 7487 bytes .../functional/xlsx_files/rich_string03.xlsx | Bin 0 -> 7490 bytes .../functional/xlsx_files/rich_string04.xlsx | Bin 0 -> 7493 bytes .../functional/xlsx_files/rich_string05.xlsx | Bin 0 -> 7570 bytes .../functional/xlsx_files/rich_string06.xlsx | Bin 0 -> 7484 bytes .../functional/xlsx_files/rich_string07.xlsx | Bin 0 -> 7596 bytes .../functional/xlsx_files/rich_string08.xlsx | Bin 0 -> 7527 bytes .../functional/xlsx_files/rich_string09.xlsx | Bin 0 -> 7488 bytes .../functional/xlsx_files/rich_string10.xlsx | Bin 0 -> 7512 bytes .../functional/xlsx_files/rich_string11.xlsx | Bin 0 -> 7503 bytes .../functional/xlsx_files/rich_string12.xlsx | Bin 0 -> 7619 bytes .../xlsx_files/row_col_format01.xlsx | Bin 0 -> 7029 bytes .../xlsx_files/row_col_format02.xlsx | Bin 0 -> 7361 bytes .../xlsx_files/row_col_format03.xlsx | Bin 0 -> 7044 bytes .../xlsx_files/row_col_format04.xlsx | Bin 0 -> 7389 bytes .../xlsx_files/row_col_format05.xlsx | Bin 0 -> 7074 bytes .../xlsx_files/row_col_format06.xlsx | Bin 0 -> 7442 bytes .../xlsx_files/row_col_format07.xlsx | Bin 0 -> 7024 bytes .../xlsx_files/row_col_format08.xlsx | Bin 0 -> 7457 bytes .../xlsx_files/row_col_format09.xlsx | Bin 0 -> 7454 bytes .../xlsx_files/row_col_format10.xlsx | Bin 0 -> 7044 bytes .../xlsx_files/row_col_format11.xlsx | Bin 0 -> 7010 bytes .../xlsx_files/row_col_format12.xlsx | Bin 0 -> 7010 bytes .../xlsx_files/row_col_format13.xlsx | Bin 0 -> 7122 bytes .../xlsx_files/row_col_format14.xlsx | Bin 0 -> 7117 bytes .../xlsx_files/row_col_format15.xlsx | Bin 0 -> 7050 bytes .../xlsx_files/row_col_format16.xlsx | Bin 0 -> 7402 bytes .../xlsx_files/row_col_format17.xlsx | Bin 0 -> 7035 bytes .../xlsx_files/row_col_format18.xlsx | Bin 0 -> 7371 bytes .../functional/xlsx_files/set_column01.xlsx | Bin 0 -> 7318 bytes .../functional/xlsx_files/set_column03.xlsx | Bin 0 -> 7545 bytes .../functional/xlsx_files/set_column04.xlsx | Bin 0 -> 7580 bytes .../functional/xlsx_files/set_column05.xlsx | Bin 0 -> 9747 bytes .../functional/xlsx_files/set_column06.xlsx | Bin 0 -> 9717 bytes .../functional/xlsx_files/set_column07.xlsx | Bin 0 -> 17583 bytes .../functional/xlsx_files/set_column08.xlsx | Bin 0 -> 17555 bytes .../functional/xlsx_files/set_column09.xlsx | Bin 0 -> 7059 bytes .../test/functional/xlsx_files/set_row01.xlsx | Bin 0 -> 7069 bytes .../test/functional/xlsx_files/set_row03.xlsx | Bin 0 -> 7080 bytes .../xlsx_files/set_selection01.xlsx | Bin 0 -> 7008 bytes .../xlsx_files/set_selection02.xlsx | Bin 0 -> 9294 bytes .../xlsx_files/set_start_page01.xlsx | Bin 0 -> 7423 bytes .../xlsx_files/set_start_page02.xlsx | Bin 0 -> 7427 bytes .../xlsx_files/set_start_page03.xlsx | Bin 0 -> 7428 bytes .../xlsx_files/shared_strings01.xlsx | Bin 0 -> 8638 bytes .../test/functional/xlsx_files/simple01.xlsx | Bin 0 -> 7333 bytes .../test/functional/xlsx_files/simple02.xlsx | Bin 0 -> 8313 bytes .../test/functional/xlsx_files/simple03.xlsx | Bin 0 -> 8339 bytes .../test/functional/xlsx_files/simple04.xlsx | Bin 0 -> 7109 bytes .../test/functional/xlsx_files/simple05.xlsx | Bin 0 -> 7510 bytes .../functional/xlsx_files/tab_color01.xlsx | Bin 0 -> 7341 bytes .../test/functional/xlsx_files/table01.xlsx | Bin 0 -> 8180 bytes .../test/functional/xlsx_files/table02.xlsx | Bin 0 -> 10913 bytes .../test/functional/xlsx_files/table03.xlsx | Bin 0 -> 8275 bytes .../test/functional/xlsx_files/table04.xlsx | Bin 0 -> 9513 bytes .../test/functional/xlsx_files/table05.xlsx | Bin 0 -> 10802 bytes .../test/functional/xlsx_files/table06.xlsx | Bin 0 -> 11718 bytes .../test/functional/xlsx_files/table07.xlsx | Bin 0 -> 8137 bytes .../test/functional/xlsx_files/table08.xlsx | Bin 0 -> 8579 bytes .../test/functional/xlsx_files/table09.xlsx | Bin 0 -> 8870 bytes .../test/functional/xlsx_files/table10.xlsx | Bin 0 -> 9032 bytes .../test/functional/xlsx_files/table11.xlsx | Bin 0 -> 8324 bytes .../test/functional/xlsx_files/table12.xlsx | Bin 0 -> 8267 bytes .../test/functional/xlsx_files/table14.xlsx | Bin 0 -> 8492 bytes .../test/functional/xlsx_files/table15.xlsx | Bin 0 -> 8329 bytes .../test/functional/xlsx_files/table17.xlsx | Bin 0 -> 8895 bytes .../test/functional/xlsx_files/table18.xlsx | Bin 0 -> 8268 bytes .../test/functional/xlsx_files/table19.xlsx | Bin 0 -> 8209 bytes .../test/functional/xlsx_files/table21.xlsx | Bin 0 -> 8154 bytes .../test/functional/xlsx_files/table22.xlsx | Bin 0 -> 8167 bytes .../test/functional/xlsx_files/table23.xlsx | Bin 0 -> 8643 bytes .../test/functional/xlsx_files/table24.xlsx | Bin 0 -> 8189 bytes .../test/functional/xlsx_files/table25.xlsx | Bin 0 -> 8178 bytes .../test/functional/xlsx_files/table26.xlsx | Bin 0 -> 8570 bytes .../xlsx_files/top_left_cell01.xlsx | Bin 0 -> 6984 bytes .../xlsx_files/top_left_cell02.xlsx | Bin 0 -> 6984 bytes .../xlsx_files/top_left_cell03.xlsx | Bin 0 -> 6987 bytes .../test/functional/xlsx_files/types02.xlsx | Bin 0 -> 7021 bytes .../test/functional/xlsx_files/types08.xlsx | Bin 0 -> 7087 bytes .../test/functional/xlsx_files/types11.xlsx | Bin 0 -> 7175 bytes .../libxlsxwriter_repo/test/unit/Makefile | 120 + .../test/unit/Makefile.unit | 64 + .../libxlsxwriter_repo/test/unit/app/Makefile | 8 + .../libxlsxwriter_repo/test/unit/app/main.c | 15 + .../test/unit/app/test_app.c | 168 + .../test/unit/app/test_app_xml_declaration.c | 28 + .../test/unit/chart/Makefile | 8 + .../libxlsxwriter_repo/test/unit/chart/main.c | 15 + .../test/unit/chart/test_chart.c | 156 + .../test/unit/chart/test_chart_write_legend.c | 150 + .../unit/chart/test_chart_xml_declaration.c | 28 + .../test/unit/chartsheet/Makefile | 8 + .../test/unit/chartsheet/main.c | 15 + .../test/unit/chartsheet/test_chartsheet.c | 40 + .../test_chartsheet_write_sheet_protection.c | 169 + .../test_chartsheet_xml_declaration.c | 28 + .../test/unit/comment/Makefile | 8 + .../test/unit/comment/main.c | 15 + .../comment/test_comment_xml_declaration.c | 28 + .../test/unit/content_types/Makefile | 8 + .../test/unit/content_types/main.c | 15 + .../unit/content_types/test_content_types.c | 52 + .../test_content_types_write_default.c | 29 + .../test_content_types_write_override.c | 29 + .../test_content_types_xml_declaration.c | 28 + .../test/unit/core/Makefile | 8 + .../libxlsxwriter_repo/test/unit/core/main.c | 15 + .../test/unit/core/test_core.c | 114 + .../unit/core/test_core_xml_declaration.c | 28 + .../libxlsxwriter_repo/test/unit/ctest.h | 493 + .../test/unit/custom/Makefile | 8 + .../test/unit/custom/main.c | 15 + .../unit/custom/test_custom_xml_declaration.c | 28 + .../test/unit/drawing/Makefile | 8 + .../test/unit/drawing/main.c | 15 + .../test/unit/drawing/test_drawing_image.c | 105 + .../drawing/test_drawing_xml_declaration.c | 28 + .../libxlsxwriter_repo/test/unit/helper.h | 137 + .../test/unit/metadata/Makefile | 8 + .../test/unit/metadata/main.c | 15 + .../metadata/test_metadata_xml_declaration.c | 28 + .../test/unit/relationships/Makefile | 8 + .../test/unit/relationships/main.c | 15 + .../unit/relationships/test_relationships.c | 70 + .../test_relationships_xml_declaration.c | 28 + .../libxlsxwriter_repo/test/unit/sst/Makefile | 8 + .../libxlsxwriter_repo/test/unit/sst/main.c | 15 + .../test/unit/sst/test_shared_strings.c | 84 + .../test/unit/sst/test_sst_xml_declaration.c | 28 + .../test/unit/styles/Makefile | 8 + .../test/unit/styles/main.c | 15 + .../test/unit/styles/test_styles.c | 197 + .../unit/styles/test_styles_write_border.c | 31 + .../unit/styles/test_styles_write_borders.c | 37 + .../styles/test_styles_write_cell_style.c | 29 + .../styles/test_styles_write_cell_style_xfs.c | 29 + .../styles/test_styles_write_cell_styles.c | 29 + .../unit/styles/test_styles_write_cell_xfs.c | 35 + .../styles/test_styles_write_default_fill.c | 29 + .../test/unit/styles/test_styles_write_dxfs.c | 29 + .../unit/styles/test_styles_write_fills.c | 30 + .../test/unit/styles/test_styles_write_font.c | 412 + .../styles/test_styles_write_font_color.c | 30 + .../styles/test_styles_write_font_family.c | 30 + .../unit/styles/test_styles_write_font_name.c | 30 + .../styles/test_styles_write_font_scheme.c | 30 + .../unit/styles/test_styles_write_font_sz.c | 30 + .../unit/styles/test_styles_write_fonts.c | 35 + .../styles/test_styles_write_style_sheet.c | 30 + .../unit/styles/test_styles_write_style_xf.c | 29 + .../styles/test_styles_write_table_styles.c | 29 + .../test/unit/styles/test_styles_write_xf.c | 851 ++ .../unit/styles/test_styles_xml_declaration.c | 28 + .../test/unit/table/Makefile | 8 + .../libxlsxwriter_repo/test/unit/table/main.c | 15 + .../test/unit/table/test_table01.c | 54 + .../test/unit/table/test_table02.c | 58 + .../test/unit/table/test_table03.c | 54 + .../test/unit/table/test_table04.c | 55 + .../test/unit/table/test_table05.c | 55 + .../test/unit/table/test_table06.c | 62 + .../test/unit/table/test_table07.c | 56 + .../test/unit/table/test_table08.c | 62 + .../test/unit/table/test_table09.c | 75 + .../test/unit/table/test_table10.c | 56 + .../test/unit/table/test_table11.c | 56 + .../test/unit/table/test_table12.c | 56 + .../test/unit/table/test_table13.c | 56 + .../test/unit/table/test_table14.c | 72 + .../test/unit/table/test_table15.c | 72 + .../unit/table/test_table_xml_declaration.c | 28 + .../libxlsxwriter_repo/test/unit/test_all.c | 15 + .../test/unit/utility/Makefile | 8 + .../test/unit/utility/main.c | 15 + .../test/unit/utility/test_col_to_name.c | 43 + .../unit/utility/test_datetime_to_excel.c | 673 + .../test/unit/utility/test_lxw_utf8_strlen.c | 23 + .../test/unit/utility/test_name_to_col.c | 51 + .../test/unit/utility/test_quote_sheetname.c | 26 + .../test/unit/utility/test_row_colto_cell.c | 63 + .../unit/utility/test_rowcol_to_formula.c | 37 + .../test/unit/utility/test_rowcol_to_range.c | 53 + .../test/unit/utility/test_strerror.c | 30 + .../test/unit/utility/test_xl_name_to_row.c | 32 + .../libxlsxwriter_repo/test/unit/vml/Makefile | 8 + .../libxlsxwriter_repo/test/unit/vml/main.c | 15 + .../test/unit/workbook/Makefile | 8 + .../test/unit/workbook/main.c | 15 + .../test/unit/workbook/test_workbook.c | 112 + .../test_workbook_get_worksheet_by_name.c | 75 + .../test_workbook_validate_worksheet_name.c | 146 + .../workbook/test_workbook_write_book_views.c | 30 + .../workbook/test_workbook_write_calc_pr.c | 30 + .../test_workbook_write_defined_name.c | 30 + .../test_workbook_write_defined_names.c | 66 + .../test_workbook_write_file_version.c | 29 + .../unit/workbook/test_workbook_write_sheet.c | 66 + .../workbook/test_workbook_write_sheets.c | 32 + .../workbook/test_workbook_write_workbook.c | 29 + .../test_workbook_write_workbook_pr.c | 29 + .../test_workbook_write_workbook_view.c | 70 + .../workbook/test_workbook_xml_declaration.c | 28 + .../test/unit/worksheet/Makefile | 8 + .../test/unit/worksheet/main.c | 15 + .../test/unit/worksheet/test_worksheet.c | 137 + .../worksheet/test_worksheet_array_formula.c | 121 + .../test_worksheet_conditional_format01.c | 84 + .../test_worksheet_conditional_format02.c | 163 + .../test_worksheet_conditional_format03.c | 181 + .../test_worksheet_conditional_format04.c | 84 + .../test_worksheet_conditional_format05.c | 123 + .../test_worksheet_conditional_format06.c | 181 + .../test_worksheet_conditional_format07.c | 105 + .../test_worksheet_conditional_format08.c | 144 + .../test_worksheet_conditional_format09.c | 97 + .../test_worksheet_conditional_format10.c | 86 + .../test_worksheet_conditional_format11.c | 87 + .../test_worksheet_conditional_format12.c | 515 + .../test_worksheet_conditional_format13.c | 266 + .../test_worksheet_conditional_format14.c | 132 + .../test_worksheet_conditional_format15.c | 103 + .../test_worksheet_conditional_format16.c | 138 + .../test_worksheet_conditional_format17.c | 270 + .../test_worksheet_conditional_format18.c | 135 + .../test_worksheet_conditional_format19.c | 142 + .../test_worksheet_conditional_format20.c | 105 + .../test_worksheet_conditional_format21.c | 84 + .../test_worksheet_conditional_format22.c | 227 + .../test_worksheet_conditional_format23.c | 207 + .../worksheet/test_worksheet_data_bar01.c | 56 + .../worksheet/test_worksheet_data_bar02.c | 81 + .../worksheet/test_worksheet_data_bar03.c | 145 + .../worksheet/test_worksheet_data_bar04.c | 145 + .../worksheet/test_worksheet_data_bar05.c | 147 + .../worksheet/test_worksheet_data_bar06.c | 145 + .../worksheet/test_worksheet_data_bar07.c | 146 + .../worksheet/test_worksheet_data_bar08.c | 57 + .../worksheet/test_worksheet_data_bar09.c | 82 + .../worksheet/test_worksheet_data_bar10.c | 165 + .../worksheet/test_worksheet_data_bar11.c | 169 + .../worksheet/test_worksheet_merged_range.c | 58 + .../test_worksheet_pixels_to_row_col.c | 64 + .../worksheet/test_worksheet_range_returns.c | 110 + .../unit/worksheet/test_worksheet_spans.c | 317 + .../test_worksheet_write_auto_filter.c | 516 + .../worksheet/test_worksheet_write_col_info.c | 128 + .../test_worksheet_write_data_validation1.c | 215 + .../test_worksheet_write_data_validation2.c | 984 ++ .../test_worksheet_write_dimension.c | 28 + .../test_worksheet_write_header_footer.c | 108 + .../test_worksheet_write_page_margin.c | 141 + .../test_worksheet_write_page_margins.c | 28 + .../test_worksheet_write_page_setup.c | 100 + .../test_worksheet_write_print_options.c | 94 + .../unit/worksheet/test_worksheet_write_row.c | 30 + .../test_worksheet_write_sheet_data.c | 29 + .../test_worksheet_write_sheet_format_pr.c | 29 + .../worksheet/test_worksheet_write_sheet_pr.c | 68 + .../test_worksheet_write_sheet_protection.c | 386 + .../test_worksheet_write_sheet_view.c | 52 + .../test_worksheet_write_sheet_views1.c | 124 + .../test_worksheet_write_sheet_views2.c | 105 + .../test_worksheet_write_sheet_views3.c | 162 + .../test_worksheet_write_sheet_views4.c | 162 + .../test_worksheet_write_sheet_views5.c | 143 + .../test_worksheet_write_sheet_views6.c | 90 + .../test_worksheet_write_sheet_views7.c | 131 + .../test_worksheet_write_sheet_views8.c | 90 + .../test_worksheet_write_sheet_views9.c | 90 + .../test_worksheet_xml_declaration.c | 28 + .../test/unit/xmlwriter/Makefile | 8 + .../test/unit/xmlwriter/main.c | 15 + .../test/unit/xmlwriter/test_xmlwriter.c | 226 + .../third_party/dtoa/Makefile | 42 + .../third_party/dtoa/emyg_dtoa.c | 461 + .../third_party/dtoa/emyg_dtoa.h | 26 + .../third_party/md5/Makefile | 42 + .../libxlsxwriter_repo/third_party/md5/md5.c | 291 + .../libxlsxwriter_repo/third_party/md5/md5.h | 45 + .../third_party/minizip/Makefile | 44 + .../third_party/minizip/Makefile.am | 45 + .../third_party/minizip/Makefile.orig | 25 + .../third_party/minizip/MiniZip64_Changes.txt | 6 + .../third_party/minizip/MiniZip64_info.txt | 74 + .../third_party/minizip/README.txt | 5 + .../third_party/minizip/configure.ac | 32 + .../third_party/minizip/crypt.h | 131 + .../third_party/minizip/ioapi.c | 256 + .../third_party/minizip/ioapi.h | 218 + .../third_party/minizip/iowin32.c | 456 + .../third_party/minizip/iowin32.h | 28 + .../third_party/minizip/make_vms.com | 25 + .../third_party/minizip/miniunz.c | 660 + .../third_party/minizip/miniunzip.1 | 63 + .../third_party/minizip/minizip.1 | 46 + .../third_party/minizip/minizip.c | 520 + .../third_party/minizip/minizip.pc.in | 12 + .../third_party/minizip/mztools.c | 291 + .../third_party/minizip/mztools.h | 37 + .../third_party/minizip/unzip.c | 2125 +++ .../third_party/minizip/unzip.h | 437 + .../third_party/minizip/zip.c | 2009 +++ .../third_party/minizip/zip.h | 375 + .../third_party/tmpfileplus/Makefile | 42 + .../third_party/tmpfileplus/tmpfileplus.c | 342 + .../third_party/tmpfileplus/tmpfileplus.h | 53 + 2292 files changed, 134317 insertions(+), 126 deletions(-) create mode 100644 third_party/libxlsxwriter_repo/.github/FUNDING.yml create mode 100644 third_party/libxlsxwriter_repo/.github/ISSUE_TEMPLATE.md create mode 100644 third_party/libxlsxwriter_repo/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 third_party/libxlsxwriter_repo/.github/workflows/cmake_actions.yml create mode 100644 third_party/libxlsxwriter_repo/.github/workflows/code_style.yml create mode 100644 third_party/libxlsxwriter_repo/.github/workflows/coverity.yml create mode 100644 third_party/libxlsxwriter_repo/.github/workflows/make_actions.yml create mode 100644 third_party/libxlsxwriter_repo/.github/workflows/valgrind.yml create mode 100644 third_party/libxlsxwriter_repo/.github/workflows/windows_build.yml create mode 100644 third_party/libxlsxwriter_repo/.gitignore create mode 100644 third_party/libxlsxwriter_repo/.indent.pro create mode 100644 third_party/libxlsxwriter_repo/CMakeLists.txt create mode 100644 third_party/libxlsxwriter_repo/CONTRIBUTING.md create mode 100644 third_party/libxlsxwriter_repo/Changes.txt create mode 100644 third_party/libxlsxwriter_repo/License.txt create mode 100644 third_party/libxlsxwriter_repo/Makefile create mode 100644 third_party/libxlsxwriter_repo/Readme.md create mode 100644 third_party/libxlsxwriter_repo/cocoapods/libxlsxwriter-umbrella.h create mode 100644 third_party/libxlsxwriter_repo/cocoapods/libxlsxwriter.modulemap create mode 100644 third_party/libxlsxwriter_repo/dev/release/Readme.txt create mode 100755 third_party/libxlsxwriter_repo/dev/release/fix_dox.sh create mode 100644 third_party/libxlsxwriter_repo/dev/release/fix_example_docs.pl create mode 100644 third_party/libxlsxwriter_repo/dev/release/fix_example_links.pl create mode 100644 third_party/libxlsxwriter_repo/dev/release/gen_error_strings.pl create mode 100644 third_party/libxlsxwriter_repo/dev/release/gen_umbrella_file.pl create mode 100644 third_party/libxlsxwriter_repo/dev/release/gen_windows_def_file.pl create mode 100644 third_party/libxlsxwriter_repo/dev/release/pkg-config.txt create mode 100755 third_party/libxlsxwriter_repo/dev/release/release_check.sh create mode 100644 third_party/libxlsxwriter_repo/dev/release/update_revison.pl create mode 100644 third_party/libxlsxwriter_repo/docs/Doxyfile create mode 100644 third_party/libxlsxwriter_repo/docs/DoxygenLayout.xml create mode 100644 third_party/libxlsxwriter_repo/docs/Makefile create mode 100644 third_party/libxlsxwriter_repo/docs/customdoxygen.css create mode 100644 third_party/libxlsxwriter_repo/docs/footer.html create mode 100644 third_party/libxlsxwriter_repo/docs/images/anatomy.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/array_formula.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/autofilter1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/autofilter2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/autofilter3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/autofilter4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/autofilter5.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/background.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_area1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_area2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_area3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axes01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axes02.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axes03.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axes04.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axes05.png create mode 100755 third_party/libxlsxwriter_repo/docs/images/chart_axis_label_alignment1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axis_num_format.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axis_off.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axis_set_fill.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axis_set_line.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axis_set_name.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axis_set_name_font.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axis_set_num_font.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_axis_set_position.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_bar1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_bar2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_bar3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_chartarea.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_clustered.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_column1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_column2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_column3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_crossing1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_crossing2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels11.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels12.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels13.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels14.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels15.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels16.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels17.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels18.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels19.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels20.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels21.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels22.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels23.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels24.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels25.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels5.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels6.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels7.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels8.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_labels9.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_table1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_table2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_table3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_tools3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_tools4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_tools5.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_tools6.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_tools7.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_tools8.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_data_tools9.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_display_units.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_doughnut1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_doughnut2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_error_bars0.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_error_bars1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_error_bars2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_error_bars3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_error_bars4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_fill1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_fill2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_fill3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_fill4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_fonts.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_formatting2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_formatting3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_formatting4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_formatting5.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_formatting_multiple.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_formatting_width.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_gap.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_gridline1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_gridline2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_gridline3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_label_position1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_label_position2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_legend_bottom.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_legend_delete.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_legend_none.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_legend_set_font.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_line1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_line2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_line3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_line_opt.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_log_base.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_marker1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_marker2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_max_min.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_overlap.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_pattern.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_pie1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_pie2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_pie3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_plotarea.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_points1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_points2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_points3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_radar1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_radar2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_radar3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_reverse.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_scatter1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_scatter2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_scatter3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_scatter4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_scatter5.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_series_set_fill.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_series_set_line.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_series_set_marker_none.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_series_set_marker_size.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_set_interval1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_set_interval2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_set_major_units.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_simple.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_smooth.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_style.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_styles.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_tick_marks.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_title_set_name.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_title_set_name_font.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_title_set_name_font2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_trendline0.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_trendline1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_trendline10.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_trendline2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_trendline3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_trendline4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_trendline5.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_trendline6.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_trendline7.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_trendline8.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_trendline9.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_up_down_bars.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chart_working.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chartsheet.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chartsheet2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/chartsheet_activate.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/comments1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/comments2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/conditional_format1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/conditional_format11.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/conditional_format12.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/conditional_format2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/conditional_format3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/conditional_format4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/conditional_format5.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/conditional_format6.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/conditional_format7.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/constant_memory.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/currency_format1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/currency_format2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/currency_format3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/currency_format4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/currency_format5.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/currency_format6.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/currency_format7.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/custom_properties.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/data_validate1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/data_validate2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/data_validate3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/data_validate4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/date_example01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/date_example02.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/date_example03.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/date_example04.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/defined_name.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/demo.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/diagonal_border.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/doc_properties.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/dynamic_arrays01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/dynamic_arrays02.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font_align.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font_bold.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font_color.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font_italic.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font_name.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font_script.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font_size.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font_strikeout.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font_text_rotated.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font_text_wrap.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_font_underlined.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_set_font_name.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/format_set_num_format.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/formats_intro.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/formats_set_bg_color.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/headers_footers.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/hello01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/hide_row_col.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/hide_row_col2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/hide_row_col3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/hide_sheet.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/hyperlinks.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/hyperlinks_short.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/hyperlinks_short2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/ignore_errors1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/ignore_errors2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/image_buffer.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/image_buffer2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/image_buffer_opt.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/images.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/insert_image.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/insert_image_opt.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/intersection01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/intersection02.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/intersection03.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/lambda01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/logo.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/macros.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/merge.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/merge_range.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/merge_rich.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/object_position1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/object_position2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/object_position3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/object_position4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/outline1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/outline2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/outline3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/outline4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/outline5.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/outline6.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/outline7.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/outline8.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/panes.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/read_only.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/rich_strings.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/rich_strings_small.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/set_column_pixels.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/spill01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tab_colors.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables10.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables11.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables12.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables13.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables14.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables3.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables4.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables5.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables6.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables7.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables8.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tables9.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/text_indent.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/top_left_cell.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tutorial01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tutorial02.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/tutorial03.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/utf8.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/workbook01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/workbook02.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/working_with_formulas1.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/working_with_formulas2.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/worksheet02.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/worksheet_activate.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/worksheet_protection.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/worksheet_watermark.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/write_formula01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/write_number01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/write_number02.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/write_string01.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/write_string02.png create mode 100644 third_party/libxlsxwriter_repo/docs/images/write_string03.png create mode 100644 third_party/libxlsxwriter_repo/docs/menudata.js create mode 100644 third_party/libxlsxwriter_repo/docs/src/author.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/bugs.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/examples.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/examples.txt create mode 100644 third_party/libxlsxwriter_repo/docs/src/faq.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/getting_started.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/introduction.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/mainpage.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/running_the_tests.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/tutorial01.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/tutorial02.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/tutorial03.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_autofilters.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_charts.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_colors.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_comments.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_conditional_formatting.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_data_validation.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_dates.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_formats.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_formulas.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_macros.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_memory.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_object_position.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_outlines.dox create mode 100644 third_party/libxlsxwriter_repo/docs/src/working_with_tables.dox create mode 100644 third_party/libxlsxwriter_repo/examples/Makefile create mode 100644 third_party/libxlsxwriter_repo/examples/anatomy.c create mode 100644 third_party/libxlsxwriter_repo/examples/array_formula.c create mode 100644 third_party/libxlsxwriter_repo/examples/autofilter.c create mode 100644 third_party/libxlsxwriter_repo/examples/background.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_area.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_bar.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_clustered.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_column.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_data_labels.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_data_table.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_data_tools.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_doughnut.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_fonts.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_line.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_pattern.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_pie.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_pie_colors.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_radar.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_scatter.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_styles.c create mode 100644 third_party/libxlsxwriter_repo/examples/chart_working_with_example.c create mode 100644 third_party/libxlsxwriter_repo/examples/chartsheet.c create mode 100644 third_party/libxlsxwriter_repo/examples/comments1.c create mode 100644 third_party/libxlsxwriter_repo/examples/comments2.c create mode 100644 third_party/libxlsxwriter_repo/examples/conditional_format1.c create mode 100644 third_party/libxlsxwriter_repo/examples/conditional_format2.c create mode 100644 third_party/libxlsxwriter_repo/examples/constant_memory.c create mode 100644 third_party/libxlsxwriter_repo/examples/data_validate.c create mode 100644 third_party/libxlsxwriter_repo/examples/dates_and_times01.c create mode 100644 third_party/libxlsxwriter_repo/examples/dates_and_times02.c create mode 100644 third_party/libxlsxwriter_repo/examples/dates_and_times03.c create mode 100644 third_party/libxlsxwriter_repo/examples/dates_and_times04.c create mode 100644 third_party/libxlsxwriter_repo/examples/defined_name.c create mode 100644 third_party/libxlsxwriter_repo/examples/demo.c create mode 100644 third_party/libxlsxwriter_repo/examples/diagonal_border.c create mode 100644 third_party/libxlsxwriter_repo/examples/doc_custom_properties.c create mode 100644 third_party/libxlsxwriter_repo/examples/doc_properties.c create mode 100644 third_party/libxlsxwriter_repo/examples/dynamic_arrays.c create mode 100644 third_party/libxlsxwriter_repo/examples/format_font.c create mode 100644 third_party/libxlsxwriter_repo/examples/format_num_format.c create mode 100644 third_party/libxlsxwriter_repo/examples/headers_footers.c create mode 100644 third_party/libxlsxwriter_repo/examples/hello.c create mode 100644 third_party/libxlsxwriter_repo/examples/hide_row_col.c create mode 100644 third_party/libxlsxwriter_repo/examples/hide_sheet.c create mode 100644 third_party/libxlsxwriter_repo/examples/hyperlinks.c create mode 100644 third_party/libxlsxwriter_repo/examples/ignore_errors.c create mode 100644 third_party/libxlsxwriter_repo/examples/image_buffer.c create mode 100644 third_party/libxlsxwriter_repo/examples/images.c create mode 100644 third_party/libxlsxwriter_repo/examples/lambda.c create mode 100644 third_party/libxlsxwriter_repo/examples/logo.png create mode 100644 third_party/libxlsxwriter_repo/examples/logo_small.png create mode 100644 third_party/libxlsxwriter_repo/examples/macro.c create mode 100644 third_party/libxlsxwriter_repo/examples/merge_range.c create mode 100644 third_party/libxlsxwriter_repo/examples/merge_rich_string.c create mode 100644 third_party/libxlsxwriter_repo/examples/outline.c create mode 100644 third_party/libxlsxwriter_repo/examples/outline_collapsed.c create mode 100644 third_party/libxlsxwriter_repo/examples/output_buffer.c create mode 100644 third_party/libxlsxwriter_repo/examples/panes.c create mode 100644 third_party/libxlsxwriter_repo/examples/rich_strings.c create mode 100644 third_party/libxlsxwriter_repo/examples/tab_colors.c create mode 100644 third_party/libxlsxwriter_repo/examples/tables.c create mode 100644 third_party/libxlsxwriter_repo/examples/tutorial1.c create mode 100644 third_party/libxlsxwriter_repo/examples/tutorial2.c create mode 100644 third_party/libxlsxwriter_repo/examples/tutorial3.c create mode 100644 third_party/libxlsxwriter_repo/examples/utf8.c create mode 100644 third_party/libxlsxwriter_repo/examples/vbaProject.bin create mode 100644 third_party/libxlsxwriter_repo/examples/watermark.c create mode 100644 third_party/libxlsxwriter_repo/examples/watermark.png create mode 100644 third_party/libxlsxwriter_repo/examples/worksheet_protection.c create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/app.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/chart.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/chartsheet.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/comment.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/common.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/content_types.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/core.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/custom.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/drawing.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/format.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/hash_table.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/metadata.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/packager.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/relationships.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/shared_strings.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/styles.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/table.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/theme.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/third_party/emyg_dtoa.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/third_party/ioapi.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/third_party/md5.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/third_party/queue.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/third_party/tmpfileplus.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/third_party/tree.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/third_party/zip.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/utility.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/vml.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/workbook.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/worksheet.h create mode 100644 third_party/libxlsxwriter_repo/include/xlsxwriter/xmlwriter.h create mode 100644 third_party/libxlsxwriter_repo/lib/.gitignore create mode 100644 third_party/libxlsxwriter_repo/libxlsxwriter.podspec create mode 100644 third_party/libxlsxwriter_repo/src/Makefile create mode 100644 third_party/libxlsxwriter_repo/src/app.c create mode 100644 third_party/libxlsxwriter_repo/src/chart.c create mode 100644 third_party/libxlsxwriter_repo/src/chartsheet.c create mode 100644 third_party/libxlsxwriter_repo/src/comment.c create mode 100644 third_party/libxlsxwriter_repo/src/content_types.c create mode 100644 third_party/libxlsxwriter_repo/src/core.c create mode 100644 third_party/libxlsxwriter_repo/src/custom.c create mode 100644 third_party/libxlsxwriter_repo/src/drawing.c create mode 100644 third_party/libxlsxwriter_repo/src/format.c create mode 100644 third_party/libxlsxwriter_repo/src/hash_table.c create mode 100644 third_party/libxlsxwriter_repo/src/metadata.c create mode 100644 third_party/libxlsxwriter_repo/src/packager.c create mode 100644 third_party/libxlsxwriter_repo/src/relationships.c create mode 100644 third_party/libxlsxwriter_repo/src/shared_strings.c create mode 100644 third_party/libxlsxwriter_repo/src/styles.c create mode 100644 third_party/libxlsxwriter_repo/src/table.c create mode 100644 third_party/libxlsxwriter_repo/src/theme.c create mode 100644 third_party/libxlsxwriter_repo/src/utility.c create mode 100644 third_party/libxlsxwriter_repo/src/vml.c create mode 100644 third_party/libxlsxwriter_repo/src/workbook.c create mode 100644 third_party/libxlsxwriter_repo/src/worksheet.c create mode 100644 third_party/libxlsxwriter_repo/src/xmlwriter.c create mode 100644 third_party/libxlsxwriter_repo/test/cpp/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/cpp/test_compilation.cpp create mode 100644 third_party/libxlsxwriter_repo/test/functional/base_test_class.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/helper_functions.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/black_150.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/black_150.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/black_150e.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/black_300.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/black_300.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/black_300e.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/black_72.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/black_72.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/black_72e.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/black_96.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/black_96.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/blue.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/blue.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/grey.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/grey.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/happy.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/issue32.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/logo.gif create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/logo.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/logo.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/mylogo.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/red.bmp create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/red.gif create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/red.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/red.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/red2.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/red_208.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/red_64x20.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/red_readonly.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/train.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/vbaProject01.bin create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/vbaProject02.bin create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/vbaProject03.bin create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/vbaProject04.bin create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/watermark.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/yellow.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/yellow.png create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/images/zero_dpi.jpg create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_array_formula01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_array_formula02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_array_formula03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_array_formula04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter00.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_autofilter11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_background01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_background02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_background03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_background04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_background05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_background06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_background07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_background52.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_button15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_area01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_area02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_area03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_area05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_area06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis17.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis18.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis19.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis20.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis21.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis22.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis23.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis24.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis25.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis26.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis27.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis28.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis29.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis30.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis31.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis32.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis33.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis34.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis35.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis36.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis37.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis38.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis39.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis40.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis41.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis42.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis43.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis44.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis45.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis46.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis47.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_axis48.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar17.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar18.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar19.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar20.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar21.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar22.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar51.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar52.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar53.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar54.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar55.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar61.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar65.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar69.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_bar70.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_blank01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_blank02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_blank03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_blank04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_blank05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_blank06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_chartarea01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_chartarea03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_chartarea05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_chartarea06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_column13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_crossing01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_crossing02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_crossing03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_crossing04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_crossing05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_crossing06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels18.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels19.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels20.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels21.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels22.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels23.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels24.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels25.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels26.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels27.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels28.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels29.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels30.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels31.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels32.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels33.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels34.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels35.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels36.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels37.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels38.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels40.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels41.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels42.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels43.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels44.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels45.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels46.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels47.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels48.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels49.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_data_labels50.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_display_units12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_doughnut01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_doughnut02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_doughnut03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_doughnut04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_doughnut05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_doughnut06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_drop_lines01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_drop_lines02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_drop_lines03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_errorbars01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_errorbars02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_errorbars03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_errorbars04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_errorbars05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_errorbars06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_font01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_font02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_font03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_font04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_font05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_font06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_font07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_font08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_font09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format17.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format18.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format19.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format20.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format21.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format22.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format23.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format24.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format25.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format26.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format27.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format28.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format29.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format30.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_format31.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_gap01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_gap02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_gap03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_gridlines01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_gridlines02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_gridlines04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_gridlines05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_gridlines06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_gridlines08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_gridlines09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_high_low_lines01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_high_low_lines02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_legend01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_legend03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_legend04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_line01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_line03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_line04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_line05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_line06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_order01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_order02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pattern01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pattern02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pattern03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pattern04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pattern05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pattern06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pattern07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pattern08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pattern10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pie01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pie02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pie03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pie04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_pie05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_points01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_points02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_points03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_points04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_points05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_points06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_radar01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_radar02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_radar03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_scatter15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_size01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_size04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_sparse01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_str01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_str02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_table01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_table02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_table03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_title01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_title02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_title03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_up_down_bars01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chart_up_down_bars02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chartsheet01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chartsheet02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chartsheet03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chartsheet04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chartsheet05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chartsheet06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chartsheet07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chartsheet08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_chartsheet09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_comment56.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_cond_format17.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data_validation01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data_validation02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data_validation03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data_validation04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data_validation05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data_validation06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data_validation07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_data_validation08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_default_row01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_default_row02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_default_row03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_default_row05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_defined_name01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_defined_name02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_defined_name03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_defined_name04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_dynamic_array01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_dynamic_array02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_dynamic_array03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_dynamic_array51.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_dynamic_array52.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_dynamic_array53.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_escapes03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_escapes04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_escapes05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_escapes06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_escapes07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_escapes08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_firstsheet01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_fit_to_pages01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_fit_to_pages02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_fit_to_pages03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_fit_to_pages04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_fit_to_pages05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format17.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format50.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format51.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_format52.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_gh42_01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_gh42_02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_gridlines01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image17.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image18.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image19.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image20.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image51.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image52.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image53.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_header_image55.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hide01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink17.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink18.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink19.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink20.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink21.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink22.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink23.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink24.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink25.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink26.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink27.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink28.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink29.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink30.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink31.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink32.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink33.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink34.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink35.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink36.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink38.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink39.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink40.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink41.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink42.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink43.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink44.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink45.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink46.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink47.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink48.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink49.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink50.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink51.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink78.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink81.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_hyperlink82.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_ignore_error01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_ignore_error02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_ignore_error03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_ignore_error04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_ignore_error05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_ignore_error06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image17.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image18.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image19.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image22.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image23.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image24.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image25.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image26.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image27.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image28.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image29.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image30.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image31.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image32.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image33.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image34.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image35.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image36.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image44.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image45.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image46.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image47.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image48.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image49.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image50.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image51.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image52.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image53.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image54.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image55.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image56.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image57.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image81.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image82.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image83.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image84.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image85.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image86.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image87.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image88.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_image89.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_landscape01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_macro01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_macro02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_macro03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_merge_range01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_merge_range02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_merge_range03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_merge_range04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_merge_range05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position17.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position18.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position19.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position20.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_object_position51.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize21.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize22.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize23.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize24.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize25.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_optimize26.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_outline01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_outline02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_outline03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_outline04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_outline05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_outline06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_output_buffer01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_page_breaks01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_page_breaks02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_page_breaks03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_page_breaks04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_page_breaks05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_page_breaks06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_page_view01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_panes01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_across01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_area01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_area02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_area03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_area04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_area05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_area06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_area07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_options01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_options02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_options03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_options04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_options05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_options06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_options07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_scale01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_print_scale02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_properties01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_properties02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_properties03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_properties04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_properties05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_protect01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_protect02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_protect03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_protect07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_repeat01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_repeat02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_repeat03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_repeat04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_repeat05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_repeat06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_rich_string12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format13.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format17.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_row_col_format18.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_column01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_column02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_column03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_column04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_column05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_column06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_column07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_column08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_column09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_column10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_column11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_row01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_row02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_row03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_row04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_selection01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_selection02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_start_page01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_start_page02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_set_start_page03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_shared_strings01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_simple01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_simple02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_simple03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_simple04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_tab_color01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table04.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table05.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table06.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table07.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table09.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table10.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table12.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table14.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table15.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table16.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table17.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table18.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table19.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table21.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table22.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table23.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table24.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table25.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_table26.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_tmpdir01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_tmpdir02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_top_left_cell01.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_top_left_cell02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_top_left_cell03.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_types02.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_types08.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/src/test_types11.c create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_array_formula.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_autofilter.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_background.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_button.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_area.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_axis.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_bar.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_blank.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_chartarea.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_column.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_crossing.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_data_labels.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_display_units.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_doughnut.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_drop_lines.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_errorbars.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_font.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_format.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_gap.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_gridlines.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_high_low_lines.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_legend.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_line.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_order.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_pattern.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_pie.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_points.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_radar.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_scatter.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_size.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_sparse.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_str.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_table.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_title.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chart_up_down_bars.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_chartsheet.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_comment.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_conditional_format.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_data_validation.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_default_row.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_defined_name.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_dynamic_array.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_escapes.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_fit_to_pages.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_formatting.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_gridlines.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_header_image.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_hyperlink.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_ignore_errors.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_image.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_merge_range.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_misc.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_object_position.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_optimize.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_outline.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_output_buffer.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_page_breaks.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_page_setup.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_panes.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_print_area.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_print_options.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_print_scale.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_properties.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_protect.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_repeat.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_rich_string.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_row_col_format.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_set_column.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_set_row.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_set_selection.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_set_start_page.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_simple.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_table.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_tmpdir.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_top_left_cell.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_types.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_vba.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/test_write_data.py create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/array_formula01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/array_formula02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/array_formula03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/array_formula04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter00.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/autofilter11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/background01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/background02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/background03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/background04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/background05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/background06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/background07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button07.xlsm create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/button15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_area01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_area02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_area03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_area05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_area06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis17.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis18.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis19.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis20.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis21.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis22.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis23.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis24.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis25.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis26.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis27.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis28.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis29.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis30.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis31.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis32.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis33.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis34.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis35.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis36.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis37.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis38.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis39.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis40.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis41.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis42.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis43.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis44.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis45.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis46.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis47.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_axis48.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar16.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar17.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar18.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar19.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar20.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar21.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar22.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_bar51.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_blank01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_blank02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_blank03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_blank04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_blank05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_blank06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_chartarea01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_chartarea03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_chartarea05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_chartarea06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_column13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_crossing01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_crossing02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_crossing03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_crossing04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_crossing05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_crossing06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels16.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels18.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels19.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels20.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels21.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels22.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels23.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels24.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels25.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels26.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels27.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels28.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels29.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels30.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels31.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels32.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels33.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels34.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels35.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels36.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels37.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels38.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels40.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels41.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels42.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels43.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels44.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels45.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels46.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels47.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels48.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels49.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_data_labels50.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_display_units12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_doughnut01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_doughnut02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_doughnut03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_doughnut04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_doughnut05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_doughnut06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_drop_lines01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_drop_lines02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_drop_lines03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_errorbars01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_errorbars02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_errorbars03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_errorbars04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_errorbars05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_errorbars06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_font01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_font02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_font03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_font04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_font05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_font06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_font07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_font08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_font09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format16.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format17.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format18.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format19.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format20.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format21.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format22.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format23.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format24.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format25.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format26.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format27.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format28.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format29.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format30.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_format31.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_gap01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_gap02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_gap03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_gridlines01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_gridlines02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_gridlines04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_gridlines05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_gridlines06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_gridlines08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_gridlines09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_high_low_lines01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_high_low_lines02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_legend01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_legend03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_legend04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_line01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_line03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_line04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_line05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_line06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_order01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pattern01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pattern02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pattern03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pattern04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pattern05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pattern06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pattern07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pattern08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pattern10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pie01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pie02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pie03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pie04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_pie05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_points01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_points02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_points03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_points04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_points05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_points06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_radar01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_radar02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_radar03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_scatter15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_size01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_size04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_sparse01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_str01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_str02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_table01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_table02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_table03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_title01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_title02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_title03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_up_down_bars01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chart_up_down_bars02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chartsheet01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chartsheet02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chartsheet03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chartsheet04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chartsheet05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chartsheet06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chartsheet07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chartsheet08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/chartsheet09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/comment16.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format16.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/cond_format17.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data_validation01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data_validation02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data_validation03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data_validation07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/data_validation08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/default_row01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/default_row02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/default_row03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/default_row05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/defined_name01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/defined_name02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/defined_name03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/defined_name04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/dynamic_array01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/dynamic_array02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/dynamic_array03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/escapes03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/escapes04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/escapes05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/escapes06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/escapes07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/escapes08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/firstsheet01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/fit_to_pages01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/fit_to_pages02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/fit_to_pages03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/fit_to_pages04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/fit_to_pages05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format16.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format17.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format50.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format51.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/format52.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/gh42_01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/gh42_02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/gridlines01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image16.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image17.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image18.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image19.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image20.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/header_image55.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hide01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink16.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink17.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink18.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink19.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink20.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink21.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink22.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink23.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink24.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink25.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink26.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink27.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink28.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink29.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink30.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink31.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink32.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink33.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink34.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink35.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink36.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink38.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink39.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink40.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink41.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink42.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink43.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink44.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink45.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink46.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink47.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink48.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink49.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink50.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/hyperlink51.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/ignore_error01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/ignore_error02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/ignore_error03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/ignore_error04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/ignore_error05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/ignore_error06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image16.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image17.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image18.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image19.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image22.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image23.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image24.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image25.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image26.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image27.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image28.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image29.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image30.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image31.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image32.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image33.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image34.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image35.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image36.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image44.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image45.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image46.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image47.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image48.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image49.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image50.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image51.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image52.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image53.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image54.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image55.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image56.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image57.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image82.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image84.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/image85.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/landscape01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/macro01.xlsm create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/macro02.xlsm create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/macro03.xlsm create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/merge_range01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/merge_range02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/merge_range03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/merge_range04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/merge_range05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position16.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position17.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position18.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position19.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/object_position20.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize21.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize22.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize23.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize24.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize25.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/optimize26.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/outline01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/outline02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/outline03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/outline04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/outline05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/outline06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/page_breaks01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/page_breaks02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/page_breaks03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/page_breaks04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/page_breaks05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/page_breaks06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/page_view01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/panes01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_across01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_area01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_area02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_area03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_area04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_area05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_area06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_area07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_options01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_options02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_options03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_options04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_options05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_options06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_options07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_scale01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/print_scale02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/properties01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/properties02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/properties03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/properties04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/properties05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/protect01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/protect02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/protect03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/protect07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/repeat01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/repeat02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/repeat03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/repeat04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/repeat05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/repeat06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/rich_string12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format13.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format16.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format17.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/row_col_format18.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_column01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_column03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_column04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_column05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_column06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_column07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_column08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_column09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_row01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_row03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_selection01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_selection02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_start_page01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_start_page02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/set_start_page03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/shared_strings01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/simple01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/simple02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/simple03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/simple04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/simple05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/tab_color01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table04.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table05.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table06.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table07.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table09.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table10.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table12.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table14.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table15.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table17.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table18.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table19.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table21.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table22.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table23.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table24.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table25.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/table26.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/top_left_cell01.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/top_left_cell02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/top_left_cell03.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/types02.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/types08.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/functional/xlsx_files/types11.xlsx create mode 100644 third_party/libxlsxwriter_repo/test/unit/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/Makefile.unit create mode 100644 third_party/libxlsxwriter_repo/test/unit/app/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/app/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/app/test_app.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/app/test_app_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/chart/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/chart/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/chart/test_chart.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/chart/test_chart_write_legend.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/chart/test_chart_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/chartsheet/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/chartsheet/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/chartsheet/test_chartsheet.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/chartsheet/test_chartsheet_write_sheet_protection.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/chartsheet/test_chartsheet_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/comment/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/comment/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/comment/test_comment_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/content_types/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/content_types/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/content_types/test_content_types.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/content_types/test_content_types_write_default.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/content_types/test_content_types_write_override.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/content_types/test_content_types_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/core/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/core/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/core/test_core.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/core/test_core_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/ctest.h create mode 100644 third_party/libxlsxwriter_repo/test/unit/custom/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/custom/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/custom/test_custom_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/drawing/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/drawing/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/drawing/test_drawing_image.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/drawing/test_drawing_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/helper.h create mode 100644 third_party/libxlsxwriter_repo/test/unit/metadata/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/metadata/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/metadata/test_metadata_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/relationships/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/relationships/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/relationships/test_relationships.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/relationships/test_relationships_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/sst/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/sst/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/sst/test_shared_strings.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/sst/test_sst_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_border.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_borders.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_cell_style.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_cell_style_xfs.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_cell_styles.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_cell_xfs.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_default_fill.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_dxfs.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_fills.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_font.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_font_color.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_font_family.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_font_name.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_font_scheme.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_font_sz.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_fonts.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_style_sheet.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_style_xf.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_table_styles.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_write_xf.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/styles/test_styles_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table01.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table02.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table03.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table04.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table05.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table06.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table07.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table08.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table09.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table10.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table11.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table12.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table13.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table14.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table15.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/table/test_table_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/test_all.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/test_col_to_name.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/test_datetime_to_excel.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/test_lxw_utf8_strlen.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/test_name_to_col.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/test_quote_sheetname.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/test_row_colto_cell.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/test_rowcol_to_formula.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/test_rowcol_to_range.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/test_strerror.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/utility/test_xl_name_to_row.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/vml/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/vml/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_get_worksheet_by_name.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_validate_worksheet_name.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_write_book_views.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_write_calc_pr.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_write_defined_name.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_write_defined_names.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_write_file_version.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_write_sheet.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_write_sheets.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_write_workbook.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_write_workbook_pr.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_write_workbook_view.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/workbook/test_workbook_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_array_formula.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format01.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format02.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format03.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format04.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format05.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format06.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format07.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format08.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format09.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format10.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format11.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format12.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format13.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format14.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format15.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format16.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format17.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format18.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format19.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format20.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format21.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format22.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_conditional_format23.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_data_bar01.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_data_bar02.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_data_bar03.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_data_bar04.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_data_bar05.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_data_bar06.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_data_bar07.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_data_bar08.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_data_bar09.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_data_bar10.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_data_bar11.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_merged_range.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_pixels_to_row_col.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_range_returns.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_spans.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_auto_filter.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_col_info.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_data_validation1.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_data_validation2.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_dimension.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_header_footer.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_page_margin.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_page_margins.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_page_setup.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_print_options.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_row.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_data.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_format_pr.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_pr.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_protection.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_view.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_views1.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_views2.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_views3.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_views4.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_views5.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_views6.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_views7.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_views8.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_write_sheet_views9.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/worksheet/test_worksheet_xml_declaration.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/xmlwriter/Makefile create mode 100644 third_party/libxlsxwriter_repo/test/unit/xmlwriter/main.c create mode 100644 third_party/libxlsxwriter_repo/test/unit/xmlwriter/test_xmlwriter.c create mode 100644 third_party/libxlsxwriter_repo/third_party/dtoa/Makefile create mode 100644 third_party/libxlsxwriter_repo/third_party/dtoa/emyg_dtoa.c create mode 100644 third_party/libxlsxwriter_repo/third_party/dtoa/emyg_dtoa.h create mode 100644 third_party/libxlsxwriter_repo/third_party/md5/Makefile create mode 100644 third_party/libxlsxwriter_repo/third_party/md5/md5.c create mode 100644 third_party/libxlsxwriter_repo/third_party/md5/md5.h create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/Makefile create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/Makefile.am create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/Makefile.orig create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/MiniZip64_Changes.txt create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/MiniZip64_info.txt create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/README.txt create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/configure.ac create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/crypt.h create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/ioapi.c create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/ioapi.h create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/iowin32.c create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/iowin32.h create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/make_vms.com create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/miniunz.c create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/miniunzip.1 create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/minizip.1 create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/minizip.c create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/minizip.pc.in create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/mztools.c create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/mztools.h create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/unzip.c create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/unzip.h create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/zip.c create mode 100644 third_party/libxlsxwriter_repo/third_party/minizip/zip.h create mode 100644 third_party/libxlsxwriter_repo/third_party/tmpfileplus/Makefile create mode 100644 third_party/libxlsxwriter_repo/third_party/tmpfileplus/tmpfileplus.c create mode 100644 third_party/libxlsxwriter_repo/third_party/tmpfileplus/tmpfileplus.h diff --git a/backend/CMakeLists.txt b/backend/CMakeLists.txt index 438aef4..7fce60b 100644 --- a/backend/CMakeLists.txt +++ b/backend/CMakeLists.txt @@ -36,6 +36,13 @@ endif() find_package(Drogon CONFIG REQUIRED) find_package(Threads REQUIRED) +# libxlsxwriter 使用常量内存模式把大型工作簿逐行落盘,避免报告导出占满服务进程内存。 +set(BUILD_TESTS OFF CACHE BOOL "" FORCE) +set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) +set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) +add_subdirectory(${REPO_ROOT}/third_party/libxlsxwriter_repo + ${CMAKE_CURRENT_BINARY_DIR}/libxlsxwriter) + file(GLOB_RECURSE SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h" @@ -54,6 +61,7 @@ target_include_directories(wind_server PRIVATE target_link_libraries(wind_server PRIVATE Drogon::Drogon Threads::Threads + xlsxwriter ) # 运行期 .so 解析:RPATH 指向 Drogon install 的 libs 目录 diff --git a/backend/src/controllers/WindPowerController.cpp b/backend/src/controllers/WindPowerController.cpp index fb7fcf5..c050172 100644 --- a/backend/src/controllers/WindPowerController.cpp +++ b/backend/src/controllers/WindPowerController.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -17,6 +18,11 @@ #include #include +#include +#include +#include +#include + using json = nlohmann::json; namespace fs = std::filesystem; @@ -25,6 +31,9 @@ namespace { constexpr int kErrorInvalidRequest = 1001; constexpr int kErrorJobNotFound = 1002; constexpr int kErrorServer = 1003; +constexpr int kErrorJobBusy = 1004; +constexpr auto kUploadIdleTimeout = std::chrono::minutes(30); +constexpr auto kCompletedJobRetention = std::chrono::hours(24); constexpr const char* kDefaultSchemeId = "scheme_one"; constexpr const char* kSchemeTwoId = "scheme_two"; constexpr const char* kSchemeOneName = "方案一"; @@ -65,15 +74,17 @@ struct RemovedPoint { struct CalculationOptions { std::string scheme_id = kDefaultSchemeId; double rated_power = 4800.0; - double rated_wind_speed = 18.0; + double rated_wind_speed = 14.0; double power_step = 5.0; double cleaning_wind_speed_step = 0.25; double curve_wind_speed_step = 0.5; double wind_speed_change_threshold = 1.0; - double iqr_lower_multiplier = 1.8; + double iqr_lower_multiplier = 1.2; double iqr_upper_multiplier = 2.0; double minimum_generator_speed = 1.0; double generator_speed_k = 0.9; + double rotor_radius = 78.0; + double gearbox_ratio = 162.0; double grid_connected_speed = 0.0; double rated_generator_speed = 0.0; bool rated_power_provided = false; @@ -97,6 +108,17 @@ struct SchemeInfo { std::string id; std::string name; std::string description; + double scheme_one_rated_power = 4800.0; + double scheme_one_rated_wind_speed = 14.0; + double scheme_one_power_step = 5.0; + double scheme_one_cleaning_wind_speed_step = 0.25; + double scheme_one_wind_speed_change_threshold = 1.0; + double scheme_one_iqr_lower_multiplier = 1.2; + double scheme_one_iqr_upper_multiplier = 2.0; + double scheme_one_minimum_generator_speed = 1.0; + double scheme_one_generator_speed_k = 0.9; + double scheme_one_rotor_radius = 78.0; + double scheme_one_gearbox_ratio = 162.0; double grid_connected_speed = 1030.0; double rated_generator_speed = 1755.0; double rated_power = 2000.0; @@ -137,6 +159,123 @@ fs::path JobRowsPath(const std::string& job_id) { return JobDir(job_id) / "rows.jsonl"; } +fs::path JobRawRowsPath(const std::string& job_id) { + return JobDir(job_id) / "raw_rows.jsonl"; +} + +fs::path JobResultPath(const std::string& job_id) { + return JobDir(job_id) / "result.json"; +} + +std::mutex g_task_mutex; +std::string g_active_job_id; +std::chrono::steady_clock::time_point g_active_since; +bool g_active_is_upload = false; + +bool IsTaskBusyFor(const std::string& job_id) { + std::lock_guard lock(g_task_mutex); + return !g_active_job_id.empty() && g_active_job_id != job_id; +} + +bool AcquireTask(const std::string& job_id, bool upload) { + std::lock_guard lock(g_task_mutex); + if (!g_active_job_id.empty() && g_active_job_id != job_id) return false; + g_active_job_id = job_id; + g_active_is_upload = upload; + g_active_since = std::chrono::steady_clock::now(); + return true; +} + +void TouchTask(const std::string& job_id) { + std::lock_guard lock(g_task_mutex); + if (g_active_job_id == job_id) g_active_since = std::chrono::steady_clock::now(); +} + +void ReleaseTask(const std::string& job_id) { + std::lock_guard lock(g_task_mutex); + if (g_active_job_id == job_id) { + g_active_job_id.clear(); + g_active_is_upload = false; + } +} + +class TaskReleaseGuard { +public: + explicit TaskReleaseGuard(std::string job_id) : job_id_(std::move(job_id)) {} + ~TaskReleaseGuard() { ReleaseTask(job_id_); } +private: + std::string job_id_; +}; + +void ExpireIdleUploadTask() { + std::string expired; + { + std::lock_guard lock(g_task_mutex); + if (g_active_is_upload && !g_active_job_id.empty() && + std::chrono::steady_clock::now() - g_active_since > kUploadIdleTimeout) { + expired = g_active_job_id; + g_active_job_id.clear(); + g_active_is_upload = false; + } + } + if (!expired.empty()) { + std::error_code ignored; + fs::remove_all(JobDir(expired), ignored); + } +} + +void CleanupExpiredCompletedJobs() { + std::error_code error; + if (!fs::exists(JobsRoot(), error)) return; + const auto now = fs::file_time_type::clock::now(); + for (const auto& entry : fs::directory_iterator(JobsRoot(), error)) { + if (error || !entry.is_directory()) continue; + const auto job_id = entry.path().filename().string(); + if (IsTaskBusyFor(job_id) || !fs::exists(entry.path() / "result.json")) continue; + const auto modified = fs::last_write_time(entry.path(), error); + if (!error && now - modified > kCompletedJobRetention) fs::remove_all(entry.path(), error); + error.clear(); + } +} + +std::string ExcelColumnName(size_t index) { + std::string name; + for (size_t value = index + 1; value > 0; value = (value - 1) / 26) { + name.insert(name.begin(), static_cast('A' + (value - 1) % 26)); + } + return name; +} + +void WriteJsonCell(lxw_worksheet* sheet, lxw_row_t row, lxw_col_t column, + const json& value, lxw_format* format = nullptr) { + if (value.is_number()) { + worksheet_write_number(sheet, row, column, value.get(), format); + } else if (value.is_boolean()) { + worksheet_write_boolean(sheet, row, column, value.get(), format); + } else if (!value.is_null()) { + const auto text = value.is_string() ? value.get() : value.dump(); + worksheet_write_string(sheet, row, column, text.c_str(), format); + } +} + +std::string JsonText(const json& value) { + if (value.is_string()) return value.get(); + if (value.is_number_integer()) return std::to_string(value.get()); + if (value.is_number_unsigned()) return std::to_string(value.get()); + if (value.is_number_float()) { + std::ostringstream output; + output << value.get(); + return output.str(); + } + return value.is_null() ? "" : value.dump(); +} + +std::string FileNameForFan(const std::string& fan_id) { + std::string output; + for (const auto ch : fan_id) output += std::isalnum(static_cast(ch)) ? ch : '_'; + return output.empty() ? "wind_turbine" : output; +} + fs::path SchemeConfigPath() { return fs::path("data") / "wind_schemes.json"; } @@ -347,10 +486,16 @@ std::string NormalizeSchemeId(const std::string& scheme_id) { } std::vector DefaultSchemes() { - return { - {kDefaultSchemeId, kSchemeOneName, kSchemeOneDefaultDescription}, - {kSchemeTwoId, kSchemeTwoName, kSchemeTwoDefaultDescription, 1030.0, 1755.0, 2000.0}, - }; + SchemeInfo scheme_one; + scheme_one.id = kDefaultSchemeId; + scheme_one.name = kSchemeOneName; + scheme_one.description = kSchemeOneDefaultDescription; + + SchemeInfo scheme_two; + scheme_two.id = kSchemeTwoId; + scheme_two.name = kSchemeTwoName; + scheme_two.description = kSchemeTwoDefaultDescription; + return {scheme_one, scheme_two}; } std::optional FindScheme(const std::vector& schemes, @@ -369,7 +514,21 @@ json SchemeToJson(const SchemeInfo& scheme) { data["id"] = scheme.id; data["name"] = scheme.name; data["description"] = scheme.description; - if (scheme.id == kSchemeTwoId) { + if (scheme.id == kDefaultSchemeId) { + data["parameters"] = { + {"rated_power", scheme.scheme_one_rated_power}, + {"rated_wind_speed", scheme.scheme_one_rated_wind_speed}, + {"power_step", scheme.scheme_one_power_step}, + {"cleaning_wind_speed_step", scheme.scheme_one_cleaning_wind_speed_step}, + {"wind_speed_change_threshold", scheme.scheme_one_wind_speed_change_threshold}, + {"iqr_lower_multiplier", scheme.scheme_one_iqr_lower_multiplier}, + {"iqr_upper_multiplier", scheme.scheme_one_iqr_upper_multiplier}, + {"minimum_generator_speed", scheme.scheme_one_minimum_generator_speed}, + {"generator_speed_k", scheme.scheme_one_generator_speed_k}, + {"rotor_radius", scheme.scheme_one_rotor_radius}, + {"gearbox_ratio", scheme.scheme_one_gearbox_ratio}, + }; + } else if (scheme.id == kSchemeTwoId) { data["parameters"]["grid_connected_speed"] = scheme.grid_connected_speed; data["parameters"]["rated_generator_speed"] = scheme.rated_generator_speed; data["parameters"]["rated_power"] = scheme.rated_power; @@ -401,10 +560,37 @@ std::vector LoadSchemes() { if (description.has_value()) { scheme.description = description.value(); } - if (scheme.id == kSchemeTwoId && - item.contains("parameters") && - item["parameters"].is_object()) { - const auto& params = item["parameters"]; + if (!item.contains("parameters") || !item["parameters"].is_object()) { + continue; + } + const auto& params = item["parameters"]; + if (scheme.id == kDefaultSchemeId) { + const auto load_positive = [&](const std::string& field, double& target) { + if (const auto value = GetNumberField(params, field); + value.has_value() && std::isfinite(value.value()) && value.value() > 0.0) { + target = value.value(); + } + }; + const auto load_non_negative = [&](const std::string& field, double& target) { + if (const auto value = GetNumberField(params, field); + value.has_value() && std::isfinite(value.value()) && value.value() >= 0.0) { + target = value.value(); + } + }; + load_positive("rated_power", scheme.scheme_one_rated_power); + load_positive("rated_wind_speed", scheme.scheme_one_rated_wind_speed); + load_positive("power_step", scheme.scheme_one_power_step); + load_positive("cleaning_wind_speed_step", scheme.scheme_one_cleaning_wind_speed_step); + load_non_negative("wind_speed_change_threshold", + scheme.scheme_one_wind_speed_change_threshold); + load_non_negative("iqr_lower_multiplier", scheme.scheme_one_iqr_lower_multiplier); + load_non_negative("iqr_upper_multiplier", scheme.scheme_one_iqr_upper_multiplier); + load_non_negative("minimum_generator_speed", + scheme.scheme_one_minimum_generator_speed); + load_non_negative("generator_speed_k", scheme.scheme_one_generator_speed_k); + load_positive("rotor_radius", scheme.scheme_one_rotor_radius); + load_positive("gearbox_ratio", scheme.scheme_one_gearbox_ratio); + } else if (scheme.id == kSchemeTwoId) { if (const auto value = GetNumberField(params, "grid_connected_speed"); value.has_value() && value.value() > 0.0) { scheme.grid_connected_speed = value.value(); @@ -624,6 +810,14 @@ CalculationOptions ParseOptions(const json& body) { value.has_value() && value.value() >= 0.0) { options.generator_speed_k = value.value(); } + if (const auto value = GetDoubleField(opt, "rotor_radius"); + value.has_value() && value.value() > 0.0) { + options.rotor_radius = value.value(); + } + if (const auto value = GetDoubleField(opt, "gearbox_ratio"); + value.has_value() && value.value() > 0.0) { + options.gearbox_ratio = value.value(); + } if (const auto value = GetDoubleField(opt, "grid_connected_speed"); value.has_value() && value.value() > 0.0) { options.grid_connected_speed = value.value(); @@ -1161,10 +1355,43 @@ void WindPowerController::SaveSchemeDescription( return; } + std::optional scheme_one_parameters; std::optional grid_connected_speed; std::optional rated_generator_speed; std::optional rated_power; - if (normalized_id == kSchemeTwoId && body.value().contains("parameters")) { + if (normalized_id == kDefaultSchemeId) { + if (!body.value().contains("parameters") || !body.value()["parameters"].is_object()) { + SendError(callback, kErrorInvalidRequest, "方案一参数格式错误"); + return; + } + const auto& params = body.value()["parameters"]; + const auto valid_positive = [&](const std::string& field) { + const auto value = GetDoubleField(params, field); + return value.has_value() && std::isfinite(value.value()) && value.value() > 0.0; + }; + const auto valid_non_negative = [&](const std::string& field) { + const auto value = GetDoubleField(params, field); + return value.has_value() && std::isfinite(value.value()) && value.value() >= 0.0; + }; + if (!valid_positive("rated_power") || !valid_positive("rated_wind_speed") || + !valid_positive("power_step") || !valid_positive("cleaning_wind_speed_step") || + !valid_positive("rotor_radius") || !valid_positive("gearbox_ratio") || + !valid_non_negative("wind_speed_change_threshold") || + !valid_non_negative("iqr_lower_multiplier") || + !valid_non_negative("iqr_upper_multiplier") || + !valid_non_negative("minimum_generator_speed") || + !valid_non_negative("generator_speed_k")) { + SendError(callback, kErrorInvalidRequest, "方案一参数必须为合法数值"); + return; + } + if (GetDoubleField(params, "cleaning_wind_speed_step").value() > 2.0 || + GetDoubleField(params, "iqr_lower_multiplier").value() > 10.0 || + GetDoubleField(params, "iqr_upper_multiplier").value() > 10.0) { + SendError(callback, kErrorInvalidRequest, "方案一参数超出允许范围"); + return; + } + scheme_one_parameters = params; + } else if (normalized_id == kSchemeTwoId && body.value().contains("parameters")) { if (!body.value()["parameters"].is_object()) { SendError(callback, kErrorInvalidRequest, "方案参数格式错误"); return; @@ -1186,7 +1413,26 @@ void WindPowerController::SaveSchemeDescription( for (auto& scheme : schemes) { if (scheme.id == normalized_id) { scheme.description = description.value(); - if (scheme.id == kSchemeTwoId) { + if (scheme.id == kDefaultSchemeId) { + const auto& params = scheme_one_parameters.value(); + scheme.scheme_one_rated_power = GetDoubleField(params, "rated_power").value(); + scheme.scheme_one_rated_wind_speed = GetDoubleField(params, "rated_wind_speed").value(); + scheme.scheme_one_power_step = GetDoubleField(params, "power_step").value(); + scheme.scheme_one_cleaning_wind_speed_step = + GetDoubleField(params, "cleaning_wind_speed_step").value(); + scheme.scheme_one_wind_speed_change_threshold = + GetDoubleField(params, "wind_speed_change_threshold").value(); + scheme.scheme_one_iqr_lower_multiplier = + GetDoubleField(params, "iqr_lower_multiplier").value(); + scheme.scheme_one_iqr_upper_multiplier = + GetDoubleField(params, "iqr_upper_multiplier").value(); + scheme.scheme_one_minimum_generator_speed = + GetDoubleField(params, "minimum_generator_speed").value(); + scheme.scheme_one_generator_speed_k = + GetDoubleField(params, "generator_speed_k").value(); + scheme.scheme_one_rotor_radius = GetDoubleField(params, "rotor_radius").value(); + scheme.scheme_one_gearbox_ratio = GetDoubleField(params, "gearbox_ratio").value(); + } else if (scheme.id == kSchemeTwoId) { if (grid_connected_speed.has_value()) { scheme.grid_connected_speed = grid_connected_speed.value(); } @@ -1268,9 +1514,16 @@ void WindPowerController::StartJob( return; } + ExpireIdleUploadTask(); + CleanupExpiredCompletedJobs(); + const auto job_id = GenerateJobId(); + if (!AcquireTask(job_id, true)) { + SendError(callback, kErrorJobBusy, "服务器正在处理数据,请等待当前任务完成"); + return; + } + try { fs::create_directories(JobsRoot()); - const auto job_id = GenerateJobId(); fs::create_directories(JobDir(job_id)); std::ofstream meta(JobDir(job_id) / "metadata.json", std::ios::trunc); @@ -1279,11 +1532,14 @@ void WindPowerController::StartJob( std::ofstream rows(JobRowsPath(job_id), std::ios::trunc); rows.close(); + std::ofstream raw_rows(JobRawRowsPath(job_id), std::ios::trunc); + raw_rows.close(); json data; data["job_id"] = job_id; SendSuccess(callback, data); } catch (const std::exception&) { + ReleaseTask(job_id); SendError(callback, kErrorServer, "创建计算任务失败"); } } @@ -1308,9 +1564,13 @@ void WindPowerController::UploadChunk( SendError(callback, kErrorInvalidRequest, "缺少 rows 参数"); return; } - + if (IsTaskBusyFor(job_id.value())) { + SendError(callback, kErrorJobBusy, "服务器正在处理数据,请等待当前任务完成"); + return; + } try { std::ofstream out(JobRowsPath(job_id.value()), std::ios::app); + std::ofstream raw_out(JobRawRowsPath(job_id.value()), std::ios::app); int accepted = 0; for (const auto& row : (*body)["rows"]) { if (!row.is_object()) { @@ -1320,6 +1580,13 @@ void WindPowerController::UploadChunk( ++accepted; } out.close(); + if (body->contains("raw_rows") && (*body)["raw_rows"].is_array()) { + for (const auto& row : (*body)["raw_rows"]) { + if (row.is_object()) raw_out << row.dump() << '\n'; + } + } + raw_out.close(); + TouchTask(job_id.value()); json data; data["accepted_rows"] = accepted; @@ -1345,6 +1612,11 @@ void WindPowerController::FinishJob( SendError(callback, kErrorJobNotFound, "计算任务不存在"); return; } + if (IsTaskBusyFor(job_id.value())) { + SendError(callback, kErrorJobBusy, "服务器正在处理数据,请等待当前任务完成"); + return; + } + TaskReleaseGuard finish_guard(job_id.value()); const CalculationOptions options = ParseOptions(*body); if (IsSchemeTwo(options) && @@ -1526,7 +1798,8 @@ void WindPowerController::FinishJob( limit_power_count += removed; for (auto& row : fan_rows) { - row.tip_speed_ratio = row.generator_speed * 3.14 * 162.0 * 78.0 * 30.0 / + row.tip_speed_ratio = row.generator_speed * 3.14 * options.gearbox_ratio * + options.rotor_radius * 30.0 / row.wind_speed; } @@ -1700,14 +1973,182 @@ void WindPowerController::FinishJob( data["estimated_params"] = estimated_params; try { - fs::remove_all(JobDir(job_id.value())); + std::ofstream result_file(JobResultPath(job_id.value()), std::ios::trunc); + result_file << data.dump(); } catch (const std::exception&) { - // 任务结果已经生成,临时文件清理失败不影响本次响应。 + SendError(callback, kErrorServer, "保存计算结果失败"); + return; } SendSuccess(callback, data); } +void WindPowerController::ExportReport( + const HttpRequestPtr& req, + std::function&& callback, + const std::string& job_id) { + if (!IsSafeJobId(job_id) || !fs::exists(JobResultPath(job_id))) { + SendError(callback, kErrorJobNotFound, "计算任务不存在或结果已过期"); + return; + } + std::string error; + const auto body = ParseBody(req, error); + if (!body.has_value()) { + SendError(callback, kErrorInvalidRequest, error); + return; + } + const auto fan_id = GetStringField(*body, "fan_id"); + if (!fan_id.has_value() || !body->contains("effective_rows") || + !(*body)["effective_rows"].is_array() || !body->contains("report_rows") || + !(*body)["report_rows"].is_array()) { + SendError(callback, kErrorInvalidRequest, "报告参数不完整"); + return; + } + if (!AcquireTask(job_id, false)) { + SendError(callback, kErrorJobBusy, "服务器正在处理数据,请等待当前任务完成"); + return; + } + TaskReleaseGuard report_guard(job_id); + + try { + json metadata; + json result; + { std::ifstream input(JobDir(job_id) / "metadata.json"); input >> metadata; } + { std::ifstream input(JobResultPath(job_id)); input >> result; } + const auto headers = metadata.value("raw_headers", json::array()); + const auto mapping = metadata.value("mapping", json::object()); + const auto fan_header = mapping.value("fan_id", ""); + const auto wind_header = mapping.value("wind_speed", ""); + if (!headers.is_array() || fan_header.empty() || wind_header.empty()) { + SendError(callback, kErrorServer, "任务未保存原始数据列,无法导出完整报告"); + return; + } + size_t fan_column = headers.size(); + size_t wind_column = headers.size(); + for (size_t i = 0; i < headers.size(); ++i) { + const auto header = headers[i].is_string() ? headers[i].get() : ""; + if (header == fan_header) fan_column = i; + if (header == wind_header) wind_column = i; + } + if (fan_column == headers.size() || wind_column == headers.size()) { + SendError(callback, kErrorServer, "原始数据缺少风机编号或风速列"); + return; + } + + const auto report_path = JobDir(job_id) / ("report_" + FileNameForFan(fan_id.value()) + ".xlsx"); + lxw_workbook_options options{}; + const auto temp_dir = JobDir(job_id).string(); + options.constant_memory = LXW_TRUE; + options.use_zip64 = LXW_TRUE; + options.tmpdir = const_cast(temp_dir.c_str()); + lxw_workbook* workbook = workbook_new_opt(report_path.string().c_str(), &options); + if (!workbook) throw std::runtime_error("无法创建 Excel 工作簿"); + lxw_format* header_format = workbook_add_format(workbook); + format_set_bold(header_format); + format_set_bg_color(header_format, 0xE2E8F0); + format_set_align(header_format, LXW_ALIGN_CENTER); + lxw_format* number_format = workbook_add_format(workbook); + format_set_num_format(number_format, "0.0000"); + + lxw_worksheet* detail = workbook_add_worksheet(workbook, "筛选后的数据"); + worksheet_freeze_panes(detail, 1, 0); + const bool include_pitch = result.value("scheme", json::object()).value("id", "") == kSchemeTwoId; + const std::vector detail_headers = include_pitch + ? std::vector{"风机编号", "采样时间", "平均功率", "平均转速", "平均风速", "3个叶片变桨角平均值"} + : std::vector{"风机编号", "采样时间", "平均功率", "平均转速", "平均风速"}; + for (size_t i = 0; i < detail_headers.size(); ++i) { + worksheet_write_string(detail, 0, i, detail_headers[i].c_str(), header_format); + worksheet_set_column(detail, i, i, i == 1 ? 22 : 16, nullptr); + } + lxw_row_t detail_row = 1; + for (const auto& point : (*body)["effective_rows"]) { + if (!point.is_object()) continue; + worksheet_write_string(detail, detail_row, 0, point.value("fan_id", fan_id.value()).c_str(), nullptr); + worksheet_write_string(detail, detail_row, 1, point.value("time", "").c_str(), nullptr); + worksheet_write_number(detail, detail_row, 2, point.value("active_power", 0.0), number_format); + worksheet_write_number(detail, detail_row, 3, point.value("generator_speed", 0.0), number_format); + worksheet_write_number(detail, detail_row, 4, point.value("wind_speed", 0.0), number_format); + if (include_pitch) worksheet_write_number(detail, detail_row, 5, point.value("pitch_angle_average", 0.0), number_format); + ++detail_row; + } + worksheet_autofilter(detail, 0, 0, std::max(1, detail_row - 1), detail_headers.size() - 1); + + lxw_worksheet* raw = workbook_add_worksheet(workbook, "筛选前的数据"); + worksheet_freeze_panes(raw, 1, 0); + for (size_t i = 0; i < headers.size(); ++i) { + const auto header = headers[i].is_string() ? headers[i].get() : ""; + worksheet_write_string(raw, 0, i, header.c_str(), header_format); + worksheet_set_column(raw, i, i, 16, nullptr); + } + std::set source_files; + lxw_row_t raw_row = 1; + std::ifstream raw_input(JobRawRowsPath(job_id)); + std::string line; + while (std::getline(raw_input, line)) { + const auto source = json::parse(line, nullptr, false); + if (source.is_discarded() || !source.contains("values") || !source["values"].is_array()) continue; + const auto& values = source["values"]; + if (fan_column >= values.size() || JsonText(values[fan_column]) != fan_id.value()) continue; + source_files.insert(source.value("file_name", "")); + for (size_t column = 0; column < values.size(); ++column) WriteJsonCell(raw, raw_row, column, values[column]); + ++raw_row; + } + if (source_files.size() != 1) { + workbook_close(workbook); + SendError(callback, kErrorInvalidRequest, "完整报告要求当前风机对应唯一一份上传 Excel 文件"); + return; + } + worksheet_autofilter(raw, 0, 0, std::max(1, raw_row - 1), headers.size() - 1); + + lxw_worksheet* curve = workbook_add_worksheet(workbook, "功率曲线计算表"); + worksheet_freeze_panes(curve, 1, 0); + const std::vector curve_headers = {"序号", "风速 (m/s)", "风频时间 (h)", "计算功率 (kW)", "保证功率 (kW)", "计算发电量 (kWh)", "理论发电量 (kWh)", "", "K值"}; + for (size_t i = 0; i < curve_headers.size(); ++i) { + worksheet_write_string(curve, 0, i, curve_headers[i].c_str(), header_format); + worksheet_set_column(curve, i, i, i == 0 ? 9 : 17, nullptr); + } + const auto raw_wind = ExcelColumnName(wind_column); + lxw_row_t curve_row = 1; + for (const auto& point : (*body)["report_rows"]) { + const auto excel_row = curve_row + 1; + worksheet_write_number(curve, curve_row, 0, excel_row - 1, nullptr); + worksheet_write_number(curve, curve_row, 1, point.value("wind_speed", 0.0), number_format); + const auto frequency = "=(COUNTIFS('筛选前的数据'!" + raw_wind + ":" + raw_wind + ",\">=\"&B" + std::to_string(excel_row) + "-0.5,'筛选前的数据'!" + raw_wind + ":" + raw_wind + ",\"<\"&B" + std::to_string(excel_row) + "+0.5)/COUNT('筛选前的数据'!" + raw_wind + ":" + raw_wind + "))*8760"; + worksheet_write_formula(curve, curve_row, 2, frequency.c_str(), number_format); + const auto actual = "=IFERROR(AVERAGEIFS('筛选后的数据'!$C:$C,'筛选后的数据'!$E:$E,\">=\"&B" + std::to_string(excel_row) + "-0.5,'筛选后的数据'!$E:$E,\"<\"&B" + std::to_string(excel_row) + "+0.5),0)"; + worksheet_write_formula(curve, curve_row, 3, actual.c_str(), number_format); + worksheet_write_number(curve, curve_row, 4, point.value("design_power", 0.0), number_format); + const auto generated = "=IFERROR(ROUND(C" + std::to_string(excel_row) + "*D" + std::to_string(excel_row) + "/1000,4),0)"; + const auto theoretical = "=ROUND(C" + std::to_string(excel_row) + "*E" + std::to_string(excel_row) + "/1000,4)"; + worksheet_write_formula(curve, curve_row, 5, generated.c_str(), number_format); + worksheet_write_formula(curve, curve_row, 6, theoretical.c_str(), number_format); + ++curve_row; + } + const auto last_row = std::max(2, curve_row); + const auto k_formula = "=IFERROR(SUM(F2:F" + std::to_string(last_row) + ")/SUM(G2:G" + std::to_string(last_row) + "),0)"; + worksheet_write_formula(curve, 1, 8, k_formula.c_str(), number_format); + worksheet_autofilter(curve, 0, 0, std::max(1, curve_row - 1), 6); + + if (body->contains("chart_image") && (*body)["chart_image"].is_string()) { + auto image_data = (*body)["chart_image"].get(); + const auto comma = image_data.find(','); + if (comma != std::string::npos) image_data = image_data.substr(comma + 1); + const auto image_path = JobDir(job_id) / "report_chart.png"; + std::ofstream image(image_path, std::ios::binary | std::ios::trunc); + image << drogon::utils::base64Decode(image_data); + image.close(); + worksheet_insert_image(curve, 3, 8, image_path.string().c_str()); + } + if (workbook_close(workbook) != LXW_NO_ERROR) throw std::runtime_error("写入 Excel 文件失败"); + callback(HttpResponse::newFileResponse(report_path.string(), + "完整功率曲线报告_" + FileNameForFan(fan_id.value()) + ".xlsx", + CT_CUSTOM, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")); + } catch (const std::exception&) { + SendError(callback, kErrorServer, "完整报告生成失败,请稍后重试"); + } +} + void WindPowerController::DeleteJob( const HttpRequestPtr&, std::function&& callback, @@ -1719,6 +2160,7 @@ void WindPowerController::DeleteJob( try { fs::remove_all(JobDir(job_id)); + ReleaseTask(job_id); SendSuccess(callback); } catch (const std::exception&) { SendError(callback, kErrorServer, "清理任务失败"); diff --git a/backend/src/controllers/WindPowerController.h b/backend/src/controllers/WindPowerController.h index 8d879c7..c11e51d 100644 --- a/backend/src/controllers/WindPowerController.h +++ b/backend/src/controllers/WindPowerController.h @@ -14,6 +14,7 @@ public: ADD_METHOD_TO(WindPowerController::StartJob, "/api/wind/jobs/start", Post); ADD_METHOD_TO(WindPowerController::UploadChunk, "/api/wind/jobs/chunk", Post); ADD_METHOD_TO(WindPowerController::FinishJob, "/api/wind/jobs/finish", Post); + ADD_METHOD_TO(WindPowerController::ExportReport, "/api/wind/jobs/{1}/report", Post); ADD_METHOD_TO(WindPowerController::DeleteJob, "/api/wind/jobs/{1}", Delete); ADD_METHOD_TO(WindPowerController::GetSchemes, "/api/wind/schemes", Get); ADD_METHOD_TO(WindPowerController::SaveSchemeDescription, @@ -38,6 +39,9 @@ public: std::function&& callback); void FinishJob(const HttpRequestPtr& req, std::function&& callback); + void ExportReport(const HttpRequestPtr& req, + std::function&& callback, + const std::string& job_id); void DeleteJob(const HttpRequestPtr& req, std::function&& callback, const std::string& job_id); diff --git a/deploy.sh b/deploy.sh index 5fc4e5d..458c78a 100755 --- a/deploy.sh +++ b/deploy.sh @@ -93,7 +93,9 @@ fi step "3/5 上传应用与 systemd 配置..." ssh_cmd 'command -v rsync >/dev/null || (sudo apt-get update -qq && sudo apt-get install -y -qq rsync >/dev/null)' -sshpass -p "${SSH_PASSWORD}" rsync -az --delete -e "ssh ${SSH_OPTS[*]}" \ +# data/、uploads/ 和 logs/ 由远端服务在运行时维护;发布代码时必须保留它们。 +sshpass -p "${SSH_PASSWORD}" rsync -az --delete \ + --exclude '/data/' --exclude '/uploads/' --exclude '/logs/' -e "ssh ${SSH_OPTS[*]}" \ "${LOCAL_APP_DIR}/" "${TARGET}:${REMOTE_APP_PATH}/" sshpass -p "${SSH_PASSWORD}" scp "${SSH_OPTS[@]}" \ "${DEPLOY_STAGE}/${SERVICE_NAME}.service" \ diff --git a/docs/接口文档.md b/docs/接口文档.md index ba00be8..f3e3ba6 100644 --- a/docs/接口文档.md +++ b/docs/接口文档.md @@ -53,7 +53,7 @@ ### POST /api/wind/jobs/start -创建风功率计算任务。前端已完成 Excel 表头解析和字段映射,后端只保存任务元数据。 +创建风功率计算任务。服务器全局同一时刻仅允许一个上传、计算或报告生成任务;繁忙时返回 `status: 1004` 和“服务器正在处理数据,请等待当前任务完成”。 请求: @@ -71,7 +71,8 @@ "wind_speed": "风速(m/s)", "active_power": "有功功率(kW)", "generator_speed": "发电机转速(rpm)" - } + }, + "raw_headers": ["时间", "风机编号", "风速(m/s)", "有功功率(kW)", "发电机转速(rpm)"] } ``` @@ -89,7 +90,7 @@ ### POST /api/wind/jobs/chunk -上传标准化后的数据分片。每行字段必须使用标准字段名。 +上传标准化后的数据分片。`raw_rows` 保存原始 Excel 行,用于服务端完整报告的“筛选前的数据”工作表。 请求: @@ -105,6 +106,9 @@ "active_power": 114.3471, "generator_speed": 1109.3143 } + ], + "raw_rows": [ + {"file_name": "01_风机历史数据.xls", "values": ["2024-09-01 14:00:00", "01#", 3.414, 114.3471, 1109.3143]} ] } ``` @@ -131,14 +135,18 @@ { "job_id": "job_123", "options": { + "rated_power": 4800, + "rated_wind_speed": 14, "power_step": 5, "cleaning_wind_speed_step": 0.25, "curve_wind_speed_step": 0.5, "wind_speed_change_threshold": 1, - "iqr_lower_multiplier": 1.8, + "iqr_lower_multiplier": 1.2, "iqr_upper_multiplier": 2, "minimum_generator_speed": 1, - "generator_speed_k": 0.9 + "generator_speed_k": 0.9, + "rotor_radius": 78, + "gearbox_ratio": 162 } } ``` @@ -229,7 +237,7 @@ - `wind_speed <= 0` 的数据剔除。 - 同一风机同一时间重复记录保留第一条。 - 限功率识别按参考脚本执行:按功率分箱、按日期分组,组内风速跨度大于阈值时剔除。 -- 叶尖速比使用参考脚本公式 `generator_speed * 3.14 * 162 * 78 * 30 / wind_speed`,按风速分箱做 IQR 清洗。 +- 叶尖速比按 `generator_speed * 3.14 * gearbox_ratio * rotor_radius * 30 / wind_speed` 计算;`3.14` 和 `30` 固定,叶轮半径与齿轮箱传动比由方案一参数提供,再按风速分箱做 IQR 清洗。 - 风速-功率关系按同一风速分箱和 IQR 参数清洗。 - 每台风机在 IQR 清洗后自动估算平台功率和平台起始风速,返回到 `estimated_params`。 - 高风速平台区明显低于平台功率的点剔除为 `high_wind_low_power`。 @@ -239,6 +247,12 @@ - `scatter_points` 返回清洗后保留点,`filtered_points` 返回所有过滤阶段滤除的点和原因。 - `estimated_params.source` 为 `auto`、`auto_power_fallback_wind` 或 `fallback`。 +### POST /api/wind/jobs/{jobId}/report + +服务端以常量内存方式生成完整报告并直接返回 `.xlsx` 附件。计算完成的数据保留 24 小时;上传任务连续 30 分钟未活动会自动清理。 + +请求体包含 `fan_id`、当前编辑后的 `effective_rows`、`report_rows` 和可选的 `chart_image`(PNG data URL)。成功时响应为 Excel 文件流;失败时仍使用统一 JSON 响应信封。 + ### DELETE /api/wind/jobs/{job_id} 清理未完成任务的临时文件。 diff --git a/frontend/web_app/src/App.css b/frontend/web_app/src/App.css index a15ec59..fc0f108 100644 --- a/frontend/web_app/src/App.css +++ b/frontend/web_app/src/App.css @@ -254,6 +254,13 @@ margin-top: 14px; } +.schemeParamHint { + margin: 14px 0 0; + color: #64748b; + font-size: 13px; + line-height: 1.5; +} + .schemeParamGrid input { min-width: 0; width: 100%; @@ -805,6 +812,44 @@ td { .error { border-color: #fecaca; background: #fff1f2; color: #b91c1c; } .alert.info { border-color: #bfdbfe; background: #eff6ff; color: #1d4ed8; } +.dialogBackdrop { + position: fixed; + z-index: 1000; + inset: 0; + display: grid; + place-items: center; + padding: 20px; + background: rgba(15, 23, 42, 0.42); +} + +.appDialog { + width: min(440px, 100%); + padding: 22px; + border: 1px solid #dbe3ed; + border-radius: 12px; + background: #ffffff; + box-shadow: 0 20px 48px rgba(15, 23, 42, 0.22); +} + +.appDialog h2 { + margin: 0; + color: #172033; + font-size: 18px; +} + +.appDialog p { + margin: 12px 0 0; + color: #475569; + font-size: 14px; + line-height: 1.6; +} + +.appDialogActions { + display: flex; + justify-content: flex-end; + margin-top: 20px; +} + .schemeDescriptionControl span, .fieldControl span { color: #334155; } .schemeDescriptionControl input, diff --git a/frontend/web_app/src/pages/HomePage.jsx b/frontend/web_app/src/pages/HomePage.jsx index 367b56c..25bcec5 100644 --- a/frontend/web_app/src/pages/HomePage.jsx +++ b/frontend/web_app/src/pages/HomePage.jsx @@ -4,6 +4,7 @@ import 'uplot/dist/uPlot.min.css'; import * as XLSX from 'xlsx'; import { deleteWindJob, + downloadWindReport, finishWindJob, getWindChartOptions, getWindSchemes, @@ -58,7 +59,24 @@ const EDIT_TOOL_ERASE = 'erase'; const DEFAULT_SCHEME_ID = 'scheme_one'; const SCHEME_TWO_ID = 'scheme_two'; const DEFAULT_SCHEMES = [ - { id: 'scheme_one', name: '方案一', description: '通用方案' }, + { + id: 'scheme_one', + name: '方案一', + description: '通用方案', + parameters: { + rated_power: 4800, + rated_wind_speed: 14, + power_step: 5, + cleaning_wind_speed_step: 0.25, + wind_speed_change_threshold: 1, + iqr_lower_multiplier: 1.2, + iqr_upper_multiplier: 2, + minimum_generator_speed: 1, + generator_speed_k: 0.9, + rotor_radius: 78, + gearbox_ratio: 162, + }, + }, { id: SCHEME_TWO_ID, name: '方案二', @@ -76,6 +94,32 @@ const DEFAULT_SCHEME_TWO_PARAMS = { rated_generator_speed: '1755', rated_power: '2000', }; +const DEFAULT_SCHEME_ONE_PARAMS = { + rated_power: '4800', + rated_wind_speed: '14', + power_step: '5', + cleaning_wind_speed_step: '0.25', + wind_speed_change_threshold: '1', + iqr_lower_multiplier: '1.2', + iqr_upper_multiplier: '2', + minimum_generator_speed: '1', + generator_speed_k: '0.9', + rotor_radius: '78', + gearbox_ratio: '162', +}; +const SCHEME_ONE_PARAM_FIELDS = [ + { key: 'rated_power', label: '额定功率', unit: 'kW', min: '0', step: '0.1' }, + { key: 'rated_wind_speed', label: '额定风速', unit: 'm/s', min: '0', step: '0.01' }, + { key: 'power_step', label: '功率分箱步长', unit: 'kW', min: '0', step: '0.01' }, + { key: 'cleaning_wind_speed_step', label: '清洗风速分箱步长', unit: 'm/s', min: '0', step: '0.01' }, + { key: 'wind_speed_change_threshold', label: '风速变化阈值', unit: 'm/s', min: '0', step: '0.01' }, + { key: 'iqr_lower_multiplier', label: 'IQR 下限系数', unit: '', min: '0', step: '0.01' }, + { key: 'iqr_upper_multiplier', label: 'IQR 上限系数', unit: '', min: '0', step: '0.01' }, + { key: 'minimum_generator_speed', label: '最小发电机转速', unit: 'rpm', min: '0', step: '0.01' }, + { key: 'generator_speed_k', label: '发电机转速系数 K', unit: '', min: '0', step: '0.01' }, + { key: 'rotor_radius', label: '叶轮半径', unit: 'm', min: '0', step: '0.01' }, + { key: 'gearbox_ratio', label: '齿轮箱传动比', unit: '', min: '0', step: '0.01' }, +]; const CHART_STATE_KEY = 'wind_power_chart_state_v1'; const DEFAULT_CHART_OPTIONS = { title: '#机组功率曲线', @@ -393,11 +437,13 @@ function buildStandardRows(files, mapping) { ); const rows = []; + const rawRows = []; for (const file of files) { const localIndexes = Object.fromEntries( REQUIRED_FIELDS.map((field) => [field.key, file.headers.indexOf(mapping[field.key])]), ); - for (const row of file.rows) { + for (let rowIndex = 0; rowIndex < file.rows.length; rowIndex += 1) { + const row = file.rows[rowIndex]; rows.push({ time: normalizeTime(getCell(row, localIndexes.time)), fan_id: String(getCell(row, localIndexes.fan_id) ?? '').trim(), @@ -408,10 +454,14 @@ function buildStandardRows(files, mapping) { blade_pitch_2: normalizeNumber(getCell(row, localIndexes.blade_pitch_2)), blade_pitch_3: normalizeNumber(getCell(row, localIndexes.blade_pitch_3)), }); + rawRows.push({ + file_name: file.file_name, + values: [...(file.raw_rows?.[rowIndex] || row)], + }); } } - return { rows, indexes }; + return { rows, rawRows, indexes }; } function hasMatchingHeaderSequence(files) { @@ -423,44 +473,6 @@ function hasMatchingHeaderSequence(files) { )); } -function findRawSourceFiles(files, mapping, fanId) { - if (!fanId) return []; - return files.filter((file) => { - const fanColumnIndex = file.headers.indexOf(mapping.fan_id); - return fanColumnIndex >= 0 && file.rows.some((row) => ( - String(row[fanColumnIndex] ?? '').trim() === fanId - )); - }); -} - -function buildRawReportData(file, mapping, fanId) { - if (!file || !fanId) return null; - - const fanColumnIndex = file.headers.indexOf(mapping.fan_id); - const windSpeedColumnIndex = file.headers.indexOf(mapping.wind_speed); - if (fanColumnIndex < 0 || windSpeedColumnIndex < 0) return null; - - const rows = file.rows.reduce((result, row, index) => { - if (String(row[fanColumnIndex] ?? '').trim() === fanId) { - const rawRow = [...(file.raw_rows?.[index] || row)]; - const windSpeed = normalizeNumber(rawRow[windSpeedColumnIndex]); - // 部分源 Excel 将风速保存为“数字文本”。保留显示值的同时写成数值单元格, - // 使计算表的 COUNTIFS 能正确统计风频。 - if (Number.isFinite(windSpeed)) { - rawRow[windSpeedColumnIndex] = windSpeed; - } - result.push(rawRow); - } - return result; - }, []); - - return { - headers: [...(file.raw_headers || file.headers)], - rows, - windSpeedColumnIndex, - }; -} - function formatTimestampForFile(date = new Date()) { return `${date.getFullYear()}${pad(date.getMonth() + 1)}${pad(date.getDate())}` + `${pad(date.getHours())}${pad(date.getMinutes())}${pad(date.getSeconds())}`; @@ -585,6 +597,13 @@ function schemeParamsToState(parameters) { }; } +function schemeOneParamsToState(parameters) { + return Object.fromEntries(Object.entries(DEFAULT_SCHEME_ONE_PARAMS).map(([field, fallback]) => [ + field, + String(parameters?.[field] ?? fallback), + ])); +} + function SummaryCards({ summary }) { if (!summary) return null; const cards = [ @@ -972,14 +991,25 @@ async function captureChartFrame(frame) { }; } +function downloadReportBlob(blob, fanId) { + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = `完整功率曲线报告_${sanitizeFileName(fanId)}_${formatTimestampForFile()}.xlsx`; + link.click(); + window.setTimeout(() => URL.revokeObjectURL(url), 0); +} + +/* 已迁移到 reportExportWorker,由 Worker 承担 ExcelJS 的内存压力。 */ +/* const REPORT_DETAIL_HEADERS = [ '风机编号', '采样时间', '平均功率', '平均转速', '平均风速', - '3个叶片变桨角平均值', ]; +const REPORT_PITCH_HEADER = '3个叶片变桨角平均值'; const REPORT_BORDER = { top: { style: 'thin', color: { argb: 'FF475569' } }, @@ -1000,16 +1030,19 @@ function reportPitchAverage(row) { return values.every((value) => value !== '') ? values.reduce((sum, value) => sum + value, 0) / values.length : ''; } -function reportDetailValues(row, fanId) { +function reportDetailValues(row, fanId, includePitch) { const savedPitchAverage = reportNumber(row.pitch_angle_average); - return [ + const values = [ row.fan_id || fanId || '', row.time || '', reportNumber(row.active_power), reportNumber(row.generator_speed), reportNumber(row.wind_speed), - savedPitchAverage !== '' ? savedPitchAverage : reportPitchAverage(row), ]; + if (includePitch) { + values.push(savedPitchAverage !== '' ? savedPitchAverage : reportPitchAverage(row)); + } + return values; } function styleReportHeader(row) { @@ -1036,17 +1069,25 @@ function styleReportBody(sheet, startRow, endRow, numericColumns) { } function addReportDetailSheet(workbook, name, rows, fanId) { + const includePitch = rows.some((row) => ( + reportNumber(row.pitch_angle_average) !== '' || reportPitchAverage(row) !== '' + )); + const headers = includePitch ? [...REPORT_DETAIL_HEADERS, REPORT_PITCH_HEADER] : REPORT_DETAIL_HEADERS; const sheet = workbook.addWorksheet(name, { views: [{ state: 'frozen', ySplit: 1 }], }); sheet.columns = [ - { width: 16 }, { width: 22 }, { width: 14 }, { width: 14 }, { width: 14 }, { width: 23 }, + { width: 16 }, { width: 22 }, { width: 14 }, { width: 14 }, { width: 14 }, + ...(includePitch ? [{ width: 23 }] : []), ]; - sheet.addRow(REPORT_DETAIL_HEADERS); - rows.forEach((row) => sheet.addRow(reportDetailValues(row, fanId))); + sheet.addRow(headers); + rows.forEach((row) => sheet.addRow(reportDetailValues(row, fanId, includePitch))); styleReportHeader(sheet.getRow(1)); - styleReportBody(sheet, 2, Math.max(2, rows.length + 1), [3, 4, 5, 6]); - sheet.autoFilter = `A1:F${Math.max(1, rows.length + 1)}`; + // 对每个数据单元格设置样式会使 ExcelJS 为大量行保留大量对象,容易耗尽浏览器内存。 + for (const columnNumber of includePitch ? [3, 4, 5, 6] : [3, 4, 5]) { + sheet.getColumn(columnNumber).numFmt = '0.0000'; + } + sheet.autoFilter = `A1:${includePitch ? 'F' : 'E'}${Math.max(1, rows.length + 1)}`; return sheet; } @@ -1067,14 +1108,15 @@ function addRawReportSheet(workbook, { headers, rows }) { }); sheet.addRow(headers); rows.forEach((row) => sheet.addRow(row)); + // 列宽只需参考样本即可,避免大文件导出时重复扫描全部单元格。 + const widthSampleRows = rows.slice(0, 1000); sheet.columns = headers.map((header, index) => { - const maxLength = rows.reduce((max, row) => ( + const maxLength = widthSampleRows.reduce((max, row) => ( Math.max(max, String(row[index] ?? '').length) ), String(header ?? '').length); return { width: Math.min(32, Math.max(12, maxLength + 2)) }; }); styleReportHeader(sheet.getRow(1)); - styleReportBody(sheet, 2, Math.max(2, rows.length + 1), []); sheet.autoFilter = `A1:${excelColumnName(Math.max(0, headers.length - 1))}${Math.max(1, rows.length + 1)}`; return sheet; } @@ -1086,7 +1128,6 @@ async function exportPowerCurveReport({ reportRows, chartRenderSnapshot, }) { - const { default: ExcelJS } = await import('exceljs'); const workbook = new ExcelJS.Workbook(); workbook.creator = '风电功率计算平台'; workbook.created = new Date(); @@ -1157,6 +1198,8 @@ async function exportPowerCurveReport({ URL.revokeObjectURL(url); } +*/ + function PowerCurveChart({ points, scatterPoints, @@ -1218,7 +1261,7 @@ function PowerCurveChart({ const yAxisSize = Math.max(64, Math.round(screenTypography.tick * 3.2 + 16)); const axisLabelSize = screenTypography.axis + 18; const showScatterOnChart = activeChartOptions.show_scatter || editMode; - chartSnapshotRef.current = async () => { + chartSnapshotRef.current = async (captureFrame = true) => { const snapshot = { actualCurve: visibleActualCurve, designCurve: visibleDesignCurve, @@ -1231,6 +1274,9 @@ function PowerCurveChart({ options: activeChartOptions, scales: plotRef.current?.scales, }; + if (!captureFrame) { + return snapshot; + } try { const capturedImage = await captureChartFrame(frameRef.current); return capturedImage ? { ...snapshot, ...capturedImage } : snapshot; @@ -1244,6 +1290,8 @@ function PowerCurveChart({ useEffect(() => { if (!chartRef.current || (!visibleActualCurve.length && !visibleDesignCurve.length)) return undefined; + const transientErasedPointIds = new Set(); + let redrawFrameId = 0; const sortedCurve = [...visibleActualCurve].sort((left, right) => left.wind_speed - right.wind_speed); const sortedDesign = [...visibleDesignCurve].sort((left, right) => left.wind_speed - right.wind_speed); const actualByWindSpeed = new Map( @@ -1372,6 +1420,9 @@ function PowerCurveChart({ if (showScatterOnChart) { ctx.fillStyle = hexToRgba(activeChartOptions.scatter_color, activeChartOptions.scatter_opacity); for (const point of validScatter) { + if (transientErasedPointIds.has(point.point_id)) { + continue; + } const x = u.valToPos(point.wind_speed, 'x', true); const y = u.valToPos(point.active_power, 'y', true); if (Number.isFinite(x) && Number.isFinite(y)) { @@ -1437,6 +1488,16 @@ function PowerCurveChart({ plotRef.current = chart; setSeriesVisibility({ actual: true, design: true }); + const requestChartRedraw = () => { + if (redrawFrameId) { + return; + } + redrawFrameId = window.requestAnimationFrame(() => { + redrawFrameId = 0; + chart.redraw(true, false); + }); + }; + const hideBrush = () => { setBrush((prev) => ({ ...prev, visible: false, dragging: false })); }; @@ -1449,6 +1510,7 @@ function PowerCurveChart({ } let dragging = false; + const pendingPoints = new Map(); const updateBrush = (event, nextDragging = dragging) => { if (!frameRef.current) return; const rect = frameRef.current.getBoundingClientRect(); @@ -1484,16 +1546,32 @@ function PowerCurveChart({ if (!hitPoints.length) { return; } + for (const point of hitPoints) { + const pointId = point.point_id || `${point.wind_speed}_${point.active_power}`; + pendingPoints.set(pointId, point); + if (editTool === EDIT_TOOL_ERASE) { + transientErasedPointIds.add(pointId); + } + } if (editTool === EDIT_TOOL_ERASE) { - onErasePoints?.(hitPoints); + requestChartRedraw(); + } + }; + const applyPendingPoints = () => { + if (!pendingPoints.size) return; + const points = Array.from(pendingPoints.values()); + pendingPoints.clear(); + if (editTool === EDIT_TOOL_ERASE) { + onErasePoints?.(points); } else { - onRestorePoints?.(hitPoints); + onRestorePoints?.(points); } }; const handlePointerDown = (event) => { if (event.button !== 0) return; event.preventDefault(); dragging = true; + chart.over.setPointerCapture?.(event.pointerId); updateBrush(event, true); applyToolAt(event); }; @@ -1506,6 +1584,11 @@ function PowerCurveChart({ const handlePointerUp = (event) => { updateBrush(event, false); dragging = false; + applyToolAt(event); + applyPendingPoints(); + if (chart.over.hasPointerCapture?.(event.pointerId)) { + chart.over.releasePointerCapture(event.pointerId); + } }; chart.over.addEventListener('pointerdown', handlePointerDown); @@ -1518,6 +1601,10 @@ function PowerCurveChart({ chart.over.removeEventListener('pointermove', handlePointerMove); chart.over.removeEventListener('pointerleave', hideBrush); window.removeEventListener('pointerup', handlePointerUp); + if (redrawFrameId) { + window.cancelAnimationFrame(redrawFrameId); + } + pendingPoints.clear(); if (plotRef.current === chart) plotRef.current = null; chart.destroy(); }; @@ -1626,6 +1713,8 @@ export default function HomePage() { const [savingChartOptions, setSavingChartOptions] = useState(false); const [chartSettingsMessage, setChartSettingsMessage] = useState(''); const [exportingReport, setExportingReport] = useState(false); + const [reportExportProgress, setReportExportProgress] = useState(''); + const [reportExportNotice, setReportExportNotice] = useState(''); const chartExportRef = useRef(() => false); const chartSnapshotRef = useRef(() => null); const [schemes, setSchemes] = useState(DEFAULT_SCHEMES); @@ -1633,12 +1722,14 @@ export default function HomePage() { const [schemeDescription, setSchemeDescription] = useState(DEFAULT_SCHEMES[0].description); const [savingScheme, setSavingScheme] = useState(false); const [schemeMessage, setSchemeMessage] = useState(''); + const [schemeOneParams, setSchemeOneParams] = useState(DEFAULT_SCHEME_ONE_PARAMS); const [schemeTwoParams, setSchemeTwoParams] = useState(DEFAULT_SCHEME_TWO_PARAMS); const headers = files[0]?.headers || []; - const missingFields = REQUIRED_FIELDS.filter((field) => !mapping[field.key]); const selectedScheme = schemes.find((scheme) => scheme.id === selectedSchemeId) || schemes[0]; const isSchemeTwo = selectedSchemeId === SCHEME_TWO_ID; + const mappingFields = isSchemeTwo ? REQUIRED_FIELDS : REQUIRED_FIELDS.slice(0, 5); + const missingFields = mappingFields.filter((field) => !mapping[field.key]); const selectedPoints = selectedFan && result?.curves ? result.curves[selectedFan] || [] : []; const selectedBins = selectedFan && result?.bins ? result.bins[selectedFan] || [] : []; const selectedScatterRaw = selectedFan && result?.scatter_points @@ -1702,14 +1793,6 @@ export default function HomePage() { () => hasMatchingHeaderSequence(files), [files], ); - const rawReportSourceFiles = useMemo( - () => findRawSourceFiles(files, mapping, selectedFan), - [files, mapping, selectedFan], - ); - const selectedRawReportData = useMemo(() => { - if (!hasConsistentRawHeaders || rawReportSourceFiles.length !== 1) return null; - return buildRawReportData(rawReportSourceFiles[0], mapping, selectedFan); - }, [hasConsistentRawHeaders, mapping, rawReportSourceFiles, selectedFan]); const selectedEstimatedParams = selectedFan && result?.estimated_params ? result.estimated_params[selectedFan] : null; @@ -1924,48 +2007,68 @@ export default function HomePage() { () => buildReportCurveRows(effectiveScatter, reportDesignCurve), [effectiveScatter, reportDesignCurve], ); - const reportExportDisabledReason = files.length && !hasConsistentRawHeaders - ? '同一批上传文件的列头和列顺序必须完全一致' - : files.length && rawReportSourceFiles.length !== 1 - ? '完整报告要求当前风机对应唯一一份上传 Excel 文件' - : files.length && (!selectedRawReportData || !selectedRawReportData.rows.length) - ? '当前风机没有可导出的原始数据,或未识别到风速列' + const reportExportDisabledReason = !selectedFan + ? '请先完成计算并选择要导出的风机' + : isEditMode + ? '请先退出曲线编辑模式,再导出完整报告' + : !reportDesignCurve.length + ? '请先填写或上传设计功率曲线' + : !result?.job_id + ? '当前计算结果已失效,请重新计算后导出报告' + : files.length && !hasConsistentRawHeaders + ? '同一批上传文件的列头和列顺序必须完全一致' + : !reportCurveRows.length + ? '当前设计功率曲线与有效数据未形成可导出的功率曲线点' : ''; const canExportFullReport = Boolean( - selectedFan && selectedRawReportData?.rows.length && reportCurveRows.length && !isEditMode && !reportExportDisabledReason, ); const handleExportFullReport = useCallback(async () => { - if (!canExportFullReport || exportingReport) return; + if (exportingReport) return; + if (!canExportFullReport) { + setReportExportNotice(reportExportDisabledReason || '当前条件不满足,无法导出完整报告'); + return; + } setExportingReport(true); + setReportExportProgress('正在服务器生成完整报告'); setError(''); try { - const chartRenderSnapshot = await chartSnapshotRef.current?.(); + const chartRenderSnapshot = await chartSnapshotRef.current?.(false); if (!chartRenderSnapshot) { throw new Error('图表尚未完成绘制,请稍后重试'); } - await exportPowerCurveReport({ - fanId: selectedFan, - rawReportData: selectedRawReportData, - effectiveRows: effectiveScatter, - reportRows: reportCurveRows, - chartRenderSnapshot, + const chartImageData = renderPowerCurvePng(chartRenderSnapshot); + const blob = await downloadWindReport(result.job_id, { + fan_id: selectedFan, + effective_rows: effectiveScatter, + report_rows: reportCurveRows, + chart_image: chartImageData || '', }); + downloadReportBlob(blob, selectedFan); } catch (err) { - setError(err.message || '导出完整报告失败'); - } finally { + const message = err.message || '导出完整报告失败'; + setError(message); + setReportExportNotice(message); setExportingReport(false); + setReportExportProgress(''); } }, [ canExportFullReport, effectiveScatter, exportingReport, + reportExportDisabledReason, reportCurveRows, - rawReportSourceFiles, - selectedRawReportData, selectedFan, + result?.job_id, ]); + const handleCancelReportExport = useCallback(() => { + setExportingReport(false); + setReportExportProgress(''); + setReportExportNotice('已取消完整报告导出'); + }, []); + + useEffect(() => { let canceled = false; @@ -1981,6 +2084,8 @@ export default function HomePage() { setSchemes(loadedSchemes); setSelectedSchemeId(defaultScheme.id); setSchemeDescription(defaultScheme.description || ''); + const schemeOne = loadedSchemes.find((scheme) => scheme.id === DEFAULT_SCHEME_ID); + setSchemeOneParams(schemeOneParamsToState(schemeOne?.parameters)); const schemeTwo = loadedSchemes.find((scheme) => scheme.id === SCHEME_TWO_ID); setSchemeTwoParams(schemeParamsToState(schemeTwo?.parameters)); } catch (err) { @@ -2000,7 +2105,9 @@ export default function HomePage() { const nextScheme = schemes.find((scheme) => scheme.id === value); setSelectedSchemeId(value); setSchemeDescription(nextScheme?.description || ''); - if (value === SCHEME_TWO_ID) { + if (value === DEFAULT_SCHEME_ID) { + setSchemeOneParams(schemeOneParamsToState(nextScheme?.parameters)); + } else if (value === SCHEME_TWO_ID) { setSchemeTwoParams(schemeParamsToState(nextScheme?.parameters)); } setSchemeMessage(''); @@ -2013,6 +2120,13 @@ export default function HomePage() { })); } + function handleSchemeOneParamChange(field, value) { + setSchemeOneParams((prev) => ({ + ...prev, + [field]: value, + })); + } + async function handleSaveSchemeDescription() { if (!selectedScheme) return; @@ -2020,9 +2134,26 @@ export default function HomePage() { setError(''); setSchemeMessage(''); try { + const schemeOneValues = Object.fromEntries(Object.entries(schemeOneParams).map(([field, value]) => [ + field, + normalizeNumber(value), + ])); const gridConnectedSpeed = normalizeNumber(schemeTwoParams.grid_connected_speed); const ratedGeneratorSpeed = normalizeNumber(schemeTwoParams.rated_generator_speed); const ratedPower = normalizeNumber(schemeTwoParams.rated_power); + if (selectedScheme.id === DEFAULT_SCHEME_ID && + (!Number.isFinite(schemeOneValues.rated_power) || schemeOneValues.rated_power <= 0 || + !Number.isFinite(schemeOneValues.rated_wind_speed) || schemeOneValues.rated_wind_speed <= 0 || + !Number.isFinite(schemeOneValues.power_step) || schemeOneValues.power_step <= 0 || + !Number.isFinite(schemeOneValues.cleaning_wind_speed_step) || schemeOneValues.cleaning_wind_speed_step <= 0 || + !Number.isFinite(schemeOneValues.rotor_radius) || schemeOneValues.rotor_radius <= 0 || + !Number.isFinite(schemeOneValues.gearbox_ratio) || schemeOneValues.gearbox_ratio <= 0 || + ['wind_speed_change_threshold', 'iqr_lower_multiplier', 'iqr_upper_multiplier', + 'minimum_generator_speed', 'generator_speed_k'].some((field) => ( + !Number.isFinite(schemeOneValues[field]) || schemeOneValues[field] < 0 + )))) { + throw new Error('方案一参数必须为合法数值,额定与步长参数、叶轮半径和传动比必须大于 0'); + } if (selectedScheme.id === SCHEME_TWO_ID && (!Number.isFinite(gridConnectedSpeed) || gridConnectedSpeed <= 0 || !Number.isFinite(ratedGeneratorSpeed) || ratedGeneratorSpeed <= 0 || @@ -2031,6 +2162,7 @@ export default function HomePage() { } const data = await saveWindSchemeDescription(selectedScheme.id, { description: schemeDescription, + ...(selectedScheme.id === DEFAULT_SCHEME_ID ? { parameters: schemeOneValues } : {}), ...(selectedScheme.id === SCHEME_TWO_ID ? { parameters: { grid_connected_speed: gridConnectedSpeed, @@ -2044,7 +2176,9 @@ export default function HomePage() { scheme.id === savedScheme.id ? { ...scheme, ...savedScheme } : scheme ))); setSchemeDescription(savedScheme.description || ''); - if (savedScheme.id === SCHEME_TWO_ID) { + if (savedScheme.id === DEFAULT_SCHEME_ID) { + setSchemeOneParams(schemeOneParamsToState(savedScheme.parameters)); + } else if (savedScheme.id === SCHEME_TWO_ID) { setSchemeTwoParams(schemeParamsToState(savedScheme.parameters)); } setSchemeMessage('已保存'); @@ -2142,6 +2276,26 @@ export default function HomePage() { setError('请先上传文件并完成所有字段映射'); return; } + const schemeOneValues = Object.fromEntries(Object.entries(schemeOneParams).map(([field, value]) => [ + field, + normalizeNumber(value), + ])); + const schemeOneInvalid = + !Number.isFinite(schemeOneValues.rated_power) || schemeOneValues.rated_power <= 0 || + !Number.isFinite(schemeOneValues.rated_wind_speed) || schemeOneValues.rated_wind_speed <= 0 || + !Number.isFinite(schemeOneValues.power_step) || schemeOneValues.power_step <= 0 || + !Number.isFinite(schemeOneValues.cleaning_wind_speed_step) || + schemeOneValues.cleaning_wind_speed_step <= 0 || + !Number.isFinite(schemeOneValues.rotor_radius) || schemeOneValues.rotor_radius <= 0 || + !Number.isFinite(schemeOneValues.gearbox_ratio) || schemeOneValues.gearbox_ratio <= 0 || + ['wind_speed_change_threshold', 'iqr_lower_multiplier', 'iqr_upper_multiplier', + 'minimum_generator_speed', 'generator_speed_k'].some((field) => ( + !Number.isFinite(schemeOneValues[field]) || schemeOneValues[field] < 0 + )); + if (!isSchemeTwo && schemeOneInvalid) { + setError('方案一参数必须为合法数值,额定与步长参数、叶轮半径和传动比必须大于 0'); + return; + } const gridConnectedSpeed = normalizeNumber(schemeTwoParams.grid_connected_speed); const ratedGeneratorSpeed = normalizeNumber(schemeTwoParams.rated_generator_speed); const ratedPower = normalizeNumber(schemeTwoParams.rated_power); @@ -2166,13 +2320,14 @@ export default function HomePage() { setProgress('正在准备标准化数据'); try { - const { rows } = buildStandardRows(files, mapping); + const { rows, rawRows } = buildStandardRows(files, mapping); const start = await startWindJob({ files: files.map((file) => ({ file_name: file.file_name, row_count: file.row_count, })), mapping, + raw_headers: files[0]?.raw_headers || files[0]?.headers || [], }); jobId = start.job_id; @@ -2184,6 +2339,7 @@ export default function HomePage() { job_id: jobId, chunk_index: index, rows: chunkRows, + raw_rows: rawRows.slice(index * CHUNK_SIZE, (index + 1) * CHUNK_SIZE), }); } @@ -2191,15 +2347,9 @@ export default function HomePage() { const calculation = await finishWindJob({ job_id: jobId, options: { - power_step: 5, - cleaning_wind_speed_step: 0.25, curve_wind_speed_step: 0.5, - wind_speed_change_threshold: 1, - iqr_lower_multiplier: 1.8, - iqr_upper_multiplier: 2, - minimum_generator_speed: 1, - generator_speed_k: 0.9, scheme_id: selectedSchemeId, + ...(!isSchemeTwo ? schemeOneValues : {}), ...(isSchemeTwo ? { grid_connected_speed: gridConnectedSpeed, rated_generator_speed: ratedGeneratorSpeed, @@ -2207,7 +2357,7 @@ export default function HomePage() { } : {}), }, }); - setResult(calculation); + setResult({ ...calculation, job_id: jobId }); setSelectedFan(calculation.fans?.[0] || ''); setProgress('计算完成'); } catch (err) { @@ -2218,7 +2368,11 @@ export default function HomePage() { // 失败任务清理失败不影响用户看到主错误。 } } - setError(err.message || '计算失败'); + const message = err.message || '计算失败'; + setError(message); + if (message.includes('服务器正在处理数据')) { + setReportExportNotice(message); + } setProgress(''); } finally { setSubmitting(false); @@ -2248,6 +2402,19 @@ export default function HomePage() { {error &&
{error}
} {progress &&
{progress}
} + {reportExportNotice && ( +
+
+

提示

+

{reportExportNotice}

+
+ +
+
+
+ )}
@@ -2283,6 +2450,29 @@ export default function HomePage() { />
+ {!isSchemeTwo && ( + <> +

+ 叶尖速比 = 发电机转速 × 3.14 × 齿轮箱传动比 × 叶轮半径 × 30 ÷ 风速 +

+
+ {SCHEME_ONE_PARAM_FIELDS.map((field) => ( + + ))} +
+ + )} {isSchemeTwo && (